{"workflow":{"id":12884,"name":"Generate Reddit customer leads from a product URL with OpenAI and Firecrawl","views":32,"recentViews":0,"totalViews":32,"createdAt":"2026-01-21T20:02:28.684Z","description":"# Reddit Lead Generator - Frontend Integrated (Productized Version)\n\n## Overview\nProduction-ready Reddit lead generation system with progressive data loading for optimal UX. This workflow integrates with a web frontend, sending results in real-time as they're processed instead of waiting for everything to complete.\n\n## Key Features\n\n✅ **Progressive Loading** - Users see results as they come in (website analysis → keywords → conversations)  \n✅ **5 Response Stages** - Data sent in batches for better UX  \n✅ **Webhook Authentication** - Secured with API key headers  \n✅ **Frontend Ready** - Built to work with the companion web app  \n✅ **Real-Time Updates** - No waiting for 2-minute batch processing  \n\n## What This Workflow Does\n\n1. Receives product URL from frontend via webhook\n2. Immediately responds \"processing started\"\n3. Analyzes website with Firecrawl → sends data to frontend\n4. Generates 10 keywords with OpenAI → sends to frontend\n5. Searches Reddit and filters conversations → sends in 3 batches\n6. Frontend displays results progressively as they arrive\n\n## Response Flow\n\n**Stage 1:** `website_analysis` - Product details, favicon, summary  \n**Stage 2:** `keywords_generated` - All 10 keywords  \n**Stage 3:** `conversations_partial1` - First keyword results  \n**Stage 4:** `conversations_partial2` - Second keyword results  \n**Stage 5:** `conversations_final` - Remaining keywords (3-10) in markdown  \n\n## Quick Setup\n\n1. **Set Environment Variables** in the \"Set Environment Variables\" node:\n   - `BACKEND_API_URL` - Your frontend API endpoint\n   - `WEBHOOK_API_KEY` - Your webhook security key\n\n2. **Configure Credentials:**\n   - Firecrawl API\n   - Reddit OAuth2\n   - OpenAI API\n\n3. **Deploy Frontend & Backend:**\n   - Clone repo: https://github.com/juppfy/leads-gen\n   - Deploy frontend on Vercel\n   - Deploy backend on Railway\n   - Full instructions in the repo README\n\n4. **Activate Workflow** and update your frontend with the webhook URL\n\n## Requirements\n\n- n8n (cloud or self-hosted)\n- Firecrawl API key\n- Reddit Developer Account\n- OpenAI API key\n- Frontend + Backend deployed (see GitHub repo)\n\n## Resources\n\n📖 **Complete Setup Guide:** https://bit.ly/mediumarticleredditworkflow  \n🎥 **Video Tutorial:** https://bit.ly/youtubetutorialredditworkflow  \n💻 **GitHub Repo:** https://github.com/juppfy/leads-gen  \n\n## Frontend Integration\n\nThis workflow requires the companion web app to receive and display results. The frontend handles:\n- User input and URL validation\n- Real-time result display\n- Conversation cards with pagination\n- Request tracking by `searchId`\n\nDeploy instructions and complete code available in the GitHub repo above.\n\n## Difference from Batch Version\n\n**This Version (Frontend):**\n- Progressive data loading\n- Real-time updates\n- Production-ready UX\n- Requires frontend deployment\n\n**Batch Version:**\n- Single output at end\n- No frontend needed\n- Perfect for testing/scheduled runs\n- Simpler setup\n\n## Support\n\nQuestions? Check the Medium article or YouTube tutorial first. Both have detailed setup instructions and troubleshooting tips.\n\n---","workflow":{"meta":{"instanceId":"b3c467df4053d13fe31cc98f3c66fa1d16300ba750506bfd019a0913cec71ea3"},"nodes":[{"id":"0c5652da-95ff-4c9e-be66-0ae21e591de7","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[1888,208],"parameters":{"jsonSchemaExample":"{\n  \"keyword1\": \"keyword or phrase 1\",\n  \"keyword2\": \"keyword or phrase 2\",\n  \"keyword3\": \"keyword or phrase 3\",\n  \"keyword4\": \"keyword or phrase 4\",\n  \"keyword5\": \"keyword or phrase 5\",\n  \"keyword6\": \"keyword or phrase 6\",\n  \"keyword7\": \"keyword or phrase 7\",\n  \"keyword8\": \"keyword or phrase 8\",\n  \"keyword9\": \"keyword or phrase 9\",\n  \"keyword10\": \"keyword or phrase 10\"\n}"},"typeVersion":1.3},{"id":"7f67cc7d-1ce8-4115-9758-437cf05c58a9","name":"Aggregate","type":"n8n-nodes-base.aggregate","position":[1200,752],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"subreddit"},{"fieldToAggregate":"title"},{"fieldToAggregate":"body"},{"fieldToAggregate":"postUrl"},{"fieldToAggregate":"createdAt"}]}},"typeVersion":1},{"id":"1ee80d75-bad0-41b7-aa82-3584679a0881","name":"Structured Output Parser1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[976,720],"parameters":{"jsonSchemaExample":"{\n\"assessment\": \"relevant/irrelevant\"\n}"},"typeVersion":1.3},{"id":"21fe7ff8-73ef-45fc-86e1-b961f646246c","name":"Merge","type":"n8n-nodes-base.merge","position":[1632,624],"parameters":{"mode":"combine","options":{},"combineBy":"combineAll"},"typeVersion":3.2},{"id":"9f3e36f3-5913-406e-b65d-3b728d070fb1","name":"Aggregate3","type":"n8n-nodes-base.aggregate","position":[1200,496],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"output.assessment"}]}},"typeVersion":1},{"id":"3baea4b6-10f1-4bb9-b905-7f5113187272","name":"Reddit Posts Keywords Generator","type":"@n8n/n8n-nodes-langchain.agent","position":[1744,-16],"parameters":{"text":"=Product landing Page Description:  {{ $('Scrape Product URL and get its content').item.json.data.markdown }}","options":{"systemMessage":"=# Reddit Keyword Extraction Agent\n\nYou are a specialized AI agent designed to analyze product landing pages and extract optimal keywords for Reddit lead generation.\n\n## Your Task\nAnalyze the provided markdown content from a landing page scrape and generate 10 highly targeted keywords that will help identify relevant Reddit threads where potential customers are discussing problems, needs, or topics related to this product.\n\n## Analysis Process\n\n1. **Identify the Core Product/Service**: Understand what the product does, who it's for, and what problems it solves.\n\n2. **Extract Key Elements**:\n   - Primary pain points the product addresses\n   - Target audience characteristics and personas\n   - Industry or niche terminology\n   - Use cases and applications\n   - Competitor or alternative solution names\n   - Problem statements customers express\n   - Feature categories that indicate need\n\n3. **Consider Reddit Search Behavior**: Think about how real people describe their problems on Reddit before they know solutions exist.\n\n## Keyword Selection Criteria\n\n- **Problem-focused**: Keywords should reflect issues people actively discuss (e.g., \"struggling with project management\" rather than just \"project management software\")\n- **Natural language**: Use phrases people actually type in Reddit searches\n- **Varied specificity**: Mix broad industry terms with specific pain points\n- **Context-aware**: Include both technical and casual language variations\n- **Subreddit-friendly**: Keywords should match topics discussed in relevant subreddits\n\n## Output Format\n\nProvide ONLY a JSON object with 10 separate keyword fields. NO additional text, explanation, or markdown formatting.\n\n**Structure:**\n```json\n{\n  \"keyword1\": \"keyword or phrase 1\",\n  \"keyword2\": \"keyword or phrase 2\",\n  \"keyword3\": \"keyword or phrase 3\",\n  \"keyword4\": \"keyword or phrase 4\",\n  \"keyword5\": \"keyword or phrase 5\",\n  \"keyword6\": \"keyword or phrase 6\",\n  \"keyword7\": \"keyword or phrase 7\",\n  \"keyword8\": \"keyword or phrase 8\",\n  \"keyword9\": \"keyword or phrase 9\",\n  \"keyword10\": \"keyword or phrase 10\"\n}\n```\n\n**Example Output** (for a freelance time-tracking tool):\n```json\n{\n  \"keyword1\": \"tracking billable hours freelance\",\n  \"keyword2\": \"how to invoice clients accurately\",\n  \"keyword3\": \"time management for consultants\",\n  \"keyword4\": \"freelancer productivity tips\",\n  \"keyword5\": \"tracking multiple client projects\",\n  \"keyword6\": \"automated time tracking tools\",\n  \"keyword7\": \"best way to log work hours\",\n  \"keyword8\": \"freelance accounting software recommendations\",\n  \"keyword9\": \"struggling with time estimates\",\n  \"keyword10\": \"client billing disputes hours\"\n}\n```\n\n## Important Guidelines\n\n- Keep each keyword/phrase between 2-6 words for optimal Reddit search results\n- Avoid generic terms that would return too many irrelevant results\n- Include a mix of: problem statements, use cases, target roles/personas, and industry terms\n- Do NOT include the product name itself\n- Focus on discoverability: what would someone search before finding this solution?\n- Prioritize keywords that indicate buying intent or active problem-solving\n- Output MUST be valid JSON only - no markdown code blocks, no explanatory text\n\n## Example Comparison\n\nIf analyzing a landing page for a time-tracking tool for freelancers:\n- ✅ GOOD: \"tracking billable hours\", \"freelance time management\", \"client invoicing struggles\"\n- ❌ BAD: \"productivity\", \"software\", \"business tools\"\n\nNow analyze the provided markdown content and generate the 10 optimal Reddit search keywords in the exact JSON format specified above."},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"83188d1b-1e0b-4678-b5f4-1dcba012d3eb","name":"Posts Relevance AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[848,496],"parameters":{"text":"=title: {{ $('Clean results').item.json.title }}\nBody: {{ $('Clean results').item.json.body }}","options":{"systemMessage":"=The following is a post search result from reddit in previous n8n nodes for the keyword  {{ $('Reddit Posts Keywords Generator').item.json.output.keyword1 }}\n\nThe posts should be of themes related to the keyword so that I can engage in comments to promote my product \"{{ $('Scrape Product URL and get its content').item.json.data.metadata.ogTitle }}\", desccription \"{{ $('Scrape Product URL and get its content').item.json.data.metadata['og:description'][0] }}\"\n\nPlease Check if the post is relevant, if it is please add assement: relevant or irrelevant\n\n{\n\"assessment\": \"relevant/irrelevant\"\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"b840db51-a24e-4d46-8ada-3361dc560e22","name":"Clean results","type":"n8n-nodes-base.code","position":[624,624],"parameters":{"jsCode":"// Loop through all incoming items and extract the required fields\nreturn $input.all().map(item => {\n  return {\n    json: {\n      subreddit: item.json.subreddit ?? 'not_applicable',\n      title: item.json.title ?? 'not_applicable',\n      body: item.json.selftext ?? 'not_applicable',\n      postUrl: item.json.url ?? 'not_applicable',\n      createdAt: item.json.created_utc \n        ? new Date(item.json.created_utc * 1000).toISOString() // converts UTC seconds to ISO datetime\n        : 'not_applicable'\n    }\n  };\n});\n"},"typeVersion":2},{"id":"de3c10e5-be6a-46d6-8d26-a2b9eec9ee1d","name":"Search for Posts (Keyword/Phrase)","type":"n8n-nodes-base.reddit","position":[400,624],"parameters":{"limit":10,"keyword":"={{ $('Reddit Posts Keywords Generator').item.json.output.keyword1 }}","location":"allReddit","operation":"search","additionalFields":{"sort":"hot"}},"credentials":{"redditOAuth2Api":{"id":"nQWY0xjU2B70fKGM","name":"Reddit account"}},"typeVersion":1},{"id":"3d129cb6-b34b-4710-800e-133e39a77f47","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-208,-80],"parameters":{"width":2464,"height":464,"content":"## Process Product URL, Send Website Analysis and Keywords to Server/Frontend"},"typeVersion":1},{"id":"74f112b9-2820-4742-be7f-a316ec3b188f","name":"Webhook","type":"n8n-nodes-base.webhook","position":[-176,-16],"webhookId":"b2d7fb9a-f92c-4174-998e-58e902d0ce81","parameters":{"path":"b2d7fb9a-f92c-4174-998e-58e902d0ce81","options":{},"httpMethod":"POST","authentication":"headerAuth"},"credentials":{"httpHeaderAuth":{"id":"LrfbeYeBUMpo4Gd0","name":"leadsgen"}},"typeVersion":2.1},{"id":"38e67c19-4c0d-46da-9cb4-881e07a57931","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[752,208],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"5UniF8cNOayWi0zD","name":"My Open AI Account"}},"typeVersion":1.2},{"id":"60f7e528-0bfd-437e-bfd0-f04f7f6e26bc","name":"Structured Output Parser4","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[880,208],"parameters":{"jsonSchemaExample":"{\n  \"website_summary\": \"Two sentence summary of what the website/product is and its core value proposition. Keep it clear and concise.\",\n  \"target_market\": \"A single paragraph describing the intended audience, their pain points, and why this product/service appeals to them. Include specific characteristics or demographics if evident from the content.\"\n}"},"typeVersion":1.3},{"id":"12b084df-808c-44da-9061-21900fc28b33","name":"Edit Fields","type":"n8n-nodes-base.set","position":[1088,-16],"parameters":{"options":{},"assignments":{"assignments":[{"id":"f13da266-d978-4023-9323-a8169743a847","name":"title","type":"string","value":"={{ $('Sanitize Results').item.json.title }}"},{"id":"e97e0e63-136c-4f2c-8c98-a59e4eb49f94","name":"cta","type":"string","value":"={{ $('Sanitize Results').item.json.description }}"},{"id":"b2ec2274-5ef9-4ffb-81ab-8ad1e394a960","name":"website_summary","type":"string","value":"={{ $json.output.website_summary }}"},{"id":"8e82bf38-6b39-4a14-aa76-990b403e4946","name":"target_market_analysis","type":"string","value":"={{ $json.output.target_market }}"},{"id":"38482346-14e7-4876-9a8d-95430a9c99a1","name":"preview_image","type":"string","value":"={{ $('Sanitize Results').item.json.image }}"},{"id":"8235ce16-0489-442a-9fb4-36efec7719b7","name":"favicon","type":"string","value":"={{ $('Sanitize Results').item.json.favicon }}"},{"id":"ca87e1a2-0c39-49f2-aa1c-94f25065695a","name":"searchId","type":"string","value":"={{ $('Webhook').item.json.body.searchId }}"},{"id":"fe394353-cc53-4d61-8dbf-301148b9cc11","name":"stage","type":"string","value":"website_analysis"}]}},"typeVersion":3.4},{"id":"870b8682-833f-4c15-b9bb-ee6cf0563417","name":"OpenAI Chat Model2","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[848,720],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"5UniF8cNOayWi0zD","name":"My Open AI Account"}},"typeVersion":1.2},{"id":"6d847db9-9f96-406c-a416-99af6e9674d6","name":"Aggregate5","type":"n8n-nodes-base.aggregate","position":[3344,208],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"subreddit"},{"fieldToAggregate":"title"},{"fieldToAggregate":"body"},{"fieldToAggregate":"postUrl"},{"fieldToAggregate":"createdAt"}]}},"typeVersion":1},{"id":"8a5b72e6-9b60-4be1-a206-51f83deceb90","name":"Structured Output Parser5","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[3120,192],"parameters":{"jsonSchemaExample":"{\n\"assessment\": \"relevant/irrelevant\"\n}"},"typeVersion":1.3},{"id":"630c4fbf-dfe4-48d7-b608-61434e77d97a","name":"Merge3","type":"n8n-nodes-base.merge","position":[3568,96],"parameters":{"mode":"combine","options":{},"combineBy":"combineAll"},"typeVersion":3.2},{"id":"8c46816e-bbe6-4350-835e-912765cf4d14","name":"Aggregate6","type":"n8n-nodes-base.aggregate","position":[3344,-32],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"output.assessment"}]}},"typeVersion":1},{"id":"3bf798ad-3f52-4231-b4d0-83dbce730428","name":"Posts Relevance AI Agent2","type":"@n8n/n8n-nodes-langchain.agent","position":[2992,-32],"parameters":{"text":"=title: {{ $('Clean results2').item.json.title }}\nBody: {{ $('Clean results2').item.json.body }}","options":{"systemMessage":"=The following is a post search result from reddit in previous n8n nodes for the keyword  {{ $('Reddit Posts Keywords Generator').item.json.output.keyword1 }}\n\nThe posts should be of themes related to the keyword so that I can engage in comments to promote my product \"{{ $('Scrape Product URL and get its content').item.json.data.metadata.ogTitle }}\", desccription \"{{ $('Scrape Product URL and get its content').item.json.data.metadata['og:description'][0] }}\"\n\nPlease Check if the post is relevant, if it is please add assement: relevant or irrelevant\n\n{\n\"assessment\": \"relevant/irrelevant\"\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"87e4aa6e-6ebb-469a-af38-14c15e4448a5","name":"Clean results2","type":"n8n-nodes-base.code","position":[2768,96],"parameters":{"jsCode":"// Loop through all incoming items and extract the required fields\nreturn $input.all().map(item => {\n  return {\n    json: {\n      subreddit: item.json.subreddit ?? 'not_applicable',\n      title: item.json.title ?? 'not_applicable',\n      body: item.json.selftext ?? 'not_applicable',\n      postUrl: item.json.url ?? 'not_applicable',\n      createdAt: item.json.created_utc \n        ? new Date(item.json.created_utc * 1000).toISOString() // converts UTC seconds to ISO datetime\n        : 'not_applicable'\n    }\n  };\n});\n"},"typeVersion":2},{"id":"63915944-b1b3-4069-a358-88fa03aa4159","name":"Search for Posts (Keyword/Phrase)2","type":"n8n-nodes-base.reddit","position":[2544,96],"parameters":{"limit":10,"keyword":"={{ $('Reddit Posts Keywords Generator').item.json.output.keyword2 }}","location":"allReddit","operation":"search","additionalFields":{"sort":"hot"}},"credentials":{"redditOAuth2Api":{"id":"nQWY0xjU2B70fKGM","name":"Reddit account"}},"typeVersion":1},{"id":"67b9c808-fadc-49ea-ae23-d044d7dd2972","name":"OpenAI Chat Model3","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2992,192],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"5UniF8cNOayWi0zD","name":"My Open AI Account"}},"typeVersion":1.2},{"id":"ca78c115-c11e-4340-b2e2-73db050f6087","name":"Aggregate9","type":"n8n-nodes-base.aggregate","position":[4032,768],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"subreddit"},{"fieldToAggregate":"title"},{"fieldToAggregate":"body"},{"fieldToAggregate":"postUrl"},{"fieldToAggregate":"createdAt"}]}},"typeVersion":1},{"id":"14c5fa1b-4f89-45a1-ac08-251ef8609574","name":"Structured Output Parser7","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[3824,768],"parameters":{"jsonSchemaExample":"{\n\"assessment\": \"relevant/irrelevant\"\n}"},"typeVersion":1.3},{"id":"efbed6ed-334f-4e35-9ca4-5def64c01236","name":"Merge5","type":"n8n-nodes-base.merge","position":[4256,672],"parameters":{"mode":"combine","options":{},"combineBy":"combineAll"},"typeVersion":3.2},{"id":"b845e2bd-0353-4c9e-9ac7-977068965443","name":"Aggregate10","type":"n8n-nodes-base.aggregate","position":[4032,624],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"output.assessment"}]}},"typeVersion":1},{"id":"3abacb05-9436-41fb-9122-53b6698a34e9","name":"Posts Relevance AI Agent4","type":"@n8n/n8n-nodes-langchain.agent","position":[3696,624],"parameters":{"text":"=title: {{ $('Clean results4').item.json.title }}\nBody: {{ $('Clean results4').item.json.body }}","options":{"systemMessage":"=The following is a post search result from reddit in previous n8n nodes for the keyword  {{ $('Split Out1').item.json.keywords }}\n\nThe posts should be of themes related to the keyword so that I can engage in comments to promote my product \"{{ $('Scrape Product URL and get its content').item.json.data.metadata.ogTitle }}\", desccription \"{{ $('Scrape Product URL and get its content').item.json.data.metadata['og:description'][0] }}\"\n\nPlease Check if the post is relevant, if it is please add assement: relevant or irrelevant\n\n{\n\"assessment\": \"relevant/irrelevant\"\n}"},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"619719b7-a33a-4dea-8132-f90977084fc8","name":"Clean results4","type":"n8n-nodes-base.code","position":[3456,672],"parameters":{"jsCode":"// Loop through all incoming items and extract the required fields\nreturn $input.all().map(item => {\n  return {\n    json: {\n      subreddit: item.json.subreddit ?? 'not_applicable',\n      title: item.json.title ?? 'not_applicable',\n      body: item.json.selftext ?? 'not_applicable',\n      postUrl: item.json.url ?? 'not_applicable',\n      createdAt: item.json.created_utc \n        ? new Date(item.json.created_utc * 1000).toISOString() // converts UTC seconds to ISO datetime\n        : 'not_applicable'\n    }\n  };\n});\n"},"typeVersion":2},{"id":"8cac8a56-8a75-4550-b1f2-f9784c55bb27","name":"Search for Posts (Keyword/Phrase)4","type":"n8n-nodes-base.reddit","position":[3232,672],"parameters":{"limit":10,"keyword":"={{ $json.keywords }}","location":"allReddit","operation":"search","additionalFields":{"sort":"hot"}},"credentials":{"redditOAuth2Api":{"id":"nQWY0xjU2B70fKGM","name":"Reddit account"}},"typeVersion":1},{"id":"cb4cd520-d269-4526-afa4-5be42cbd0f73","name":"Split Out1","type":"n8n-nodes-base.splitOut","position":[2784,672],"parameters":{"options":{},"fieldToSplitOut":"keywords"},"typeVersion":1},{"id":"ad9486e0-ff14-4b60-bc19-74e598e03519","name":"Loop Over Items1","type":"n8n-nodes-base.splitInBatches","position":[3008,672],"parameters":{"options":{}},"typeVersion":3},{"id":"dbc94d02-7c7c-40d1-a483-e239df618c0c","name":"Aggregate11","type":"n8n-nodes-base.aggregate","position":[3456,464],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"passed_post"}]}},"typeVersion":1},{"id":"5ff4dfff-1330-49d4-90a9-5f9fe523826c","name":"OpenAI Chat Model5","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[3696,768],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"5UniF8cNOayWi0zD","name":"My Open AI Account"}},"typeVersion":1.2},{"id":"e0fa1c22-c012-4769-8ef8-f0deaa7f4e31","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[2288,-80],"parameters":{"width":1936,"height":464,"content":"## Process and send conversations for Keyword #2"},"typeVersion":1},{"id":"ec54a767-e0be-4084-9e5f-dbe06b1df078","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[240,432],"parameters":{"width":2016,"height":496,"content":"## Process and send conversations for Keyword #1"},"typeVersion":1},{"id":"492af242-f6c3-4177-a3be-e2508daec61a","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2288,432],"parameters":{"width":2336,"height":496,"content":"## Process and send conversations for Keyword #3 - #10"},"typeVersion":1},{"id":"4d0a5307-6fd7-481b-a3de-b9fbc84bfee1","name":"Set Environment Variables","type":"n8n-nodes-base.set","position":[32,-16],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e0558f12-c17a-4bad-b482-438ff599f71a","name":"N8N_WEBHOOK_API_KEY","type":"string","value":"your-secret-key/api-key"},{"id":"a48acfbb-0216-4bf9-9295-ffc18aba750e","name":"BACKEND_API_URL","type":"string","value":"your-ngrok-url/railway-server-base-url"}]}},"typeVersion":3.4},{"id":"23f69bb7-4150-4c19-837b-3c7c5e972bff","name":"Sanitize Results","type":"n8n-nodes-base.code","position":[512,-16],"parameters":{"jsCode":"return [\n  {\n    json: {\n      markdown: $input.first()?.json?.data?.markdown ?? 'not_applicable',\n      title: $input.first()?.json?.data?.metadata?.['og:title']?.[0] ?? 'not_applicable',\n      image: $input.first()?.json?.data?.metadata?.['og:image']?.[0] ?? 'not_applicable',\n      description: $input.first()?.json?.data?.metadata?.['og:description'] ?? 'not_applicable',\n      favicon: $input.first()?.json?.data?.metadata?.favicon ?? 'not_applicable'\n    }\n  }\n]\n"},"typeVersion":2},{"id":"9d52e481-9595-42ad-b791-dd539d3ae888","name":"Analyze Product URL Scrape","type":"@n8n/n8n-nodes-langchain.agent","position":[736,-16],"parameters":{"text":"=site title: {{ $json.title }}\nmarkdown content: {{ $json.markdown }}\ncta: {{ $json.description }}","options":{"systemMessage":"=You are an expert landing page analyzer specializing in extracting key business insights from website content. Your task is to analyze scraped landing page data and provide concise, actionable summaries.\n\n## Input Data\nYou will receive the following data from the scraping node:\n- **markdown_content**: The full markdown-formatted content of the landing page (always present)\n- **cta**: The primary call-to-action text from the page (may be marked as \"not_available\")\n\n## Instructions\n1. Only use data that is present. If any input shows \"not_available\", disregard it entirely.\n2. Focus your analysis on the markdown content as the primary source of truth.\n3. Analyze the landing page holistically to identify the product/service, its value proposition, and intended audience.\n4. Provide insights that would be useful for marketing, sales, or product teams.\n\n## Output Format\nReturn a valid JSON object with exactly this structure:\n\n```json\n{\n  \"website_summary\": \"Two sentence summary of what the website/product is and its core value proposition. Keep it clear and concise.\",\n  \"target_market\": \"A single paragraph describing the intended audience, their pain points, and why this product/service appeals to them. Include specific characteristics or demographics if evident from the content.\"\n}\n```\n\n## Output Requirements\n- **website_summary**: Exactly 2 sentences. First sentence should describe what the product is, second should describe its main benefit or value proposition.\n- **target_market**: One paragraph (3-5 sentences). Should identify who would benefit most, what problems it solves for them, and any implicit audience signals from the landing page.\n- Return only valid JSON with no additional text, markdown formatting, or explanations.\n- Use clear, professional language appropriate for business stakeholders."},"promptType":"define","hasOutputParser":true},"typeVersion":2.2},{"id":"92974151-960e-40b4-a263-bbc10247d947","name":"Sanitize JSON Values","type":"n8n-nodes-base.code","position":[1296,-16],"parameters":{"jsCode":"/**\n * Ultra-safe sanitizer for AI / JSON payloads in n8n\n * Also removes wrapping square brackets: [ ... ]\n */\n\nfunction sanitizeForAI(value) {\n  if (value === null || value === undefined) {\n    return '';\n  }\n\n  // If array or object, stringify safely first\n  if (typeof value === 'object') {\n    try {\n      value = JSON.stringify(value);\n    } catch (e) {\n      value = String(value);\n    }\n  }\n\n  if (typeof value !== 'string') {\n    value = String(value);\n  }\n\n  value = value\n    // Trim early to detect wrapping brackets\n    .trim()\n\n    // Remove wrapping square brackets ONLY if they enclose entire string\n    .replace(/^\\[\\s*(.*?)\\s*\\]$/, '$1')\n\n    // Normalize unicode (smart quotes, odd chars)\n    .normalize('NFKC')\n\n    // Normalize newlines\n    .replace(/\\r\\n/g, '\\n')\n    .replace(/\\r/g, '\\n')\n\n    // Remove control characters except newline & tab\n    .replace(/[\\u0000-\\u0008\\u000B\\u000C\\u000E-\\u001F\\u007F]/g, '')\n\n    // Escape backslashes\n    .replace(/\\\\/g, '\\\\\\\\')\n\n    // Escape double quotes\n    .replace(/\"/g, '\\\\\"')\n\n    // Replace non-breaking spaces\n    .replace(/\\u00A0/g, ' ')\n\n    // Collapse excessive spaces (preserve newlines)\n    .replace(/[ \\t]{2,}/g, ' ')\n\n    // Final trim\n    .trim();\n\n  return value;\n}\n\nconst input = $input.first().json;\n\nreturn [\n  {\n    json: {\n      title: sanitizeForAI(input.title),\n      cta: sanitizeForAI(input.cta),\n      website_summary: sanitizeForAI(input.website_summary),\n      target_market_analysis: sanitizeForAI(input.target_market_analysis),\n    },\n  },\n];\n"},"typeVersion":2},{"id":"b7cad7e8-3579-443d-b06e-de68b5660155","name":"Send keywords to Server","type":"n8n-nodes-base.httpRequest","position":[2096,-16],"parameters":{"url":"={{ $('Set Environment Variables').item.json.BACKEND_API_URL }}api/webhook/n8n ","method":"POST","options":{},"jsonBody":"={\n  \"searchId\": \"{{ $('Edit Fields').item.json.searchId }}\",\n  \"stage\": \"keywords_generated\",\n  \"keywords\": {\n    \"keyword1\": \"{{ $json.output.keyword1 }}\",\n    \"keyword2\": \"{{ $json.output.keyword2 }}\",\n    \"keyword3\": \"{{ $json.output.keyword3 }}\",\n    \"keyword4\": \"{{ $json.output.keyword4 }}\",\n    \"keyword5\": \"{{ $json.output.keyword5 }}\",\n    \"keyword6\": \"{{ $json.output.keyword6 }}\",\n    \"keyword7\": \"{{ $json.output.keyword7 }}\",\n    \"keyword8\": \"{{ $json.output.keyword8 }}\",\n    \"keyword9\": \"{{ $json.output.keyword9 }}\",\n    \"keyword10\": \"{{ $json.output.keyword10 }}\"\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $('Set Environment Variables').item.json.N8N_WEBHOOK_API_KEY }}"}]}},"typeVersion":4.2},{"id":"4459343c-6649-4cf0-a9e0-ab18676b775d","name":"Send Website Analysis Data to Server","type":"n8n-nodes-base.httpRequest","position":[1520,-16],"parameters":{"url":"={{ $('Set Environment Variables').item.json.BACKEND_API_URL }}api/webhook/n8n ","method":"POST","options":{},"jsonBody":"={\n  \"searchId\": \"{{ $('Edit Fields').item.json.searchId }}\",\n  \"stage\": \"website_analysis\",\n  \"websiteData\": [\n    {\n      \"title\": \"{{ $json.title }}\",\n      \"cta\": \"{{ $json.cta }}\",\n      \"website_summary\": \"{{ $json.website_summary }}\",\n      \"target_market_analysis\": \"{{ $json.target_market_analysis }}\",\n      \"preview_image\": \"{{ $('Edit Fields').item.json.preview_image }}\",\n      \"favicon\": \"{{ $('Edit Fields').item.json.favicon }}\"\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $('Set Environment Variables').item.json.N8N_WEBHOOK_API_KEY }}"}]}},"typeVersion":4.2},{"id":"264e6e25-f7f5-408b-bd8f-d77de3f1b409","name":"Send Conversations for keyword #1 to Server","type":"n8n-nodes-base.httpRequest","position":[2080,624],"parameters":{"url":"={{ $('Set Environment Variables').item.json.BACKEND_API_URL }}api/webhook/n8n","method":"POST","options":{},"sendBody":true,"contentType":"form-urlencoded","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"=searchId","value":"={{ $('Webhook').item.json.body.searchId }}"},{"name":"=stage","value":"conversations_partial1"},{"name":"=keyword","value":"={{ $('Reddit Posts Keywords Generator').item.json.output.keyword1 }}"},{"name":"passedPosts","value":"={{ $json.content }}"}]},"headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $('Set Environment Variables').item.json.N8N_WEBHOOK_API_KEY }}"}]}},"typeVersion":4.2},{"id":"f5883372-8e1c-47b5-abaf-afa7888c55fa","name":"Send Conversations for Keyword #2 to Server","type":"n8n-nodes-base.httpRequest","position":[4016,96],"parameters":{"url":"={{ $('Set Environment Variables').item.json.BACKEND_API_URL }}api/webhook/n8n","method":"POST","options":{},"sendBody":true,"contentType":"form-urlencoded","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"=searchId","value":"={{ $('Webhook').item.json.body.searchId }}"},{"name":"=stage","value":"conversations_partial2"},{"name":"=keyword","value":"={{ $('Reddit Posts Keywords Generator').item.json.output.keyword2 }}"},{"name":"passedPosts","value":"={{ $json.content }}"}]},"headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $('Set Environment Variables').item.json.N8N_WEBHOOK_API_KEY }}"}]}},"typeVersion":4.2},{"id":"696947ee-4433-41ab-817a-d2aadec0b503","name":"Parse Qualifying Posts","type":"n8n-nodes-base.code","position":[1856,624],"parameters":{"jsCode":"// Get the first input item\nconst data = $input.first().json;\n\n// Prepare variables\nlet markdownContent = '';\nlet conversationCount = 1;\nlet hasRelevantConversations = false;\n\n// Loop through all assessments\nfor (let i = 0; i < data.assessment.length; i++) {\n  if (data.assessment[i] === \"relevant\") {\n    hasRelevantConversations = true;\n\n    markdownContent += `# Conversation ${conversationCount}\\n\\n`;\n    markdownContent += `**Subreddit:** r/${data.subreddit[i]}\\n\\n`;\n    markdownContent += `**Title:** ${data.title[i]}\\n\\n`;\n    markdownContent += `**Posted:** ${data.createdAt[i]}\\n\\n`;\n    markdownContent += `**Assessment:** ${data.assessment[i]}\\n\\n`;\n    markdownContent += `## Body\\n${data.body[i]}\\n\\n`;\n    markdownContent += `[View Post](${data.postUrl[i]})\\n\\n`;\n    markdownContent += `---\\n\\n`;\n\n    conversationCount++;\n  }\n}\n\n// Fallback if no relevant conversations exist\nif (!hasRelevantConversations) {\n  markdownContent = 'no_conversations_found';\n}\n\n// Return as a single item\nreturn [\n  {\n    json: {\n      content: markdownContent\n    }\n  }\n];\n"},"typeVersion":2},{"id":"2e457ed2-0fc0-4b13-bf33-06db31a36153","name":"Parse Qualifying Posts 2","type":"n8n-nodes-base.code","position":[3792,96],"parameters":{"jsCode":"// Get the first input item\nconst data = $input.first().json;\n\n// Prepare variables\nlet markdownContent = '';\nlet conversationCount = 1;\nlet hasRelevantConversations = false;\n\n// Loop through all assessments\nfor (let i = 0; i < data.assessment.length; i++) {\n  if (data.assessment[i] === \"relevant\") {\n    hasRelevantConversations = true;\n\n    markdownContent += `# Conversation ${conversationCount}\\n\\n`;\n    markdownContent += `**Subreddit:** r/${data.subreddit[i]}\\n\\n`;\n    markdownContent += `**Title:** ${data.title[i]}\\n\\n`;\n    markdownContent += `**Posted:** ${data.createdAt[i]}\\n\\n`;\n    markdownContent += `**Assessment:** ${data.assessment[i]}\\n\\n`;\n    markdownContent += `## Body\\n${data.body[i]}\\n\\n`;\n    markdownContent += `[View Post](${data.postUrl[i]})\\n\\n`;\n    markdownContent += `---\\n\\n`;\n\n    conversationCount++;\n  }\n}\n\n// If no relevant conversations were found\nif (!hasRelevantConversations) {\n  markdownContent = 'no_conversations_found';\n}\n\n// Return as a single item\nreturn [\n  {\n    json: {\n      content: markdownContent\n    }\n  }\n];\n"},"typeVersion":2},{"id":"e434d3ed-624b-4c29-b7be-0109ce0cce66","name":"Parse Qualifying Posts Final","type":"n8n-nodes-base.code","position":[4432,672],"parameters":{"jsCode":"// Get the first input item\nconst data = $input.first().json;\n\n// Prepare an array to hold only the relevant posts\nconst passed_post = [];\n\n// Loop through all assessments\nfor (let i = 0; i < data.assessment.length; i++) {\n  if (data.assessment[i] === \"relevant\") {\n    passed_post.push({\n      subreddit: data.subreddit[i],\n      title: data.title[i],\n      body: data.body[i],\n      postUrl: data.postUrl[i],\n      assessment: data.assessment[i],\n      createdAt: data.createdAt[i]\n    });\n  }\n}\n\n// Return the final filtered list\nreturn [\n  {\n    json: {\n      passed_post\n    }\n  }\n];\n"},"typeVersion":2},{"id":"f5410841-0006-43c8-b531-7d1e2f225aa8","name":"Sanitize & Parse Final Payload","type":"n8n-nodes-base.code","position":[3696,464],"parameters":{"jsCode":"// n8n JavaScript Function for Formatting Conversations to Markdown\n// Input: $input.first().json.passed_post (array of keyword groups with conversations)\n// Output: Formatted markdown string\n\nconst data = $input.first().json.passed_post;\n\nif (!data || !Array.isArray(data) || data.length === 0) {\n  return { conversations_final: \"# No conversations available\" };\n}\n\nlet markdown = \"# Filtered Conversations\\n\\n\";\n\n// Iterate through each keyword group (max 8)\ndata.forEach((keywordGroup, keywordIndex) => {\n  if (!keywordGroup || !Array.isArray(keywordGroup) || keywordGroup.length === 0) {\n    return;\n  }\n\n  // Extract keyword from first conversation (assuming it's consistent within group)\n  const keyword = keywordGroup[0]?.keyword || `Keyword Group ${keywordIndex + 1}`;\n  markdown += `## ${keyword}\\n\\n`;\n\n  // Iterate through conversations in this keyword group (max 10)\n  keywordGroup.forEach((conversation, convIndex) => {\n    if (!conversation) return;\n\n    const {\n      subreddit = \"Unknown\",\n      title = \"Untitled\",\n      body = \"\",\n      postUrl = \"#\",\n      createdAt = \"Unknown date\"\n    } = conversation;\n\n    // Format each conversation with ### heading\n    markdown += `### ${title}\\n\\n`;\n    \n    // Metadata section\n    markdown += `**Subreddit:** [r/${subreddit}](https://reddit.com/r/${subreddit})\\n\\n`;\n    markdown += `**Posted:** ${new Date(createdAt).toLocaleDateString()} at ${new Date(createdAt).toLocaleTimeString()}\\n\\n`;\n    \n    // Body content\n    markdown += `**Discussion:**\\n\\n${body}\\n\\n`;\n    \n    // Link to full post\n    markdown += `[View Full Post](${postUrl})\\n\\n`;\n    \n    // Divider between conversations\n    markdown += `---\\n\\n`;\n  });\n\n  // Divider between keyword groups\n  markdown += `\\n\\n`;\n});\n\nreturn { conversations_final: markdown };"},"typeVersion":2},{"id":"e70987bf-f0a4-4f81-b1ee-fc618f4c20e3","name":"Send Final Conversations For Keyword #3 to #10 to Server","type":"n8n-nodes-base.httpRequest","position":[4032,464],"parameters":{"url":"={{ $('Set Environment Variables').item.json.BACKEND_API_URL }}api/webhook/n8n","method":"POST","options":{},"sendBody":true,"contentType":"form-urlencoded","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"=searchId","value":"={{ $('Webhook').item.json.body.searchId }}"},{"name":"=stage","value":"conversations_final"},{"name":"passedPosts","value":"={{ $json.conversations_final }}"}]},"headerParameters":{"parameters":[{"name":"x-api-key","value":"={{ $('Set Environment Variables').item.json.N8N_WEBHOOK_API_KEY }}"}]}},"typeVersion":4.2},{"id":"ac1f2acf-4c27-4380-b78f-e41421fd7764","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-240,-176],"parameters":{"color":4,"width":4928,"height":1168,"content":"## Reddit Leads Finder N8N Automation"},"typeVersion":1},{"id":"80df2ba7-dfb3-4fba-b832-69fef5dd4986","name":"get keyword 3 - 10 For Final Processing","type":"n8n-nodes-base.code","position":[2544,672],"parameters":{"jsCode":"// Get the Reddit Posts Keywords Generator node output\nconst keywordData = $('Reddit Posts Keywords Generator').item.json.output;\n\n// Create an array to hold all keywords\nconst keywords = [];\n\n// Loop from keyword2 to keyword10\nfor (let i = 3; i <= 10; i++) {\n  const keywordKey = `keyword${i}`;\n  if (keywordData[keywordKey]) {\n    keywords.push(keywordData[keywordKey]);\n  }\n}\n\n// Return the keywords array\nreturn [\n  {\n    json: {\n      keywords: keywords\n    }\n  }\n];"},"typeVersion":2},{"id":"87f27831-c255-4756-b8a8-552d32efda2e","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-832,656],"parameters":{"width":560,"height":336,"content":"## Resources\n\n1. [Youtube Tutorial]()\n2. [Medium Article Guide]()\n3. [Open Source Github Repo]()\n\n## Contacts for Questions and Work\n\n**Website**: [Leadly Solutions](https://leadlysolutionns.com)\n**Email**: joseph@leadlysolutions.com\n**X/Twitter**: [@juppfy](https://x.com/juppfy)"},"typeVersion":1},{"id":"b5beb46d-3236-42f4-b4ae-6cc8afca0926","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-832,-176],"parameters":{"color":3,"width":560,"height":800,"content":"![](https://res.cloudinary.com/dd6vlwblr/image/upload/v1769022321/0_lgiwxy.png)\n## Basic Setup Guide\n**On Set Environment node** get the secret key from [keygen.leadlysolutions.com](https://keygen.leadlysolutions.com) then set it on server/.env if you are using a localhost server or add it to Railway environment dashboard if you are using a Railway server deployment. Then to get the webhook api url, if you are using localhost server, you should use ngrok to make the localhost:3001 available on the internet, so you will enter the ngrok url here, while if you are using the Railway server, it is simple, just open the settings tab, then scroll to public networking and generate the domain then paste it. For both, make sure the url ends with / so that when it is being processed in the respective http nodes here, the url is complete and valid. You can read this medium article for any clarification needed: [Guide](https://docs.n8n.io/workflows/sticky-notes/)\n\nYou can modify the system messages of all ai agents used to adjust the output, but make sure you don't modify the structures output instructions unless you are sure you want to modify the output format. You can explore the github repo, medium article or watch the youtube tutorial in the resources card for any extra info.\n\nYou can also modify the reddit filters to your liking to get desired posts data from the generated keywords"},"typeVersion":1},{"id":"f3075513-91af-467f-bf21-6cff561b69fa","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[1728,208],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"5UniF8cNOayWi0zD","name":"My Open AI Account"}},"typeVersion":1.2},{"id":"0ce25e86-82df-4678-bbaf-525893203a83","name":"Scrape Product URL and get its content","type":"@mendable/n8n-nodes-firecrawl.firecrawl","position":[288,-16],"parameters":{"url":"={{ $('Webhook').item.json.body.productUrl }}","parsers":["pdf"],"operation":"scrape","scrapeOptions":{"options":{"formats":{"format":[{}]},"headers":{}}},"requestOptions":{}},"credentials":{"firecrawlApi":{"id":"NZUkwm9asGfG8mZ5","name":"Firecrawl 20k"}},"typeVersion":1}],"pinData":{},"connections":{"Merge":{"main":[[{"node":"Parse Qualifying Posts","type":"main","index":0}]]},"Merge3":{"main":[[{"node":"Parse Qualifying Posts 2","type":"main","index":0}]]},"Merge5":{"main":[[{"node":"Parse Qualifying Posts Final","type":"main","index":0}]]},"Webhook":{"main":[[{"node":"Set Environment Variables","type":"main","index":0}]]},"Aggregate":{"main":[[{"node":"Merge","type":"main","index":1}]]},"Aggregate3":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Aggregate5":{"main":[[{"node":"Merge3","type":"main","index":1}]]},"Aggregate6":{"main":[[{"node":"Merge3","type":"main","index":0}]]},"Aggregate9":{"main":[[{"node":"Merge5","type":"main","index":1}]]},"Split Out1":{"main":[[{"node":"Loop Over Items1","type":"main","index":0}]]},"Aggregate10":{"main":[[{"node":"Merge5","type":"main","index":0}]]},"Aggregate11":{"main":[[{"node":"Sanitize & Parse Final Payload","type":"main","index":0}]]},"Edit Fields":{"main":[[{"node":"Sanitize JSON Values","type":"main","index":0}]]},"Clean results":{"main":[[{"node":"Aggregate","type":"main","index":0},{"node":"Posts Relevance AI Agent","type":"main","index":0}]]},"Clean results2":{"main":[[{"node":"Aggregate5","type":"main","index":0},{"node":"Posts Relevance AI Agent2","type":"main","index":0}]]},"Clean results4":{"main":[[{"node":"Aggregate9","type":"main","index":0},{"node":"Posts Relevance AI Agent4","type":"main","index":0}]]},"Loop Over Items1":{"main":[[{"node":"Aggregate11","type":"main","index":0}],[{"node":"Search for Posts (Keyword/Phrase)4","type":"main","index":0}]]},"Sanitize Results":{"main":[[{"node":"Analyze Product URL Scrape","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Reddit Posts Keywords Generator","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"Analyze Product URL Scrape","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model2":{"ai_languageModel":[[{"node":"Posts Relevance AI Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model3":{"ai_languageModel":[[{"node":"Posts Relevance AI Agent2","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model5":{"ai_languageModel":[[{"node":"Posts Relevance AI Agent4","type":"ai_languageModel","index":0}]]},"Sanitize JSON Values":{"main":[[{"node":"Send Website Analysis Data to Server","type":"main","index":0}]]},"Parse Qualifying Posts":{"main":[[{"node":"Send Conversations for keyword #1 to Server","type":"main","index":0}]]},"Send keywords to Server":{"main":[[{"node":"Search for Posts (Keyword/Phrase)","type":"main","index":0}]]},"Parse Qualifying Posts 2":{"main":[[{"node":"Send Conversations for Keyword #2 to Server","type":"main","index":0}]]},"Posts Relevance AI Agent":{"main":[[{"node":"Aggregate3","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Reddit Posts Keywords Generator","type":"ai_outputParser","index":0}]]},"Posts Relevance AI Agent2":{"main":[[{"node":"Aggregate6","type":"main","index":0}]]},"Posts Relevance AI Agent4":{"main":[[{"node":"Aggregate10","type":"main","index":0}]]},"Set Environment Variables":{"main":[[{"node":"Scrape Product URL and get its content","type":"main","index":0}]]},"Structured Output Parser1":{"ai_outputParser":[[{"node":"Posts Relevance AI Agent","type":"ai_outputParser","index":0}]]},"Structured Output Parser4":{"ai_outputParser":[[{"node":"Analyze Product URL Scrape","type":"ai_outputParser","index":0}]]},"Structured Output Parser5":{"ai_outputParser":[[{"node":"Posts Relevance AI Agent2","type":"ai_outputParser","index":0}]]},"Structured Output Parser7":{"ai_outputParser":[[{"node":"Posts Relevance AI Agent4","type":"ai_outputParser","index":0}]]},"Analyze Product URL Scrape":{"main":[[{"node":"Edit Fields","type":"main","index":0}]]},"Parse Qualifying Posts Final":{"main":[[{"node":"Loop Over Items1","type":"main","index":0}]]},"Sanitize & Parse Final Payload":{"main":[[{"node":"Send Final Conversations For Keyword #3 to #10 to Server","type":"main","index":0}]]},"Reddit Posts Keywords Generator":{"main":[[{"node":"Send keywords to Server","type":"main","index":0}]]},"Search for Posts (Keyword/Phrase)":{"main":[[{"node":"Clean results","type":"main","index":0}]]},"Search for Posts (Keyword/Phrase)2":{"main":[[{"node":"Clean results2","type":"main","index":0}]]},"Search for Posts (Keyword/Phrase)4":{"main":[[{"node":"Clean results4","type":"main","index":0}]]},"Send Website Analysis Data to Server":{"main":[[{"node":"Reddit Posts Keywords Generator","type":"main","index":0}]]},"Scrape Product URL and get its content":{"main":[[{"node":"Sanitize Results","type":"main","index":0}]]},"get keyword 3 - 10 For Final Processing":{"main":[[{"node":"Split Out1","type":"main","index":0}]]},"Send Conversations for Keyword #2 to Server":{"main":[[{"node":"get keyword 3 - 10 For Final Processing","type":"main","index":0}]]},"Send Conversations for keyword #1 to Server":{"main":[[{"node":"Search for Posts (Keyword/Phrase)2","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":56,"nodeTypes":{"n8n-nodes-base.set":{"count":2},"n8n-nodes-base.code":{"count":10},"n8n-nodes-base.merge":{"count":3},"n8n-nodes-base.reddit":{"count":3},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.aggregate":{"count":7},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-base.httpRequest":{"count":5},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":5},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":5},"@mendable/n8n-nodes-firecrawl.firecrawl":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":5}}},"status":"published","readyToDemo":null,"user":{"name":"Joseph","username":"mjomba","bio":"Automation expert specializing in building smart, scalable workflows using tools like n8n, Make, and Airtable. I help businesses save time, reduce manual work, and grow faster with tailored automation solutions. Feel free to reach out at joseph@uppfy.com to discuss your project. I am also on x.com/juppfy","verified":true,"links":["https://automate.uppfy.com"],"avatar":"https://gravatar.com/avatar/460cadca403550e24f9e17a9ee3f4670046503b32fb59618a1b390378b803162?r=pg&d=retro&size=200"},"nodes":[{"id":19,"icon":"file:httprequest.svg","name":"n8n-nodes-base.httpRequest","codex":{"data":{"alias":["API","Request","URL","Build","cURL"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/","icon":"🧬","label":"Why business process automation with n8n can change your daily life"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"url":"https://n8n.io/blog/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/automate-designs-with-bannerbear-and-n8n/","icon":"🎨","label":"Automate Designs with Bannerbear and n8n"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/how-to-use-the-http-request-node-the-swiss-army-knife-for-workflow-automation/","icon":"🧰","label":"How to use the HTTP Request Node - The Swiss Army Knife for Workflow Automation"},{"url":"https://n8n.io/blog/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"},{"url":"https://n8n.io/blog/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"output\"]","defaults":{"name":"HTTP Request","color":"#0004F5"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MCAyMEM0MCA4Ljk1MzE0IDMxLjA0NjkgMCAyMCAwQzguOTUzMTQgMCAwIDguOTUzMTQgMCAyMEMwIDMxLjA0NjkgOC45NTMxNCA0MCAyMCA0MEMzMS4wNDY5IDQwIDQwIDMxLjA0NjkgNDAgMjBaTTIwIDM2Ljk0NThDMTguODg1MiAzNi45NDU4IDE3LjEzNzggMzUuOTY3IDE1LjQ5OTggMzIuNjk4NUMxNC43OTY0IDMxLjI5MTggMTQuMTk2MSAyOS41NDMxIDEzLjc1MjYgMjcuNjg0N0gyNi4xODk4QzI1LjgwNDUgMjkuNTQwMyAyNS4yMDQ0IDMxLjI5MDEgMjQuNTAwMiAzMi42OTg1QzIyLjg2MjIgMzUuOTY3IDIxLjExNDggMzYuOTQ1OCAyMCAzNi45NDU4Wk0xMi45MDY0IDIwQzEyLjkwNjQgMjEuNjA5NyAxMy4wMDg3IDIzLjE2NCAxMy4yMDAzIDI0LjYzMDVIMjYuNzk5N0MyNi45OTEzIDIzLjE2NCAyNy4wOTM2IDIxLjYwOTcgMjcuMDkzNiAyMEMyNy4wOTM2IDE4LjM5MDMgMjYuOTkxMyAxNi44MzYgMjYuNzk5NyAxNS4zNjk1SDEzLjIwMDNDMTMuMDA4NyAxNi44MzYgMTIuOTA2NCAxOC4zOTAzIDEyLjkwNjQgMjBaTTIwIDMuMDU0MTlDMjEuMTE0OSAzLjA1NDE5IDIyLjg2MjIgNC4wMzA3OCAyNC41MDAxIDcuMzAwMzlDMjUuMjA2NiA4LjcxNDA4IDI1LjgwNzIgMTAuNDA2NyAyNi4xOTIgMTIuMzE1M0gxMy43NTAxQzE0LjE5MzMgMTAuNDA0NyAxNC43OTQyIDguNzEyNTQgMTUuNDk5OCA3LjMwMDY0QzE3LjEzNzcgNC4wMzA4MyAxOC44ODUxIDMuMDU0MTkgMjAgMy4wNTQxOVpNMzAuMTQ3OCAyMEMzMC4xNDc4IDE4LjQwOTkgMzAuMDU0MyAxNi44NjE3IDI5LjgyMjcgMTUuMzY5NUgzNi4zMDQyQzM2LjcyNTIgMTYuODQyIDM2Ljk0NTggMTguMzk2NCAzNi45NDU4IDIwQzM2Ljk0NTggMjEuNjAzNiAzNi43MjUyIDIzLjE1OCAzNi4zMDQyIDI0LjYzMDVIMjkuODIyN0MzMC4wNTQzIDIzLjEzODMgMzAuMTQ3OCAyMS41OTAxIDMwLjE0NzggMjBaTTI2LjI3NjcgNC4yNTUxMkMyNy42MzY1IDYuMzYwMTkgMjguNzExIDkuMTMyIDI5LjM3NzQgMTIuMzE1M0gzNS4xMDQ2QzMzLjI1MTEgOC42NjggMzAuMTA3IDUuNzgzNDYgMjYuMjc2NyA0LjI1NTEyWk0xMC42MjI2IDEyLjMxNTNINC44OTI5M0M2Ljc1MTQ3IDguNjY3ODQgOS44OTM1MSA1Ljc4MzQxIDEzLjcyMzIgNC4yNTUxM0MxMi4zNjM1IDYuMzYwMjEgMTEuMjg5IDkuMTMyMDEgMTAuNjIyNiAxMi4zMTUzWk0zLjA1NDE5IDIwQzMuMDU0MTkgMjEuNjAzIDMuMjc3NDMgMjMuMTU3NSAzLjY5NDg0IDI0LjYzMDVIMTAuMTIxN0M5Ljk0NjE5IDIzLjE0MiA5Ljg1MjIyIDIxLjU5NDMgOS44NTIyMiAyMEM5Ljg1MjIyIDE4LjQwNTcgOS45NDYxOSAxNi44NTggMTAuMTIxNyAxNS4zNjk1SDMuNjk0ODRDMy4yNzc0MyAxNi44NDI1IDMuMDU0MTkgMTguMzk3IDMuMDU0MTkgMjBaTTI2LjI3NjYgMzUuNzQyN0MyNy42MzY1IDMzLjYzOTMgMjguNzExIDMwLjg2OCAyOS4zNzc0IDI3LjY4NDdIMzUuMTA0NkMzMy4yNTEgMzEuMzMyMiAzMC4xMDY4IDM0LjIxNzkgMjYuMjc2NiAzNS43NDI3Wk0xMy43MjM0IDM1Ljc0MjdDOS44OTM2OSAzNC4yMTc5IDYuNzUxNTUgMzEuMzMyNCA0Ljg5MjkzIDI3LjY4NDdIMTAuNjIyNkMxMS4yODkgMzAuODY4IDEyLjM2MzUgMzMuNjM5MyAxMy43MjM0IDM1Ljc0MjdaIiBmaWxsPSIjM0E0MkU5Ii8+Cjwvc3ZnPgo="},"displayName":"HTTP Request","typeVersion":4,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"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/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"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/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/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.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"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":39,"icon":"fa:sync","name":"n8n-nodes-base.splitInBatches","codex":{"data":{"alias":["Loop","Concatenate","Batch","Split","Split In Batches"],"resources":{"generic":[{"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/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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitinbatches/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Loop Over Items","color":"#007755"},"iconData":{"icon":"sync","type":"icon"},"displayName":"Loop Over Items (Split in Batches)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"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/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/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/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/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/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, 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/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/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/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-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":445,"icon":"file:reddit.svg","name":"n8n-nodes-base.reddit","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.reddit/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/reddit/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"transform\"]","defaults":{"name":"Reddit"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNTEzIDUxNCI+PHVzZSB4bGluazpocmVmPSIjYSIgeD0iLjUiIHk9Ii41Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIGZpbGwtcnVsZT0ibm9uemVybyIgc3Ryb2tlPSJub25lIj48cGF0aCBmaWxsPSIjZmY0NTAwIiBkPSJNMCA3Ni44QzAgMzQuMjUzIDM0LjI1MyAwIDc2LjggMGgzNTguNEM0NzcuNzQ3IDAgNTEyIDM0LjI1MyA1MTIgNzYuOHYzNTguNGMwIDQyLjU0Ny0zNC4yNTMgNzYuOC03Ni44IDc2LjhINzYuOEMzNC4yNTMgNTEyIDAgNDc3Ljc0NyAwIDQzNS4yeiIvPjxwYXRoIGQ9Ik03OSAzMDVjMC02OC4xNDIgNzguOTQyLTEyMyAxNzctMTIzczE3NyA1NC44NTggMTc3IDEyMy03OC45NDIgMTIzLTE3NyAxMjNTNzkgMzczLjE0MiA3OSAzMDUiLz48ZyBmaWxsPSIjZmY0NTAwIj48cGF0aCBkPSJNMTk5IDM0N2MzNSAyOSA3OSAyOSAxMTQgMGwxMiAxMWMtNDIgMzUtOTYgMzUtMTM4IDB6Ii8+PHVzZSB4bGluazpocmVmPSIjYiIvPjx1c2UgeGxpbms6aHJlZj0iI2IiIHg9Ii0xMTgiLz48L2c+PC9nPjxnIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2ZmZiI+PHVzZSB4bGluazpocmVmPSIjYiIgeD0iNzUiIHk9Ii0xNjAiIHN0cm9rZS13aWR0aD0iMjUiLz48cGF0aCBzdHJva2Utd2lkdGg9IjIyIiBkPSJNODcgMjgyYy00NS0yMi01LTkyIDQwLTUwbTI5OCA1MGM0NS0yMiA1LTkyLTQwLTUwbS0xMjctNDUgMjQtODMgODAgMTYiLz48L2c+PC9zeW1ib2w+PGRlZnM+PHBhdGggaWQ9ImIiIGQ9Ik0yODcgMjg1YTI3Ljk0IDI3Ljk0IDAgMSAxIDU2IDAgMjcuOTQgMjcuOTQgMCAxIDEtNTYgMCIvPjwvZGVmcz48L3N2Zz4="},"displayName":"Reddit","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"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":1153,"icon":"file:openAiLight.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenAi","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="},"displayName":"OpenAI Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1179,"icon":"fa:code","name":"@n8n/n8n-nodes-langchain.outputParserStructured","codex":{"data":{"alias":["json","zod"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Structured Output Parser"},"iconData":{"icon":"code","type":"icon"},"displayName":"Structured Output Parser","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"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"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":49,"name":"AI Summarization"}],"image":[]}}