2026-10-13 · 原文发布日
每周自动汇总团队站会进展并邮件发送周报
TeamRetro站会完成时触发webhook,去重后把当天的纯文本站会记录存进n8n Data Table;每周五下午取出最近几天(默认7天)的记录按团队分组,交给OpenAI生成含进展、遗留阻塞和下周风险板块的Markdown周报,转HTML后用Gmail发给收件人,同时清理四周前的旧数据控制表体积。需要TeamRetro开启Standup Completed webhook并配置签名密钥,以及OpenAI和Gmail凭据。
原文要点
原工作流来自TeamRetro发布在n8n模板库的免费模板:TeamRetro站会完成时通过webhook触发,去重并跳过无成员更新的站会,把当天纯文本记录存入名为standup_days的n8n Data Table(列含date、day、team、standup、people、transcript);每周五下午4点取出最近N天(默认7天)的记录按团队分组,交给OpenAI(GPT-5 Mini)生成含进展、遗留阻塞、下周风险三板块的Markdown周报,转HTML后经Gmail发给配置的收件人,同时删除四周前的旧行控制表体积。需在TeamRetro开启Standup Completed webhook并把签名密钥配进触发节点。
这次做成什么
在自有n8n里实现:TeamRetro站会结束自动落库,每周五下午自动按团队生成Markdown周报、转HTML并用Gmail群发,同时定期清理旧数据。本站提供独立的周报提示词、表结构和一条合成测试数据,搭建时按原模板节点逐项核对。
准备什么
- TeamRetro账号,且套餐支持webhook集成并能开启Standup Completed事件
- 一个可接收外部webhook的n8n实例(生产URL可被TeamRetro访问)
- n8n中创建Data Table的权限(或使用对应版本的内置数据表功能)
- OpenAI API凭据,账号需可访问GPT-5 Mini或改用你可用的聊天模型
- Gmail OAuth凭据,且该邮箱允许代表团队发送周报
具体怎么做
在TeamRetro配置webhook
在TeamRetro的集成设置中新建webhook,事件选Standup Completed,URL粘贴n8n触发节点的生产webhook地址(注意是生产URL而非测试URL),保存后拿到签名密钥,回填到n8n的TeamRetro Trigger节点的密钥字段。先在TeamRetro里手动完成一场测试站会,确认触发节点能收到事件。
建立standup_days数据表
在n8n中新建名为standup_days的Data Table,列结构为:date(日期)、day(星期)、team(团队名)、standup(站会名称)、people(参与人)、transcript(当天纯文本记录)。列名与原模板保持一致,后续查询节点按这些列名读写,改名会导致取数失败。
落库前去重并过滤空站会
在触发器后加判断逻辑:用webhook的交付ID或站会ID查standup_days是否已有记录,有则直接跳过(TeamRetro可能重复投递);再检查该站会是否有任何成员更新,没有更新的不写入。通过检查后,把成员发言拼成一段纯文本transcript,连同日期、团队等字段插入一行。
配置周五定时汇总
用Schedule Trigger设为每周五16:00触发。之后查询standup_days中最近7天(天数在报告设置中可调)的行,按team字段分组,每个团队得到一段本周站会合集文本。收件人列表和天数这两个值集中在报告设置节点里改,不要散落在各处。
用OpenAI生成Markdown周报
对每个团队的合集文本调用OpenAI聊天节点,使用下方材料中的提示词,要求输出固定三板块:本周进展、遗留阻塞、下周风险,Markdown格式。随后用Markdown转HTML节点转换,接Gmail节点发送给该团队对应的收件人,主题建议含团队名和日期区间。模型名以原模板默认(GPT-5 Mini)为准,若你的账号不可用请整体替换并回归测试。
清理四周前旧数据
在发送成功后加一个删除步骤:计算当前日期减28天的边界,删除standup_days中date早于该边界的所有行,防止表无限膨胀。把清理放在发送之后,避免周报还没生成就把本周数据误删。
可直接复制的材料
团队周报生成提示词
本站独立编写的替代提示词,{{ $json.transcript }}为n8n表达式占位;原模板具体提示词未公开,板块名称与原模板描述一致。
你是一名工程团队助理。下面是某团队本周多次站会的纯文本记录合集。请据此生成一份Markdown周报,严格使用以下三个二级标题,顺序不变:
## 本周进展
按主题归并成员的已完成事项,每条一行要点,不写空话。
## 遗留阻塞
列出本周被提到但到周尾仍未解除的阻塞,注明卡了几天(如记录中可判断)。
## 下周风险
根据未完成的依赖和计划推断下周风险,每条说明影响对象。
要求:只使用记录中出现的信息,不编造事项;每条要点不超过30字;没有内容的小节写「本小节无」。
站会记录:
{{ $json.transcript }}standup_days测试行(合成数据)
本站虚构的一行合成数据,字段名与原模板描述一致,可用于手动插入Data Table后测试周五汇总链路,不含真实人员信息。
{"date":"2026-10-12","day":"Monday","team":"支付组","standup":"每日站会","people":"林岚,周启","transcript":"林岚:完成了退款接口的单元测试,今天开始接对账模块;阻塞是测试环境的证书过期,已提工单。周启:联调支付回调,等网关组提供新的回调地址;计划周四前完成。"}收件人与窗口的配置示例
本站设计的集中配置示例:recipients按团队映射收件邮箱,days控制取数窗口,retentionDays控制清理边界;需替换为你的真实内部邮箱,具体存放节点以原模板为准。
{
"recipients": {
"支付组": ["pay-team@example.com"],
"网关组": ["gateway-team@example.com"]
},
"days": 7,
"retentionDays": 28
}输入与输出示例
本站虚构演示,非OpenAI实际输出,数字与输入记录一一对应。
输入
standup_days中支付组本周两行记录:周一林岚完成退款接口单测、被测试环境证书过期阻塞,周启等网关组回调地址;周三林岚证书问题已解除并接入对账模块,周启仍在等回调地址对应输出
# 支付组周报(10.12-10.16)
## 本周进展
- 退款接口单元测试完成并接入对账模块
- 支付回调联调推进中
## 遗留阻塞
- 网关组新回调地址未提供,已卡约3天
## 下周风险
- 回调地址若继续延迟,将影响支付回调联调整体收尾做完检查这些
- 在TeamRetro手动完成一场测试站会后,standup_days能新增一行且字段完整、transcript为纯文本
- 同一场站会重复投递webhook时只落库一次,无成员更新的站会不产生新行
- 手动触发周五节点后,每个团队各收到一封HTML邮件,含进展、遗留阻塞、下周风险三个板块
- 邮件中的事实均能在当周站会记录里找到,不出现记录之外的事项
- 清理步骤执行后,28天前的行被删除而本周行保留
容易卡住的地方
- 触发节点必须用生产webhook URL,测试URL只在编辑器监听时有效,TeamRetro在非测试时段触发会丢事件
- 签名密钥不配或填错会导致webhook校验失败,事件根本进不了流程,排错时先看触发节点是否有执行记录
- GPT-5 Mini的可用性取决于你的OpenAI账号,账号不支持时需整体替换模型并重测输出格式
- 无成员更新的站会若不去重过滤,会在表里积累空行并污染周报,务必保留这两道闸
- Gmail OAuth凭据过期或收件人邮箱写错会导致发送静默失败,建议先发到自己的测试邮箱验证
- 清理逻辑若误用大于号方向或时区不一致,可能删掉本周数据,上线前用合成旧行验证边界
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Send weekly TeamRetro standup reports with OpenAI GPT-5 Mini and Gmail
- 原作者
- TeamRetro
- 原始发布日期
- 2026-10-13T08:28:36.718Z
- 来源
- https://n8n.io/workflows/20865