n8n 自动会议纪要:AI 提取决策与行动项,分发至 Notion、Slack 和 Gmail
通过 webhook 接收会议转录文本 → GPT-4 结构化分析 → 多通道同步分发摘要、任务与提醒
- 给谁
- 需要自动化会议跟进的产品团队、远程公司、运营团队
- 你会得到
- 会议结束后 8-12 秒内自动生成结构化摘要、决策清单、带优先级与责任人的行动项,并同步到 Slack、Notion、Gmail、Google Calendar 和 Sheets
- 你需要
- n8n · webhook · code · openai · slack · gmail · google-sheets
硬约束
前置条件:n8n 实例(自托管或云)、OpenAI API key、Slack workspace 与 bot token(chat:write)、Notion 集成 token 及两个数据库(Meeting Notes + Action Items)、Google Workspace(Gmail/Calendar/Sheets)OAuth2 凭证。预计搭建时间 25-35 分钟。费用:GPT-3.5 约 $0.0024/会议(作者估算)。
他们做了什么
模板作者 Daniel Shashko 在 n8n 上构建了一个工作流,通过 webhook 接收会议转录文本,使用 GPT-4 提取结构化信息,并通过代码节点计算优先级和完整度评分,最终分发到 Slack、Notion、Gmail、Google Calendar 和 Google Sheets。
效果如何
作者报告称整个流程从提交到全部分发完成约需 8-12 秒,可生成带唯一 ID 和优先级分数的行动项,并计算 0-100 的会议完整度评分。(来源:作者自述,未经验证)
值得知道
模板中多个关键字段为占位符:Slack 频道 ID、Notion pageId、Google Sheet ID(GOOGLE_SHEET_ID)、邮件域名(@company.com)均需手动替换。Notion 需预先创建两个数据库并配置字段。作者估算 GPT-3.5 成本约 $0.0024/会议,但实际费用取决于 token 用量和模型选择。搭建时间预计 25-35 分钟。本站未实际运行测试。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- 导入后按各需鉴权节点绑定你自己的凭证;本附件不含原作者密钥。
需要替换的配置
- 源模板来自 n8n 公开库 #10286(约 25 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-24
步骤
配置 Webhook 触发器与输入源
在 n8n 中添加 Webhook 节点,方法设为 POST,路径设为 meeting-transcript。将生成的 URL 配置为 Zoom、Google Meet、Otter.ai 等服务的 webhook 端点,或创建手动提交表单。支持 JSON、form data 等多种输入格式。
配置 OpenAI 分析节点
添加 OpenAI 节点,选择 Chat 资源,配置 API 凭证。模型选 GPT-4 或 GPT-3.5-turbo,temperature 0.3,max tokens 1500。节点包含 system prompt 定义输出 JSON 结构,以及 user prompt 模板注入会议元数据与转录文本。
运行提示词 · 来源原文。OpenAI 节点 system message 字段
You are an executive assistant AI specializing in meeting analysis. Extract and structure information from meeting transcripts. Return ONLY valid JSON with these exact keys: { "executive_summary": "2-3 sentence overview", "key_decisions": ["decision 1", "decision 2"], "action_items": [ {"task": "description", "owner": "name", "due_date": "YYYY-MM-DD or 'not specified'", "priority": "High/Medium/Low"}, ], "discussion_topics": ["topic 1", "topic 2"], "open_questions": ["question 1"], "next_steps": ["step 1", "step 2"], "risks_identified": ["risk 1"], "follow_up_meeting_needed": true/false, "sentiment": "Positive/Neutral/Negative", "engagement_level": "High/Medium/Low" }运行提示词 · 来源原文。OpenAI 节点 user message 字段(n8n 表达式,运行时替换变量)
Meeting: {{ $json.title }} Date: {{ $json.date }} Attendees: {{ $json.attendees.join(', ') }} Duration: {{ $json.duration }} minutes Transcript: {{ $json.transcript }}配置智能合成与评分代码节点
添加 Code 节点(Synthesize Intelligence),运行 JavaScript 计算行动项优先级分数(0-40 范围)和会议完整度评分(0-100)。代码解析 OpenAI 返回的 JSON,为每个行动项生成唯一 ID、排序,并标记未分配任务。可根据需要调整阈值。
运行提示词 · 来源原文。Synthesize Intelligence Code 节点 jsCode 字段
const meetingData = $('Parse Meeting Input').first().json; const aiResponse = JSON.parse($input.first().json.choices[0].message.content); // Calculate priority scores function calculatePriorityScore(actionItem) { const priorityScores = { 'High': 3, 'Medium': 2, 'Low': 1 }; const hasOwner = actionItem.owner && actionItem.owner !== 'not specified' ? 1 : 0; const hasDueDate = actionItem.due_date && actionItem.due_date !== 'not specified' ? 1 : 0; return (priorityScores[actionItem.priority] || 2) * 10 + hasOwner * 5 + hasDueDate * 5; } // Enrich action items const enrichedActionItems = aiResponse.action_items.map((item, index) => ({ id: `${Date.now()}-${index}`, task: item.task, owner: item.owner || 'Unassigned', due_date: item.due_date !== 'not specified' ? item.due_date : '', priority: item.priority, priority_score: calculatePriorityScore(item), status: 'Not Started', meeting_title: meetingData.title, meeting_date: meetingData.date, created_at: new Date().toISOString() })); // Sort by priority score enrichedActionItems.sort((a, b) => b.priority_score - a.priority_score); return { json: { // Meeting metadata meeting_id: `meeting-${Date.now()}`, meeting_title: meetingData.title, meeting_date: meetingData.date, attendees: meetingData.attendees, attendee_count: meetingData.attendee_count, duration: meetingData.duration, organizer: meetingData.organizer, meeting_url: meetingData.meeting_url, recording_url: meetingData.recording_url, // AI Analysis executive_summary: aiResponse.executive_summary, key_decisions: aiResponse.key_decisions, action_items: enrichedActionItems, action_item_count: enrichedActionItems.length, high_priority_count: enrichedActionItems.filter(a => a.priority === 'High').length, discussion_topics: aiResponse.discussion_topics, open_questions: aiResponse.open_questions, next_steps: aiResponse.next_steps, risks_identified: aiResponse.risks_identified, follow_up_meeting_needed: aiResponse.follow_up_meeting_needed, sentiment: aiResponse.sentiment, engagement_level: aiResponse.engagement_level, // Calculated flags requires_urgent_attention: enrichedActionItems.some(a => a.priority === 'High'), has_unassigned_tasks: enrichedActionItems.some(a => a.owner === 'Unassigned'), completeness_score: calculateCompletenessScore(enrichedActionItems, aiResponse) } }; function calculateCompletenessScore(actionItems, analysis) { let score = 50; // Base score // Penalties if (actionItems.length === 0) score -= 20; if (actionItems.filter(a => a.owner === 'Unassigned').length > 0) score -= 10; if (actionItems.filter(a => !a.due_date).length > 0) score -= 10; if (analysis.open_questions.length > 3) score -= 10; // Bonuses if (analysis.key_decisions.length > 0) score += 15; if (analysis.next_steps.length > 0) score += 10; if (actionItems.every(a => a.owner !== 'Unassigned')) score += 15; if (actionItems.every(a => a.due_date)) score += 10; return Math.max(0, Math.min(100, score)); }配置 Slack 摘要推送
添加 Slack 节点,认证方式选 OAuth2,创建 Slack app 并授予 chat:write 权限。将频道 ID 占位符替换为实际频道(如 #meeting-summaries)。消息模板使用 mrkdwn 格式,含会议摘要、决策、行动项和完整度评分。
运行提示词 · 来源原文。Slack 节点 text 字段(mrkdwn 消息模板)
📋 *Meeting Summary: {{ $json.meeting_title }}* 🗓️ *Date:* {{ $json.meeting_date.split('T')[0] }} | *Duration:* {{ $json.duration }}min 👥 *Attendees:* {{ $json.attendee_count }} people 📊 *Completeness:* {{ $json.completeness_score }}% *Executive Summary:* {{ $json.executive_summary }} *✅ Key Decisions ({{ $json.key_decisions.length }}):* {{ $json.key_decisions.map((d, i) => `${i+1}. ${d}`).join('\n') }} *🎯 Action Items ({{ $json.action_item_count }}):* {{ $json.action_items.slice(0, 5).map(a => `• [${a.priority}] ${a.task} - *${a.owner}* ${a.due_date ? '(Due: ' + a.due_date + ')' : ''}`).join('\n') }} {{ $json.action_item_count > 5 ? `\n...and ${$json.action_item_count - 5} more` : '' }} {{ $json.has_unassigned_tasks ? '⚠️ *Warning:* Some tasks are unassigned' : '' }} {{ $json.recording_url ? '🎥 <' + $json.recording_url + '|Watch Recording>' : '' }}配置 Notion 数据库同步
在 Notion 中创建两个数据库:Meeting Notes(字段:title, date, attendees, summary, action items, completeness, recording URL)和 Action Items(字段:title, assigned to, due date, priority, status, meeting relation)。共享给集成,添加 Notion token。配置 Create Meeting Note 和 Create Task in Notion 节点,填入数据库 page ID。
配置邮件通知与日历提醒
添加 Gmail 节点,配置 OAuth2 或 SMTP 凭证。邮件模板为 HTML,含优先级颜色标识和会议上下文。添加 Google Calendar 节点,启用 Calendar API,在行动项截止日期当天 9:00 创建提醒事件(可调整),将任务责任人添加为参与者。
运行提示词 · 来源原文。Gmail 节点 message 字段(HTML 邮件模板)
=<h2>New Action Item from Meeting</h2> <p><strong>Meeting:</strong> {{ $json.meeting_title }}<br> <strong>Date:</strong> {{ $json.meeting_date.split('T')[0] }}</p> <h3>Your Task:</h3> <p>{{ $json.task }}</p> <p><strong>Priority:</strong> <span style="color: {{ $json.priority === 'High' ? 'red' : $json.priority === 'Medium' ? 'orange' : 'green' }}">{{ $json.priority }}</span><br> <strong>Due Date:</strong> {{ $json.due_date || 'Not specified' }}</p> {{ $json.meeting_url ? '<p><a href="' + $json.meeting_url + '">View Meeting Details</a></p>' : '' }} <hr> <p style="font-size: 12px; color: #666;">This action item was automatically extracted from the meeting transcript using AI.</p>配置分析追踪与测试验证
创建 Google Sheet,列名:Meeting_ID, Title, Date, Attendees, Duration, Action_Items, High_Priority, Decisions, Completeness, Unassigned_Tasks, Follow_Up_Needed。配置 Google Sheets 节点追加数据。用 POST 发送样例转录文本测试,验证 Slack 消息、Notion 条目、邮件、日历事件和 Sheets 记录。
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你是一个 n8n 工作流搭建助手。用户想要复现「AI 会议纪要自动分发」模板。请先确认用户已具备:n8n 实例、OpenAI API key、Slack bot token(chat:write)、Notion integration token、Google Workspace OAuth2 凭证。然后按步骤指导配置 webhook、OpenAI 节点、Slack/Notion/Gmail/Calendar/Sheets 节点,并提醒替换所有占位符(频道 ID、数据库 page ID、Sheet ID、邮件域名)。
搭建前请确认所有 API 凭证已就绪;Notion 需先创建两个数据库并共享给集成;测试时先用样例 JSON 触发
来源
AI meeting summary & action item tracker with Notion, Slack, and Gmail · tomax · n8n.io · 2025-10-29
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。