发布说明转常见问题存根(Jira/ClickUp)
高级
这是一个Engineering, Multimodal AI领域的自动化工作流,包含 20 个节点。主要使用 If, Code, Gmail, Slack, Notion 等节点。 使用GPT-4o从ClickUp自动生成发布说明到Notion和Slack
前置要求
- •Google 账号和 Gmail API 凭证
- •Slack Bot Token 或 Webhook URL
- •Notion API Key
- •Google Sheets API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "qIm89R0VoyFG5umx",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "发布说明转常见问题存根(Jira/ClickUp):",
"tags": [],
"nodes": [
{
"id": "0a9f291a-fb5e-48d2-aef0-8b4cb3471228",
"name": "配置 GPT-4o 模型",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
160,
128
],
"parameters": {
"model": "gpt-4o",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"id": "C3WzT18XqF8OdVM6",
"name": "Azure Open AI account"
}
},
"typeVersion": 1
},
{
"id": "296c2339-d34b-45b4-8c79-05a1ab1bb5e1",
"name": "在 Google Sheets 中记录错误",
"type": "n8n-nodes-base.googleSheets",
"position": [
-288,
544
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "error_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "error_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "error",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "error",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"error_id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1338537721,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit#gid=1338537721",
"cachedResultName": "error log sheet"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Uldk_4BxWbdZTDZxFUeohIfeBmGHHqVEl9Ogb0l6R8Y/edit?usp=drivesdk",
"cachedResultName": "Interviewer Brief Pack "
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4.6
},
{
"id": "a754bf62-8af5-43d5-8210-a9d451828bfa",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
-240
],
"parameters": {
"color": 7,
"width": 528,
"height": 368,
"content": "## ClickUp 触发器与验证"
},
"typeVersion": 1
},
{
"id": "ae6259ca-a0d7-49c5-b33f-c122d087c856",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1664,
-944
],
"parameters": {
"width": 576,
"height": 576,
"content": "## 工作原理"
},
"typeVersion": 1
},
{
"id": "652ed9cf-0a37-4772-8b59-232706351ce2",
"name": "ClickUp 任务状态触发器",
"type": "n8n-nodes-base.clickUpTrigger",
"position": [
-944,
-64
],
"webhookId": "5e28e69f-9b57-48b6-a5b0-9150c156e111",
"parameters": {
"team": "9014872066",
"events": [
"taskStatusUpdated"
],
"filters": {}
},
"credentials": {
"clickUpApi": {
"id": "kahuAqa6VKsSxhn1",
"name": "ClickUp account 3"
}
},
"typeVersion": 1
},
{
"id": "f803efdb-39a1-44ad-bf1b-f93dbe68a29a",
"name": "验证 ClickUp 载荷",
"type": "n8n-nodes-base.if",
"position": [
-688,
-64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e2adb005-2b3c-4d1e-8445-442df1fe925a",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.task_id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "386b65fa-bf70-40ef-9a3b-00ca7e84d49d",
"name": "从 ClickUp 获取任务详情",
"type": "n8n-nodes-base.clickUp",
"position": [
-352,
-80
],
"parameters": {
"id": "={{ $json.task_id }}",
"operation": "get"
},
"credentials": {
"clickUpApi": {
"id": "kahuAqa6VKsSxhn1",
"name": "ClickUp account 3"
}
},
"typeVersion": 1
},
{
"id": "9df1d658-7d5b-4ad9-a8c5-921cd84f0d7e",
"name": "在 JavaScript 中解析任务详情",
"type": "n8n-nodes-base.code",
"position": [
-112,
-80
],
"parameters": {
"jsCode": "// Extract ClickUp task details safely\nconst task = $json;\n\n// Handle cases where arrays or fields might be empty\nconst assignee = (task.assignees && task.assignees.length > 0) ? task.assignees[0] : {};\nconst customFields = task.custom_fields || [];\n\n// Try to find the first field with a value (like a GitHub or docs link)\nconst linkField = customFields.find(f => f.value) || {};\n\nreturn [\n {\n json: {\n title: task.name || \"Untitled Task\",\n description: task.description || \"No description available.\",\n status: task.status?.status || \"No status\",\n priority: task.priority?.priority || \"Not set\",\n due_date: task.due_date || \"No due date\",\n assignee: assignee.username || \"Unassigned\",\n email: assignee.email || \"No email\",\n link: linkField.value || \"No link provided\",\n url: task.url || \"No URL\",\n },\n },\n];\n"
},
"typeVersion": 2
},
{
"id": "0cea2e62-14b1-4b94-82f9-fad9d1039e42",
"name": "生成发布说明常见问题(AI)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
144,
-80
],
"parameters": {
"text": "=Task Title: {{$json.title}}\nDescription: {{$json.description}}\nStatus: {{$json.status}}\nPriority: {{$json.priority}}\nDue Date: {{$json.due_date}}\nAssignee: {{$json.assignee}} ({{$json.email}})\nTask URL: {{$json.url}}\nReference Link: {{$json.link}}\n\nPlease create a brief FAQ in Markdown format using the 4 sections:\n1) What changed\n2) Why\n3) How to use\n4) Known issues\n",
"options": {
"systemMessage": "=You are a release notes editor. \nYour job is to turn technical task information into a clear, simple FAQ for users and internal teams. \nBe concise, non-marketing, and structured under these exact 4 sections:\n1) What changed\n2) Why\n3) How to use\n4) Known issues\n\nEach section should be 2–4 short bullet points.\n"
},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "8928882c-2c88-43f3-9797-f6179f2bb841",
"name": "将发布说明保存至 Notion",
"type": "n8n-nodes-base.notion",
"position": [
544,
-80
],
"parameters": {
"title": "={{ $('Parse Task Details in JavaScript').item.json.title }}",
"simple": false,
"options": {},
"resource": "databasePage",
"databaseId": {
"__rl": true,
"mode": "list",
"value": "29a802b9-1fa0-804a-b406-e078961e0659",
"cachedResultUrl": "https://www.notion.so/29a802b91fa0804ab406e078961e0659",
"cachedResultName": "Release Notes"
},
"propertiesUi": {
"propertyValues": [
{
"key": "Task URL|rich_text",
"textContent": "={{ $('Parse Task Details in JavaScript').item.json.url }}"
},
{
"key": "Status|rich_text",
"textContent": "={{ $('Parse Task Details in JavaScript').item.json.status }}"
},
{
"key": "Priority|rich_text",
"textContent": "={{ $('Parse Task Details in JavaScript').item.json.priority }}"
},
{
"key": "Owner|rich_text",
"textContent": "={{ $('Parse Task Details in JavaScript').item.json.assignee }}"
},
{
"key": "FAQ Content|rich_text",
"textContent": "={{ $json.output }}"
}
]
}
},
"credentials": {
"notionApi": {
"id": "iDjtgSTYG9ECVBtT",
"name": "Notion account 2"
}
},
"typeVersion": 2.2
},
{
"id": "63000865-c681-490a-8ce0-f8faf3c89e01",
"name": "在 Slack 中发布公告",
"type": "n8n-nodes-base.slack",
"position": [
1184,
-80
],
"webhookId": "ddaa7632-9e35-4bd3-82d6-572d5cae84cc",
"parameters": {
"text": "={{ $json.output }}",
"user": {
"__rl": true,
"mode": "list",
"value": "U09HMPVD466",
"cachedResultName": "newscctv22"
},
"select": "user",
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "rNqvWj9TfChPVRYY",
"name": "Slack account vivek"
}
},
"typeVersion": 2.3
},
{
"id": "add680c8-a40a-489c-bc5f-34cac0a078a0",
"name": "配置 GPT-4o 模型1",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
816,
128
],
"parameters": {
"model": "gpt-4o",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"id": "C3WzT18XqF8OdVM6",
"name": "Azure Open AI account"
}
},
"typeVersion": 1
},
{
"id": "1d91b3cc-e61d-419d-a15e-8dfe2a9a4dd5",
"name": "生成 Slack 发布公告(AI)",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
800,
-80
],
"parameters": {
"text": "=Create a Slack release announcement message using this task information:\n\nTask Title:{{ $(' Fetch Task Details from ClickUp').item.json.name }}\nDescription: {{ $(' Fetch Task Details from ClickUp').item.json.description }}\nStatus: {{ $(' Fetch Task Details from ClickUp').item.json.status }}\nPriority:{{ $json.properties }}\nAssignee: {{ $(' Fetch Task Details from ClickUp').item.json.assignees[0].email }}\nTask URL: {{$json.url}}\n\nFormat it as a professional Slack message with emojis, proper formatting, and a clickable task link.",
"options": {
"systemMessage": "=You are a Slack message formatter for release announcements.\n\nYour job is to take ClickUp task information and create a visually appealing, professional Slack message.\n\nRequirements:\n1. Use Slack markdown formatting (bold with *, italics with _, code blocks with ```)\n2. Include appropriate emojis for visual appeal\n3. Keep it concise and scannable\n4. Structure: Header → Key Details → Task Link → Release Date → Footer\n5. Use bullet points or clean formatting for readability\n6. Add a clickable link to the ClickUp task\n7. Include automation signature at the bottom\n\nReturn ONLY the formatted Slack message text, no JSON, no explanations"
},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "be95e9d0-6750-477a-b4a2-d1a097aac9fd",
"name": "向负责人发送确认邮件",
"type": "n8n-nodes-base.gmail",
"position": [
1536,
-80
],
"webhookId": "0c82c299-6938-42ed-bda6-5007d79af34f",
"parameters": {
"sendTo": "={{ $('Parse Task Details in JavaScript').item.json.email }}",
"message": "=<!DOCTYPE html>\n<html>\n<head>\n <style>\n body {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;\n line-height: 1.6;\n color: #333;\n max-width: 600px;\n margin: 0 auto;\n padding: 20px;\n }\n .header {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: white;\n padding: 30px;\n border-radius: 10px 10px 0 0;\n text-align: center;\n }\n .header h1 {\n margin: 0;\n font-size: 24px;\n }\n .content {\n background: #f8f9fa;\n padding: 30px;\n border-radius: 0 0 10px 10px;\n }\n .info-box {\n background: white;\n padding: 20px;\n border-radius: 8px;\n margin: 20px 0;\n border-left: 4px solid #667eea;\n }\n .info-row {\n margin: 12px 0;\n display: flex;\n align-items: center;\n }\n .label {\n font-weight: 600;\n color: #667eea;\n min-width: 120px;\n }\n .value {\n color: #333;\n }\n .priority-urgent { color: #dc3545; font-weight: bold; }\n .priority-high { color: #fd7e14; font-weight: bold; }\n .priority-normal { color: #ffc107; }\n .priority-low { color: #28a745; }\n .status-ready { color: #28a745; font-weight: bold; }\n .cta-button {\n display: inline-block;\n background: #667eea;\n color: white !important;\n padding: 14px 30px;\n text-decoration: none;\n border-radius: 6px;\n margin: 20px 0;\n font-weight: 600;\n text-align: center;\n }\n .cta-button:hover {\n background: #5568d3;\n }\n .faq-section {\n background: white;\n padding: 20px;\n border-radius: 8px;\n margin: 20px 0;\n }\n .faq-section h3 {\n color: #667eea;\n margin-top: 0;\n }\n .footer {\n text-align: center;\n padding: 20px;\n color: #6c757d;\n font-size: 12px;\n border-top: 1px solid #dee2e6;\n margin-top: 30px;\n }\n .emoji {\n font-size: 18px;\n margin-right: 8px;\n }\n </style>\n</head>\n<body>\n <div class=\"header\">\n <h1>🚀 Your Release is Ready!</h1>\n </div>\n \n <div class=\"content\">\n <p>Hi <strong>{{ $('Parse Task Details in JavaScript').item.json.assignee }}</strong>,</p>\n \n <p>Great news! Your feature release has been processed and documented. Here are the details:</p>\n \n <div class=\"info-box\">\n <div class=\"info-row\">\n <span class=\"label\">📋 Feature:</span>\n <span class=\"value\">{{ $('Parse Task Details in JavaScript').item.json.title }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"label\">⚡ Priority:</span>\n <span class=\"value priority-{{ $('Parse Task Details in JavaScript').item.json.priority.toLowerCase() }}\">\n {{ $('Parse Task Details in JavaScript').item.json.priority }}\n </span>\n </div>\n <div class=\"info-row\">\n <span class=\"label\">✅ Status:</span>\n <span class=\"value status-ready\">{{ $('Parse Task Details in JavaScript').item.json.status }}</span>\n </div>\n <div class=\"info-row\">\n <span class=\"label\">📅 Release Date:</span>\n <span class=\"value\">{{ $now.toFormat('MMMM dd, yyyy') }}</span>\n </div>\n </div>\n\n <center>\n <a href=\"{{ $('Save Release Notes to Notion').item.json.url }}\" class=\"cta-button\">\n 📖 View Full Release Notes in Notion\n </a>\n </center>\n\n <div class=\"faq-section\">\n <h3>📝 Release Notes Preview</h3>\n <p style=\"white-space: pre-line; color: #495057; line-height: 1.8;\">{{ $('Generate Release Notes FAQ (AI)').item.json.output.substring(0, 500) }}...</p>\n </div>\n\n <div class=\"info-box\" style=\"border-left-color: #28a745;\">\n <p style=\"margin: 0;\"><strong>🔗 Quick Links:</strong></p>\n <ul style=\"margin: 10px 0;\">\n <li><a href=\"{{ $('Parse Task Details in JavaScript').item.json.url }}\" style=\"color: #667eea;\">View ClickUp Task</a></li>\n <li><a href=\"{{ $('Save Release Notes to Notion').item.json.url }}\" style=\"color: #667eea;\">View Notion Documentation</a></li>\n {{ $('Parse Task Details in JavaScript').item.json.link !== 'No link provided' ? '<li><a href=\"' + $('Parse Task Details in JavaScript').item.json.link + '\" style=\"color: #667eea;\">Reference Link</a></li>' : '' }}\n </ul>\n </div>\n\n <p style=\"margin-top: 30px;\">The team has been notified via Slack, and this release is now live in our knowledge base.</p>\n \n <p>If you have any questions or need to update the documentation, please reach out to the team.</p>\n \n <p style=\"margin-top: 30px;\">\n Best regards,<br>\n <strong>Release Automation Team</strong>\n </p>\n </div>\n\n <div class=\"footer\">\n <p>🤖 This is an automated message generated by our n8n workflow.</p>\n <p>If you believe you received this in error, please contact your system administrator.</p>\n </div>\n</body>\n</html>",
"options": {},
"subject": "=✅ Release Ready: {{ $('Parse Task Details in JavaScript').item.json.title }}"
},
"credentials": {
"gmailOAuth2": {
"id": "RchiXdmY8WaQhOSJ",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "56486d5f-7142-4092-8808-d95961f28ac8",
"name": "便签12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-416,
-304
],
"parameters": {
"color": 7,
"width": 464,
"height": 464,
"content": "## 任务数据获取与解析"
},
"typeVersion": 1
},
{
"id": "26dd72fa-2822-41ad-8eee-f8b8fb4a1cda",
"name": "便签13",
"type": "n8n-nodes-base.stickyNote",
"position": [
96,
-288
],
"parameters": {
"color": 7,
"width": 352,
"height": 576,
"content": "## AI 发布说明生成"
},
"typeVersion": 1
},
{
"id": "e7920945-1bac-4cdc-b0bf-8aaa731e271f",
"name": "便签14",
"type": "n8n-nodes-base.stickyNote",
"position": [
464,
-352
],
"parameters": {
"color": 7,
"height": 640,
"content": "## Notion 文档记录与存档"
},
"typeVersion": 1
},
{
"id": "4a84e45d-17b4-4ec9-96bf-4c6ec252e393",
"name": "便签15",
"type": "n8n-nodes-base.stickyNote",
"position": [
736,
-304
],
"parameters": {
"color": 7,
"width": 640,
"height": 592,
"content": "## Slack 公告与 AI 格式化"
},
"typeVersion": 1
},
{
"id": "0f1b231a-9a08-4e5b-8344-01aa0f8ae8c8",
"name": "便签16",
"type": "n8n-nodes-base.stickyNote",
"position": [
1408,
-256
],
"parameters": {
"color": 7,
"width": 400,
"height": 400,
"content": "## 邮件确认与完结"
},
"typeVersion": 1
},
{
"id": "ad64298d-dcf6-45e5-86a0-dadef7539b6c",
"name": "便签17",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
320
],
"parameters": {
"color": 7,
"width": 304,
"height": 464,
"content": "## 错误处理与记录"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "1ca088d6-1491-407d-b2c4-a74e0d2ac92c",
"connections": {
"Configure GPT-4o Model": {
"ai_languageModel": [
[
{
"node": "Generate Release Notes FAQ (AI)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Configure GPT-4o Model1": {
"ai_languageModel": [
[
{
"node": "Generate Slack Release Announcement (AI)",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Validate ClickUp Payload": {
"main": [
[
{
"node": " Fetch Task Details from ClickUp",
"type": "main",
"index": 0
}
],
[
{
"node": "Log Errors in Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Announce Release in Slack": {
"main": [
[
{
"node": " Send Acknowledgment Email to Assignee",
"type": "main",
"index": 0
}
]
]
},
"ClickUp Task Status Trigger": {
"main": [
[
{
"node": "Validate ClickUp Payload",
"type": "main",
"index": 0
}
]
]
},
"Save Release Notes to Notion": {
"main": [
[
{
"node": "Generate Slack Release Announcement (AI)",
"type": "main",
"index": 0
}
]
]
},
"Generate Release Notes FAQ (AI)": {
"main": [
[
{
"node": "Save Release Notes to Notion",
"type": "main",
"index": 0
}
]
]
},
" Fetch Task Details from ClickUp": {
"main": [
[
{
"node": "Parse Task Details in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Parse Task Details in JavaScript": {
"main": [
[
{
"node": "Generate Release Notes FAQ (AI)",
"type": "main",
"index": 0
}
]
]
},
"Generate Slack Release Announcement (AI)": {
"main": [
[
{
"node": "Announce Release in Slack",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 工程, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
客户入职帮助请求(Typeform 到 Gmail 和 Sheets)
If
Code
Gmail
+10
28 节点Rahul Joshi
内容创作
代码注释转FAQ同步 (GitHub)
使用GPT-4o、Notion和Slack为开发团队自动回答GitHub PR问题
If
Code
Slack
+6
18 节点Rahul Joshi
工程
销售代表绩效追踪器
基于HighLevel CRM、GPT-4o、Notion和Slack的自动化销售排行榜
If
Code
Slack
+7
21 节点Rahul Joshi
客户关系管理
支持收件箱到常见问题解答回填(Gmail/Outlook)
使用GPT-4o、Gmail、Notion和Slack将支持邮件转换为常见问题解答
If
Code
Gmail
+7
21 节点Rahul Joshi
工单管理
使用 Azure OpenAI 和 Google Workspace 自动化 DEI 资格筛选
使用Azure GPT-4o、Google云端硬盘和表格自动进行DEI资格筛选
If
Code
Gmail
+9
19 节点Rahul Joshi
内容创作
从 Stripe 支付自动交付模板给客户
使用Stripe、GPT-4o和Gmail的自动化模板交付系统
If
Code
Gmail
+12
44 节点Rahul Joshi
客户关系管理
工作流信息
难度等级
高级
节点数量20
分类2
节点类型11
作者
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
外部链接
在 n8n.io 查看 →
分享此工作流