{"workflow":{"id":13835,"name":"Generate B2B lead magnet articles with AI deep research and Google Docs","views":104,"recentViews":1,"totalViews":104,"createdAt":"2026-03-03T12:11:26.967Z","description":"## Who is this for?\n\nThis workflow is built for B2B marketers, consultants, founders, and agency owners who need to produce high-quality, research-backed thought leadership content — without spending hours on research and writing.\n\n## What this workflow does\n\nThis agent-powered workflow takes a simple topic input and transforms it into a comprehensive, professionally formatted lead magnet article saved directly to Google Docs. It runs parallel deep research across 5 strategic angles, compiles the findings, and produces a polished long-form article ready for LinkedIn, your blog, or a downloadable PDF.\n\n## How it works\n\n1. **Topic Input** — You submit a topic via the built-in chat trigger.\n2. **Strategic Query Generation** — An AI agent refines your topic into 5 targeted research queries covering market context, pain points, frameworks, case studies, and future trends.\n3. **Parallel Deep Research** — Each query is researched independently by an AI agent, producing 400–600 words of data-rich content per section.\n4. **Compilation & Structuring** — All research is merged into a structured article with a table of contents, statistics, and sources.\n5. **Final Writing & Editing** — A writing agent produces the complete 2,500–4,000 word article with proper formatting.\n6. **Google Docs Output** — The article is created as a formatted Google Doc with bold text, headings, and a shareable link.\n7. **Tracking** — Each generated article is logged to a Google Sheet for tracking.\n\n## Setup steps\n\n1. **Connect your Ollama instance** — Set up your Ollama API credentials (or swap the LLM node for OpenAI, Anthropic, etc.).\n2. **Connect Google Docs OAuth2** — Create OAuth2 credentials for the Google Docs API.\n3. **Connect Google Drive OAuth2** — Create OAuth2 credentials for the Google Drive API (used to make the doc shareable).\n4. **Connect Google Sheets OAuth2** — Create OAuth2 credentials and update the Sheet URL in the \"Log to Tracking Sheet\" node to point to your own spreadsheet.\n5. **Update author name** — In the \"Validate Queries\" Code node, change `YOUR_AUTHOR_NAME` to your name.\n6. **Activate and test** — Open the chat trigger URL and submit a topic.\n\n## Requirements\n\n- n8n instance (self-hosted or cloud)\n- Ollama running locally (or substitute with any supported LLM provider)\n- Google Cloud project with Docs, Drive, and Sheets APIs enabled\n- OAuth2 credentials for Google services\n\n## How to customize\n\n- **Swap the LLM** — Replace the Ollama Chat Model node with OpenAI, Anthropic, Google Gemini, or any LangChain-compatible model.\n- **Change the output format** — Modify the \"Final Editor and Polish\" system prompt to produce blog posts, whitepapers, or email sequences instead.\n- **Adjust research depth** — Edit the number of strategic queries or word count targets in the agent prompts.\n- **Add distribution** — Extend the workflow to post directly to LinkedIn, send via email, or upload to your CMS.","workflow":{"id":"29TVA88oq23GYjx9","meta":{"instanceId":"8f8ee4eb853c20789e317beb113798e3d078c0c7ef754b4b9fad98c2eee7e79d"},"name":"Generate B2B lead magnet articles with AI deep research to Google Docs","tags":[{"id":"mHQntpbppFUpZPGm","name":"template","createdAt":"2026-02-17T08:30:26.885Z","updatedAt":"2026-02-17T08:30:26.885Z"}],"nodes":[{"id":"58a1733c-99e2-4dec-95bc-bb398cdb90b0","name":"Submit Your Topic","type":"@n8n/n8n-nodes-langchain.chatTrigger","position":[-256,736],"webhookId":"lead-magnet-chat","parameters":{"options":{}},"typeVersion":1.1},{"id":"49398999-609c-4c5f-8ffe-238581250345","name":"Refine into 5 Strategic Queries","type":"@n8n/n8n-nodes-langchain.agent","position":[-32,736],"parameters":{"text":"=Take this topic and generate 5 strategic research queries for a B2B lead magnet article.\n\nTopic: {{ $json.chatInput }}","options":{"systemMessage":"You are a Strategic Research Query Generator for B2B lead magnet content.\n\nYour job is to take a raw topic and transform it into 5 highly strategic research queries that will power a comprehensive authority-building article.\n\nThe final output will be a LinkedIn-style lead magnet article designed to establish thought leadership, generate inbound leads, drive consultation bookings, and build trust with B2B buyers.\n\nTarget audience: B2B founders, consultants, SaaS leaders, sales teams, agencies.\n\nReturn ONLY this JSON. No markdown. No extra text.\n\n{\n  \"originalTopic\": \"The raw topic submitted\",\n  \"refinedTopic\": \"A sharper more compelling version of the topic\",\n  \"articleAngle\": \"The unique positioning angle for this lead magnet\",\n  \"targetReader\": \"Specific B2B persona this targets\",\n  \"strategicQueries\": [\n    {\n      \"queryId\": \"q1\",\n      \"query\": \"Market context research question\",\n      \"purpose\": \"Establish authority with data\",\n      \"sectionItFeeds\": \"Market Overview\",\n      \"searchTerms\": [\"term1\", \"term2\", \"term3\"]\n    },\n    {\n      \"queryId\": \"q2\",\n      \"query\": \"Problem deep-dive research question\",\n      \"purpose\": \"Show understanding of reader pain points\",\n      \"sectionItFeeds\": \"The Problem\",\n      \"searchTerms\": [\"term1\", \"term2\"]\n    },\n    {\n      \"queryId\": \"q3\",\n      \"query\": \"Solution and framework research question\",\n      \"purpose\": \"Provide actionable value\",\n      \"sectionItFeeds\": \"The Framework\",\n      \"searchTerms\": [\"term1\", \"term2\"]\n    },\n    {\n      \"queryId\": \"q4\",\n      \"query\": \"Case study and proof research question\",\n      \"purpose\": \"Build credibility with evidence\",\n      \"sectionItFeeds\": \"Proof & Case Studies\",\n      \"searchTerms\": [\"term1\", \"term2\"]\n    },\n    {\n      \"queryId\": \"q5\",\n      \"query\": \"Future predictions research question\",\n      \"purpose\": \"Position as forward-thinking leader\",\n      \"sectionItFeeds\": \"Future Outlook\",\n      \"searchTerms\": [\"term1\", \"term2\"]\n    }\n  ],\n  \"proposedTitle\": \"Compelling article title that attracts clicks\",\n  \"proposedSubtitle\": \"Supporting subtitle with value proposition\",\n  \"keyInsightToProve\": \"The ONE big idea this article must prove\",\n  \"competitiveEdge\": \"What makes this angle different from existing content\"\n}\n\nRules:\n1. Each query must be specific and actionable\n2. Queries should NOT overlap\n3. Proposed title must be LinkedIn-worthy\n4. searchTerms should be Google-optimized\n5. Return ONLY valid JSON"},"promptType":"define"},"typeVersion":2.1},{"id":"c560923d-f32b-4b3e-90e7-ad0ae8ab7050","name":"Validate Queries","type":"n8n-nodes-base.code","position":[320,736],"parameters":{"jsCode":"// Parse and validate the refined queries\nconst rawOutput = $json;\nlet queries = {};\n\ntry {\n  let outputText = rawOutput.output || rawOutput;\n  \n  if (typeof outputText === 'string') {\n    const jsonMatch = outputText.match(/```json\\s*([\\s\\S]*?)\\s*```/) ||\n                     outputText.match(/```\\s*([\\s\\S]*?)\\s*```/) ||\n                     [null, outputText];\n    queries = JSON.parse((jsonMatch[1] || outputText).trim());\n  } else {\n    queries = outputText;\n  }\n} catch (error) {\n  console.error('Parse error:', error);\n  const userTopic = $('Submit Your Topic').item.json.chatInput || 'Business Growth';\n  queries = {\n    originalTopic: userTopic,\n    refinedTopic: userTopic,\n    articleAngle: 'Comprehensive analysis',\n    targetReader: 'B2B founders and leaders',\n    strategicQueries: [\n      { queryId: 'q1', query: `Current state of ${userTopic}`, purpose: 'Market context', sectionItFeeds: 'Market Overview', searchTerms: [userTopic] },\n      { queryId: 'q2', query: `Biggest challenges in ${userTopic}`, purpose: 'Problem analysis', sectionItFeeds: 'The Problem', searchTerms: [userTopic, 'challenges'] },\n      { queryId: 'q3', query: `Best practices for ${userTopic}`, purpose: 'Solutions', sectionItFeeds: 'The Framework', searchTerms: [userTopic, 'best practices'] },\n      { queryId: 'q4', query: `Case studies in ${userTopic}`, purpose: 'Proof', sectionItFeeds: 'Proof & Case Studies', searchTerms: [userTopic, 'case study'] },\n      { queryId: 'q5', query: `Future of ${userTopic}`, purpose: 'Predictions', sectionItFeeds: 'Future Outlook', searchTerms: [userTopic, 'trends 2025'] }\n    ],\n    proposedTitle: `The Ultimate Guide to ${userTopic}`,\n    proposedSubtitle: 'Everything you need to know',\n    keyInsightToProve: `Why ${userTopic} matters now more than ever`,\n    competitiveEdge: 'Data-driven with actionable frameworks'\n  };\n}\n\nqueries.strategicQueries = Array.isArray(queries.strategicQueries) ? queries.strategicQueries : [];\nqueries.briefId = `LM-${Date.now().toString(36).toUpperCase()}`;\nqueries.createdAt = new Date().toISOString();\n\n// ⚠️ UPDATE THIS: Replace with your name\nqueries.authorName = 'YOUR_AUTHOR_NAME';\nconst now = new Date();\nqueries.formattedDate = now.toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\nqueries.formattedDateTime = now.toLocaleString('en-US', { month: 'long', day: 'numeric', year: 'numeric', hour: 'numeric', minute: '2-digit', hour12: true });\n\nreturn { json: queries };"},"typeVersion":2},{"id":"5eaa1623-3220-4524-a69f-b991e397fa33","name":"Split into 5 Research Tasks","type":"n8n-nodes-base.splitOut","position":[544,736],"parameters":{"options":{"destinationFieldName":"query"},"fieldToSplitOut":"strategicQueries"},"typeVersion":1},{"id":"83517161-f82f-4afe-bf80-da76a356f815","name":"Deep Web Researcher","type":"@n8n/n8n-nodes-langchain.agent","position":[768,736],"parameters":{"text":"=Conduct deep research on this specific query for a B2B lead magnet article.\n\nQuery ID: {{ $json.query.queryId }}\nResearch Query: {{ $json.query.query }}\nPurpose: {{ $json.query.purpose }}\nSection It Feeds: {{ $json.query.sectionItFeeds }}\nSearch Terms: {{ $json.query.searchTerms.join(', ') }}\n\nOverall Topic: {{ $json.refinedTopic }}\nAngle: {{ $json.articleAngle }}\nTarget Reader: {{ $json.targetReader }}\nKey Insight to Prove: {{ $json.keyInsightToProve }}","options":{"systemMessage":"You are a Deep Research Specialist for B2B thought leadership content.\n\nYour job is to conduct thorough research on a specific query and produce rich data-driven content for a lead magnet article.\n\nYou are one of 5 parallel research agents. Each handles ONE query. Your output will be compiled with others into a complete article.\n\nReturn ONLY valid JSON:\n\n{\n  \"queryId\": \"q1\",\n  \"sectionTitle\": \"Clear compelling section title\",\n  \"sectionContent\": \"Full section content in markdown. 400-600 words. Include subheadings using ###, bullet points, bold text, and data. Write in an authoritative but accessible tone for LinkedIn readers.\",\n  \"keyStats\": [\n    {\"stat\": \"73% of B2B buyers...\", \"source\": \"Gartner 2024\"},\n    {\"stat\": \"$4.2 trillion market...\", \"source\": \"McKinsey Report\"}\n  ],\n  \"quotableInsight\": \"One powerful sentence that could be pulled as a LinkedIn quote\",\n  \"examples\": [\n    {\"company\": \"Company Name\", \"result\": \"What they achieved\", \"relevance\": \"Why it matters\"}\n  ],\n  \"actionableFramework\": {\n    \"name\": \"Framework name if applicable\",\n    \"steps\": [\"Step 1\", \"Step 2\", \"Step 3\"]\n  },\n  \"linkedInHooks\": [\"Hook 1 for this section\", \"Hook 2\"],\n  \"sources\": [\n    {\"title\": \"Source title\", \"url\": \"https://example.com\", \"year\": \"2024\"}\n  ],\n  \"seoKeywords\": [\"keyword1\", \"keyword2\"],\n  \"wordCount\": 500\n}\n\nWriting Rules:\n1. Write 400-600 words of actual content\n2. Include at least 2-3 specific statistics with sources\n3. Include at least 1 company example\n4. Make it LinkedIn-worthy - punchy insightful shareable\n5. The quotableInsight should be tweetable on its own\n6. Return ONLY valid JSON no extra text\n7. Write like a respected industry thought leader not a textbook"},"promptType":"define"},"typeVersion":2.1},{"id":"082e1c21-bfcd-42eb-8b49-f94c3e550dea","name":"Parse Research Output","type":"n8n-nodes-base.code","position":[1120,736],"parameters":{"jsCode":"// Parse individual research output\nconst rawOutput = $json;\nconst taskContext = $input.all()[0].json;\nlet research = {};\n\ntry {\n  let text = rawOutput.output || rawOutput;\n  if (typeof text === 'string') {\n    const jsonMatch = text.match(/```json\\s*([\\s\\S]*?)\\s*```/) ||\n                     text.match(/```\\s*([\\s\\S]*?)\\s*```/) ||\n                     [null, text];\n    research = JSON.parse((jsonMatch[1] || text).trim());\n  } else {\n    research = text;\n  }\n} catch (error) {\n  research = {\n    queryId: taskContext.query?.queryId || 'unknown',\n    sectionTitle: taskContext.query?.sectionItFeeds || 'Research Section',\n    sectionContent: typeof rawOutput.output === 'string' ? rawOutput.output : 'Content pending',\n    keyStats: [],\n    quotableInsight: '',\n    examples: [],\n    actionableFramework: null,\n    linkedInHooks: [],\n    sources: [],\n    seoKeywords: [],\n    wordCount: 0\n  };\n}\n\nresearch.queryId = research.queryId || taskContext.query?.queryId || 'unknown';\nresearch.sectionTitle = research.sectionTitle || taskContext.query?.sectionItFeeds || 'Section';\nresearch.sectionContent = research.sectionContent || '';\nresearch.keyStats = Array.isArray(research.keyStats) ? research.keyStats : [];\nresearch.quotableInsight = research.quotableInsight || '';\nresearch.examples = Array.isArray(research.examples) ? research.examples : [];\nresearch.linkedInHooks = Array.isArray(research.linkedInHooks) ? research.linkedInHooks : [];\nresearch.sources = Array.isArray(research.sources) ? research.sources : [];\nresearch.seoKeywords = Array.isArray(research.seoKeywords) ? research.seoKeywords : [];\nresearch.wordCount = (research.sectionContent || '').split(/\\s+/).length;\nresearch.processedAt = new Date().toISOString();\nresearch.refinedTopic = taskContext.refinedTopic;\nresearch.briefId = taskContext.briefId;\nresearch.proposedTitle = taskContext.proposedTitle;\nresearch.targetReader = taskContext.targetReader;\nresearch.articleAngle = taskContext.articleAngle;\nresearch.authorName = taskContext.authorName;\nresearch.formattedDate = taskContext.formattedDate;\nresearch.formattedDateTime = taskContext.formattedDateTime;\n\nreturn { json: research };"},"typeVersion":2},{"id":"ec8f0ab9-7dff-443f-a74f-eb3e59e20b04","name":"Build TOC and Compile Research","type":"n8n-nodes-base.code","position":[1568,736],"parameters":{"jsCode":"// Compile all research into structured content\nconst allItems = $input.all();\nconst results = allItems.map(item => item.json);\n\n// Sort by queryId\nresults.sort((a, b) => {\n  const aNum = parseInt((a.queryId || '0').replace(/\\D/g, '')) || 0;\n  const bNum = parseInt((b.queryId || '0').replace(/\\D/g, '')) || 0;\n  return aNum - bNum;\n});\n\n// Build Table of Contents\nconst toc = results.map((r, i) => `${i + 1}. ${r.sectionTitle}`);\n\n// Compile sections\nconst sections = results.map(r => ({\n  queryId: r.queryId,\n  title: r.sectionTitle,\n  content: r.sectionContent,\n  keyStats: r.keyStats || [],\n  quotableInsight: r.quotableInsight || '',\n  examples: r.examples || [],\n  framework: r.actionableFramework,\n  hooks: r.linkedInHooks || [],\n  sources: r.sources || [],\n  seoKeywords: r.seoKeywords || [],\n  wordCount: (r.sectionContent || '').split(/\\s+/).length\n}));\n\n// Aggregate all data\nconst allStats = sections.flatMap(s => s.keyStats);\nconst allHooks = sections.flatMap(s => s.hooks);\nconst allSources = sections.flatMap(s => s.sources);\nconst allKeywords = [...new Set(sections.flatMap(s => s.seoKeywords))];\nconst allQuotes = sections.map(s => s.quotableInsight).filter(q => q);\nconst totalWords = sections.reduce((sum, s) => sum + s.wordCount, 0);\n\nconst refinedTopic = results[0]?.refinedTopic || 'Research Report';\nconst briefId = results[0]?.briefId || 'N/A';\nconst proposedTitle = results[0]?.proposedTitle || refinedTopic;\nconst targetReader = results[0]?.targetReader || 'B2B Leaders';\nconst articleAngle = results[0]?.articleAngle || 'Comprehensive analysis';\nconst authorName = results[0]?.authorName || 'YOUR_AUTHOR_NAME';\nconst formattedDate = results[0]?.formattedDate || new Date().toLocaleDateString('en-US', { month: 'long', day: 'numeric', year: 'numeric' });\nconst formattedDateTime = results[0]?.formattedDateTime || new Date().toLocaleString('en-US', { month: 'long', day: 'numeric', year: 'numeric', hour: 'numeric', minute: '2-digit', hour12: true });\n\nconst compiled = {\n  refinedTopic,\n  briefId,\n  proposedTitle,\n  targetReader,\n  articleAngle,\n  authorName,\n  formattedDate,\n  formattedDateTime,\n  tableOfContents: toc,\n  sections,\n  allStats,\n  allHooks,\n  allQuotes,\n  allSources,\n  allKeywords,\n  totalWordCount: totalWords,\n  sectionCount: sections.length,\n  sourceCount: allSources.length,\n  compiledAt: new Date().toISOString(),\n  fullResearchContent: sections.map(s => `\n## ${s.title}\n\n${s.content}\n\n${s.quotableInsight ? '> ' + s.quotableInsight + '\\n\\n' : ''}\n  `).join('\\n---\\n\\n')\n};\n\nreturn { json: compiled };"},"typeVersion":2},{"id":"ef31a5e3-3b93-481f-8e8d-48cfe0b51942","name":"Final Editor and Polish","type":"@n8n/n8n-nodes-langchain.agent","position":[1792,736],"parameters":{"text":"=Write a complete LinkedIn-ready lead magnet article.\n\nAuthor: {{ $json.authorName }}\nDate: {{ $json.formattedDate }}\nTopic: {{ $json.refinedTopic }}\nTitle: {{ $json.proposedTitle }}\nAngle: {{ $json.articleAngle }}\nTarget: {{ $json.targetReader }}\n\nResearch:\n{{ $json.fullResearchContent }}\n\nStats:\n{{ $json.allStats.map(s => s.stat + ' - ' + s.source).join('\\n') }}\n\nSources:\n{{ $json.allSources.map(s => s.title).join('\\n') }}","options":{"systemMessage":"You are an expert B2B content writer.\n\nWrite ONLY the article content. Do NOT include:\n- Any thinking or planning text\n- Phrases like \"The user wants\" or \"Let me analyze\"\n- Meta-commentary about the writing process\n\nSTART IMMEDIATELY with the title.\n\nUse this EXACT structure (plain text, no markdown symbols):\n\n[Title]\n\n[Subtitle]\n\nBy [Author] | [Date]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nTHE BIG IDEA\n\n[2-3 compelling paragraphs with a provocative stat]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nTABLE OF CONTENTS\n\n[List 5 chapters]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nCHAPTER 1: [TITLE]\n\n[Content with paragraphs. Mark important stats and company names with {BOLD}text{/BOLD} tags. Mark section headings with {H3}heading{/H3} tags.]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n[Repeat for chapters 2-5]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nKEY TAKEAWAYS\n\n• [Takeaway 1]\n• [Takeaway 2]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nWHAT TO DO NEXT\n\n1. [Action 1]\n2. [Action 2]\n3. [Action 3]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nABOUT THE AUTHOR\n\n[Bio for author]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nSOURCES AND REFERENCES\n\n[Numbered list]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n[CTA]\n\nRULES:\n1. Start with the title - NO thinking text\n2. Length: 2500-4000 words\n3. Include ALL research and statistics\n4. Mark text to be bold with {BOLD}text{/BOLD}\n5. Mark subheadings with {H3}heading{/H3}\n6. Use current date not February 2026\n7. Plain text output - formatting tags will be processed later\n\nWrite the article now:"},"promptType":"define"},"typeVersion":2.1},{"id":"7d77d794-1c2d-4818-a271-fb38a0a85753","name":"Prepare Document Content","type":"n8n-nodes-base.code","position":[2144,736],"parameters":{"jsCode":"// Clean and prepare article with formatting markers\nconst editorOutput = $json;\nconst compiledData = $node['Build TOC and Compile Research'].json;\nconst queryData = $node['Validate Queries'].json;\n\nlet articleText = '';\nif (typeof editorOutput.output === 'string') {\n  articleText = editorOutput.output;\n} else if (typeof editorOutput === 'string') {\n  articleText = editorOutput;\n} else {\n  articleText = JSON.stringify(editorOutput, null, 2);\n}\n\n// Remove AI thinking text - find first real content line\nconst lines = articleText.split('\\n');\nlet startIndex = 0;\nfor (let i = 0; i < lines.length; i++) {\n  const line = lines[i].trim().toLowerCase();\n  if (line.includes('the user wants') || \n      line.includes('let me analyze') ||\n      line.includes('looking at') ||\n      line.includes('i need to') ||\n      line.includes('i\\'ll create')) {\n    continue;\n  }\n  if (lines[i].trim().length > 20 && !line.startsWith('by ') && !line.includes('author')) {\n    startIndex = i;\n    break;\n  }\n}\n\narticleText = lines.slice(startIndex).join('\\n');\n\n// Clean up markdown and fix dates\narticleText = articleText\n  .replace(/```[a-z]*\\s*/g, '')\n  .replace(/#{1,6}\\s+/g, '')\n  .replace(/\\*\\*([^*]+)\\*\\*/g, '{BOLD}$1{/BOLD}')\n  .replace(/February 2026/gi, compiledData.formattedDate)\n  .replace(/January 2025/gi, compiledData.formattedDate)\n  .replace(/\\x00/g, '')\n  .replace(/[\\u2018\\u2019]/g, \"'\")\n  .replace(/[\\u201C\\u201D]/g, '\"')\n  .trim();\n\nconst docTitle = queryData.proposedTitle || `Lead Magnet: ${compiledData.refinedTopic}`;\n\nreturn {\n  json: {\n    documentTitle: docTitle,\n    articleContent: articleText,\n    refinedTopic: compiledData.refinedTopic,\n    proposedTitle: queryData.proposedTitle || docTitle,\n    proposedSubtitle: queryData.proposedSubtitle || '',\n    articleAngle: queryData.articleAngle || '',\n    targetReader: compiledData.targetReader || 'B2B Leaders',\n    authorName: compiledData.authorName || 'YOUR_AUTHOR_NAME',\n    formattedDate: compiledData.formattedDate,\n    briefId: compiledData.briefId,\n    totalWordCount: compiledData.totalWordCount,\n    sectionCount: compiledData.sectionCount,\n    sourceCount: compiledData.sourceCount,\n    seoKeywords: compiledData.allKeywords || [],\n    linkedInHooks: compiledData.allHooks || [],\n    quotableInsights: compiledData.allQuotes || [],\n    generatedAt: new Date().toISOString()\n  }\n};"},"typeVersion":2},{"id":"9d954276-045f-4c05-a8ec-9493873ce98b","name":"Create Google Doc","type":"n8n-nodes-base.httpRequest","position":[2368,736],"parameters":{"url":"https://docs.googleapis.com/v1/documents","method":"POST","options":{},"jsonBody":"={\n  \"title\": \"{{ $json.documentTitle }}\"\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleDocsOAuth2Api"},"typeVersion":4.2},{"id":"4096dc3e-4c0e-433a-b1fa-e362f89b5485","name":"Extract Doc ID","type":"n8n-nodes-base.code","position":[2592,736],"parameters":{"jsCode":"const createResponse = $json;\nconst documentId = createResponse.documentId;\nconst documentUrl = `https://docs.google.com/document/d/${documentId}/edit`;\n\nif (!documentId) {\n  throw new Error('Failed to create Google Doc');\n}\n\nreturn {\n  json: {\n    documentId: documentId,\n    documentUrl: documentUrl\n  }\n};"},"typeVersion":2},{"id":"a6ed5aef-b453-4224-99d8-fc9f8664db5e","name":"Build Format Requests","type":"n8n-nodes-base.code","position":[2816,736],"parameters":{"jsCode":"// Build Google Docs API formatting requests\nconst docData = $('Prepare Document Content').item.json;\nconst articleText = docData.articleContent;\n\n// Parse text and build formatting requests\nconst requests = [];\nlet currentIndex = 1;\nconst lines = articleText.split('\\n');\nlet fullText = '';\nconst formatRanges = [];\n\nfor (let i = 0; i < lines.length; i++) {\n  const line = lines[i];\n  \n  // Track bold text\n  const boldMatches = [...line.matchAll(/\\{BOLD\\}(.*?)\\{\\/BOLD\\}/g)];\n  for (const match of boldMatches) {\n    const cleanedLine = line.replace(/\\{BOLD\\}|\\{\\/BOLD\\}/g, '');\n    const textBefore = cleanedLine.substring(0, cleanedLine.indexOf(match[1]));\n    const startIdx = currentIndex + fullText.length + textBefore.length;\n    formatRanges.push({\n      type: 'bold',\n      start: startIdx,\n      end: startIdx + match[1].length\n    });\n  }\n  \n  // Track H3 headings\n  const h3Match = line.match(/\\{H3\\}(.*?)\\{\\/H3\\}/);\n  if (h3Match) {\n    const cleanedLine = line.replace(/\\{H3\\}|\\{\\/H3\\}/g, '');\n    formatRanges.push({\n      type: 'heading3',\n      start: currentIndex + fullText.length,\n      end: currentIndex + fullText.length + cleanedLine.length\n    });\n  }\n  \n  // Add cleaned text\n  const cleanLine = line.replace(/\\{BOLD\\}|\\{\\/BOLD\\}|\\{H3\\}|\\{\\/H3\\}/g, '');\n  fullText += cleanLine + '\\n';\n}\n\n// Insert text first\nrequests.push({\n  insertText: {\n    location: { index: 1 },\n    text: fullText\n  }\n});\n\n// Then apply formatting (in reverse order to maintain indices)\nformatRanges.reverse().forEach(range => {\n  if (range.type === 'bold') {\n    requests.push({\n      updateTextStyle: {\n        range: {\n          startIndex: range.start,\n          endIndex: range.end\n        },\n        textStyle: {\n          bold: true\n        },\n        fields: 'bold'\n      }\n    });\n  } else if (range.type === 'heading3') {\n    requests.push({\n      updateParagraphStyle: {\n        range: {\n          startIndex: range.start,\n          endIndex: range.end\n        },\n        paragraphStyle: {\n          namedStyleType: 'HEADING_3'\n        },\n        fields: 'namedStyleType'\n      }\n    });\n  }\n});\n\nreturn {\n  json: {\n    documentId: $json.documentId,\n    requests: requests\n  }\n};"},"typeVersion":2},{"id":"50243f02-0191-4caa-a1c0-9f45e5b608ba","name":"Apply Formatting to Doc","type":"n8n-nodes-base.httpRequest","position":[3040,736],"parameters":{"url":"=https://docs.googleapis.com/v1/documents/{{ $json.documentId }}:batchUpdate","method":"POST","options":{},"jsonBody":"={{ JSON.stringify({ requests: $json.requests }) }}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleDocsOAuth2Api"},"typeVersion":4.2},{"id":"70830e27-a8ec-47bf-a394-e32ccb1a5c8f","name":"Make Doc Shareable","type":"n8n-nodes-base.httpRequest","position":[3264,736],"parameters":{"url":"=https://www.googleapis.com/drive/v3/files/{{ $('Extract Doc ID').item.json.documentId }}/permissions","method":"POST","options":{},"jsonBody":"{\n  \"role\": \"reader\",\n  \"type\": \"anyone\"\n}","sendBody":true,"specifyBody":"json","authentication":"predefinedCredentialType","nodeCredentialType":"googleDriveOAuth2Api"},"typeVersion":4.2},{"id":"bc1d0fe2-b818-4ef9-b29e-c7d98330d9ff","name":"Generate Chat Response","type":"n8n-nodes-base.code","position":[3488,736],"parameters":{"jsCode":"const docId = $('Extract Doc ID').item.json.documentId;\nconst docData = $('Prepare Document Content').item.json;\n\nconst editUrl = `https://docs.google.com/document/d/${docId}/edit?usp=sharing`;\nconst viewUrl = `https://docs.google.com/document/d/${docId}/preview`;\nconst pdfUrl = `https://docs.google.com/document/d/${docId}/export?format=pdf`;\n\nconst linkedInPreview = docData.linkedInHooks && docData.linkedInHooks.length > 0 \n  ? docData.linkedInHooks[0] \n  : `Check out my latest research on ${docData.refinedTopic}`;\n\nconst wordCount = docData.totalWordCount;\nconst readTime = Math.ceil(wordCount / 200);\n\nconst chatMessage = `Your Lead Magnet is Ready!\\n\\nTitle: ${docData.proposedTitle}\\nAuthor: ${docData.authorName}\\nDate: ${docData.formattedDate}\\nAngle: ${docData.articleAngle}\\nTarget Reader: ${docData.targetReader}\\n\\nArticle Statistics:\\n- Word Count: ${wordCount.toLocaleString()} words\\n- Reading Time: ~${readTime} minutes\\n- Sections: ${docData.sectionCount} chapters\\n- Sources: ${docData.sourceCount} references\\n- Brief ID: ${docData.briefId}\\n\\nAccess Your Document:\\n- Edit: ${editUrl}\\n- View: ${viewUrl}\\n- Download PDF: ${pdfUrl}\\n\\nTop Quotable Insights:\\n${docData.quotableInsights.slice(0, 3).map((q, i) => `${i + 1}. \"${q}\"`).join('\\n')}\\n\\nSEO Keywords: ${docData.seoKeywords.slice(0, 10).join(' | ')}\\n\\nLinkedIn Post Hook:\\n${linkedInPreview}\\n\\nNext Steps:\\n1. Open the Google Doc and review\\n2. Important text is already bold\\n3. Headings are already formatted\\n4. Add your brand styling (fonts, colors, logo)\\n5. Publish to LinkedIn Articles or your blog\\n6. Share the PDF as a downloadable lead magnet`;\n\nreturn {\n  json: {\n    output: chatMessage,\n    status: 'success',\n    documentTitle: docData.proposedTitle,\n    authorName: docData.authorName,\n    publicationDate: docData.formattedDate,\n    editUrl: editUrl,\n    viewUrl: viewUrl,\n    pdfUrl: pdfUrl,\n    topic: docData.refinedTopic,\n    title: docData.proposedTitle,\n    subtitle: docData.proposedSubtitle,\n    angle: docData.articleAngle,\n    targetReader: docData.targetReader,\n    briefId: docData.briefId,\n    generatedAt: docData.generatedAt,\n    stats: {\n      wordCount: wordCount,\n      readTime: readTime,\n      sections: docData.sectionCount,\n      sources: docData.sourceCount,\n      seoKeywords: (docData.seoKeywords || []).length\n    },\n    linkedInPostPreview: linkedInPreview,\n    quotableInsights: docData.quotableInsights || [],\n    seoKeywords: docData.seoKeywords || []\n  }\n};"},"typeVersion":2},{"id":"dc0e8a8c-920c-45b8-831d-cfecf998b6d6","name":"Log to Tracking Sheet","type":"n8n-nodes-base.googleSheets","position":[3488,528],"parameters":{"columns":{"value":{},"schema":[],"mappingMode":"autoMapInputData","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"appendOrUpdate","sheetName":{"__rl":true,"mode":"url","value":"YOUR_GOOGLE_SHEET_URL"},"documentId":{"__rl":true,"mode":"url","value":"YOUR_GOOGLE_SHEET_URL"}},"typeVersion":4.6},{"id":"05c40466-e05c-4b92-a1f3-f69690558353","name":"Ollama Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOllama","position":[768,1120],"parameters":{"model":"YOUR_MODEL_NAME","options":{}},"typeVersion":1},{"id":"46c462e3-59d0-4b92-8951-99de86ba24b6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1136,-240],"parameters":{"color":"#96AB49","width":860,"height":722,"content":"## Generate B2B lead magnet articles with AI deep research to Google Docs\n\nThis workflow transforms any topic into a comprehensive, research-backed B2B lead magnet article — automatically saved as a formatted Google Doc.\n\n## How it works\n1. **Submit a topic** via the chat trigger\n2. **AI generates 5 strategic research queries** covering market context, pain points, frameworks, case studies, and future trends\n3. **5 parallel research agents** each produce 400–600 words of data-rich content\n4. **Research is compiled** into a structured article with TOC, stats, and sources\n5. **A writing agent** produces the final 2,500–4,000 word article\n6. **Output is saved** as a formatted Google Doc with bold text and headings\n7. **Article metadata** is logged to a Google Sheet for tracking\n\n## Setup steps\n1. Configure your **Ollama credentials** (or swap for OpenAI / Anthropic / Gemini)\n2. Connect **Google Docs OAuth2** credentials\n3. Connect **Google Drive OAuth2** credentials\n4. Connect **Google Sheets OAuth2** and update the sheet URL in the \"Log to Tracking Sheet\" node\n5. In the \"Validate Queries\" Code node, replace `YOUR_AUTHOR_NAME` with your name\n6. Activate the workflow and open the chat trigger URL\n\n## Customization\n- Swap the LLM model to any LangChain-compatible provider\n- Adjust word count targets in agent system prompts\n- Modify the article structure in the \"Final Editor and Polish\" prompt\n- Add downstream nodes for email delivery, CMS posting, or Slack notifications"},"typeVersion":1},{"id":"4b304f68-6260-452d-82d9-3c5785244009","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-112,528],"parameters":{"color":"#382E2E","width":280,"height":152,"content":"## 1. Topic Refinement\nUser submits a topic via chat. AI refines it into 5 strategic research queries with SEO terms, angles, and target personas."},"typeVersion":1},{"id":"c4ee28ba-eb4a-461a-b165-984130559a7f","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[688,496],"parameters":{"color":"#382E2E","width":316,"height":200,"content":"## 2. Parallel Deep Research\nEach of the 5 queries is researched independently by an AI agent, producing stats, examples, frameworks, and quotable insights (400–600 words each)."},"typeVersion":1},{"id":"79c74b31-76fc-4317-861d-4ee2b2fb5811","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1584,480],"parameters":{"color":"#382E2E","width":324,"height":216,"content":"## 3. Compile & Write Final Article\nAll research is merged into a structured document. A writing agent produces the complete 2,500–4,000 word lead magnet with formatting tags."},"typeVersion":1},{"id":"3eba0d7e-ff43-48aa-9270-a7c01046755e","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2512,464],"parameters":{"color":"#382E2E","width":392,"height":184,"content":"## 4. Format & Publish to Google Docs\nArticle is created as a Google Doc via API. Bold text and headings are applied programmatically. Public sharing is enabled automatically."},"typeVersion":1},{"id":"fea65222-8fba-4e64-82e9-6ae4cf3c0833","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[3424,320],"parameters":{"color":"#382E2E","width":256,"height":152,"content":"## 5. Deliver & Track\nReturns edit, view, and PDF download links to the user via chat. Logs article metadata to Google Sheets for tracking."},"typeVersion":1},{"id":"6c07bfbd-8128-4ed4-befe-60083519941f","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[80,1104],"parameters":{"color":3,"width":320,"height":80,"content":"⚠️ **Update YOUR_AUTHOR_NAME** in this Code node to your actual name before running the workflow."},"typeVersion":1}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"6c541177-c679-4389-92cb-4be870e7d321","connections":{"Extract Doc ID":{"main":[[{"node":"Build Format Requests","type":"main","index":0}]]},"Validate Queries":{"main":[[{"node":"Split into 5 Research Tasks","type":"main","index":0}]]},"Create Google Doc":{"main":[[{"node":"Extract Doc ID","type":"main","index":0}]]},"Ollama Chat Model":{"ai_languageModel":[[{"node":"Refine into 5 Strategic Queries","type":"ai_languageModel","index":0},{"node":"Deep Web Researcher","type":"ai_languageModel","index":0},{"node":"Final Editor and Polish","type":"ai_languageModel","index":0}]]},"Submit Your Topic":{"main":[[{"node":"Refine into 5 Strategic Queries","type":"main","index":0}]]},"Make Doc Shareable":{"main":[[{"node":"Generate Chat Response","type":"main","index":0},{"node":"Log to Tracking Sheet","type":"main","index":0}]]},"Deep Web Researcher":{"main":[[{"node":"Parse Research Output","type":"main","index":0}]]},"Build Format Requests":{"main":[[{"node":"Apply Formatting to Doc","type":"main","index":0}]]},"Parse Research Output":{"main":[[{"node":"Build TOC and Compile Research","type":"main","index":0}]]},"Apply Formatting to Doc":{"main":[[{"node":"Make Doc Shareable","type":"main","index":0}]]},"Final Editor and Polish":{"main":[[{"node":"Prepare Document Content","type":"main","index":0}]]},"Prepare Document Content":{"main":[[{"node":"Create Google Doc","type":"main","index":0}]]},"Split into 5 Research Tasks":{"main":[[{"node":"Deep Web Researcher","type":"main","index":0}]]},"Build TOC and Compile Research":{"main":[[{"node":"Final Editor and Polish","type":"main","index":0}]]},"Refine into 5 Strategic Queries":{"main":[[{"node":"Validate Queries","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":24,"nodeTypes":{"n8n-nodes-base.code":{"count":7},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.httpRequest":{"count":3},"n8n-nodes-base.googleSheets":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":3},"@n8n/n8n-nodes-langchain.chatTrigger":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOllama":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Veena Pandian","username":"veenapandian","bio":"Veena is a GTM Engineer with 6 years of experience in Revenue Operations, specializing in building scalable outbound systems that turn data into pipeline. As a Clay expert, she designs signal-based prospecting workflows, enrichment automations, and AI-led personalization sequences that drive consistent, qualified meetings for B2B companies. She now brings that same systems-thinking approach to building powerful automations in n8n.","verified":true,"links":["https://www.linkedin.com/in/veenareddyhere/"],"avatar":"https://gravatar.com/avatar/74ae38b621079dfbdd0ab6bf5da66389ac331caf189c2384195f681daebcb8f6?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":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":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1151,"icon":"file:ollama.svg","name":"@n8n/n8n-nodes-langchain.lmChatOllama","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatollama/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"Ollama Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNDEuMzMzIiBoZWlnaHQ9IjM0MS4zMzMiIHZlcnNpb249IjEuMCIgdmlld0JveD0iMCAwIDE4MSAyNTYiPjxnIGZpbGw9IiM3RDdEODciPjxwYXRoIGQ9Ik0zNy43IDE5LjVjLTUuMiAxLjgtOC4zIDQuOS0xMS43IDExLjYtNC41IDguOS02LjIgMTkuMi01LjggMzUuNWwuMyAxNC4yLTUuOCA2LjFjLTE0LjggMTUuNS0xOC41IDM4LjctOS4yIDU3LjRsMy40IDYuOS0yIDQuNGMtMy40IDguMi01IDE2LjQtNSAyNi4zIDAgMTAuOCAxLjggMTkgNS44IDI2LjJsMi42IDQuOC0yLjEgNC45Yy0xLjIgMi43LTIuNiA3LjEtMy4yIDkuOC0xLjQgNi4yLTEuNSAyMi4xLS4xIDI1LjcgMSAyLjYgMS40IDIuNyA3LjYgMi43IDcuMyAwIDcgLjQgNS4zLTguNi0xLjUtOC4yLjItMTguOCA0LjItMjYuNiAzLjctNyAzLjgtMTAuNC41LTE0LjgtNC43LTYuNC02LjgtMTMuNi02LjktMjQtLjEtMTAuMyAxLjQtMTYgNi42LTI2LjEgMy4xLTYuMSAyLjktOC43LTEtMTIuMi0xLjEtMS0zLjEtNC4yLTQuMy03LTEuOS00LjItMi40LTYuOS0yLjMtMTQuMiAwLTExLjQgMi41LTE4LjMgOS41LTI2IDctNy42IDE0LjItMTEgMjMuOS0xMS4yIDQuMSAwIDcuOC0uMiA4LjItLjIuNC0uMSAxLjctMi4yIDIuOS00LjcgMy01LjkgOS42LTExLjkgMTYuNy0xNS4yIDQuOS0yLjMgNy0yLjcgMTQuNy0yLjcgNy45IDAgOS43LjQgMTQuOSAyLjkgNi44IDMuMyAxMy4zIDkuNCAxNS45IDE0LjggMSAyIDIuMyA0LjEgMyA0LjUuNi40IDQuNi44IDguNy44IDYuNy4xIDguMy41IDE0IDMuNiAxMi4zIDYuOCAxOS4zIDE4LjcgMTkuMyAzMy40LjEgNi43LS40IDktMi43IDE0LjItMS42IDMuNS0zLjUgNi44LTQuMyA3LjUtMy40IDIuOC0zLjUgNS44LS41IDExLjcgNS4yIDEwLjEgNi43IDE1LjggNi42IDI2LjEtLjEgMTAuNC0yLjIgMTcuNi02LjkgMjQtMy4zIDQuNC0zLjIgNy44LjUgMTQuOCA0IDcuOCA1LjcgMTguNCA0LjIgMjYuNi0xLjcgOS0yIDguNiA1LjMgOC42IDYuMiAwIDYuNi0uMSA3LjYtMi43IDEuNC0zLjYgMS4zLTE5LjUtLjEtMjUuNy0uNi0yLjctMi03LjEtMy4yLTkuOGwtMi4xLTQuOSAyLjYtNC44YzcuNi0xMy45IDcuOS0zNS45LjYtNTIuOGwtMi00LjcgMi41LTQuNmM5LjktMTguMyA2LjQtNDMuOS04LjEtNTkuMWwtNS44LTYuMS4zLTE0LjJjLjQtMTYuNC0xLjMtMjYuNi01LjgtMzUuNy02LjQtMTIuNi0xNy4yLTE1LjktMjYuMy03LjktNS40IDQuNy05LjIgMTMuOC0xMi4zIDI5LjgtLjMgMS40LTEgMi4yLTEuNyAxLjgtMTguMi04LTI5LjctOC41LTQ0LjMtMi4xTDY1IDU0LjlsLS40LTIuMkM2MSAzNC4yIDU2LjEgMjQuMiA0OSAyMC41Yy00LjMtMi4xLTcuNC0yLjQtMTEuMy0xbTcuNyAxNi44YzQuMiA3LjEgOC4xIDMwLjEgNS43IDMzLjYtLjUuOC0zLjEgMS42LTUuOCAxLjgtMi42LjItNi4yLjgtOCAxLjNsLTMuMS44LS43LTQuOWMtLjgtNS45LjItMTcuMiAyLjItMjQuOEMzNy4xIDM4LjQgNDAuNSAzMiA0MiAzMmMuNSAwIDIgMS45IDMuNCA0LjNtOTYuNS0xYzQgNi41IDYuOSAyMy45IDUuNiAzMy42bC0uNyA0LjktMy4xLS44Yy0xLjgtLjUtNS40LTEuMS04LTEuMy0yLjctLjItNS4zLTEtNS44LTEuOC0xLjItMS43LS4zLTE0LjEgMS43LTIyLjkgMS41LTYuNCA1LjctMTUgNy40LTE1IC40IDAgMS44IDEuNSAyLjkgMy4zIi8+PHBhdGggZD0iTTc3LjggMTE5LjljLTcuMyAyLjQtMTEuNiA1LjEtMTYuNSAxMC40LTUuNSA2LTcuNiAxMi03LjEgMjAuMS41IDcuNiAzLjUgMTIuOSAxMC42IDE4LjMgNi4yIDQuNyAxMi43IDYuMyAyNS43IDYuMyAxNy4yIDAgMjUuOC0zLjYgMzIuOS0xMy44IDQuMi01LjkgNC44LTE1LjUgMS42LTIzLTIuOS02LjgtMTEuMS0xNC4zLTE4LjgtMTcuMy04LTMuMS0yMC43LTMuNi0yOC40LTFtMjUuNyAxMGMxNi4xIDcuMSAxOS40IDIzLjIgNi42IDMxLjgtNC45IDMuMy05LjQgNC4zLTE5LjYgNC4zcy0xNC43LTEtMTkuNi00LjNjLTE3LjgtMTItMy4yLTM1LjYgMjEuMS0zNC4zIDMuOS4yIDguNiAxLjIgMTEuNSAyLjUiLz48cGF0aCBkPSJNODMuOCAxNDAuMWMtMi41IDEuNC0yLjIgNC40LjcgNi43IDIgMS42IDIuNCAyLjYgMS45IDQuOS0uNyAzLjYgMS41IDUuOCA1LjEgNC45IDIuMS0uNSAyLjUtMS4yIDIuNS00LjYgMC0yLjkuNS00LjIgMi01IDIuNy0xLjUgMi43LTYuNiAwLTcuNS0xLS4zLTIuOC0uMS00IC41LTEuNC43LTIuNi44LTMuOSAwLTIuMy0xLjItMi4yLTEuMi00LjMuMW0tNDQuMS0xOC45Yy0uOS43LTIuMyAzLTMuMiA1LTIuMSA1LjMtLjEgMTAuMyA0LjcgMTEuNiA0LjMgMS4xIDYgLjYgOS4yLTIuNyA0LTQuMSA0LjMtOC4xIDEuMS0xMS45LTIuMS0yLjUtMy40LTMuMi02LjQtMy4yLTIgMC00LjUuNi01LjQgMS4ybTg5LjggMmMtMy4yIDMuOC0yLjkgNy44IDEuMSAxMS45IDMuMiAzLjMgNC45IDMuOCA5LjIgMi43IDQuOS0xLjMgNi44LTYuMiA0LjYtMTEuOC0xLjktNC43LTMuOC02LTguNy02LTIuNyAwLTQuMS43LTYuMiAzLjIiLz48L2c+PC9zdmc+"},"displayName":"Ollama Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1247,"icon":"fa:comments","name":"@n8n/n8n-nodes-langchain.chatTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.chattrigger/"}]},"categories":["Core Nodes","Langchain"]}},"group":"[\"trigger\"]","defaults":{"name":"When chat message received"},"iconData":{"icon":"comments","type":"icon"},"displayName":"Chat Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":31,"name":"Content Creation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}