{"workflow":{"id":13597,"name":"Assess technical documentation compliance with GPT‑4o and send Slack alerts","views":19,"recentViews":0,"totalViews":19,"createdAt":"2026-02-22T15:56:38.997Z","description":"### This n8n template demonstrates how to use AI to automatically review technical documentation against predefined compliance standards — and alert your team via Slack.\n\nUse cases: Engineering teams maintaining API docs, product teams enforcing terminology standards, or localization teams checking readiness before translation handoff.\n\n### How it works\n* A document URL or raw text is passed in via manual trigger (or webhook).\n* The document content is fetched and extracted as plain text.\n* An AI model scores the document across 4 compliance dimensions: Structure, Terminology, Localization Readiness, and Completeness.\n* The AI returns a structured JSON report with scores and gap descriptions per dimension.\n* A compliance status is determined: PASS / WARNING / FAIL based on the overall score.\n* A formatted Slack alert is sent to the appropriate channel based on status severity.\n* All results are logged for historical tracking.\n\n### How to use\n* Replace the document URL in the `Set Document Input` node with your own source.\n* Update the AI prompt in the `Score Documentation with AI` node to match your standards.\n* Add your Slack webhook URLs for each severity channel.\n* Optionally connect to Google Sheets or PostgreSQL for audit logging.\n\n### Requirements\n* OpenAI or Anthropic API key for AI scoring\n* Slack incoming webhook URLs\n* Document accessible via URL or passed as text\n\n\n\n","workflow":{"id":"s4ccm6m0FaJRj60R","meta":{"instanceId":"dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281","templateCredsSetupCompleted":true},"name":"Assess Technical Documentation Compliance with AI and Trigger Slack Alerts","tags":[],"nodes":[{"id":"ca1ebea3-ef14-4220-8725-598530559057","name":"When clicking 'Execute workflow'","type":"n8n-nodes-base.manualTrigger","position":[544,544],"parameters":{},"typeVersion":1},{"id":"6708020c-1b52-400e-a104-264a9917f816","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[0,0],"parameters":{"width":460,"height":992,"content":"### This n8n template demonstrates how to use AI to automatically review technical documentation against predefined compliance standards — and alert your team via Slack.\n\nUse cases: Engineering teams maintaining API docs, product teams enforcing terminology standards, or localization teams checking readiness before translation handoff.\n\n### How it works\n* A document URL or raw text is passed in via manual trigger (or webhook).\n* The document content is fetched and extracted as plain text.\n* An AI model scores the document across 4 compliance dimensions: Structure, Terminology, Localization Readiness, and Completeness.\n* The AI returns a structured JSON report with scores and gap descriptions per dimension.\n* A compliance status is determined: PASS / WARNING / FAIL based on the overall score.\n* A formatted Slack alert is sent to the appropriate channel based on status severity.\n* All results are logged for historical tracking.\n\n### How to use\n* Replace the document URL in the `Set Document Input` node with your own source.\n* Update the AI prompt in the `Score Documentation with AI` node to match your standards.\n* Add your Slack webhook URLs for each severity channel.\n* Optionally connect to Google Sheets or PostgreSQL for audit logging.\n\n### Requirements\n* OpenAI or Anthropic API key for AI scoring\n* Slack incoming webhook URLs\n* Document accessible via URL or passed as text\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\n"},"typeVersion":1},{"id":"3a6f5078-932a-4d58-8cc9-40dbe42d9ae4","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[496,288],"parameters":{"color":7,"width":1012,"height":460,"content":"## 1. Fetch & Prepare Documentation\n[Read more about the HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/)\n\nThe document is fetched from a URL or passed as raw text. The content is then cleaned and prepared for AI analysis. Supports HTML pages, markdown files, plain text, or API-served documentation."},"typeVersion":1},{"id":"6c284627-75d4-4241-a12e-9a3f44287067","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1568,288],"parameters":{"color":7,"width":580,"height":460,"content":"## 2. Score Documentation with AI\n[Read more about the HTTP Request node for AI APIs](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/)\n\nThe AI model evaluates the document against 4 compliance dimensions: Structure (headings, sections), Terminology (approved glossary), Localization Readiness (i18n-safe language), and Completeness (required sections present). Each is scored 0–100 and gaps are described."},"typeVersion":1},{"id":"a27b8e69-6540-44ea-9947-586ecfeba478","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2208,288],"parameters":{"color":7,"width":580,"height":460,"content":"## 3. Parse Results & Route by Status\n[Read more about the Switch node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/)\n\nThe AI's JSON response is parsed and an overall compliance score is calculated. The Switch node routes the result to the correct Slack channel based on status: FAIL (score < 60) goes to the engineering alert channel, WARNING (60–79) to the review channel, and PASS (80+) to the general docs channel."},"typeVersion":1},{"id":"d952a438-5f85-4c13-8232-d4dd3557ef5f","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[2832,112],"parameters":{"color":7,"width":480,"height":940,"content":"## 4. Send Slack Compliance Report\n[Read more about Slack webhooks](https://api.slack.com/messaging/webhooks)\n\nA richly formatted Slack message is sent to the appropriate channel with: overall score, per-dimension breakdown, detected gaps, and a recommended action. Critical failures also trigger a direct @channel mention to ensure immediate visibility."},"typeVersion":1},{"id":"f72b0e25-bc83-4470-a95b-e88af852a163","name":"Set Document Input","type":"n8n-nodes-base.set","position":[784,544],"parameters":{"options":{},"assignments":{"assignments":[{"id":"doc-input-001","name":"doc_url","type":"string","value":"https://your-docs-site.com/api/endpoint-reference"},{"id":"doc-input-002","name":"doc_title","type":"string","value":"API Endpoint Reference v2.1"},{"id":"doc-input-003","name":"doc_type","type":"string","value":"API Reference"},{"id":"doc-input-004","name":"review_date","type":"string","value":"={{ new Date().toISOString().split('T')[0] }}"}]}},"typeVersion":3.4},{"id":"8a0d7d09-62c6-4a3a-acd9-e5ebc84aa61b","name":"Fetch Document Content","type":"n8n-nodes-base.httpRequest","position":[1024,544],"parameters":{"url":"={{ $json.doc_url }}","options":{"response":{"response":{"responseFormat":"text"}}}},"typeVersion":4.2},{"id":"defe8b77-176d-4cf3-922c-5ad433af389c","name":"Prepare Document for AI","type":"n8n-nodes-base.code","position":[1280,544],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Clean and prepare document content for AI compliance scoring\nconst rawContent = $input.item.json.data || '';\nconst docMeta = $input.item.json;\n\n// Strip HTML tags if present, normalize whitespace\nconst cleanContent = rawContent\n  .replace(/<[^>]*>/g, ' ')\n  .replace(/&nbsp;/g, ' ')\n  .replace(/&amp;/g, '&')\n  .replace(/&lt;/g, '<')\n  .replace(/&gt;/g, '>')\n  .replace(/\\s+/g, ' ')\n  .trim();\n\n// Truncate to ~6000 chars to stay within token limits\nconst truncated = cleanContent.length > 6000\n  ? cleanContent.substring(0, 6000) + '... [truncated for analysis]'\n  : cleanContent;\n\nconst wordCount = cleanContent.split(/\\s+/).length;\nconst hasCodeBlocks = rawContent.includes('```') || rawContent.includes('<code>');\nconst hasHeaders = rawContent.includes('#') || /<h[1-6]/i.test(rawContent);\nconst hasExamples = /example|sample|e\\.g\\.|for instance/i.test(cleanContent);\nconst hasWarnings = /warning|caution|note|important|deprecated/i.test(cleanContent);\n\nreturn {\n  json: {\n    doc_title: docMeta.doc_title || 'Untitled Document',\n    doc_type: docMeta.doc_type || 'Unknown',\n    doc_url: docMeta.doc_url || '',\n    review_date: docMeta.review_date || new Date().toISOString().split('T')[0],\n    clean_content: truncated,\n    word_count: wordCount,\n    pre_analysis: {\n      has_code_blocks: hasCodeBlocks,\n      has_headers: hasHeaders,\n      has_examples: hasExamples,\n      has_warnings: hasWarnings\n    }\n  }\n};"},"typeVersion":2},{"id":"9cbbc2a0-94e6-4e32-b8f1-1e27d4c2ebd7","name":"Score Documentation with AI","type":"n8n-nodes-base.httpRequest","position":[1664,544],"parameters":{"url":"https://api.openai.com/v1/chat/completions","method":"POST","options":{},"jsonBody":"={\n  \"model\": \"gpt-4o\",\n  \"temperature\": 0.2,\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"You are a technical documentation compliance auditor. Evaluate documentation against these 4 dimensions and return ONLY valid JSON — no markdown, no explanation.\\n\\nDimensions:\\n1. Structure (0-100): Logical headings hierarchy, introduction, clear sections, conclusion/summary\\n2. Terminology (0-100): Consistent use of approved terms, no jargon, no ambiguous language\\n3. Localization Readiness (0-100): No idioms, date/number formats are locale-neutral, text is translation-friendly\\n4. Completeness (0-100): All required sections present (overview, prerequisites, steps/usage, parameters if API, examples, error handling)\\n\\nReturn this exact JSON structure:\\n{\\\"structure\\\": {\\\"score\\\": 0, \\\"gaps\\\": []}, \\\"terminology\\\": {\\\"score\\\": 0, \\\"gaps\\\": []}, \\\"localization\\\": {\\\"score\\\": 0, \\\"gaps\\\": []}, \\\"completeness\\\": {\\\"score\\\": 0, \\\"gaps\\\": []}, \\\"summary\\\": \\\"one sentence overall assessment\\\"}\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Document Title: {{ $json.doc_title }}\\nDocument Type: {{ $json.doc_type }}\\nWord Count: {{ $json.word_count }}\\n\\nContent:\\n{{ $json.clean_content }}\"\n    }\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"openAiApi"},"credentials":{"openAiApi":{"id":"1vLQlwKIezvFH8UB","name":"OpenAi David"}},"typeVersion":4.2},{"id":"2ebe691b-cff6-4cf0-be3e-15265943cf7b","name":"Parse AI Compliance Report","type":"n8n-nodes-base.code","position":[1920,544],"parameters":{"mode":"runOnceForEachItem","jsCode":"// Parse AI response and calculate overall compliance score\nconst aiRaw = $input.item.json.choices?.[0]?.message?.content || '{}';\n\nlet scores;\ntry {\n  const cleaned = aiRaw.replace(/```json|```/g, '').trim();\n  scores = JSON.parse(cleaned);\n} catch (e) {\n  scores = {\n    structure: { score: 0, gaps: ['Failed to parse AI response'] },\n    terminology: { score: 0, gaps: [] },\n    localization: { score: 0, gaps: [] },\n    completeness: { score: 0, gaps: [] },\n    summary: 'AI response could not be parsed.'\n  };\n}\n\nconst structure = scores.structure?.score || 0;\nconst terminology = scores.terminology?.score || 0;\nconst localization = scores.localization?.score || 0;\nconst completeness = scores.completeness?.score || 0;\n\n// Weighted overall score\nconst overallScore = Math.round(\n  (structure * 0.25) +\n  (terminology * 0.25) +\n  (localization * 0.20) +\n  (completeness * 0.30)\n);\n\nlet complianceStatus = 'PASS';\nlet statusEmoji = '✅';\nlet statusColor = 'good';\nif (overallScore < 60) { complianceStatus = 'FAIL'; statusEmoji = '🚨'; statusColor = 'danger'; }\nelse if (overallScore < 80) { complianceStatus = 'WARNING'; statusEmoji = '⚠️'; statusColor = 'warning'; }\n\nconst allGaps = [\n  ...(scores.structure?.gaps || []).map(g => ({ dimension: 'Structure', gap: g })),\n  ...(scores.terminology?.gaps || []).map(g => ({ dimension: 'Terminology', gap: g })),\n  ...(scores.localization?.gaps || []).map(g => ({ dimension: 'Localization', gap: g })),\n  ...(scores.completeness?.gaps || []).map(g => ({ dimension: 'Completeness', gap: g }))\n];\n\nconst reportId = `DOC-${Date.now()}`;\n\nreturn {\n  json: {\n    reportId,\n    doc_title: $input.item.json.doc_title || 'Unknown',\n    doc_type: $input.item.json.doc_type || 'Unknown',\n    doc_url: $input.item.json.doc_url || '',\n    review_date: $input.item.json.review_date || new Date().toISOString().split('T')[0],\n    overallScore,\n    complianceStatus,\n    statusEmoji,\n    statusColor,\n    scores: { structure, terminology, localization, completeness },\n    gaps: allGaps,\n    gapCount: allGaps.length,\n    summary: scores.summary || '',\n    requiresImmediateAction: complianceStatus === 'FAIL',\n    pre_analysis: $input.item.json.pre_analysis || {}\n  }\n};"},"typeVersion":2},{"id":"35ffe942-f3b9-4e92-ba56-998abac3ce52","name":"Route by Compliance Status","type":"n8n-nodes-base.switch","position":[2320,544],"parameters":{"rules":{"values":[{"outputKey":"FAIL","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.complianceStatus }}","rightValue":"FAIL"}]},"renameOutput":true},{"outputKey":"WARNING","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.complianceStatus }}","rightValue":"WARNING"}]},"renameOutput":true},{"outputKey":"PASS","conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.complianceStatus }}","rightValue":"PASS"}]},"renameOutput":true}]},"options":{}},"typeVersion":3},{"id":"d58f37bb-d6e5-4deb-adc6-10abf63f601b","name":"Build Slack Report","type":"n8n-nodes-base.code","position":[2592,544],"parameters":{"mode":"runOnceForEachItem","jsCode":"const d = $input.item.json;\n\nconst bar = (score) => {\n  const filled = Math.round(score / 10);\n  return '█'.repeat(filled) + '░'.repeat(10 - filled) + ` ${score}/100`;\n};\n\nconst gapList = d.gaps.slice(0, 6).map(g => `• *${g.dimension}:* ${g.gap}`).join('\\n');\n\nconst slackBlocks = [\n  {\n    type: 'header',\n    text: { type: 'plain_text', text: `${d.statusEmoji} Doc Compliance Report — ${d.complianceStatus}` }\n  },\n  {\n    type: 'section',\n    fields: [\n      { type: 'mrkdwn', text: `*Document:*\\n${d.doc_title}` },\n      { type: 'mrkdwn', text: `*Type:*\\n${d.doc_type}` },\n      { type: 'mrkdwn', text: `*Overall Score:*\\n*${d.overallScore}/100*` },\n      { type: 'mrkdwn', text: `*Review Date:*\\n${d.review_date}` }\n    ]\n  },\n  {\n    type: 'section',\n    text: {\n      type: 'mrkdwn',\n      text: `*Dimension Scores:*\\n📐 Structure: ${bar(d.scores.structure)}\\n🔤 Terminology: ${bar(d.scores.terminology)}\\n🌍 Localization: ${bar(d.scores.localization)}\\n📋 Completeness: ${bar(d.scores.completeness)}`\n    }\n  },\n  {\n    type: 'section',\n    text: {\n      type: 'mrkdwn',\n      text: `*AI Summary:*\\n${d.summary}`\n    }\n  },\n  ...(d.gaps.length > 0 ? [{\n    type: 'section',\n    text: {\n      type: 'mrkdwn',\n      text: `*Detected Gaps (${d.gapCount}):*\\n${gapList}${d.gaps.length > 6 ? `\\n_...and ${d.gaps.length - 6} more_` : ''}`\n    }\n  }] : [{\n    type: 'section',\n    text: { type: 'mrkdwn', text: '*No compliance gaps detected ✅*' }\n  }]),\n  {\n    type: 'context',\n    elements: [{ type: 'mrkdwn', text: `Report ID: ${d.reportId} | Source: ${d.doc_url || 'N/A'}` }]\n  },\n  { type: 'divider' }\n];\n\nreturn {\n  json: {\n    ...d,\n    slackPayload: {\n      text: `${d.statusEmoji} Documentation Compliance: *${d.complianceStatus}* (${d.overallScore}/100) — ${d.doc_title}`,\n      blocks: slackBlocks\n    }\n  }\n};"},"typeVersion":2},{"id":"52627fb3-d244-47f2-988f-6468bf33e0e9","name":"Slack — FAIL Alert (Engineering Channel)","type":"n8n-nodes-base.httpRequest","position":[2880,384],"parameters":{"url":"YOUR_SLACK_FAIL_WEBHOOK_URL","method":"POST","options":{},"jsonBody":"={{ JSON.stringify($json.slackPayload) }}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"00fec4bd-5971-44ec-b58a-ac678ae68458","name":"Slack — WARNING Alert (Review Channel)","type":"n8n-nodes-base.httpRequest","position":[2880,592],"parameters":{"url":"YOUR_SLACK_WARNING_WEBHOOK_URL","method":"POST","options":{},"jsonBody":"={{ JSON.stringify($json.slackPayload) }}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"10f3e6ac-5c2a-4c26-9126-10d923391df4","name":"Slack — PASS Notice (Docs Channel)","type":"n8n-nodes-base.httpRequest","position":[2880,784],"parameters":{"url":"YOUR_SLACK_PASS_WEBHOOK_URL","method":"POST","options":{},"jsonBody":"={{ JSON.stringify($json.slackPayload) }}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"7aab96fa-6518-451c-9ea8-e3a2d30aa5fe","name":"Log Result to Google Sheets","type":"n8n-nodes-base.googleSheets","position":[3184,592],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"Sheet1","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"YOUR_GOOGLE_SHEET_ID","cachedResultName":"Doc Compliance Log"},"authentication":"serviceAccount"},"credentials":{"googleApi":{"id":"ScSS2KxGQULuPtdy","name":"Google Sheets- test"}},"typeVersion":4.5}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"002daf7e-ff72-46c2-b8f9-d62d7c342deb","connections":{"Build Slack Report":{"main":[[{"node":"Slack — FAIL Alert (Engineering Channel)","type":"main","index":0},{"node":"Slack — WARNING Alert (Review Channel)","type":"main","index":0},{"node":"Slack — PASS Notice (Docs Channel)","type":"main","index":0}]]},"Set Document Input":{"main":[[{"node":"Fetch Document Content","type":"main","index":0}]]},"Fetch Document Content":{"main":[[{"node":"Prepare Document for AI","type":"main","index":0}]]},"Prepare Document for AI":{"main":[[{"node":"Score Documentation with AI","type":"main","index":0}]]},"Parse AI Compliance Report":{"main":[[{"node":"Route by Compliance Status","type":"main","index":0}]]},"Route by Compliance Status":{"main":[[{"node":"Build Slack Report","type":"main","index":0}],[{"node":"Build Slack Report","type":"main","index":0}],[{"node":"Build Slack Report","type":"main","index":0}]]},"Score Documentation with AI":{"main":[[{"node":"Parse AI Compliance Report","type":"main","index":0}]]},"When clicking 'Execute workflow'":{"main":[[{"node":"Set Document Input","type":"main","index":0}]]},"Slack — PASS Notice (Docs Channel)":{"main":[[{"node":"Log Result to Google Sheets","type":"main","index":0}]]},"Slack — WARNING Alert (Review Channel)":{"main":[[{"node":"Log Result to Google Sheets","type":"main","index":0}]]},"Slack — FAIL Alert (Engineering Channel)":{"main":[[{"node":"Log Result to Google Sheets","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":17,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-base.httpRequest":{"count":5},"n8n-nodes-base.googleSheets":{"count":1},"n8n-nodes-base.manualTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Oneclick AI Squad","username":"oneclick-ai","bio":"The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations  from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.","verified":true,"links":["https://www.oneclickitsolution.com/"],"avatar":"https://gravatar.com/avatar/848fca91367142f65f9e5c55d64e5c9952b160d7b060d103b52aa343c6bc7b3d?r=pg&d=retro&size=200"},"nodes":[{"id":18,"icon":"file:googleSheets.svg","name":"n8n-nodes-base.googleSheets","codex":{"data":{"alias":["CSV","Sheet","Spreadsheet","GS"],"resources":{"generic":[{"url":"https://n8n.io/blog/love-at-first-sight-ricardos-n8n-journey/","icon":"❤️","label":"Love at first sight: Ricardo’s n8n journey"},{"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-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/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/creating-triggers-for-n8n-workflows-using-polling/","icon":"⏲","label":"Creating triggers for n8n workflows using polling"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/your-business-doesnt-need-you-to-operate/","icon":" 🖥️","label":"Hey founders! Your business doesn't need you to operate"},{"url":"https://n8n.io/blog/how-honest-burgers-use-automation-to-save-100k-per-year/","icon":"🍔","label":"How Honest Burgers Use Automation to Save $100k per year"},{"url":"https://n8n.io/blog/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"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/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.googlesheets/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"}]},"categories":["Data & Storage","Productivity"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\",\"output\"]","defaults":{"name":"Google Sheets"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNS42OSAxIDUyIDE3LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0OC4yOTMgNjBIMTIuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDkgNTYuMzEyVjQuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTIuNzA3IDF6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM1LjY5IDEgNTIgMTcuMjI1SDM5LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzkuMjExIDE3LjIyNSA1MiAyMi40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTIwLjEyIDMxLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMS42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzEuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjxwYXRoIGZpbGw9IiMyOEI0NDYiIGQ9Ik0zNC42OSAwIDUxIDE2LjIyNXYzOS4wODdhMy42NyAzLjY3IDAgMCAxLTEuMDg0IDIuNjFBMy43IDMuNyAwIDAgMSA0Ny4yOTMgNTlIMTEuNzA3YTMuNyAzLjcgMCAwIDEtMi42MjMtMS4wNzhBMy42NyAzLjY3IDAgMCAxIDggNTUuMzEyVjMuNjg4YTMuNjcgMy42NyAwIDAgMSAxLjA4NC0yLjYxQTMuNyAzLjcgMCAwIDEgMTEuNzA3IDB6Ii8+PHBhdGggZmlsbD0iIzZBQ0U3QyIgZD0iTTM0LjY5IDAgNTEgMTYuMjI1SDM4LjM5N2MtMi4wNTQgMC0zLjcwNy0xLjgyOS0zLjcwNy0zLjg3MnoiLz48cGF0aCBmaWxsPSIjMjE5QjM4IiBkPSJNMzguMjExIDE2LjIyNSA1MSAyMS40OHYtNS4yNTV6Ii8+PHBhdGggZmlsbD0iI0ZGRiIgZD0iTTE5LjEyIDMwLjk3NWMwLS44MTcuNjYyLTEuNDc1IDEuNDgzLTEuNDc1aDE3Ljc5NGMuODIxIDAgMS40ODIuNjU4IDEuNDgyIDEuNDc1djE1LjQ4N2MwIC44MTgtLjY2MSAxLjQ3NS0xLjQ4MiAxLjQ3NUgyMC42MDNhMS40NzYgMS40NzYgMCAwIDEtMS40ODItMS40NzRWMzAuOTc0em0yLjIyNSAxLjQ3NWg2LjY3MnYyLjIxMmgtNi42NzJ6bTAgNS4xNjJoNi42NzJ2Mi4yMTNoLTYuNjcyem0wIDUuMTYzaDYuNjcydjIuMjEyaC02LjY3MnptOS42MzgtMTAuMzI1aDYuNjcydjIuMjEyaC02LjY3MnptMCA1LjE2Mmg2LjY3MnYyLjIxM2gtNi42NzJ6bTAgNS4xNjNoNi42NzJ2Mi4yMTJoLTYuNjcyeiIvPjwvZz48L3N2Zz4="},"displayName":"Google Sheets","typeVersion":5,"nodeCategories":[{"id":3,"name":"Data & Storage"},{"id":4,"name":"Productivity"}]},{"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":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"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/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/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"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":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":35,"name":"Document Extraction"},{"id":49,"name":"AI Summarization"}],"image":[]}}