将会议笔记自动转为 Asana 任务与 Slack 摘要
表单提交会议文本 → GPT-4o 提取决策与行动项 → 创建 Asana 任务 → 聚合发送 Slack 摘要
- 给谁
- 销售团队、项目经理、需要自动追踪会议行动项的人
- 你会得到
- 每次提交会议笔记后,自动在 Asana 创建带负责人和截止日的任务,并在 Slack 发送含可点击链接的摘要
硬约束
需要:n8n 实例;OpenAI API key;Asana 工作区 OAuth2 连接;Slack 工作区 OAuth2 连接。费用:作者估算每次分析约 $0.01–0.03(GPT-4o)。表单可共享给团队使用。
他们做了什么
该 n8n 模板由作者 kareem 发布,展示了一个工作流:通过表单收集会议笔记,调用 GPT-4o 提取决策、行动项、痛点、预算和下次会议日期,自动在 Asana 创建任务,并向 Slack 频道发送聚合摘要。模板包含完整的节点配置与连线。
效果如何
作者报告称,该工作流适用于销售团队和项目经理,可减少手动追踪会议行动项的工作量;GPT-4o 每次分析费用约 $0.01–0.03;表单可共享给团队;Slack 消息包含可点击的任务链接。(来源:作者报告)
值得知道
1. Asana 节点的 assignee 参数硬编码为 'me'(即 OAuth2 授权用户),如需分配给他人需自行修改。2. 需要有效的 Asana 和 Slack OAuth2 连接,配置权限范围取决于各工作区的安全策略。3. 费用估算 $0.01–0.03/次来自作者报告,未经验证,实际费用取决于笔记长度和 GPT-4o 定价。4. 模板未提供直接的 workflow JSON 下载链接,需通过 n8n 模板页面导入或手动复制 workflow.json。5. 本站未执行实测,复现前建议先用测试数据验证端到端流程。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- 导入后按各需鉴权节点绑定你自己的凭证;本附件不含原作者密钥。
需要替换的配置
- 源模板来自 n8n 公开库 #9875(约 12 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-25
步骤
提交会议笔记
在 n8n 中导入该模板后,工作流由一个表单触发器(Meeting Notes Form)启动。填写并提交以下字段:公司名称/项目名称、会议笔记全文(支持 AI 速记、手写笔记或共享文档粘贴)、Asana 项目 ID、Slack 频道名称。提交后工作流自动执行。
AI 提取结构化信息
表单数据进入 OpenAI 节点(AI Extract Data),模型使用 gpt-4o。system 提示词设定角色为提取会议结构化数据的助手;user 提示词要求从会议笔记中提取 key_decisions、action_items(含 assignee 与 due_date)、next_meeting_date、pain_points、budget_mentioned,并以指定 JSON 格式返回。
运行提示词 · 来源原文。AI Extract Data 节点的 system 消息字段
You are a helpful, intelligent personal assistant. You extract structured data from meeting notes.
运行提示词 · 来源原文。AI Extract Data 节点的 user 消息字段(content);其中 {{ $json[...] }} 为 n8n 表达式,运行时替换为表单输入
=Extract the following from these meeting notes: Meeting notes: {{ $json["Paste in your meeting notes here"] }} Return a JSON object with these exact keys: { "key_decisions": ["decision 1", "decision 2"], "action_items": [ { "task": "task description", "assignee": "person name or 'Unassigned'", "due_date": "YYYY-MM-DD or null" } ], "next_meeting_date": "YYYY-MM-DD or null", "pain_points": ["pain point 1", "pain point 2"], "budget_mentioned": "dollar amount or null" } Rules: - If no action items found, return empty array - If no assignee mentioned, use "Unassigned" - If no due date mentioned, use null - Extract dates in YYYY-MM-DD format创建 Asana 任务
Structure Data 代码节点解析 GPT-4o 返回的 JSON,将每个 action_item 拆分为独立数据项,并携带完整会议上下文。随后 Create Asana Task 节点为每个行动项创建任务:任务标题取自 task 字段,负责人硬编码为 'me'(即 OAuth2 授权用户),截止日取自 due_date,备注包含 assignee、company_name 和完整 meeting_notes,项目归属由 Asana Project ID 指定。
运行提示词 · 来源原文。Structure Data 节点的 JS Code 字段
// Get the AI response const aiContent = $input.item.json.message.content; // Get form data const formTrigger = $('Meeting Notes Form').item.json; const formData = { company_name: formTrigger["Company Name / Project Name"], meeting_notes: formTrigger["Paste in your meeting notes here"], asana_project_id: formTrigger["Asana Project ID"], slack_channel: formTrigger["Slack Channel Name"] || "#general" }; // Parse extracted data const extracted = { key_decisions: aiContent.key_decisions || [], action_items: aiContent.action_items || [], next_meeting_date: aiContent.next_meeting_date || null, pain_points: aiContent.pain_points || [], budget_mentioned: aiContent.budget_mentioned || null }; // Create one item per action item with meeting context const outputItems = extracted.action_items.map(item => ({ json: { task: item.task, assignee: item.assignee, due_date: item.due_date, company_name: formData.company_name, meeting_notes: formData.meeting_notes, asana_project_id: formData.asana_project_id, slack_channel: formData.slack_channel, key_decisions: extracted.key_decisions, pain_points: extracted.pain_points, next_meeting_date: extracted.next_meeting_date, budget_mentioned: extracted.budget_mentioned } })); return outputItems;发送 Slack 摘要
Combine Tasks 聚合节点将所有 Asana 任务输出合并为单一数据项。Format Slack Message 代码节点据此构建格式化 Slack 消息,包含关键决策、带可点击链接的行动项(含负责人与截止日)、痛点、预算与下次会议日期。Send to Slack 节点将消息发送到第 1 步指定的 Slack 频道。
运行提示词 · 来源原文。Format Slack Message 节点的 JS Code 字段
// Get aggregated tasks const aggregatedData = $input.item.json; const tasks = aggregatedData.Tasks || []; // Get meeting context const parseData = $('Structure Data').first().json; const company_name = parseData.company_name || "Unknown Company"; const slack_channel = parseData.slack_channel || "#general"; const key_decisions = parseData.key_decisions || []; const pain_points = parseData.pain_points || []; const next_meeting_date = parseData.next_meeting_date; const budget_mentioned = parseData.budget_mentioned; // Format action items const actionItems = tasks.map(task => ({ name: task.name, assignee: task.assignee ? task.assignee.name.split('@')[0] : "Unassigned", due_date: task.due_on, url: task.permalink_url })); // Build Slack message let message = `*📝 Meeting Summary: ${company_name}*\n\n`; if (key_decisions.length > 0) { message += `*✅ Key Decisions:*\n`; key_decisions.forEach(d => message += `• ${d}\n`); message += `\n`; } if (actionItems.length > 0) { message += `*📋 Action Items Created (${actionItems.length}):*\n`; actionItems.forEach(item => { const dueDate = item.due_date ? ` - Due: ${item.due_date}` : ""; message += `• <${item.url}|${item.name}> - ${item.assignee}${dueDate}\n`; }); message += `\n`; } if (pain_points.length > 0) { message += `*⚠️ Pain Points:*\n`; pain_points.forEach(p => message += `• ${p}\n`); message += `\n`; } if (budget_mentioned) { message += `*💰 Budget: ${budget_mentioned}*\n\n`; } if (next_meeting_date) { message += `*📅 Next Meeting: ${next_meeting_date}*\n\n`; } const projectName = tasks[0]?.projects?.[0]?.name || "Asana"; message += `_Project: ${projectName}_`; return [{ json: { channel: slack_channel, message: message } }];
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你是一个 n8n 模板导入助手。用户想要复现「会议笔记自动转 Asana 任务与 Slack 摘要」的工作流。请按以下顺序协助: 1. 确认用户已有 n8n 实例(云或自托管)及管理员权限; 2. 指导从 https://n8n.io/workflows/9875/ 导入模板; 3. 配置三个凭证:OpenAI API key、Asana OAuth2、Slack OAuth2; 4. 检查表单触发器字段与 AI 节点中的模型选择(gpt-4o); 5. 建议先用测试数据执行一次,验证 Asana 任务创建和 Slack 消息格式。 注意:Asana 节点的 assignee 当前硬编码为 'me',如需指定他人,需修改节点参数或在工作流中加入查找逻辑。
先配置凭证,再用样例会议笔记测试完整流程
来源
Transform meeting notes into Asana tasks & Slack summaries with GPT-4o · kareem · n8n.io · 2025-10-18
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。