{"workflow":{"id":12924,"name":"Create AI YouTube SRT subtitles 📢 with ElevenLabs 🎧 and Google Drive","views":194,"recentViews":0,"totalViews":194,"createdAt":"2026-01-22T19:25:27.071Z","description":"This workflow is a simple yet brilliant automation designed to **generate time-coded SRT** subtitles starting directly from a video URL using [ElevenLabs](https://try.elevenlabs.io/ahkbf00hocnu).\n\nWith just a single video link, the workflow automatically extracts the audio, transcribes it using AI speech recognition, and converts the transcription into a properly formatted SRT subtitle file with accurate timestamps.\n\nThis workflow automates the creation of **SRT subtitle files for YouTube** videos using **AI speech recognition**, eliminating the need for manual captioning and saving creators hours of work.\n\nIt’s a fast, reliable, and fully automated solution, perfect for YouTube creators, video editors, and content producers who want to improve accessibility, engagement, and SEO with minimal effort.\n\nWith just one input (a video link), the workflow:\n\n1. Downloads the video\n2. Automatically transcribes the audio using AI speech-to-text\n3. Intelligently splits the transcription into readable subtitle segments\n4. Generates a perfectly formatted **SRT file with accurate timestamps**\n5. Uploads the final subtitle file to Google Drive, ready to use\n\nIt’s a lightweight, no-friction workflow that turns a raw video into professional subtitles in a fully automated way.\n\n---\n\n### Key Advantages\n\n#### 1. ✅ Extremely Simple, Yet Powerful\n\nThis workflow proves that automation doesn’t need to be complex to be effective.\nA minimal number of nodes delivers a complete end-to-end subtitle generation process.\n\n#### 2. ✅ Automatic Time-Based SRT Generation\n\nSubtitles are not just plain text:\nthey are **properly time-aligned**, making them immediately compatible with YouTube, video editors, and media players.\n\n#### 3. ✅ Smart Subtitle Splitting\n\nThe workflow intelligently splits text based on punctuation and length, producing subtitles that are:\n\n* Easy to read\n* Well-paced\n* Aligned with natural speech flow\n\n#### 4. ✅ Perfect for Video Creators\n\nThis workflow is ideal for:\n\n* **YouTube creators**\n* Content marketers\n* Educators\n* Podcasters\n* Social video producers\n\nIt dramatically reduces the time needed to add subtitles, improving:\n\n* Accessibility\n* Engagement\n* SEO and watch time\n\n#### 5. ✅ Fully Automatable & Scalable\n\nOnce set up, it can be reused endlessly:\n\n* One video or hundreds\n* Manual trigger or automated pipelines\n* Easy to extend with translations, publishing, or notifications\n\n---\n\n\nThis workflow automates the creation of SRT subtitle files from YouTube videos using AI speech recognition. \n\nThe process begins when the workflow is manually triggered, requiring a YouTube video URL as input. The system first fetches the video content via HTTP request, then sends the audio to ElevenLabs for transcription. \n\nThe AI returns timestamped text segments which are intelligently split into readable subtitle chunks based on punctuation and length constraints. \n\nThese segments are formatted into standard SRT (SubRip) format with precise timing, converted to a binary file, and finally uploaded to a specified Google Drive folder as a ready-to-use subtitle file.\n\n---\n\n### Set up Steps\n\n1. **Configure Video Source**: In the \"Set Video Url\" node, replace the placeholder value with a valid YouTube video URL or set up a method to dynamically provide URLs\n2. **API Credentials Setup**:\n   - Configure [ElevenLabs API](https://try.elevenlabs.io/ahkbf00hocnu) credentials in the \"Transcribe audio or video\" node with your API key\n   - Set up Google Drive OAuth2 credentials in the \"Upload file\" node with appropriate folder permissions\n3. **Customize Output**: Adjust the SRT generation parameters in the \"From Elevenlabs to Srt\" node if different subtitle formatting is needed\n4. **Destination Folder**: Verify the Google Drive folder ID in the upload node points to your desired destination\n5. **Execution**: Trigger the workflow manually and provide a video URL when prompted to generate and upload subtitles\n\n---\n\n👉 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I’ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)\n\n\n---\n\n### **Need help customizing?**  \n[Contact me](mailto:info@n3w.it) for consulting and support or add me on [Linkedin](https://www.linkedin.com/in/davideboizza/).","workflow":{"id":"vpTLhn9nWcNBhYW0","meta":{"instanceId":"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462","templateCredsSetupCompleted":true},"name":"YouTube Video to SRT Subtitles via ElevenLabs","tags":[],"nodes":[{"id":"445d490d-0ab4-47d7-b34e-5f7c5c1c9946","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[-800,-16],"parameters":{},"typeVersion":1},{"id":"12edc16a-bf05-41f2-b224-c9a835b07492","name":"Transcribe audio or video","type":"@elevenlabs/n8n-nodes-elevenlabs.elevenLabs","position":[240,-16],"parameters":{"resource":"speech","operation":"speechToText","requestOptions":{},"additionalOptions":{"diarize":false}},"credentials":{"elevenLabsApi":{"id":"023sksrqWbT4OuNe","name":"ElevenLabs account"}},"typeVersion":1},{"id":"624d9f4c-608e-44f3-b9fb-f7bbbddfe325","name":"From Elevenlabs to Srt","type":"n8n-nodes-base.code","position":[-416,304],"parameters":{"jsCode":"function secondsToSrtTime(seconds) {\n  const hrs = Math.floor(seconds / 3600);\n  const mins = Math.floor((seconds % 3600) / 60);\n  const secs = Math.floor(seconds % 60);\n  const ms = Math.round((seconds - Math.floor(seconds)) * 1000);\n\n  return (\n    String(hrs).padStart(2, '0') + ':' +\n    String(mins).padStart(2, '0') + ':' +\n    String(secs).padStart(2, '0') + ',' +\n    String(ms).padStart(3, '0')\n  );\n}\n\n\nfunction splitTextSmart(text, minLen = 20, maxLen = 30) {\n  const punctuationRegex = /([.!?])/g;\n\n\n  const chunks = text\n    .replace(punctuationRegex, '$1|')\n    .split('|')\n    .map(t => t.trim())\n    .filter(Boolean);\n\n  let result = [];\n\n  for (const chunk of chunks) {\n    if (chunk.length <= maxLen) {\n      result.push(chunk);\n    } else {\n    \n      const words = chunk.split(' ');\n      let line = '';\n\n      for (const word of words) {\n        if ((line + ' ' + word).trim().length > maxLen) {\n          result.push(line.trim());\n          line = word;\n        } else {\n          line += ' ' + word;\n        }\n      }\n      if (line.trim()) result.push(line.trim());\n    }\n  }\n\n  return result;\n}\n\n\nlet input = items[0].json;\nif (!Array.isArray(input)) input = [input];\n\nlet srt = '';\nlet index = 1;\n\nfor (const segment of input) {\n  if (!segment.words || !Array.isArray(segment.words)) continue;\n\n  const words = segment.words.filter(w => w.type === 'word');\n  if (!words.length) continue;\n\n  const fullText = segment.text?.trim();\n  if (!fullText) continue;\n\n  const start = words[0].start;\n  const end = words[words.length - 1].end;\n  const totalDuration = end - start;\n\n\n  const textParts = splitTextSmart(fullText);\n\n  const partDuration = totalDuration / textParts.length;\n\n  textParts.forEach((part, i) => {\n    const partStart = start + partDuration * i;\n    const partEnd = partStart + partDuration;\n\n    srt += `${index}\\n`;\n    srt += `${secondsToSrtTime(partStart)} --> ${secondsToSrtTime(partEnd)}\\n`;\n    srt += `${part}\\n\\n`;\n    index++;\n  });\n}\n\nreturn [\n  {\n    json: {\n      srt\n    }\n  }\n];\n"},"typeVersion":2},{"id":"da044094-31fe-4280-b658-4726072bd41c","name":"From Json to Binary","type":"n8n-nodes-base.code","position":[-96,304],"parameters":{"jsCode":"const srt = items[0].json.srt;\n\nconst buffer = Buffer.from(srt, 'utf-8');\n\nreturn [\n  {\n    json: {},\n    binary: {\n      data: {\n        data: buffer.toString('base64'),\n        mimeType: 'application/x-subrip',\n        fileName: 'subtitles.srt'\n      }\n    }\n  }\n];\n"},"typeVersion":2},{"id":"5ddc5a1f-d60d-4394-aa0c-797e71f21d04","name":"Upload file","type":"n8n-nodes-base.googleDrive","position":[240,304],"parameters":{"name":"={{ $binary.data.fileName }}","driveId":{"__rl":true,"mode":"list","value":"My Drive"},"options":{},"folderId":{"__rl":true,"mode":"list","value":"1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ","cachedResultUrl":"https://drive.google.com/drive/folders/1tkCr7xdraoZwsHqeLm7FZ4aRWY94oLbZ","cachedResultName":"n8n"}},"credentials":{"googleDriveOAuth2Api":{"id":"HEy5EuZkgPZVEa9w","name":"Google Drive account (n3w.it)"}},"typeVersion":3},{"id":"b037f599-4c2f-4910-b988-20def895e46f","name":"Set Video Url","type":"n8n-nodes-base.set","position":[-432,-16],"parameters":{"options":{},"assignments":{"assignments":[{"id":"49612b7f-a2f8-4464-a1a1-340edae1d419","name":"video_url","type":"string","value":"=XXX"}]}},"typeVersion":3.4},{"id":"bc436d21-ec7e-489b-933d-b1d8de4da533","name":"Get Video","type":"n8n-nodes-base.httpRequest","position":[-96,-16],"parameters":{"url":"={{ $json.video_url }}","options":{}},"typeVersion":4.3},{"id":"8ab36b8d-bd0f-49d4-8983-1314d4d4e4d3","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-560,-944],"parameters":{"width":736,"height":752,"content":"## Automated YouTube Video to SRT Subtitles via ElevenLabs & Google Drive\nThis workflow is a simple yet brilliant automation designed to **generate time-coded SRT** subtitles starting directly from a video URL using [ElevenLabs](https://try.elevenlabs.io/ahkbf00hocnu).\n\nWith just a single video link, the workflow automatically extracts the audio, transcribes it using AI speech recognition, and converts the transcription into a properly formatted SRT subtitle file with accurate timestamps.\n\nThis workflow automates the creation of **SRT subtitle files for YouTube** videos using **AI speech recognition**, eliminating the need for manual captioning and saving creators hours of work.\n\n### **How it works:**\n\nThe workflow automates the process of generating **SRT subtitle files** directly from a YouTube video URL. It starts by fetching the video content and extracting its audio, which is then transcribed using **ElevenLabs AI speech recognition**. The resulting text, complete with timestamps, is split into natural, readable subtitle segments based on punctuation and length. These segments are then formatted into a standard **SRT (SubRip)** file, ensuring accurate synchronization with the video. Finally, the workflow uploads the completed SRT file to a specified **Google Drive folder**, providing a ready-to-use subtitle file for video creators and editors.\n\n\n### **Setup steps:**\n\n1. **Video Input:** Update the “Set Video Url” node with a valid YouTube link or configure it to receive URLs dynamically.\n2. **API Credentials:** Add your **ElevenLabs API key** in the transcription node and configure **Google Drive OAuth2** credentials for file uploads.\n3. **Subtitle Formatting:** Adjust SRT generation settings in the “From Elevenlabs to Srt” node if custom formatting is needed.\n4. **Destination Folder:** Confirm the correct **Google Drive folder ID** in the upload node.\n5. **Run the Workflow:** Manually trigger the process, input a video URL, and let the workflow automatically create and upload the subtitle file.\n"},"typeVersion":1},{"id":"4d6a8b10-03b0-4efe-8a94-3192f753304f","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-560,-160],"parameters":{"color":7,"width":368,"height":304,"content":"## STEP 1 - Set Video URL\nUpdate the “Set Video Url” node with a valid YouTube link or configure it to receive URLs dynamically."},"typeVersion":1},{"id":"ca09a16e-d440-4022-b41e-6afe8f1dc374","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-176,-160],"parameters":{"color":7,"width":640,"height":304,"content":"## STEP 1 - Speech to Text\nAdd your [ElevenLabs API ](https://try.elevenlabs.io/ahkbf00hocnu) key in the transcription node and configure Google Drive OAuth2 credentials for file uploads"},"typeVersion":1},{"id":"0124cb41-3144-4abf-aacb-d95ac9cf48d9","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-560,192],"parameters":{"color":7,"width":672,"height":288,"content":"## STEP 3 - Subtitle Formatting\nThese segments are formatted into standard SRT (SubRip) format with precise timing, converted to a binary file,"},"typeVersion":1},{"id":"800592c0-bb0d-42ef-9c74-aaf95239dde4","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[128,192],"parameters":{"color":7,"width":336,"height":288,"content":"## STEP 4 - Google Drive\nUpload file to Google Drive"},"typeVersion":1},{"id":"0ddff6ee-4c0d-43f6-a263-08e4ef99ec23","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[208,-928],"parameters":{"color":7,"width":736,"height":736,"content":"## MY NEW YOUTUBE CHANNEL\n👉 [Subscribe to my new **YouTube channel**](https://youtube.com/@n3witalia). Here I’ll share videos and Shorts with practical tutorials and **FREE templates for n8n**.\n\n[![image](https://n3wstorage.b-cdn.net/n3witalia/youtube-n8n-cover.jpg)](https://youtube.com/@n3witalia)"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"24c2f42c-349c-42da-a38a-e5f35a44a579","connections":{"Get Video":{"main":[[{"node":"Transcribe audio or video","type":"main","index":0}]]},"Upload file":{"main":[[]]},"Set Video Url":{"main":[[{"node":"Get Video","type":"main","index":0}]]},"From Json to Binary":{"main":[[{"node":"Upload file","type":"main","index":0}]]},"From Elevenlabs to Srt":{"main":[[{"node":"From Json to Binary","type":"main","index":0}]]},"Transcribe audio or video":{"main":[[{"node":"From Elevenlabs to Srt","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Set Video Url","type":"main","index":0}]]}}},"lastUpdatedBy":29,"workflowInfo":{"nodeCount":13,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":2},"n8n-nodes-base.stickyNote":{"count":6},"n8n-nodes-base.googleDrive":{"count":1},"n8n-nodes-base.httpRequest":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1},"@elevenlabs/n8n-nodes-elevenlabs.elevenLabs":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Davide Boizza","username":"n3witalia","bio":"Full-stack Web Developer based in Italy specialising in Marketing & AI-powered automations. For business enquiries, send me an email at info@n3w.it or add me on Linkedin.com/in/davideboizza and Youtube.com/@n3witalia","verified":true,"links":["https://n3w.it"],"avatar":"https://gravatar.com/avatar/d41b8a0aa81139243509c58870f5b4be292824a507ab57d10ed066d8628ed8da?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":58,"icon":"file:googleDrive.svg","name":"n8n-nodes-base.googleDrive","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googledrive/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Google Drive"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgODEgNzMiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzAwNjZkYSIgZD0ibTYuMDQ4IDYxLjI2IDMuNTI4IDYuMDk0Yy43MzMgMS4yODMgMS43ODcgMi4yOTEgMy4wMjQgMy4wMjRsMTIuNi0yMS44MUgwYTguMyA4LjMgMCAwIDAgMS4xIDQuMTI0eiIvPjxwYXRoIGZpbGw9IiMwMGFjNDciIGQ9Ik00MCAyMi45MSAyNy40IDEuMWMtMS4yMzcuNzMzLTIuMjkxIDEuNzQxLTMuMDI0IDMuMDI0TDEuMSA0NC40NDVBOC4zIDguMyAwIDAgMCAwIDQ4LjU2OGgyNS4yeiIvPjxwYXRoIGZpbGw9IiNlYTQzMzUiIGQ9Ik02Ny40IDcwLjM3OGMxLjIzNy0uNzMzIDIuMjkxLTEuNzQxIDMuMDI0LTMuMDI0bDEuNDY2LTIuNTIgNy4wMS0xMi4xNDJhOC4zIDguMyAwIDAgMCAxLjEtNC4xMjRINTQuNzk4bDUuMzYzIDEwLjUzOHoiLz48cGF0aCBmaWxsPSIjMDA4MzJkIiBkPSJNNDAgMjIuOTEgNTIuNiAxLjFDNTEuMzYzLjM2NyA0OS45NDMgMCA0OC40NzcgMEgzMS41MjRjLTEuNDY2IDAtMi44ODcuNDEyLTQuMTI0IDEuMXoiLz48cGF0aCBmaWxsPSIjMjY4NGZjIiBkPSJNNTQuNzk5IDQ4LjU2OEgyNS4ybC0xMi42IDIxLjgxYzEuMjM3LjczMyAyLjY1NyAxLjEgNC4xMjQgMS4xaDQ2LjU1MmMxLjQ2NiAwIDIuODg3LS40MTIgNC4xMjQtMS4xeiIvPjxwYXRoIGZpbGw9IiNmZmJhMDAiIGQ9Ik02Ny4yNjIgMjQuMjg0IDU1LjYyNCA0LjEyNEM1NC44OTEgMi44NDEgNTMuODM3IDEuODMzIDUyLjYgMS4xTDQwIDIyLjkxbDE0LjggMjUuNjU5aDI1LjE1NWE4LjMgOC4zIDAgMCAwLTEuMS00LjEyNHoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Google Drive","typeVersion":3,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":838,"icon":"fa:mouse-pointer","name":"n8n-nodes-base.manualTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.manualworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"When clicking ‘Execute workflow’","color":"#909298"},"iconData":{"icon":"mouse-pointer","type":"icon"},"displayName":"Manual Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}