GitHub Issue 自动分类并创建 Linear 任务
监听 GitHub 新 issue → AI 分类(类型/优先级/标签)→ 在 Linear 创建任务并回写 GitHub 评论
- 给谁
- 使用 n8n 的团队,需要自动化 GitHub issue 分类并与 Linear 同步
- 你会得到
- 新 issue 触发后自动完成 AI 分类、Linear 任务创建、GitHub 评论反馈
硬约束
需要 n8n 实例;配置 GitHub 凭证(Webhook 触发与评论写入权限)、OpenAI 凭证(gpt-4.1-mini 等)、Linear 凭证(teamId 需替换为实际值)。模板中 GitHub owner/repository 字段为空,需按实际仓库填写。
他们做了什么
模板作者 itechnotion 在 n8n 中构建了一个工作流:通过 GitHub Webhook 监听新 issue,使用 OpenAI 模型进行自动分类(Bug/Feature/Question、优先级 1-4、生成标签),经 JavaScript 格式化后,在 Linear 创建对应任务,并向 GitHub issue 回写分类结果评论。
效果如何
作者报告该工作流可实现:消除手动分类工作、保持分类一致性、加速响应时间、自动同步 GitHub 与 Linear、提升团队可见性。(来源:模板描述,未经验证)
值得知道
模板中 GitHub owner/repository 和 Linear teamId 为占位符,必须替换为实际值。AI 输出经 JSON 解析和容错处理,无效时默认优先级为 Medium。本站未实测该工作流,实际运行需验证各节点凭证权限和 Webhook 可达性。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- 导入后按各需鉴权节点绑定你自己的凭证;本附件不含原作者密钥。
需要替换的配置
- 源模板来自 n8n 公开库 #14357(约 13 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-24
步骤
配置触发器与过滤
在 n8n 中配置 Github Trigger 节点:选择仓库,订阅 issues 和 issue_comment 事件。添加 If 节点,条件为 $json.body.action 等于 'opened',仅处理新打开的 issue。添加 Edit Fields(Set)节点,提取并映射字段:title = $json.body.issue.title,description = $json.body.issue.body,issue_url = $json.body.issue.url,author = $json.body.issue.user.login。
AI 分类与格式化
添加 Information Extractor 节点,连接 OpenAI Chat Model 子节点(模型可选 gpt-4.1-mini / gpt-4.1 / gpt-4)。在 Information Extractor 的指令字段粘贴分类提示词。添加 Code in JavaScript 节点,解析并规范化 AI 输出的 JSON,生成 priorityLabel、typeLabel 和 labels。添加 Merge 节点(mode: combineByPosition),将原始 issue 数据与格式化后的 AI 输出合并。
运行提示词 · 来源原文。Information Extractor 节点的 text 参数字段
=You are an AI issue triage assistant. STRICT RULES: - Output ONLY valid JSON - No explanation - No markdown - No extra text Classify the issue: type must be one of: Bug | Feature | Question priority must be a NUMBER: 1 = Urgent 2 = High 3 = Medium 4 = Low Also generate 2–4 short labels. Return format: { "type": "Bug", "priority": 1, "labels": ["crash", "login"] } Issue Title: {{ $json.title }} Issue Description: {{ $json.description }}运行提示词 · 来源原文。Code in JavaScript 节点的 jsCode 字段
let output = $json.output; // 1. Parse if AI returned string if (typeof output === "string") { try { output = JSON.parse(output); } catch (e) { throw new Error("Invalid JSON from AI"); } } // 2. Normalize values const priorityNum = Number(output.priority); // 3. Fallback safety const safePriority = [1,2,3,4].includes(priorityNum) ? priorityNum : 3; // 4. Priority label mapping const priorityMap = { 1: "Urgent", 2: "High", 3: "Medium", 4: "Low" }; return [{ ...$json, // Clean structured output output, // For Linear (number) priority: safePriority, // For UI / GitHub priorityLabel: priorityMap[safePriority], type: output.type, typeLabel: output.type, // Labels safe fallback labels: Array.isArray(output.labels) ? output.labels : [] }];创建任务与回写反馈
添加 Linear 的 Create an issue 节点:title 使用原始 issue 标题,teamId 替换为实际 Linear 团队 ID,priorityId 使用格式化后的 priority 数值,description 使用 Merge 节点的 description。添加 GitHub 的 Create a comment on an issue 节点:operation 选择 createComment,issueNumber 引用 Github Trigger 的 issue 编号,body 使用模板回写分类结果。
运行提示词 · 来源原文。GitHub Create a comment on an issue 节点的 body 字段
=Thanks for opening this issue! Our AI triage system classified this as: Type: {{ $('Code in JavaScript').item.json.typeLabel }} Priority: {{ $('Code in JavaScript').item.json.priorityLabel }} A Linear task has been created for the team.
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你正在搭建一个 n8n 工作流,用于自动处理 GitHub issue:触发新 issue → AI 分类 → Linear 任务 → GitHub 评论回写。请先确认你已配置 GitHub、OpenAI 和 Linear 的凭证,并知道目标仓库和 Linear teamId。
搭建前需准备:GitHub 仓库访问权限、OpenAI API Key、Linear teamId。
来源
Classify GitHub issues and create Linear tasks using OpenAI · itechnotion · n8n.io · 2026-03-26
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。