{"workflow":{"id":12407,"name":"Extract YouTube auto-generated transcripts for AI analysis and storage","views":46,"recentViews":2,"totalViews":46,"createdAt":"2026-01-02T20:41:20.857Z","description":"## 🎬 Extract YouTube auto-generated transcripts and save them for AI processing\n\n### **Direct YouTube API - Auto-Generated Only**\nExtracts the **auto-generated transcript** from any YouTube video automatically.\n\n---\n## 🔄 **How It Works** *(5 Steps)*\n1. **📥 Input**: `youtubeVideoUrl` only\n2. **🌐 Fetch**: GET YouTube page HTML to extract INNERTUBE_API_KEY\n3. **🔑 Extract**: Parse API key and video ID\n4. **🎥 Metadata**: GET caption metadata\n5. **🤖 Auto-Detect**: Find auto-generated transcript (`kind: asr`)\n6. **📝 Fetch & Parse**: Download and clean transcript\n\n## 🔄 **Setup steps**\n1. Import the workflow to your n8n instance\n2. Activate the workflow\n3. Provide the YouTube video URL via webhook or manual trigger\n4. The workflow will automatically extract the auto-generated transcript\n5. Access the results in the specified output format\n\n---\n### 🎯 **Use Cases**\n- Extract auto-generated transcripts automatically\n- No language selection needed\n- Perfect for bulk transcript collection\n- AI processing, summarization, analysis\n- Content accessibility\n\n### ✅ **Output Format**\n```json\n{\n  \"fullTranscript\": \"Auto-generated transcript text...\",\n  \"wordCount\": 1234,\n  \"transcript\": [...timestamps...]\n}\n```","workflow":{"id":"fvScVpOkvJa4CQTY","meta":{"instanceId":"27536b0b569ca430d67488fc73161398bbcbbb3deab111200b108e4616089a56"},"name":"Extract YouTube auto-generated transcripts and save them for future use","tags":[],"nodes":[{"id":"2e715548-dc0c-4f27-893d-aa944dda57b9","name":"Trigger: Execute Workflow","type":"n8n-nodes-base.executeWorkflowTrigger","maxTries":1,"position":[272,1056],"parameters":{"workflowInputs":{"values":[{"name":"youtubeVideoUrl"}]}},"retryOnFail":false,"typeVersion":1.1,"waitBetweenTries":1000},{"id":"fd592f64-4d34-4a53-a91a-ba1a4f3f07a9","name":"Fetch: YouTube Page HTML","type":"n8n-nodes-base.httpRequest","notes":"Retrieves the HTML of the video page to extract API Key","maxTries":3,"position":[496,1056],"parameters":{"url":"={{ 'https://' + $json.youtubeVideoUrl.replace(/^https?:\\/\\//, '') }}","options":{}},"retryOnFail":true,"typeVersion":4.3,"waitBetweenTries":2000},{"id":"b988bc18-3e14-46b6-8df3-aca439a78f86","name":"Extract: API Key & Video ID","type":"n8n-nodes-base.code","notes":"Extracts API Key and Video ID with validation","maxTries":1,"position":[720,1056],"parameters":{"mode":"runOnceForEachItem","jsCode":"const currentItem = $input.item.json;\nconst html = currentItem.data;\n\nif (!html || typeof html !== 'string') {\n  throw new Error('HTML data not found');\n}\n\n// Extraer API Key\nconst apiKeyMatch = html.match(/INNERTUBE_API_KEY[\\s\\S]*?\\\"([a-zA-Z0-9_-]+)\\\"/);\nif (!apiKeyMatch || !apiKeyMatch[1]) {\n  throw new Error('INNERTUBE_API_KEY not found in HTML');\n}\n\n// Extraer videoId del HTML\nconst htmlVideoIdMatch = html.match(/\\\"videoId\\\":\\s*\\\"([a-zA-Z0-9_-]{11})\\\"/);\nlet videoId = htmlVideoIdMatch ? htmlVideoIdMatch[1] : null;\n\nif (!videoId) {\n  throw new Error('Could not extract videoId from HTML');\n}\n\nreturn {json: {\n  apiKey: apiKeyMatch[1],\n  videoId: videoId\n}};"},"retryOnFail":false,"typeVersion":2,"waitBetweenTries":1000},{"id":"6e21195d-17b1-4653-ac34-e7cf9770c48e","name":"API: Get Video Metadata","type":"n8n-nodes-base.httpRequest","notes":"Get video metadata with subtitle tracks","maxTries":3,"position":[944,1056],"parameters":{"url":"=https://www.youtube.com/youtubei/v1/player?key={{ $json.apiKey }}","method":"POST","options":{},"jsonBody":"={\n  \"context\": {\n    \"client\": {\n      \"clientName\": \"WEB\",\n      \"clientVersion\": \"2.20210721.00.00\"\n    }\n  },\n  \"videoId\": \"{{ $json.videoId }}\"\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"retryOnFail":true,"typeVersion":4.3,"waitBetweenTries":2000},{"id":"0737b208-4ca0-4ac8-bc9d-342a666ede8b","name":"Extract: Auto-Generated Transcript URL","type":"n8n-nodes-base.code","onError":"continueErrorOutput","maxTries":1,"position":[1168,1056],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Obtener los caption tracks del video\nconst captionTracks = $input.item.json?.captions?.playerCaptionsTracklistRenderer?.captionTracks || [];\n\nif (!captionTracks || captionTracks.length === 0) {\n  throw new Error('No caption tracks found for this video');\n}\n\n// Buscar el primer caption track con kind='asr' (autogenerado)\nconst asrTrack = captionTracks.find(track => track.kind === 'asr');\n\nif (!asrTrack) {\n  throw new Error('No auto-generated transcript (asr) found. Available tracks: ' + captionTracks.map(t => t.languageCode + ' (' + (t.kind || 'default') + ')').join(', '));\n}\n\n// Retornar baseUrl y metadata del track\nreturn {json: {\n  transcriptUrl: asrTrack.baseUrl,\n  languageCode: asrTrack.languageCode,\n  trackName: asrTrack.name?.simpleText || 'Auto-generated transcript',\n  kind: asrTrack.kind\n}};"},"retryOnFail":false,"typeVersion":2,"waitBetweenTries":1000},{"id":"08d78016-4fd2-485f-91a6-33bdad8587e0","name":"Fetch: Transcript XML","type":"n8n-nodes-base.httpRequest","notes":"Get XML transcript from extracted URL","maxTries":3,"position":[1392,960],"parameters":{"url":"={{ $json.transcriptUrl }}","options":{}},"retryOnFail":true,"typeVersion":4.3,"waitBetweenTries":2000},{"id":"259c3e38-5c10-4f0b-9204-6f587e675efb","name":"Parse: XML to JSON","type":"n8n-nodes-base.xml","notes":"XML to JSON","maxTries":1,"position":[1616,960],"parameters":{"options":{"normalize":false}},"retryOnFail":false,"typeVersion":1,"waitBetweenTries":1000},{"id":"496cfcbd-7ff9-4b70-95dd-889aabb68eb9","name":"Transform: Process Transcript","type":"n8n-nodes-base.code","notes":"Processes transcript, decodes HTML entities, and concatenates text","maxTries":1,"position":[1840,960],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Función para decodificar entidades HTML\nfunction decodeHTMLEntities(text) {\n  const entityMap = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\",\n    '&#x27;': \"'\",\n    '&apos;': \"'\",\n    '&#x2F;': '/'\n  };\n  \n  let decoded = text;\n  for (const [entity, char] of Object.entries(entityMap)) {\n    decoded = decoded.replace(new RegExp(entity, 'g'), char);\n  }\n  \n  // Decodificar números hexadecimales (ej: &#39;, &#x1F;)\n  decoded = decoded.replace(/&#x([a-fA-F0-9]+);/g, (match, hex) => {\n    return String.fromCharCode(parseInt(hex, 16));\n  });\n  \n  // Decodificar números decimales (ej: &#39;)\n  decoded = decoded.replace(/&#(\\d+);/g, (match, dec) => {\n    return String.fromCharCode(parseInt(dec, 10));\n  });\n  \n  return decoded;\n}\n\nconst transcript = $input.item.json.transcript;\nif (!transcript || !transcript.text || !Array.isArray(transcript.text)) {\n  throw new Error('No transcript data found');\n}\n\nlet fullTranscript = '';\ntranscript.text.forEach(item => {\n  if (item._ && typeof item._ === 'string') {\n    // Decodificar entidades HTML\n    const decodedText = decodeHTMLEntities(item._);\n    fullTranscript += decodedText + ' ';\n  }\n});\n\nfullTranscript = fullTranscript.trim();\nconst wordCount = fullTranscript.split(/\\s+/).filter(w => w.length > 0).length;\n\nreturn {json: {\n  transcript: transcript,\n  fullTranscript: fullTranscript,\n  wordCount: wordCount\n}};"},"retryOnFail":false,"typeVersion":2,"waitBetweenTries":1000},{"id":"825ec3eb-2c08-4f1b-a3bf-b902bba8253c","name":"📋 Sticky: Overview","type":"n8n-nodes-base.stickyNote","maxTries":1,"position":[-496,656],"parameters":{"width":700,"height":1046,"content":"## 🎬 Extract and save YouTube auto-generated transcripts\n\nThis template extracts the **auto-generated transcript** from a YouTube video using YouTube's internal caption metadata.\n\nIt is useful for:\n- AI summarization\n- Content analysis\n- Accessibility workflows\n- Transcript archiving\n\n### Input\n- `youtubeVideoUrl`\n\n### Output\n```json\n{\n  \"fullTranscript\": \"Auto-generated transcript text...\",\n  \"wordCount\": 1234,\n  \"transcript\": [...]\n}\n```\n## How it works\n1. Accepts a YouTube video URL as input\n2. Fetches the YouTube page HTML\n3. Extracts the `INNERTUBE_API_KEY` and video ID\n4. Requests video metadata from YouTube\n5. Finds the auto-generated caption track (`kind: \"asr\"`)\n6. Downloads the transcript XML\n7. Parses and cleans the transcript text\n8. Returns the full transcript, timestamps, and word count\n\n## Setup steps\n1. Import the workflow into n8n\n2. Activate or run the workflow manually\n3. Provide a value for `youtubeVideoUrl`\n4. Execute the workflow\n5. Use the output transcript in downstream AI or automation steps"},"retryOnFail":false,"typeVersion":1,"waitBetweenTries":1000},{"id":"e46be3b4-da28-4acb-bfdc-8b75ead92a02","name":"Stop and Error","type":"n8n-nodes-base.stopAndError","position":[1392,1152],"parameters":{"errorMessage":"No auto-generated transcript found for this video."},"typeVersion":1},{"id":"e514abc4-9c26-472a-a358-92e5a0c4b0b6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[336,752],"parameters":{"color":7,"width":928,"height":240,"content":"🔑 PHASE 1: Credentials & Metadata Acquisition\n\nThis phase extracts the necessary information to access \nthe transcriptions:\n\n1. Fetch YouTube page HTML\n2. Extract INNERTUBE_API_KEY and videoId\n3. Call YouTube API to get video metadata\n4. Identify auto-generated track (kind: asr)\n\n✅ Output: transcriptUrl from caption track"},"typeVersion":1},{"id":"b40e621e-2ce5-445e-a080-f6c3666d8013","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1328,1312],"parameters":{"color":7,"width":672,"height":240,"content":"📝 PHASE 2: Transcript Download & Transformation\n\nThis phase processes the extracted transcription:\n\n1. Download XML file from obtained URL\n2. Convert XML to JSON\n3. Decode HTML entities\n4. Concatenate full text\n5. Count words\n\n✅ Output: Clean fullTranscript ready to use"},"typeVersion":1}],"active":true,"pinData":{"Trigger: Execute Workflow":[{"json":{"youtubeVideoUrl":"https://www.youtube.com/watch?v=pAOOfeKYaSQ"}}]},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"b416ede4-3667-48c0-b3c1-e325f7924ab0","connections":{"Parse: XML to JSON":{"main":[[{"node":"Transform: Process Transcript","type":"main","index":0}]]},"Fetch: Transcript XML":{"main":[[{"node":"Parse: XML to JSON","type":"main","index":0}]]},"API: Get Video Metadata":{"main":[[{"node":"Extract: Auto-Generated Transcript URL","type":"main","index":0}]]},"Fetch: YouTube Page HTML":{"main":[[{"node":"Extract: API Key & Video ID","type":"main","index":0}]]},"Trigger: Execute Workflow":{"main":[[{"node":"Fetch: YouTube Page HTML","type":"main","index":0}]]},"Extract: API Key & Video ID":{"main":[[{"node":"API: Get Video Metadata","type":"main","index":0}]]},"Extract: Auto-Generated Transcript URL":{"main":[[{"node":"Fetch: Transcript XML","type":"main","index":0}],[{"node":"Stop and Error","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":12,"nodeTypes":{"n8n-nodes-base.xml":{"count":1},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.stickyNote":{"count":3},"n8n-nodes-base.httpRequest":{"count":3},"n8n-nodes-base.stopAndError":{"count":1},"n8n-nodes-base.executeWorkflowTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Joel Cantero","username":"joelcantero","bio":"","verified":true,"links":["https://www.joelcantero.com/"],"avatar":"https://gravatar.com/avatar/0bcbbcaa0d8f6e5f5227f952bece0bf1f0ae7292204a06e48e7d5db5f77225ec?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":48,"icon":"fa:file-code","name":"n8n-nodes-base.xml","codex":{"data":{"alias":["Parse"],"resources":{"generic":[{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.xml/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"XML","color":"#333377"},"iconData":{"icon":"file-code","type":"icon"},"displayName":"XML","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":528,"icon":"fa:exclamation-triangle","name":"n8n-nodes-base.stopAndError","codex":{"data":{"alias":["Throw error","Error","Exception"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.stopanderror/"}]},"categories":["Core Nodes","Utility"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"input\"]","defaults":{"name":"Stop and Error","color":"#ff0000"},"iconData":{"icon":"exclamation-triangle","type":"icon"},"displayName":"Stop and Error","typeVersion":1,"nodeCategories":[{"id":7,"name":"Utility"},{"id":9,"name":"Core Nodes"}]},{"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":837,"icon":"fa:sign-out-alt","name":"n8n-nodes-base.executeWorkflowTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"When Executed by Another Workflow","color":"#ff6d5a"},"iconData":{"icon":"sign-out-alt","type":"icon"},"displayName":"Execute Workflow Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":35,"name":"Document Extraction"}],"image":[]}}