会议记录通知
高级
这是一个AI Summarization, Multimodal AI领域的自动化工作流,包含 16 个节点。主要使用 Set, Code, Slack, DateTime, SplitOut 等节点。 使用Gemini AI和Slack通知自动化会议笔记摘要
前置要求
- •Slack Bot Token 或 Webhook URL
- •可能需要目标 API 的认证凭证
- •Google Gemini API Key
使用的节点 (16)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "6nKbFj90W1K6L90c",
"meta": {
"instanceId": "bbc3fa3cd7d64d8ff0c4877d98dee68ce7dadacc5e089546680c915b3e5a212b",
"templateCredsSetupCompleted": true
},
"name": "会议记录通知",
"tags": [],
"nodes": [
{
"id": "173f23e7-fbd7-4dd1-acbe-4784be565a22",
"name": "计划触发器",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-464,
-288
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "98ee19dc-ccee-430a-8186-37337fa71619",
"name": "AI转换",
"type": "n8n-nodes-base.aiTransform",
"position": [
656,
-288
],
"parameters": {
"jsCode": "const items = $input.all();\nconst today = new Date();\nconst oneWeekAgo = new Date();\noneWeekAgo.setDate(today.getDate() - 7);\n\nconst filteredItems = items.filter((item) => {\n const itemDate = new Date(item?.json?.formattedDate);\n return itemDate >= oneWeekAgo && itemDate <= today;\n});\n\nreturn filteredItems;\n",
"instructions": "Filter the formatted Date in the past week upto today",
"codeGeneratedForPrompt": "Filter the formatted Date in the past week upto today"
},
"typeVersion": 1
},
{
"id": "b08111fc-f718-4009-aed8-4746d204f801",
"name": "Google Gemini聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
888,
-64
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "F27E5eCnDR6vZBbg",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "6fac9ef2-7876-4f71-a4aa-32aed028bf49",
"name": "发送消息",
"type": "n8n-nodes-base.slack",
"position": [
1456,
-288
],
"webhookId": "cb7cf410-be03-47eb-a39f-08e04c4d1021",
"parameters": {
"text": "test",
"select": "channel",
"blocksUi": "={{ '{ \"blocks\": ' + JSON.stringify($json.blocks) + ' }' }}",
"channelId": {
"__rl": true,
"mode": "list",
"value": "C09CV2VC877",
"cachedResultName": "meeting-notes"
},
"messageType": "block",
"otherOptions": {
"includeLinkToWorkflow": false
},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"id": "XBHT6VDVo1vwvFz2",
"name": "Slack account"
}
},
"executeOnce": true,
"typeVersion": 2.3
},
{
"id": "fd642df4-da0e-43b7-b6bf-4cd9bb80f9d6",
"name": "摘要",
"type": "n8n-nodes-base.httpRequestTool",
"position": [
1016,
-64
],
"parameters": {
"url": "=https://api.meetgeek.ai/v1/meetings/{{ $json.extract_meeting_id }}/summary/",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "xTo22iPOKW4a71o3",
"name": "Bearer Auth account"
}
},
"typeVersion": 4.2
},
{
"id": "daf0670b-e2d7-446d-9d63-32952e99d55b",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-312,
-432
],
"parameters": {
"width": 464,
"height": 304,
"content": "## 从记录员获取会议数据"
},
"typeVersion": 1
},
{
"id": "b6d8b4ef-1dbb-410a-a656-d6cb77e3cf64",
"name": "便签1",
"type": "n8n-nodes-base.stickyNote",
"position": [
392,
-480
],
"parameters": {
"width": 400,
"height": 352,
"content": "## 格式化日期并重构数据"
},
"typeVersion": 1
},
{
"id": "d5ceabf5-c4c4-4d40-8cd9-719537478abc",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
832,
-464
],
"parameters": {
"width": 320,
"height": 544,
"content": "## 从会议记录中提取摘要和行动项"
},
"typeVersion": 1
},
{
"id": "2248164e-c74c-43cf-ba80-2c314969310b",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
880,
-288
],
"parameters": {
"text": "=# 📝 Meeting Notes Summarizer with Action Items\n\nYou are an AI assistant that **summarizes meeting notes** and **extracts clear action items**.\n\n---\n\n## 🔹 Input Data\n- **meeting_id**: `{{ $json.extract_meeting_id }}`\n- **title**: `{{ $json.title }}`\n\n---\n\n## 🔹 Task Instructions\n1. Call the **Meeting Note Summary API** using the **HTTP Request node**, passing `meeting_id` as a path parameter. \n2. For each API response, generate a summary for the corresponding meeting. \n3. Provide a **concise summary** in **3–5 bullet points**. \n4. Extract a structured **Action Items** list with:\n - **Task description** \n - **Responsible person** (if mentioned, otherwise `Unassigned`) \n - **Deadline** (if mentioned, otherwise `No deadline`) \n5. Ensure each meeting summary **includes the meeting title** (`{{ $json.title }}`). \n6. If the meeting notes are **empty or missing**, still return the JSON format but use:\n - `\"summary\": [\"No summary available\"]` \n - `\"action_items\": []` \n\n---\n\n## 🔹 Output Format (JSON)\n```json\n{\n \"title\": \"{{ $json.title }}\",\n \"summary\": [\n \"point 1\",\n \"point 2\",\n \"point 3\"\n ],\n \"action_items\": [\n {\n \"task\": \"Task description\",\n \"owner\": \"Person name / Unassigned\",\n \"deadline\": \"Date / No deadline\"\n }\n ]\n}\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "f20b3135-24b3-4d49-bceb-1c10f32ac9bf",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1208,
-416
],
"parameters": {
"width": 368,
"height": 288,
"content": "## 设置 Slack 通知"
},
"typeVersion": 1
},
{
"id": "4086c066-d09c-47f0-b19e-f8b56fcf0d8a",
"name": "为会议 ID 添加自定义名称",
"type": "n8n-nodes-base.set",
"position": [
208,
-288
],
"parameters": {
"include": "except",
"options": {},
"assignments": {
"assignments": [
{
"id": "f26be114-60b9-4017-ada9-db48cb79968a",
"name": "extract_meeting_id",
"type": "string",
"value": "={{ $json.meeting_id }}"
}
]
},
"excludeFields": "meeting_id",
"includeOtherFields": true
},
"typeVersion": 3.4
},
{
"id": "06de46ec-90b5-48a7-95e8-52e1899a3d81",
"name": "拆分会议",
"type": "n8n-nodes-base.splitOut",
"position": [
-16,
-288
],
"parameters": {
"options": {},
"fieldToSplitOut": "=meetings"
},
"typeVersion": 1
},
{
"id": "46c0edee-9d49-4278-bf55-0244d6085290",
"name": "获取会议列表",
"type": "n8n-nodes-base.httpRequest",
"position": [
-240,
-288
],
"parameters": {
"url": "https://api.meetgeek.ai/v1/meetings/",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "xTo22iPOKW4a71o3",
"name": "Bearer Auth account"
}
},
"executeOnce": true,
"typeVersion": 4.2
},
{
"id": "e66baa91-7c07-4c23-93e0-cb2cea49ccd9",
"name": "格式化日期",
"type": "n8n-nodes-base.dateTime",
"position": [
432,
-288
],
"parameters": {
"date": "={{ $json.timestamp_start_utc }}",
"format": "yyyy-MM-dd",
"options": {
"includeInputFields": true
},
"operation": "formatDate"
},
"typeVersion": 2
},
{
"id": "3e1feb23-bf70-4e23-8ce2-ec0c752fe9f1",
"name": "重构为 Slack 块",
"type": "n8n-nodes-base.code",
"position": [
1232,
-288
],
"parameters": {
"jsCode": "// Input: array of note-taker outputs\nconst notes = $input.all().map(item => item.json);\n\n// Slack blocks array\nlet blocks = [];\n\nnotes.forEach((note, index) => {\n // Clean and parse JSON inside code block\n const cleaned = note.output.replace(/```json|```/g, '').trim();\n let parsed;\n\n try {\n parsed = JSON.parse(cleaned);\n } catch (err) {\n parsed = { title: `Meeting ${index + 1}`, summary: [\"Could not parse notes\"], action_items: [] };\n }\n\n // Meeting header with title\n blocks.push({\n type: \"header\",\n text: {\n type: \"plain_text\",\n text: parsed.title || `Meeting ${index + 1}`\n }\n });\n\n // Summary section\n if (parsed.summary && parsed.summary.length > 0) {\n blocks.push({\n type: \"section\",\n text: {\n type: \"mrkdwn\",\n text: \"*Summary:*\\n\" + parsed.summary.map(s => `• ${s}`).join(\"\\n\")\n }\n });\n }\n\n // Action items section\n if (parsed.action_items && parsed.action_items.length > 0) {\n blocks.push({\n type: \"section\",\n text: {\n type: \"mrkdwn\",\n text: \"*Action Items:*\"\n }\n });\n\n parsed.action_items.forEach(item => {\n blocks.push({\n type: \"section\",\n text: {\n type: \"mrkdwn\",\n text: `• *Task:* ${item.task || \"N/A\"}\\n *Owner:* ${item.owner || \"Unassigned\"}\\n *Deadline:* ${item.deadline || \"No deadline\"}`\n }\n });\n });\n } else {\n // If no action items\n blocks.push({\n type: \"section\",\n text: {\n type: \"mrkdwn\",\n text: \"_No action items available_\"\n }\n });\n }\n\n // Divider\n blocks.push({ type: \"divider\" });\n});\n\nreturn { blocks };\n"
},
"executeOnce": true,
"typeVersion": 2
},
{
"id": "97e0f0e6-6745-4b45-a019-c89e76de9ec5",
"name": "便利贴5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-1008
],
"parameters": {
"width": 512,
"height": 544,
"content": "## 📌 会议记录摘要生成器与 Slack 通知器"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "bdd7ca4b-f73e-491e-b697-0e419879a2b8",
"connections": {
"summary": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "Restructure to slack block",
"type": "main",
"index": 0
}
]
]
},
"Format date": {
"main": [
[
{
"node": "AI Transform",
"type": "main",
"index": 0
}
]
]
},
"AI Transform": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Split meetings": {
"main": [
[
{
"node": "Add custom name for meeting id",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get meetings list",
"type": "main",
"index": 0
}
]
]
},
"Get meetings list": {
"main": [
[
{
"node": "Split meetings",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Restructure to slack block": {
"main": [
[
{
"node": "Send a message",
"type": "main",
"index": 0
}
]
]
},
"Add custom name for meeting id": {
"main": [
[
{
"node": "Format date",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - AI 摘要总结, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
Google评论情感分析工作流
分析Google商家评论并使用Gemini将情绪报告发送到Slack
Set
Code
Slack
+7
25 节点Sayone Technologies
AI 摘要总结
基于AI的会议研究与每日议程(Google日历、Attio CRM和Slack)
基于AI的会议研究与每日议程:使用Google日历、Attio CRM和Slack
If
Set
Code
+15
30 节点Harry Siggins
AI 摘要总结
自动化会议准备
使用 GPT-5 和 Gemini 研究从日历到 Slack 通过 Attio CRM 自动准备会议
If
Set
Code
+16
39 节点Harry Siggins
AI 摘要总结
CVE速览
使用Gemini AI监控新CVE漏洞用于漏洞赏金狩猎并发送Slack警报
Set
Slack
Split Out
+5
12 节点Kunsh
杂项
使用Gemini AI和Google Workspace将每日邮件和日历摘要发送到Slack
使用Gemini AI和Google Workspace将每日邮件和日历摘要发送到Slack
Code
Cron
Gmail
+7
20 节点Sayone Technologies
杂项
使用Gemini、Slack和Notion从新闻简报创建AI情报摘要
使用Gemini、Slack和Notion从新闻简报创建AI情报摘要
Set
Code
Gmail
+12
19 节点Harry Siggins
杂项
工作流信息
难度等级
高级
节点数量16
分类2
节点类型12
作者
Sayone Technologies
@sayonetechSayOne Technologies is a digital transformation and IT services company headquartered in India, with a strong focus on web, mobile, and AI-driven solutions for the retail tech space. With over a decade of experience, SayOne partners with global businesses to build scalable applications, optimize inventory and operations using next-gen AI, and deliver customer-centric digital products.
外部链接
在 n8n.io 查看 →
分享此工作流