会议摘要生成器
中级
这是一个AI Summarization, Multimodal AI领域的自动化工作流,包含 12 个节点。主要使用 Code, GoogleDrive, HttpRequest, GoogleDocsTool, Agent 等节点。 使用Google Drive、Gemini AI和Google Docs自动化会议摘要
前置要求
- •Google Drive API 凭证
- •可能需要目标 API 的认证凭证
- •Google Gemini API Key
使用的节点 (12)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "LRTza7My8IikYhSU",
"meta": {
"instanceId": "86b74eba715cda37acd36ddce700cd975f9e153aba76b42417c4c1f89dcd777e",
"templateCredsSetupCompleted": true
},
"name": "会议摘要生成器",
"tags": [],
"nodes": [
{
"id": "1dcb61d9-0f7c-4b86-8b71-5f3140447b22",
"name": "创建摘要文档",
"type": "n8n-nodes-base.googleDocsTool",
"position": [
432,
144
],
"parameters": {
"title": "={{ $('Execute when new file created of meeting of audio/video').item.json.name.replace(/\\.mp4$/, '') }}",
"folderId": "default"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "0dKnfLHBs7hVSMo4",
"name": "Google Docs account"
}
},
"typeVersion": 2
},
{
"id": "dad59a23-6608-4b2c-8059-e324fd2bd5f5",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
592,
224
],
"parameters": {
"jsonSchemaExample": "{\n \"summary_text\": \"Meeting Summary - August 31, 2025\\n\\n- Book club for \\\"Inspired\\\" scheduled for August 7th.\\n- New hires must read \\\"Inspired\\\" as part of onboarding.\\n- Customer interviews: Follow up with contacts from CS and Sales.\\n- Q3 engagement survey to be completed by all members.\",\n \"doc_id\": \"1-Ht71Q5_0Owh1NRApRn9b9uAqbciwVuWAL_3IvoHIkk\"\n}\n"
},
"typeVersion": 1.3
},
{
"id": "a2becdc5-fb1a-44de-9e01-3b4b95cf311d",
"name": "下载已创建的会议文件",
"type": "n8n-nodes-base.googleDrive",
"position": [
-80,
-16
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "url",
"value": "={{ $json.webViewLink }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "MlBEh59DqIzyGlyS",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "34a20bdd-ed41-4af7-82c7-f6aa4705228d",
"name": "将文件转录为文本",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
128,
-16
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-2.5-flash",
"cachedResultName": "models/gemini-2.5-flash"
},
"options": {},
"resource": "audio",
"inputType": "binary"
},
"typeVersion": 1
},
{
"id": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
"name": "文本摘要生成器",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
336,
-16
],
"parameters": {
"text": "={{ $json.content.parts[0].text }}",
"options": {
"systemMessage": "=You are an assistant that processes meeting transcripts. \n\nYour job is to: \n1. Read the meeting transcript provided. \n2. Extract the main discussion points. \n - Keep them short, clear, and action-oriented. \n - Focus only on decisions, tasks, or important updates. \n\nGoogle Docs Rules: \n- If the Google Doc for this project/meeting does not exist → **create a Summary Docs** with the formatted summary. \n\nGive summary and docs id Give both Seprately.\n\nFormatting rules:\n- Start with a title in this format: 📌 Meeting Summary – {{new Date().toLocaleDateString()}}\n- Use bold section headers like **✦ Key Discussions** and **✓ Action Items**.\n- Use ✦ bullets for general discussion points.\n- Use ✓ checkmarks for tasks or follow-ups.\n- Keep sentences short, clear, and actionable.\n- Add blank lines between sections for readability.\n- Avoid long paragraphs — use concise bullets only."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "e506c53d-b861-4f0d-81ae-bca14ad8aeb2",
"name": "当新的音频/视频会议文件创建时执行",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-288,
-16
],
"parameters": {
"event": "fileCreated",
"options": {
"fileType": "all"
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1EongmFhQf1avt1jamhV6aO6MIORrzNvT",
"cachedResultUrl": "https://drive.google.com/drive/folders/1EongmFhQf1avt1jamhV6aO6MIORrzNvT",
"cachedResultName": "Speech of Meetings"
}
},
"typeVersion": 1
},
{
"id": "ae5f4fb0-a96b-44a5-b291-c92119508300",
"name": "Google Gemini聊天模型",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
288,
224
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "Vn0WzAXggurbHNTb",
"name": "Google Gemini(PaLM) Api account"
}
},
"typeVersion": 1
},
{
"id": "765dd6e3-1d95-409e-b640-2162a15304be",
"name": "格式化摘要",
"type": "n8n-nodes-base.code",
"position": [
848,
-16
],
"parameters": {
"jsCode": "// Get text from previous node (adjust field if needed)\nconst input = $input.first().json.output.summary_text;\n\n// Step 1: Clean text (normalize line breaks)\nlet text = input.replace(/\\r\\n/g, \"\\n\");\n\n// Step 2: Parse into plain text + style spans\nlet plainText = \"\";\nlet styles = [];\nlet bullets = [];\nlet cursor = 1;\n\nconst lines = text.split(\"\\n\");\n\nfor (let line of lines) {\n if (!line.trim()) {\n plainText += \"\\n\";\n cursor++;\n continue;\n }\n\n let isBullet = false;\n if (line.trim().startsWith(\"✦\") || line.trim().startsWith(\"✓\") || line.trim().startsWith(\"-\")) {\n isBullet = true;\n line = line.trim().substring(1).trim();\n }\n\n const regex = /(\\*\\*([^*]+)\\*\\*|\\*([^*]+)\\*|([^*]+))/g;\n let match;\n while ((match = regex.exec(line)) !== null) {\n let raw = match[0];\n let clean = match[2] || match[3] || match[4] || \"\";\n const start = cursor;\n const end = cursor + clean.length;\n\n plainText += clean;\n\n if (raw.startsWith(\"**\")) {\n styles.push({\n range: { startIndex: start, endIndex: end },\n textStyle: { bold: true },\n fields: \"bold\"\n });\n } else if (raw.startsWith(\"*\")) {\n styles.push({\n range: { startIndex: start, endIndex: end },\n textStyle: { italic: true },\n fields: \"italic\"\n });\n }\n\n cursor = end;\n }\n\n plainText += \"\\n\";\n cursor++;\n\n if (isBullet) {\n bullets.push({\n range: {\n startIndex: cursor - line.length - 1,\n endIndex: cursor\n },\n bulletPreset: \"BULLET_DISC_CIRCLE_SQUARE\"\n });\n }\n}\n\n// Step 3: Build requests\nlet requests = [];\n\n// Insert everything at once\nrequests.push({\n insertText: {\n endOfSegmentLocation: {},\n text: plainText\n }\n});\n\n// Add styles\nfor (let s of styles) {\n requests.push({\n updateTextStyle: {\n range: s.range,\n textStyle: s.textStyle,\n fields: s.fields\n }\n });\n}\n\n// Add bullets\nfor (let b of bullets) {\n requests.push({\n createParagraphBullets: b\n });\n}\n\nreturn [\n {\n json: { requests }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "d9d69f04-139d-45c3-bdd2-15846639fe84",
"name": "将摘要发送到创建的文档",
"type": "n8n-nodes-base.httpRequest",
"position": [
1056,
-16
],
"parameters": {
"url": "=https://docs.googleapis.com/v1/documents/{{ $('Summerizer of that text').item.json.output.doc_id }}:batchUpdate",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "requests",
"value": "={{ $json.requests }}"
}
]
},
"nodeCredentialType": "googleDocsOAuth2Api"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "0dKnfLHBs7hVSMo4",
"name": "Google Docs account"
}
},
"typeVersion": 4.2
},
{
"id": "47cb35a1-691c-452d-a5a4-e5d463b60d93",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-352,
-128
],
"parameters": {
"color": 5,
"width": 1088,
"height": 528,
"content": "### 摘要生成"
},
"typeVersion": 1
},
{
"id": "91ae59b0-7399-451e-b05d-5b066801298b",
"name": "便签 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
752,
-96
],
"parameters": {
"color": 3,
"width": 528,
"height": 352,
"content": "### 文档格式化与发送"
},
"typeVersion": 1
},
{
"id": "dc392200-438b-4cb4-b057-e3803dbd21fe",
"name": "便签 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1744,
-544
],
"parameters": {
"width": 1328,
"height": 1264,
"content": "# 🎤 集成Google Docs的AI会议摘要生成器"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c86cf8a3-6cb7-40f5-bddc-9181721cb0b4",
"connections": {
"Format Summary": {
"main": [
[
{
"node": "Send Summary to created docs",
"type": "main",
"index": 0
}
]
]
},
"Crate a Summary Docs": {
"ai_tool": [
[
{
"node": "Summerizer of that text",
"type": "ai_tool",
"index": 0
}
]
]
},
"Summerizer of that text": {
"main": [
[
{
"node": "Format Summary",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Summerizer of that text",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Summerizer of that text",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Transcribe that file into text": {
"main": [
[
{
"node": "Summerizer of that text",
"type": "main",
"index": 0
}
]
]
},
"Download that crated meeting file": {
"main": [
[
{
"node": "Transcribe that file into text",
"type": "main",
"index": 0
}
]
]
},
"Execute when new file created of meeting of audio/video": {
"main": [
[
{
"node": "Download that crated meeting file",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - AI 摘要总结, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
自动向客户发送发票
通过 OCR.Space、GPT-4 和 Google Drive 到 Gmail 实现发票处理的自动化
If
Set
Code
+12
29 节点Michael Taleb
AI 摘要总结
使用Gemini AI视觉分析与Telegram警报监控X平台品牌提及
使用Gemini AI视觉分析与Telegram警报监控X平台品牌提及
If
Set
Code
+13
24 节点Atta
杂项
使用Gemini AI、ElevenLabs和Telegram警报的支持呼叫分析与路由
使用Gemini AI、ElevenLabs和Telegram警报的支持呼叫分析与路由
Code
Switch
Telegram
+8
16 节点Atta
AI 摘要总结
使用Gemini和GPT从笔记和语音创建结构化Notion工作区
使用Gemini和GPT从笔记和语音创建结构化Notion工作区
If
Set
Code
+14
36 节点Alex Huy
多模态 AI
使用Gemini AI从PDF提取发票数据到Google Sheets 📄
使用Gemini AI从PDF提取发票数据到Google Sheets 📄
Code
Gmail
Limit
+11
28 节点Louis
内容创作
成分分析
使用Telegram和Gemini 2.5 Flash分析产品成分照片
If
Switch
Telegram
+6
17 节点Parth Pansuriya
内容创作
工作流信息
难度等级
中级
节点数量12
分类2
节点类型10
作者
Parth Pansuriya
@parthpansuriyaI build smart and scalable automation workflows using n8n to simplify tasks, connect apps, and boost productivity. From WhatsApp bots to AI-powered systems, I create seamless automations tailored for business and creators.
外部链接
在 n8n.io 查看 →
分享此工作流