{"workflow":{"id":13382,"name":"Post curated remote job listings to Slack with BrowserAct and OpenRouter","views":39,"recentViews":0,"totalViews":39,"createdAt":"2026-02-13T14:30:01.203Z","description":"# Auto-post curated remote jobs to Slack with BrowserAct and OpenRouter\n\nThis workflow acts as an intelligent job board curator for your Slack community. It scrapes multiple sources (e.g., Dice, Indeed), uses AI to filter out spam and low-quality listings based on your specific profile, formats the best jobs into professional posts, and publishes them automatically on a schedule.\n\n## Target Audience\nCommunity managers running job boards, recruiters, and developers building niche job aggregators.\n\n## How it works\n1.  **Scheduled Fetch**: Every week (or your chosen interval), the workflow triggers.\n2.  **Targeting**: It reads your configured user profile (Skills, Location, Salary) and list of target job sites.\n3.  **Scraping**: **BrowserAct** scrapes the latest job listings from the specified sites (e.g., Dice, Indeed).\n4.  **AI Curation**: An **AI Agent** (using OpenAI/GPT-4) reviews each job against your profile. It normalizes salaries, scores relevance, and filters out mismatches or low-quality descriptions.\n5.  **Format Content**: The AI writes a structured summary for the top matches, including \"Why it fits\" analysis.\n6.  **Publish**: The workflow sends the curated digest to your **Slack** channel.\n\n[Image of AI job curator workflow diagram]\n\n## How to set up\n1.  **Configure Credentials**: Connect your **Slack**, **BrowserAct**, and **OpenRouter** accounts in n8n.\n2.  **Prepare BrowserAct**: Ensure you have the **Job Board Aggregator** template saved in your BrowserAct account.\n3.  **Configure Profile**: Open the **Add a Resume** node and update the variables (`Location`, `Skill`, `Income`, `Details`, `Target_Sites`) to match your needs.\n4.  **Configure Slack**: Update the **Send a message to the Slack channel** node with your Slack Channel ID.\n5.  **Activate**: Turn on the workflow.\n\n[Image of n8n integration architecture]\n\n## Requirements\n* **BrowserAct** account with the **Job Board Aggregator** template.\n* **Slack** account (Bot Token).\n* **OpenRouter** account (or compatible LLM credentials).\n\n## How to customize the workflow\n1.  **Add More Sources**: Add URLs to the `Target_Sites` array in the **Add a Resume** node.\n2.  **Refine Filters**: Update the system prompt in the **Analyze the jobs** agent to be stricter about seniority or specific technologies.\n3.  **Change Frequency**: Adjust the **Weekly Trigger** to run daily if you want more frequent updates.\n\n## Need Help?\n* [How to Find Your BrowserAct API Key & Workflow ID](https://www.youtube.com/watch?v=pDjoZWEsZlE)\n* [How to Connect n8n to BrowserAct ](https://www.youtube.com/watch?v=RoYMdJaRdcQ)\n* [How to Use & Customize BrowserAct Templates](https://www.youtube.com/watch?v=CPZHFUASncY)\n\n---\n### Workflow Guidance and Showcase Video\n\n* #### [How to Automate Your Job Hunt: n8n + AI Resume Matcher & Slack Alerts](https://youtu.be/IvgBQfmvDNI)\n\n\n\n\n","workflow":{"id":"bDaYaVcMslvkL2Ri","meta":{"instanceId":"6fcb279fd6b00187153abdc6d8b627acfd9fe31f84b387f64b56a0996e8ea182","templateCredsSetupCompleted":true},"name":"Auto-post curated remote jobs to Slack with BrowserAct and OpenRouter","tags":[],"nodes":[{"id":"4255a7a9-6af3-4ce2-93aa-1ccbc79ee44a","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[336,144],"parameters":{"options":{}},"typeVersion":3},{"id":"bf053e7a-4987-4d0e-85e8-1f6fd9850a8b","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[864,208],"parameters":{"autoFix":true,"jsonSchemaExample":"{\n  \"slack_message\": [\n    \"🚀 *Job Analysis Report:.............. \",\n    \"*2. Software Engineer (.Net) ............\"\n  ]\n}"},"typeVersion":1.3},{"id":"922cf6a8-fcec-4fd6-a5bd-6ce8a3213f18","name":"OpenRouter Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[736,208],"parameters":{"model":"openai/gpt-4o","options":{}},"credentials":{"openRouterApi":{"id":"credential-id","name":"OpenRouter account"}},"typeVersion":1},{"id":"5ed098cb-9ba8-4ccd-937a-05dc18341061","name":"Weekly Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-480,144],"parameters":{"rule":{"interval":[{"field":"weeks","triggerAtHour":12}]}},"typeVersion":1.3},{"id":"9688f765-dda2-4ab2-86b2-f049abdd1aed","name":"Add a Resume","type":"n8n-nodes-base.set","position":[-256,144],"parameters":{"options":{},"assignments":{"assignments":[{"id":"f0cd1106-d31c-4f7a-a9ae-3fc3a9b6be9e","name":"Location","type":"string","value":"New York"},{"id":"d9c35ef6-517d-4641-ae36-14403b28e3dd","name":"Skill","type":"string","value":"Software Engineer"},{"id":"46adee08-70e4-4624-9b35-12a1a0635a2b","name":"Income","type":"string","value":"higher than 100$/M"},{"id":"36be219b-2723-4e71-a120-f0666964b910","name":"Details","type":"string","value":"I prefer a remote position, but I am open to working on-site as well. My core strengths include analytical thinking, communication, and the ability to multi-task. Additionally, I am skilled in Frontend and Backend development."},{"id":"938a14ce-a99e-4c68-a5c3-a803146a6805","name":"Target_Sites","type":"array","value":"[\"https://www.dice.com/\" , \"https://indeed.com/\"]"}]}},"typeVersion":3.4},{"id":"3ec84280-23dc-4a3a-a0c7-fba3399aa39f","name":"Split out target sites","type":"n8n-nodes-base.splitOut","position":[-32,144],"parameters":{"include":"allOtherFields","options":{},"fieldToSplitOut":"Target_Sites"},"typeVersion":1},{"id":"3887ffe9-0e74-482a-8e91-1f84bfa9be2b","name":"Scrape Suitable Jobs","type":"n8n-nodes-browseract.browserAct","position":[608,32],"parameters":{"type":"WORKFLOW","workflowId":"766193817+1234567890","workflowConfig":{"value":{"input-Skill":"={{ $json.Skill }}","input-Job_Site":"={{ $json.Target_Sites }}","input-Location":"={{ $json.Location }}"},"schema":[{"id":"input-Job_Site","type":"string","display":true,"removed":false,"required":false,"description":"If left blank, the default value defined in BrowserAct will be used.","displayName":"Job_Site","defaultMatch":true},{"id":"input-Location","type":"string","display":true,"removed":false,"required":false,"description":"If left blank, the default value defined in BrowserAct will be used.","displayName":"Location","defaultMatch":true},{"id":"input-Skill","type":"string","display":true,"removed":false,"required":false,"description":"If left blank, the default value defined in BrowserAct will be used.","displayName":"Skill","defaultMatch":true}],"mappingMode":"defineBelow","matchingColumns":["input-Skill"],"attemptToConvertTypes":false,"convertFieldsToString":false}},"credentials":{"browserActApi":{"id":"credential-id","name":"BrowserAct account"}},"typeVersion":1},{"id":"8fb9c677-3083-4a90-aa28-6716bb8d82d4","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[1104,32],"parameters":{"options":{},"fieldToSplitOut":"output.slack_message"},"typeVersion":1},{"id":"a4009546-8b50-4809-bc97-aaceceacd4ad","name":"Analyze the jobs and generate a Slack message","type":"@n8n/n8n-nodes-langchain.agent","position":[784,32],"parameters":{"text":"=User Data =\n[\nLocation : {{ $('Loop Over Items').first().json.Location }},\nSkill: {{ $('Loop Over Items').first().json.Skill }},\nSalary :{{ $('Loop Over Items').first().json.Income }},\nDetails : {{ $('Loop Over Items').first().json.Details }},\n].\nScraped Data = [\n{{ $('Loop Over Items').first().json.Target_Sites }},\n{{ $json.output.string }}\n]","options":{"systemMessage":"You are an expert AI Career Concierge and Data Analyst. Your goal is to analyze a raw JSON list of job postings against specific user criteria (Location, Salary, Skills, Preferences) and generate a structured Slack response.\n\nInput Data:\n\nJob Data: A JSON list of job objects.\n\nUser Criteria: Location, Target Title, Salary, Target Site, and Personal Details.\n\nProcessing Logic:\n\nNormalization & Matching:\n\nSalary: Standardize inputs (e.g., \"$100/M\") to annual/hourly rates for comparison. Prioritize jobs meeting the minimum threshold.\n\nLocation: Prioritize exact matches. If the user is open to \"Remote,\" include those regardless of specific city. If the input data location (e.g., Netherlands) does not match the user location (e.g., New York), select the best technical matches but add a disclaimer.\n\nSkills: Score jobs based on keyword overlap (e.g., \"Full Stack\", \"C#\", \"Analytical\").\n\nDrafting the Content:\n\nIdentify the top 2-3 matches.\n\nFormat the text for Slack using mrkdwn (bolding, emojis, lists).\n\nChunking: Divide the final message into logical blocks (e.g., Header + Job 1 in the first block, Job 2 + Job 3 + Footer in the second block) to ensure no single string is too large.\n\nOutput Format (Strict JSON): You must output a single valid JSON object. The key slack_message must be an Array of Strings.\n\nIf the content is short, the array may contain 1 string.\n\nIf the content is long (multiple jobs), split it into 2 or more strings within the array.\n\nJSON\n{\n  \"slack_message\": [\n    \"String 1: Header and first job match...\",\n    \"String 2: Second job match and footer...\"\n  ]\n}\nFormatting Rules:\n\nHeader: Start with a summary (e.g., \"🚀 Matches Found\").\n\nJob Blocks: Use this format:\n\nJob Title @ Company\n\n📍 Location | 💰 Salary\n\nWhy it fits: [Analysis of skill/preference match]\n\nFooter: Include a Next Step or link to the Target Site."},"promptType":"define","hasOutputParser":true},"typeVersion":3},{"id":"e6c1ebc9-d821-4675-89ff-638b7848bf64","name":"Send a message to the Slack channel","type":"n8n-nodes-base.slack","position":[1328,144],"webhookId":"1e44f142-c891-423a-878d-26d6995b7f08","parameters":{"text":"={{ $json[\"output.slack_message\"] }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C09KLV9DJSX","cachedResultName":"all-browseract-workflow-test"},"otherOptions":{}},"credentials":{"slackApi":{"id":"credential-id","name":"Slack account 2"}},"typeVersion":2.4},{"id":"b4c0edb4-f762-47ee-8a92-ec16b15ffc0f","name":"Documentation","type":"n8n-nodes-base.stickyNote","position":[-960,-448],"parameters":{"width":450,"height":560,"content":"## ⚡ Workflow Overview & Setup\n\n**Summary:** This automation acts as your personal AI headhunter. It runs weekly to scrape job boards (Dice, Indeed) based on your specific criteria, uses AI to analyze and score the listings against your resume, and delivers a curated digest to Slack.\n\n\n\n### Requirements\n* **Credentials:** BrowserAct, OpenRouter (GPT-4), Slack.\n* **Mandatory:** BrowserAct API (Template: **Job Board Aggregator**)\n\n### How to Use\n1.  **Credentials:** Set up API keys for BrowserAct, OpenRouter, and Slack.\n2.  **Configuration:** Update the **Job Board Aggregator** node with your target `Location`, `Skill`, `Income`, and `Details`.\n3.  **Target Sites:** You can add or remove URLs from the `Target_Sites` array in the same node.\n\n### Need Help?\n[How to Find Your BrowserAct API Key & Workflow ID](https://docs.browseract.com)\n[How to Connect n8n to BrowserAct](https://docs.browseract.com)\n[How to Use & Customize BrowserAct Templates](https://docs.browseract.com)"},"typeVersion":1},{"id":"d52034a9-a1bd-432b-ae53-396815113cf4","name":"Step 1 Explanation","type":"n8n-nodes-base.stickyNote","position":[-480,-32],"parameters":{"color":7,"width":652,"height":140,"content":"### 🎯 Step 1: User Profile & Targeting\n\nThe workflow begins by defining your search parameters. \n\nThe **Add a Resume** node acts as a configuration file, storing your bio, salary expectations, and the list of job boards to monitor."},"typeVersion":1},{"id":"7338eaf0-505c-4ba2-8c51-3abb73aaec94","name":"Step 2 Explanation","type":"n8n-nodes-base.stickyNote","position":[304,-144],"parameters":{"color":7,"width":1164,"height":124,"content":"### 🕵️ Step 2: Intelligent Scraping & AI Matching & Filtering\n\nBrowserAct iterates through your target sites. \nIt executes a specialized scraping template to extract relevant job titles, descriptions, and salary ranges from each platform. An AI agent analyzes the raw job data against your personal profile. It filters out low-quality matches, normalizes salary data (e.g., converting hourly to annual), and scores the relevance of each role."},"typeVersion":1},{"id":"0749a148-88c4-42b7-8ca2-74319f16fb87","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-480,-448],"parameters":{"color":6,"width":656,"height":384,"content":"@[youtube](IvgBQfmvDNI)"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"3c7a6faa-59d4-470c-98a0-ee240627a285","connections":{"Split Out":{"main":[[{"node":"Send a message to the Slack channel","type":"main","index":0}]]},"Add a Resume":{"main":[[{"node":"Split out target sites","type":"main","index":0}]]},"Weekly Trigger":{"main":[[{"node":"Add a Resume","type":"main","index":0}]]},"Loop Over Items":{"main":[[],[{"node":"Scrape Suitable Jobs","type":"main","index":0}]]},"Scrape Suitable Jobs":{"main":[[{"node":"Analyze the jobs and generate a Slack message","type":"main","index":0}]]},"OpenRouter Chat Model":{"ai_languageModel":[[{"node":"Analyze the jobs and generate a Slack message","type":"ai_languageModel","index":0},{"node":"Structured Output Parser","type":"ai_languageModel","index":0}]]},"Split out target sites":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Analyze the jobs and generate a Slack message","type":"ai_outputParser","index":0}]]},"Send a message to the Slack channel":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Analyze the jobs and generate a Slack message":{"main":[[{"node":"Split Out","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":14,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.splitOut":{"count":2},"n8n-nodes-base.stickyNote":{"count":4},"n8n-nodes-base.splitInBatches":{"count":1},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-browseract.browserAct":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenRouter":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Madame AI Team | Kai","username":"madame-ai","bio":"I’m a PhD in Physics turned AI enthusiast, passionate about uncovering how AI is transforming content creation, business, and daily life.","verified":true,"links":["https://www.youtube.com/@AI.madame.english"],"avatar":"https://gravatar.com/avatar/44c0d2b4b78d8dda7685aea70ef92b2c2339ca9478738c6ed8049cc70e3af32d?r=pg&d=retro&size=200"},"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":40,"icon":"file:slack.svg","name":"n8n-nodes-base.slack","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/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/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/automations-for-activists/","icon":"✨","label":"How Common Knowledge use workflow automation for activism"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.slack/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/slack/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Slack"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgMTUwLjg1MiAxNTAuODUyIj48dXNlIHhsaW5rOmhyZWY9IiNhIiB4PSIuOTI2IiB5PSIuOTI2Ii8+PHN5bWJvbCBpZD0iYSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZS13aWR0aD0iMS44NTIiPjxwYXRoIGZpbGw9IiNlMDFlNWEiIHN0cm9rZT0iI2UwMWU1YSIgZD0iTTQwLjc0MSA5My41NWMwLTguNzM1IDYuNjA3LTE1Ljc3MiAxNC44MTUtMTUuNzcyczE0LjgxNSA3LjAzNyAxNC44MTUgMTUuNzcydjM4LjgyNGMwIDguNzM3LTYuNjA3IDE1Ljc3NC0xNC44MTUgMTUuNzc0cy0xNC44MTUtNy4wMzctMTQuODE1LTE1Ljc3MnoiLz48cGF0aCBmaWxsPSIjZWNiMjJkIiBzdHJva2U9IiNlY2IyMmQiIGQ9Ik05My41NSAxMDcuNDA4Yy04LjczNSAwLTE1Ljc3Mi02LjYwNy0xNS43NzItMTQuODE1czcuMDM3LTE0LjgxNSAxNS43NzItMTQuODE1aDM4LjgyNmM4LjczNSAwIDE1Ljc3MiA2LjYwNyAxNS43NzIgMTQuODE1cy03LjAzNyAxNC44MTUtMTUuNzcyIDE0LjgxNXoiLz48cGF0aCBmaWxsPSIjMmZiNjdjIiBzdHJva2U9IiMyZmI2N2MiIGQ9Ik03Ny43NzggMTUuNzcyQzc3Ljc3OCA3LjAzNyA4NC4zODUgMCA5Mi41OTMgMHMxNC44MTUgNy4wMzcgMTQuODE1IDE1Ljc3MnYzOC44MjZjMCA4LjczNS02LjYwNyAxNS43NzItMTQuODE1IDE1Ljc3MnMtMTQuODE1LTcuMDM3LTE0LjgxNS0xNS43NzJ6Ii8+PHBhdGggZmlsbD0iIzM2YzVmMSIgc3Ryb2tlPSIjMzZjNWYxIiBkPSJNMTUuNzcyIDcwLjM3MUM3LjAzNyA3MC4zNzEgMCA2My43NjMgMCA1NS41NTZzNy4wMzctMTQuODE1IDE1Ljc3Mi0xNC44MTVoMzguODI2YzguNzM1IDAgMTUuNzcyIDYuNjA3IDE1Ljc3MiAxNC44MTVzLTcuMDM3IDE0LjgxNS0xNS43NzIgMTQuODE1eiIvPjxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPjxwYXRoIGZpbGw9IiNlY2IyMmQiIHN0cm9rZT0iI2VjYjIyZCIgZD0iTTc3Ljc3OCAxMzMuMzMzYzAgOC4yMDggNi42MDcgMTQuODE1IDE0LjgxNSAxNC44MTVzMTQuODE1LTYuNjA3IDE0LjgxNS0xNC44MTUtNi42MDctMTQuODE1LTE0LjgxNS0xNC44MTVINzcuNzc4eiIvPjxwYXRoIGZpbGw9IiMyZmI2N2MiIHN0cm9rZT0iIzJmYjY3YyIgZD0iTTEzMy4zMzQgNzAuMzcxaC0xNC44MTVWNTUuNTU2YzAtOC4yMDcgNi42MDctMTQuODE1IDE0LjgxNS0xNC44MTVzMTQuODE1IDYuNjA3IDE0LjgxNSAxNC44MTUtNi42MDcgMTQuODE1LTE0LjgxNSAxNC44MTV6Ii8+PHBhdGggZmlsbD0iI2UwMWU1YSIgc3Ryb2tlPSIjZTAxZTVhIiBkPSJNMTQuODE1IDc3Ljc3OEgyOS42M3YxNC44MTVjMCA4LjIwNy02LjYwNyAxNC44MTUtMTQuODE1IDE0LjgxNVMwIDEwMC44IDAgOTIuNTkzczYuNjA3LTE0LjgxNSAxNC44MTUtMTQuODE1eiIvPjxwYXRoIGZpbGw9IiMzNmM1ZjEiIHN0cm9rZT0iIzM2YzVmMSIgZD0iTTcwLjM3MSAxNC44MTVWMjkuNjNINTUuNTU2Yy04LjIwNyAwLTE0LjgxNS02LjYwNy0xNC44MTUtMTQuODE1UzQ3LjM0OCAwIDU1LjU1NiAwczE0LjgxNSA2LjYwNyAxNC44MTUgMTQuODE1eiIvPjwvZz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Slack","typeVersion":2,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"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":839,"icon":"fa:clock","name":"n8n-nodes-base.scheduleTrigger","codex":{"data":{"alias":["Time","Scheduler","Polling","Cron","Interval"],"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.scheduletrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\",\"schedule\"]","defaults":{"name":"Schedule Trigger","color":"#31C49F"},"iconData":{"icon":"clock","type":"icon"},"displayName":"Schedule Trigger","typeVersion":1,"nodeCategories":[{"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":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":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":1281,"icon":"file:openrouter.svg","name":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenrouter/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Language Models","Root Nodes"],"Language Models":["Chat Models (Recommended)"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenRouter Chat Model"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjOTRBM0I4IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iMCAwIDI0IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5PcGVuUm91dGVyPC90aXRsZT48cGF0aCBkPSJNMTYuODA0IDEuOTU3bDcuMjIgNC4xMDV2LjA4N0wxNi43MyAxMC4yMWwuMDE3LTIuMTE3LS44MjEtLjAzYy0xLjA1OS0uMDI4LTEuNjExLjAwMi0yLjI2OC4xMS0xLjA2NC4xNzUtMi4wMzguNTc3LTMuMTQ3IDEuMzUyTDguMzQ1IDExLjAzYy0uMjg0LjE5NS0uNDk1LjMzNi0uNjguNDU1bC0uNTE1LjMyMi0uMzk3LjIzNC4zODUuMjMuNTMuMzM4Yy40NzYuMzE0IDEuMTcuNzk2IDIuNzAxIDEuODY2IDEuMTEuNzc1IDIuMDgzIDEuMTc3IDMuMTQ3IDEuMzUybC4zLjA0NWMuNjk0LjA5MSAxLjM3NS4wOTQgMi44MjUuMDMzbC4wMjItMi4xNTkgNy4yMiA0LjEwNXYuMDg3TDE2LjU4OSAyMmwuMDE0LTEuODYyLS42MzUuMDIyYy0xLjM4Ni4wNDItMi4xMzcuMDAyLTMuMTM4LS4xNjItMS42OTQtLjI4LTMuMjYtLjkyNi00Ljg4MS0yLjA1OWwtMi4xNTgtMS41YTIxLjk5NyAyMS45OTcgMCAwMC0uNzU1LS40OThsLS40NjctLjI4YTU1LjkyNyA1NS45MjcgMCAwMC0uNzYtLjQzQzIuOTA4IDE0LjczLjU2MyAxNC4xMTYgMCAxNC4xMTZWOS44ODhsLjE0LjAwNGMuNTY0LS4wMDcgMi45MS0uNjIyIDMuODA5LTEuMTI0bDEuMDE2LS41OC40MzgtLjI3NGMuNDI4LS4yOCAxLjA3Mi0uNzI2IDIuNjg2LTEuODUzIDEuNjIxLTEuMTMzIDMuMTg2LTEuNzggNC44ODEtMi4wNTkgMS4xNTItLjE5IDEuOTc0LS4yMTMgMy44MTQtLjEzOGwuMDItMS45MDd6Ij48L3BhdGg+PC9zdmc+Cg=="},"displayName":"OpenRouter Chat Model","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":33,"name":"Social Media"},{"id":49,"name":"AI Summarization"}],"image":[]}}