Streamline your meeting documentation by automating summaries using Google Drive API and Google Gemini. Effortlessly convert meeting notes in Google Docs into concise summaries, saving time and ensuring clarity. This workflow features real-time processing, structured output parsing, and seamless integration with Google Drive for easy access to your documents. Perfect for developers and integrators managing multiple projects or teams needing quick access to summarized discussions. Requires 3 accounts: Google Docs OAuth, Google Drive OAuth, and Google Gemini API. Achieve a 75% reduction in time spent on meeting note preparation, allowing teams to focus on action items and decisions.
Categories
APIs
AI Features
Credentials
Copy or download to import into your n8n instance
{ "id": "LRTza7My8IikYhSU", "meta": { "instanceId": "86b74eba715cda37acd36ddce700cd975f9e153aba76b42417c4c1f89dcd777e", "templateCredsSetupCompleted": true }, "name": "Meeting Summarizer", "tags": [], "nodes": [ { "id": "1dcb61d9-0f7c-4b86-8b71-5f3140447b22", "name": "Crate a Summary Docs", "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": "Download that crated meeting file", "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": "Transcribe that file into text", "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": "Summerizer of that text", "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": "Execute when new file created of meeting of audio/video", "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": "Format Summary", "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": "Send Summary to created docs", "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": { "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 } ] ] } } }
Automate customer inquiries using an AI assistant powered by OpenAI GPT and HTTP Request integration. This workflow enables real-time responses to customer questions, ensuring support is available 24/7. Features include conversation memory for engaging chats, automatic message processing for instant replies, and HTML for rich content rendering. Perfect for e-commerce businesses managing over 100 daily inquiries or SaaS platforms requiring real-time user support. Requires 1 account: OpenAI API. Save 5 hours weekly by handling unlimited customer inquiries with precise, context-aware answers from your product documentation.
Streamline your social media content strategy with an automated workflow using Google Gemini and OpenAI GPT. This solution allows social media managers to generate, schedule, and publish posts across Facebook, Instagram, and LinkedIn seamlessly, saving hours of manual work each week. Features real-time content generation, intelligent scheduling, and integration with Facebook Graph API and Twitter API for effective outreach. Perfect for social media managers handling multiple accounts and needing consistent, engaging content for their audience. Requires 9 accounts: Google Palm API, OpenAI API, Facebook Graph API, and more. Experience up to 70% faster content creation and manage over 30 posts daily with AI-driven insights.
Automate the generation of AI videos for TikTok, YouTube, and Instagram using the Google Sheets API and OpenAI GPT. Leverage structured data from Google Sheets to create engaging video content effortlessly. Features seamless integration with multiple platforms, automatic content generation, and real-time video uploads. Perfect for digital marketers, content creators, and social media managers looking to enhance their video production workflow. Requires 3 accounts: Google Sheets OAuth, OpenAI API, and Blotato API. Save up to 10 hours weekly by automating video creation and uploads, allowing you to focus on strategy and engagement.
Automate your video creation process using Google Sheets and OpenAI GPT to generate content, then seamlessly upload videos to YouTube via the Google Drive API. This workflow simplifies the video production cycle from concept to publication. Features include real-time content generation with GPT, automated scheduling for uploads, and integration with Google Sheets for data management. Perfect for content creators managing multiple video projects or marketing teams needing consistent video output. Requires 3 accounts: Google Sheets OAuth, Google Drive OAuth, OpenAI API Key. Save up to 10 hours weekly by automating video creation and uploads, enabling you to focus on strategy and engagement.
Configure credentials and update service-specific settings before executing the workflow. Review required credentials in the Technical Details section above.