Konferenzzusammenfassungs-Generator

Fortgeschritten

Dies ist ein AI Summarization, Multimodal AI-Bereich Automatisierungsworkflow mit 12 Nodes. Hauptsächlich werden Code, GoogleDrive, HttpRequest, GoogleDocsTool, Agent und andere Nodes verwendet. Automatisierung von Zusammenfassungen von Besprechungen mit Google Drive, Gemini AI und Google Docs

Voraussetzungen
  • Google Drive API-Anmeldedaten
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Gemini API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "LRTza7My8IikYhSU",
  "meta": {
    "instanceId": "86b74eba715cda37acd36ddce700cd975f9e153aba76b42417c4c1f89dcd777e",
    "templateCredsSetupCompleted": true
  },
  "name": "Meeting Summarizer",
  "tags": [],
  "nodes": [
    {
      "id": "1dcb61d9-0f7c-4b86-8b71-5f3140447b22",
      "name": "Zusammenfassungs-Docs erstellen",
      "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": "Structured Output Parser",
      "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": "Erstellte Meeting-Datei herunterladen",
      "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": "Datei in Text transkribieren",
      "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": "Textzusammenfassung",
      "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": "Ausführen bei neuer Audio-/Video-Meeting-Datei",
      "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 Chat Model",
      "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": "Zusammenfassung formatieren",
      "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": "Zusammenfassung an erstellte Docs senden",
      "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": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        -128
      ],
      "parameters": {
        "color": 5,
        "width": 1088,
        "height": 528,
        "content": "### Summary Generation\n"
      },
      "typeVersion": 1
    },
    {
      "id": "91ae59b0-7399-451e-b05d-5b066801298b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        752,
        -96
      ],
      "parameters": {
        "color": 3,
        "width": 528,
        "height": 352,
        "content": "### Docs Formatter & Sender\n"
      },
      "typeVersion": 1
    },
    {
      "id": "dc392200-438b-4cb4-b057-e3803dbd21fe",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1744,
        -544
      ],
      "parameters": {
        "width": 1328,
        "height": 1264,
        "content": "# 🎤 AI Meeting Summary Generator with Google Docs Integration\n## 📋 Overview\n- Automated system that takes meeting audio/video files from Google Drive, transcribes them, generates concise summaries with AI, and formats everything neatly into Google Docs.\n\n## 🔄 How It Works\n#### Real-Time Processing\n1. 🎥 Record Meeting Audio/Video → Capture your meeting and place the file into your chosen Google Drive folder.\n1. 📂 Google Drive Trigger → Watches that folder (e.g., “Speech of Meetings”) for new uploads.\n2. ⬇️ Download File → Fetches the newly uploaded file from Google Drive.\n3. 🎙 Transcribe File (Gemini Audio Model) → Converts meeting speech into raw text transcript.\n4. ✍️ Summarizer (Gemini Agent) → Reads transcript → extracts:\n          - ✦ Key Discussions\n          - ✓ Action Items\n          - Adds title with date, structured bullets, and checkmarks.\n\n#### Document Creation & Structuring\n5. 📄 Create Summary Docs (Google Docs Tool) → Creates a new Google Doc if none exists for the meeting.\n6. 📊 Structured Output Parser → Ensures AI output is structured (summary_text + doc_id).\n7. 🎨 Format Summary (Code Node) → Applies formatting rules:\n- Bold/italic text\n- Bullet points (✦)\n- Checkmarks (✓)\n- Clean line spacing for readability\n\n#### Final Output\n8. 🚀 Send to Google Docs (BatchUpdate API) → Pushes formatted summary into the newly created Google Doc.\n\n## ⚙️ Configuration Required\n#### Credentials Needed:\n- 🔑 Google Drive OAuth2 → For file monitoring & downloads\n- 🔑 Google Docs OAuth2 → For creating & updating docs\n- 🔑 Google Gemini (PaLM) API → For transcription + summarization\n\n#### Settings:\n- Trigger: Every new file created in the specified Drive folder\n- AI Model: gemini-2.5-flash for transcription & summarization\n- Output: Google Docs with structured & styled meeting notes\n\n## 🎯 Key Features\n✅ Auto-transcription of meeting audio/video\n✅ Smart AI-generated summaries (Key Discussions + Action Items)\n✅ Google Docs integration with professional formatting\n✅ Structured JSON parsing for reliable updates\n✅ End-to-end automation (no manual intervention needed)\n\n## 📝 Notes\n- Works for both audio & video meeting files\n- Creates a new doc per meeting automatically\n- Uses batchUpdate API for fine formatting (bullets, bold, italics)\n- Keeps summaries short, clear, and action-oriented"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c86cf8a3-6cb7-40f5-bddc-9181721cb0b4",
  "connections": {
    "765dd6e3-1d95-409e-b640-2162a15304be": {
      "main": [
        [
          {
            "node": "d9d69f04-139d-45c3-bdd2-15846639fe84",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1dcb61d9-0f7c-4b86-8b71-5f3140447b22": {
      "ai_tool": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "221e5fff-cc2a-4ffd-b739-7ac9722527ce": {
      "main": [
        [
          {
            "node": "765dd6e3-1d95-409e-b640-2162a15304be",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ae5f4fb0-a96b-44a5-b291-c92119508300": {
      "ai_languageModel": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "dad59a23-6608-4b2c-8059-e324fd2bd5f5": {
      "ai_outputParser": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "34a20bdd-ed41-4af7-82c7-f6aa4705228d": {
      "main": [
        [
          {
            "node": "221e5fff-cc2a-4ffd-b739-7ac9722527ce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a2becdc5-fb1a-44de-9e01-3b4b95cf311d": {
      "main": [
        [
          {
            "node": "34a20bdd-ed41-4af7-82c7-f6aa4705228d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e506c53d-b861-4f0d-81ae-bca14ad8aeb2": {
      "main": [
        [
          {
            "node": "a2becdc5-fb1a-44de-9e01-3b4b95cf311d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - KI-Zusammenfassung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes12
Kategorie2
Node-Typen10
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
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.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34