2026-09-24 · 原文发布日
n8n 模板:自动生成工程团队每日简报发到 Slack
这个免费 n8n 工作流每个工作日早上 9 点触发,抓取过去 24 小时的 Jira 工单更新和超过设定天数未动的进行中工单,再逐个检查 GitHub 仓库里新近及无人评审的 PR,合并后交给 OpenAI 生成严格 JSON 格式的摘要(进展、已交付、阻塞、待评审、迭代健康度),组装成带链接和可选 @提醒的 Slack Block Kit 消息发到指定频道,还可把发送结果追加记录到 Google Sheets。
原文要点
原模板为免费 n8n 工作流:工作日 9 点定时触发,拉取 Jira 最近 24 小时更新的工单和超过阈值未动的进行中工单,逐个遍历配置的 GitHub 仓库取最近 PR 并用 review:none 搜索无人评审的开放 PR,归一化合并后经 OpenAI Chat Completions 生成严格 JSON 摘要(进展/已交付/阻塞/待评审/迭代健康度),按 Jira/GitHub 到 Slack 的用户映射组装 Block Kit 消息发频道,可追加记录到 Google Sheets(列 ok、channel、message、message_timestamp)。需要 Jira Cloud、GitHub、OpenAI、Slack 凭据,GitHub 细粒度 token 需仓库与 PR 读权限。
这次做成什么
在自有 n8n 实例上复刻一个工作日早间自动简报流程:汇总 Jira 与 GitHub 动态,由 OpenAI 产出五段式摘要并发送到 Slack 频道,练习时使用一个测试频道和最小配置。
准备什么
- 可登录的 n8n 实例(自托管或云)及创建工作流权限
- Jira Software Cloud 凭据和一个可访问的项目(如 PTN)
- GitHub 细粒度 token,具备目标仓库与 PR 读取权限
- OpenAI API 凭据,调用会产生费用
- Slack 工作区中一个测试频道及可发帖的 Bot(已邀请入频道)
- 可选:Google Sheets 凭据用于日志追加
具体怎么做
导入模板并配置四组凭据
在 n8n.io 工作流 19880 页面点 Use for free 将模板导入自己的实例,然后在 Credentials 里分别创建 Jira Software Cloud、GitHub、OpenAI、Slack 四组凭据并逐个挂到对应节点;若启用日志再加 Google Sheets 凭据。
修改 Config 节点的核心参数
打开 Config(配置)节点,把 Jira base URL 与 project key 改成你的域名和项目键;GitHub repositories 列表填你要监控的仓库(如 owner/repo-a, owner/repo-b);设置 stale 天数阈值(进行中工单多久未更新算停滞);填入 Slack 目标频道 ID 和希望使用的 OpenAI 模型名。
配置用户映射与 Sheet 日志(可选)
在 Config 的用户映射里把 Jira accountId 和 GitHub login 一一映射到 Slack 用户 ID,摘要里才会出现 @提醒;若启用 Sheets 日志,填文档 ID 和工作表名,并确保表头包含 ok、channel、message、message_timestamp 四列。
用测试数据手动触发验证
先不依赖定时:点击 Execute Workflow 手动运行,观察 Jira 查询节点、GitHub 每仓库循环节点、合并节点、OpenAI 节点和 Slack 节点是否依次成功;确认 Slack 测试频道收到带工单与 PR 链接的 Block Kit 消息。
确认定时与权限后启用
检查 Schedule Trigger 为工作日 9:00(按你所在时区核对),确认 Slack Bot 已被邀请进目标频道、GitHub token 权限覆盖所有列出仓库,然后保存并 Activate 工作流。
可直接复制的材料
OpenAI 摘要生成的独立提示词(可粘贴改造)
本站独立编写的摘要提示词,需在 n8n 的 OpenAI 节点消息里引用上游合并节点的字段;字段名以你实际合并节点输出为准。
你是工程团队的日报撰写助手。下面 JSON 输入包含 jira.updated(近24小时更新的工单)、jira.stale(超过阈值未更新的进行中工单)、github.recentPRs(近期 PR)、github.unreviewedPRs(无评审的开放 PR)。请只输出一个严格合法的 JSON 对象,不要输出任何多余文字或 Markdown 代码块,结构如下:
{"moved":"进展要点,最多3条,每条一行","shipped":"已交付/已合并内容","blocked":"阻塞与停滞项,列出工单键和原因","needsReview":"待评审 PR 列表,含仓库和链接","sprintHealth":"一句话迭代健康度判断"}
要求:每条引用都带上工单键或 PR 编号和链接;没有数据的分项填“无”;全部用中文。输入数据:
{{ $json.digestPayload }}Config 节点的练习用配置示例
本站编写的练习示例;yourteam、yourorg、频道 ID、用户 ID、模型名均需替换为你自己的值,openaiModel 以模板 Config 中实际允许的取值为准。
{
"jiraBaseUrl": "https://yourteam.atlassian.net",
"jiraProjectKey": "PTN",
"staleDays": 3,
"githubRepos": ["yourorg/service-api", "yourorg/web-app"],
"slackChannel": "C0123456789",
"openaiModel": "gpt-4o-mini",
"enableSheetLog": false,
"userMap": {
"jira:5f8a1b2c3d4e5f0012345678": "U01SLACKAAA",
"github:octocat-dev": "U02SLACKBBB"
}
}合并节点输出的合成测试数据
本站虚构合成数据,可用于在合并节点前临时替换真实查询做端到端演示;字段结构需与实际模板归一化输出核对。
{
"digestPayload": {
"jira": {
"updated": [
{"key": "PTN-101", "summary": "登录接口超时修复", "status": "In Review", "assignee": "5f8a1b2c3d4e5f0012345678", "url": "https://yourteam.atlassian.net/browse/PTN-101"},
{"key": "PTN-102", "summary": "报表导出 CSV 乱码", "status": "Done", "assignee": "5f8a1b2c3d4e5f0012345678", "url": "https://yourteam.atlassian.net/browse/PTN-102"}
],
"stale": [
{"key": "PTN-097", "summary": "缓存层改造方案", "status": "In Progress", "daysStale": 5, "url": "https://yourteam.atlassian.net/browse/PTN-097"}
]
},
"github": {
"recentPRs": [
{"repo": "yourorg/service-api", "number": 42, "title": "fix: login timeout retry", "url": "https://github.com/yourorg/service-api/pull/42"}
],
"unreviewedPRs": [
{"repo": "yourorg/web-app", "number": 17, "title": "feat: dark mode toggle", "url": "https://github.com/yourorg/web-app/pull/17"}
]
}
}
}输入与输出示例
本站虚构演示,输出为示意结构,并非实际调用 OpenAI 或 Slack 的结果。
输入
合成 digestPayload 包含:PTN-101 进入 In Review,PTN-102 已完成,PTN-097 停滞 5 天;service-api 有近期 PR #42,web-app 的 PR #17 无评审。对应输出
OpenAI 节点应输出类似:{"moved":"PTN-101 登录接口超时修复进入评审\nservice-api PR #42 有更新","shipped":"PTN-102 报表导出 CSV 乱码已修复完成","blocked":"PTN-097 缓存层改造方案停滞 5 天,需要负责人更新进展","needsReview":"yourorg/web-app PR #17 feat: dark mode toggle 无人评审 https://github.com/yourorg/web-app/pull/17","sprintHealth":"交付正常但存在一处停滞工单和一处无人评审 PR,建议今日跟进"},随后 Slack 频道收到包含上述五段、工单与 PR 链接及可选 @提及的 Block Kit 消息。做完检查这些
- 手动执行后 Jira 查询节点返回近 24 小时更新工单且包含停滞工单列表
- GitHub 循环对每个配置仓库都取到近期 PR,且 review:none 搜索返回无人评审项
- OpenAI 节点输出是合法 JSON 且含 moved/shipped/blocked/needsReview/sprintHealth 五个键
- Slack 测试频道收到含工单和 PR 链接的 Block Kit 消息,配置了映射的负责人显示 @提及
- 启用 Sheet 日志时,指定工作表新增一行且 ok 列记录发送是否成功
容易卡住的地方
- Slack Bot 未被邀请进目标频道会直接发帖失败,需先 /invite
- GitHub 细粒度 token 缺少仓库或 PR 读权限时循环节点报权限错误
- Sheet 表头与追加字段(ok、channel、message、message_timestamp)不一致会追加失败或错位
- OpenAI 与 Slack API 调用均会产生各自平台费用,模板免费不等于调用免费
- 定时按工作流时区触发,部署后需核对 9:00 是否落在你的时区
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Send engineering daily digest to Slack with Jira, GitHub, OpenAI, and Google Sheets
- 原作者
- Intuz
- 原始发布日期
- 2026-09-24T06:01:05.109Z
- 来源
- https://n8n.io/workflows/19880