8
n8n 中文网amn8n.com

会议摘要生成器

中级

这是一个AI Summarization, Multimodal AI领域的自动化工作流,包含 12 个节点。主要使用 Code, GoogleDrive, HttpRequest, GoogleDocsTool, Agent 等节点。 使用Google Drive、Gemini AI和Google Docs自动化会议摘要

前置要求
  • Google Drive API 凭证
  • 可能需要目标 API 的认证凭证
  • Google Gemini API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 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)可能需要您自行付费。

工作流信息
难度等级
中级
节点数量12
分类2
节点类型10
难度说明

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

作者
Parth Pansuriya

Parth Pansuriya

@parthpansuriya

I 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 查看

分享此工作流