Google Meet 自动化
中级
这是一个Project Management, AI Summarization领域的自动化工作流,包含 14 个节点。主要使用 If, Set, Gmail, Merge, Webhook 等节点。 使用 Gemini 和 Google Workspace 将会议记录转换为行动项
前置要求
- •Google 账号和 Gmail API 凭证
- •HTTP Webhook 端点(n8n 会自动生成)
- •Google Gemini API Key
使用的节点 (14)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "5N46vB5yT6jTsXHH",
"meta": {
"instanceId": "c2650793f644091dc80fb900fe63448ad1f4b774008de9608064d67294f8307c",
"templateCredsSetupCompleted": true
},
"name": "Google Meet 自动化",
"tags": [],
"nodes": [
{
"id": "webhook-trigger",
"name": "Webhook触发器",
"type": "n8n-nodes-base.webhook",
"position": [
112,
320
],
"webhookId": "b339e631-7267-4f88-bea4-16c0f35f7645",
"parameters": {
"path": "google-meet-automation",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "error-response",
"name": "错误响应",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
560,
416
],
"parameters": {
"options": {},
"respondWith": "json",
"responseBody": "={\n \"status\": \"error\",\n \"message\": \"Missing required fields: meetingNotes and meetingTitle\",\n \"timestamp\": \"{{ $now.toISO() }}\"\n}"
},
"typeVersion": 1.4
},
{
"id": "extract-data",
"name": "提取会议数据",
"type": "n8n-nodes-base.set",
"position": [
560,
224
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "meeting-notes",
"name": "meetingNotes",
"type": "string",
"value": "={{ $json.body.meetingNotes }}"
},
{
"id": "meeting-title",
"name": "meetingTitle",
"type": "string",
"value": "={{ $json.body.meetingTitle }}"
},
{
"id": "meeting-date",
"name": "meetingDate",
"type": "string",
"value": "={{ $json.body.meetingDate || $now.toISO() }}"
},
{
"id": "attendees",
"name": "attendees",
"type": "array",
"value": "={{ $json.body.attendees || [] }}"
},
{
"id": "meeting-duration",
"name": "duration",
"type": "string",
"value": "={{ $json.body.duration || '60 minutes' }}"
}
],
"assignments[0]": {
"value": "={{ $json.meetingNotes }}"
},
"assignments[1]": {
"value": "={{ $json.meetingTitle }}"
},
"assignments[2]": {
"value": "={{ $json.meetingDate || $now.toISO() }}"
},
"assignments[3]": {
"value": "={{ $json.attendees || [] }}"
},
"assignments[4]": {
"value": "={{ $json.duration || '60 minutes' }}"
}
}
},
"typeVersion": 3.4
},
{
"id": "gemini-model",
"name": "Google Gemini AI",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
816,
448
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "7ZkDDnjsiPRXf6eh",
"name": "project gcp: n8n-khmuhtadin"
}
},
"typeVersion": 1
},
{
"id": "ai-processor",
"name": "AI 会议处理器",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
784,
224
],
"parameters": {
"text": "=You are an AI assistant that analyzes Google Meet notes to extract actionable insights.\n\nMEETING DETAILS:\nTitle: {{ $json.meetingTitle }}\nDate: {{ $json.meetingDate }}\nDuration: {{ $json.duration }}\nAttendees: {{ $json.attendees.join(', ') }}\n\nMEETING NOTES:\n{{ $json.meetingNotes }}\n\n=== INSTRUCTIONS ===\nPlease analyze the meeting notes and extract the following information in JSON format:\n\n1. ACTION_ITEMS: Array of tasks with assignee, description, due_date, and priority\n2. KEY_DECISIONS: Array of important decisions made\n3. SUMMARY: Brief meeting summary (2-3 sentences)\n4. FOLLOW_UP_EMAILS: Array of follow-up emails to send with recipient, subject, and content\n5. NEXT_MEETING: Information about next meeting if mentioned\n6. IMPORTANT_DATES: Any dates or deadlines mentioned\n\nReturn ONLY valid JSON with this structure:\n{\n \"action_items\": [\n {\n \"assignee\": \"person@email.com\",\n \"description\": \"Task description\",\n \"due_date\": \"2025-01-15\",\n \"priority\": \"high|medium|low\"\n }\n ],\n \"key_decisions\": [\"Decision 1\", \"Decision 2\"],\n \"summary\": \"Meeting summary here\",\n \"follow_up_emails\": [\n {\n \"recipient\": \"person@email.com\",\n \"subject\": \"Email subject\",\n \"content\": \"Email content\"\n }\n ],\n \"next_meeting\": {\n \"date\": \"2025-01-20\",\n \"time\": \"10:00 AM\",\n \"topic\": \"Follow-up discussion\"\n },\n \"important_dates\": [\n {\n \"date\": \"2025-01-15\",\n \"description\": \"Project deadline\"\n }\n ]\n}",
"batching": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "split-action-items",
"name": "拆分行动项",
"type": "n8n-nodes-base.splitOut",
"position": [
1184,
32
],
"parameters": {
"options": {},
"fieldToSplitOut": "action_items"
},
"typeVersion": 1
},
{
"id": "create-tasks",
"name": "创建 Google 任务",
"type": "n8n-nodes-base.googleTasks",
"position": [
1408,
32
],
"parameters": {
"task": "My Tasks",
"title": "={{ $json.description }}",
"additionalFields": {
"notes": "=Meeting: {{ $('Extract Meeting Data').item.json.meetingTitle }}\nAssignee: {{ $json.assignee }}\nPriority: {{ $json.priority }}\nDue Date: {{ $json.due_date }}\n\nCreated from Google Meet automation on {{ $now.toFormat('yyyy-MM-dd HH:mm') }}"
}
},
"credentials": {
"googleTasksOAuth2Api": {
"id": "Af2b9A5rnrReAwkO",
"name": "GCP: n8n-khmuhtadin"
}
},
"typeVersion": 1
},
{
"id": "split-emails",
"name": "拆分跟进邮件",
"type": "n8n-nodes-base.splitOut",
"position": [
1184,
224
],
"parameters": {
"options": {},
"fieldToSplitOut": "follow_up_emails"
},
"typeVersion": 1
},
{
"id": "send-emails",
"name": "发送跟进邮件",
"type": "n8n-nodes-base.gmail",
"position": [
1408,
224
],
"webhookId": "f752a312-37ec-4456-8015-1b5e2a5a5138",
"parameters": {
"sendTo": "={{ $json.recipient }}",
"message": "=<div style=\"font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto;\">\n <h2 style=\"color: #2563eb;\">{{ $json.subject }}</h2>\n \n <div style=\"background: #f8fafc; padding: 20px; border-radius: 8px; margin: 20px 0;\">\n <h3 style=\"margin-top: 0; color: #374151;\">Meeting Summary</h3>\n <p><strong>Meeting:</strong> {{ $('Extract Meeting Data').item.json.meetingTitle }}</p>\n <p><strong>Date:</strong> {{ $('Extract Meeting Data').item.json.meetingDate }}</p>\n <p><strong>Duration:</strong> {{ $('Extract Meeting Data').item.json.duration }}</p>\n </div>\n \n <div style=\"margin: 20px 0;\">\n {{ $json.content }}\n </div>\n \n <hr style=\"border: none; border-top: 1px solid #e5e7eb; margin: 30px 0;\">\n \n <p style=\"color: #6b7280; font-size: 14px;\">\n This email was automatically generated from your Google Meet notes.<br>\n Generated on {{ $now.toFormat('MMMM dd, yyyy \\at HH:mm') }}\n </p>\n</div>",
"options": {},
"subject": "={{ $json.subject }}"
},
"credentials": {
"gmailOAuth2": {
"id": "8p11S7abjY8KddB9",
"name": "contactmuhtadin"
}
},
"typeVersion": 2.1
},
{
"id": "create-summary-doc",
"name": "创建会议摘要文档",
"type": "n8n-nodes-base.googleDocs",
"position": [
1408,
416
],
"parameters": {
"title": "=('Meeting Summary - ' + $('Extract Meeting Data').item.json.meetingTitle + ' - ' + $now.toFormat('yyyy-MM-dd'))",
"folderId": "default"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "rlvvfYKhxvwjpMC2",
"name": "GCP: n8n-khmuhtadin"
}
},
"typeVersion": 2
},
{
"id": "final-response",
"name": "成功响应",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1856,
128
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.4
},
{
"id": "cedd4268-e3b3-4b1c-bfe3-02c7f099cb83",
"name": "如果",
"type": "n8n-nodes-base.if",
"position": [
336,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0df05311-3c5d-4f7c-915e-f8e66171d6cc",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.meetingTitle }}",
"rightValue": ""
},
{
"id": "d6ccea8b-afd0-4955-8b37-2d44e3ea3648",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.body.meetingNotes }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "ede05363-8a89-4706-a74b-63e8d39886d4",
"name": "结构化输出解析器",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
944,
448
],
"parameters": {
"jsonSchemaExample": "{\n \"action_items\": [\n {\n \"assignee\": \"person@email.com\",\n \"description\": \"Task description\",\n \"due_date\": \"2025-01-15\",\n \"priority\": \"high|medium|low\"\n }\n ],\n \"key_decisions\": [\"Decision 1\", \"Decision 2\"],\n \"summary\": \"Meeting summary here\",\n \"follow_up_emails\": [\n {\n \"recipient\": \"person@email.com\",\n \"subject\": \"Email subject\",\n \"content\": \"Email content\"\n }\n ],\n \"next_meeting\": {\n \"date\": \"2025-01-20\",\n \"time\": \"10:00 AM\",\n \"topic\": \"Follow-up discussion\"\n },\n \"important_dates\": [\n {\n \"date\": \"2025-01-15\",\n \"description\": \"Project deadline\"\n }\n ]\n}"
},
"typeVersion": 1.3
},
{
"id": "11bcb195-3a58-4cd1-8a0d-e69cc954847a",
"name": "合并",
"type": "n8n-nodes-base.merge",
"position": [
1632,
112
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "adcb521c-7b87-4c7d-b443-94ffb124ee23",
"connections": {
"If": {
"main": [
[
{
"node": "Extract Meeting Data",
"type": "main",
"index": 0
}
],
[
{
"node": "Error Response",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Success Response",
"type": "main",
"index": 0
}
]
]
},
"Webhook Trigger": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini AI": {
"ai_languageModel": [
[
{
"node": "AI Meeting Processor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Split Action Items": {
"main": [
[
{
"node": "Create Google Tasks",
"type": "main",
"index": 0
}
]
]
},
"Create Google Tasks": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"AI Meeting Processor": {
"main": [
[
{
"node": "Split Action Items",
"type": "main",
"index": 0
},
{
"node": "Split Follow-up Emails",
"type": "main",
"index": 0
},
{
"node": "Create Meeting Summary Document",
"type": "main",
"index": 0
}
]
]
},
"Extract Meeting Data": {
"main": [
[
{
"node": "AI Meeting Processor",
"type": "main",
"index": 0
}
]
]
},
"Send Follow-up Emails": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Split Follow-up Emails": {
"main": [
[
{
"node": "Send Follow-up Emails",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Meeting Processor",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Create Meeting Summary Document": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 2
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 项目管理, AI 摘要总结
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
在可视化参考库中探索n8n节点
在可视化参考库中探索n8n节点
If
Ftp
Set
+93
113 节点I versus AI
其他
使用Gemini AI摘要的自动化WhatsApp群组每周团队报告
使用Gemini AI摘要的自动化WhatsApp群组每周团队报告
If
Set
Code
+13
47 节点Jamot
项目管理
竞争对手内容差距分析器:自动化网站主题映射
使用Gemini AI、Apify和Google Sheets分析竞争对手内容差距
If
Set
Code
+10
30 节点Mychel Garzon
杂项
01 使用AI媒体买家分析Facebook广告表现并将洞察发送到Google Sheets
使用Gemini AI分析Facebook广告并将洞察发送到Google Sheets
If
Set
Code
+13
34 节点JJ Tham
市场调研
Gitlab 代码审查模板
使用Gemini AI和JIRA上下文自动化GitLab合并请求代码审查
If
Set
Code
+10
41 节点Evgeny Agronsky
AI 摘要总结
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项