{"workflow":{"id":13870,"name":"Generate Upwork proposals with GPT-4o-mini, Airtable and Slack","views":25,"recentViews":0,"totalViews":25,"createdAt":"2026-03-04T18:26:39.305Z","description":"# Upwork Proposal Automation with AI, Airtable and Slack\n\n## 📘 Description\n\nThis workflow automates the complete Upwork job discovery and proposal generation process by continuously monitoring job listings, intelligently filtering opportunities based on your skill set, generating personalised AI-written proposals, and delivering instant notifications — all without any manual effort.\n\nThe workflow is triggered automatically every minute via Vollna's RSS feed, which monitors Upwork job postings matching your configured search filters. Each new job listing is parsed and analysed to extract key details, including title, description, budget, required skills, and job ID. A skills matching engine scores each job against your defined skill set and filters out weak matches. Duplicate jobs are automatically detected and skipped using Airtable as a reference store, ensuring AI credits are never wasted on already-processed listings.\n\nFor every qualified new job, GPT-4o-mini generates a tailored 150–250-word proposal that references specific details from the job post, aligns your experience to the client's exact requirements, and ends with a clear call to action. The proposal and all job metadata are saved to an Airtable base for review. A formatted Slack notification is sent instantly with the full job details and generated proposal, allowing you to review, edit, and apply directly from Upwork with a single click.\n\n---\n\n## ⚙️ What This Workflow Does (Step-by-Step)\n\n**📡 RSS Feed Monitoring** — Polls Vollna's Upwork RSS feed every minute for new job listings matching your skill keywords. Vollna replaces Upwork's discontinued native RSS feed (removed August 2024) and supports 30+ filter parameters, including category, budget, and client history.\n\n**🔍 Parse & Extract** — Extracts structured fields from each RSS item, including job title, full description, budget, required skills, posted date, job ID, and clean Upwork job URL (decoded from Vollna's redirect format).\n\n**🎯 Filter: Skills Match** — Scores each job against your defined skill list. Jobs scoring fewer than 2 matched skills are dropped immediately, ensuring only relevant opportunities proceed.\n\n**⭐ Filter: Client Quality** — Filters out clients with ratings below 4.5. New clients with no rating history are allowed through by default.\n\n**🔁 Duplicate Detection** — Queries Airtable to check if the job ID has already been processed in a previous run. Duplicate jobs are silently skipped without generating a proposal.\n\n**🤖 AI Proposal Generation** — Calls GPT-4o-mini with a structured prompt containing the job details and your freelancer profile. Generates a concise, personalised proposal that opens with a specific reference to the job post, highlights relevant experience with real numbers, proposes a concrete first step, and ends with a soft call to action.\n\n**💾 Save to Airtable** — Creates a new record in your Airtable base with all job fields, matched skills, match score, generated proposal, and status set to \"New\" for review tracking.\n\n**💬 Slack Notification** — Sends a formatted message to your Slack channel with the job title, budget, match score, matched skills, required skills, direct Upwork job link, and the full AI-generated proposal — ready to copy and submit.\n\n---\n\n## 🧩 Prerequisites\n\n- **Vollna account** — Free tier available at vollna.com. Create a job filter matching your skills and copy the RSS feed URL from the Filters section\n- **OpenAI API key** — Used for GPT-4o-mini proposal generation (~$0.007 per proposal)\n- **Airtable account** — Free tier supports up to 1,000 records. Create a base with the schema below\n- **Slack workspace** — Bot token with `chat:write` permission, invited to your target channel\n\n---\n\n## 🗄️ Airtable Base Schema\n\nCreate a table called **Upwork Proposals** with these fields:\n\n| Field Name | Type |\n|---|---|\n| Job Title | Single line text |\n| Job URL | URL |\n| Upwork URL | URL |\n| Posted At | Date |\n| Budget | Single line text |\n| Skills Required | Long text |\n| Matched Skills | Long text |\n| Match Score | Number |\n| AI Proposal | Long text |\n| Status | Single select: `New`, `Reviewed`, `Applied`, `Skipped` |\n| Job ID | Single line text |\n| Notes | Long text |\n\n---\n\n## 💰 Cost Estimate\n\n| Item | Estimated Cost |\n|---|---|\n| Vollna (free tier) | $0/mo |\n| GPT-4o-mini (~50 proposals/day) | ~$1–3/mo |\n| Airtable (free tier) | $0/mo |\n| n8n self-hosted (AWS t3.small) | ~$10–15/mo |\n| **Total** | **~$11–18/mo** |\n\n---\n\n## ⚙️ Setup Instructions\n\n1. **Vollna** — Sign up at vollna.com, create a job filter with your target keywords and skill categories, then copy the RSS feed URL from the Filters section\n2. **Airtable** — Create a new base and table using the schema above. Copy your Base ID from the Airtable URL and connect your Personal Access Token in n8n credentials\n3. **OpenAI** — Add your OpenAI API key as an n8n credential (HTTP Header Auth with `Authorisation: Bearer sk-...`)\n4. **Slack** — Create a Slack app, add `chat:write` scope, install to your workspace, invite the bot to your channel with `/invite @your-bot-name`\n5. **Customise the AI prompt** — Open the Build OpenAI Payload node and update the `MY PROFILE` section with your actual name, skills, and experience details\n6. **Update skill filters** — In the Filter: Skills Match node, update the `YOUR_SKILLS` array to match your exact skill set\n7. **Publish the workflow** — Click Publish. The RSS trigger will begin polling Vollna every minute automatically\n\n---\n\n## 💡 Key Benefits\n\n✔ Fully automated job discovery — no manual searching required\n✔ Skills-based filtering ensures AI only runs on relevant jobs\n✔ Personalised proposals referencing specific job details — not generic templates\n✔ Airtable CRM for tracking proposal status and conversion rates\n✔ Instant Slack alerts with one-click access to apply on Upwork\n✔ Deduplication prevents reprocessing the same job across runs\n✔ Modular design — swap OpenAI for Claude or AWS Bedrock with minimal changes\n✔ Cost-optimised — GPT-4o-mini keeps proposal generation under $3/month at scale\n\n---\n\n## 👥 Perfect For\n\n- Freelancers on Upwork wanting to automate proposal writing\n- Agencies managing multiple freelancer profiles\n- Developers and automation specialists looking to win more technical contracts\n- Anyone spending more than 30 minutes per day manually browsing and applying to Upwork jobs","workflow":{"id":"tnztcvK5fVFSz3X4M56OF","meta":{"instanceId":"19d43a8cad94d007140e13e21de07af2d4119a87745d1049407d721b4880fabd"},"name":"Automate proposals on Upwork with AI, Airtable and Slack","tags":[],"nodes":[{"id":"468b4807-7f16-4699-be7d-9cfe32749dee","name":"RSS Feed - n8n & Automation","type":"n8n-nodes-base.rssFeedReadTrigger","position":[-16,160],"parameters":{"feedUrl":"YOUR_VOLLNA_RSS_FEED_URL","pollTimes":{"item":[{"mode":"everyMinute"}]}},"typeVersion":1},{"id":"abd092d6-1bb3-474a-96a8-a37ca89541f9","name":"Filter: Skills Match","type":"n8n-nodes-base.code","position":[496,160],"parameters":{"jsCode":"const YOUR_SKILLS = [\n  'n8n', 'automation', 'workflow', 'zapier', 'make.com', 'integromat',\n  'email automation', 'ai', 'gpt', 'openai', 'claude', 'llm',\n  'api integration', 'web scraping', 'python', 'javascript',\n  'aws', 'bedrock', 'langchain', 'chatbot', 'data pipeline'\n];\n\nconst item = $input.first().json;\nconst text = `${item.jobTitle} ${item.jobDescription} ${item.skillsRequired}`.toLowerCase();\n\nconst matchedSkills = YOUR_SKILLS.filter(s => text.includes(s.toLowerCase()));\nconst matchScore = matchedSkills.length;\n\nif (matchScore < 2) {\n  return [];\n}\n\nreturn [{\n  json: {\n    ...item,\n    matchScore,\n    matchedSkills\n  }\n}];"},"typeVersion":2},{"id":"8bfae00c-7cd2-498d-8b29-9f33b7abde40","name":"Filter: Client Rating","type":"n8n-nodes-base.code","position":[704,160],"parameters":{"jsCode":"const item = $input.first().json;\n\nconst rating = item.clientRating;\nconst ratingOk = rating === null || rating >= 4.5;\n\nif (!ratingOk) {\n  return [];\n}\n\nreturn [{ json: item }];"},"typeVersion":2},{"id":"ad1eaa30-6382-4af5-bffd-0dbfa6941613","name":"Airtable: Check Duplicate","type":"n8n-nodes-base.airtable","position":[944,160],"parameters":{"base":{"__rl":true,"mode":"list","value":"YOUR_AIRTABLE_BASE_ID","cachedResultUrl":"","cachedResultName":"Leads CRM"},"table":{"__rl":true,"mode":"list","value":"YOUR_AIRTABLE_TABLE_ID","cachedResultUrl":"","cachedResultName":"Upwork_jobs"},"options":{},"operation":"search","filterByFormula":"={Job ID}=\"{{ $json.jobId }}\""},"credentials":{"airtableTokenApi":{}},"typeVersion":2,"alwaysOutputData":true},{"id":"2a7186ac-e867-47e7-ae2d-2b27b41887a1","name":"Is New Job?","type":"n8n-nodes-base.if","position":[1168,160],"parameters":{"options":{},"conditions":{"options":{"version":1,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"dup-check","operator":{"type":"string","operation":"notExists","singleValue":true},"leftValue":"={{ $json.id }}","rightValue":0}]}},"typeVersion":2},{"id":"9ac9216b-39d0-4ce0-bd12-1800fc616ef1","name":"Extract Proposal Text","type":"n8n-nodes-base.code","position":[528,496],"parameters":{"jsCode":"const input = $input.first().json;\n\nconst proposal = input.message?.content \n  || input.text \n  || input.choices?.[0]?.message?.content\n  || JSON.stringify(input);\n\nconst jobData = $('Filter: Client Rating').first().json;\n\nreturn [{\n  json: {\n    ...jobData,\n    generatedProposal: proposal\n  }\n}];"},"typeVersion":2},{"id":"60e4783e-1a69-4efe-8155-66acbbaacc28","name":"Airtable: Save Proposal","type":"n8n-nodes-base.airtable","position":[752,496],"parameters":{"base":{"__rl":true,"mode":"list","value":"YOUR_AIRTABLE_BASE_ID","cachedResultUrl":"","cachedResultName":"Leads CRM"},"table":{"__rl":true,"mode":"list","value":"YOUR_AIRTABLE_TABLE_ID","cachedResultUrl":"","cachedResultName":"Upwork_jobs"},"columns":{"value":{"Budget":"={{ $json.budget }}","Job ID":"={{ $json.jobId }}","Job URL":"={{ $json.jobUrl }}","Job Title":"={{ $json.jobTitle }}","Posted At":"={{ $json.postedAt }}","upwork_url":"={{ $json.upworkUrl }}","AI Proposal":"={{ $json.generatedProposal }}","Match Score":"={{ $json.matchScore }}","Client Rating":"={{ $json.clientRating }}","Matched Skills":"={{ $json.matchedSkills.join(', ') }}","Skills Required":"={{ $json.skillsRequired }}","Client Total Spent":"={{ $json.clientSpent }}"},"schema":[{"id":"Job Title","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Job Title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Job URL","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Job URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"upwork_url","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"upwork_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Posted At","type":"dateTime","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Posted At","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Budget","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Budget","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Skills Required","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Skills Required","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Matched Skills","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Matched Skills","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Match Score","type":"number","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Match Score","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Client Rating","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Client Rating","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Client Total Spent","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Client Total Spent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"AI Proposal","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"AI Proposal","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Job ID","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Job ID","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Notes","type":"string","display":true,"removed":false,"readOnly":false,"required":false,"displayName":"Notes","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"create"},"credentials":{"airtableTokenApi":{}},"typeVersion":2},{"id":"b146ef0a-8121-4e03-876c-850ecb5d10c5","name":"Build Slack Message","type":"n8n-nodes-base.code","position":[976,496],"parameters":{"jsCode":"const input = $input.first().json;\nconst job = input.fields;\n\nlet proposal = 'Not available';\ntry {\n  const parsed = JSON.parse(job['AI Proposal']);\n  proposal = parsed.output[0].content[0].text;\n} catch(e) {\n  proposal = job['AI Proposal'] || 'Not available';\n}\n\nconst message = `🎯 *New Upwork Job Match!*\n\n*${job['Job Title']}*\n\n💰 *Budget:* ${job['Budget'] || 'Not specified'}\n📊 *Match Score:* ${job['Match Score']} skills matched\n🛠️ *Matched Skills:* ${job['Matched Skills']}\n📅 *Posted:* ${job['Posted At']}\n📋 *Skills Required:* ${job['Skills Required']}\n🔗 *Job Link:* ${job['upwork_url']}\n\n📝 *AI Generated Proposal:*\n${proposal}\n\n✅ Saved in Airtable | Job ID: ${job['Job ID']}`;\n\nreturn [{ json: { ...input, slackMessage: message } }];"},"typeVersion":2},{"id":"85039f02-b44c-4e5a-b2a7-d1812cef5639","name":"Slack Notification","type":"n8n-nodes-base.slack","position":[1200,496],"webhookId":"e1ce55e8-b9d7-44b3-830c-d3ca8acf2500","parameters":{"text":"={{ $json.slackMessage }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"YOUR_SLACK_CHANNEL_ID","cachedResultName":"channel-name"},"otherOptions":{}},"typeVersion":2.4},{"id":"06ba8fa6-58dd-4e91-bfdf-683ebc4f3a3d","name":"AI: Generate Proposal","type":"@n8n/n8n-nodes-langchain.openAi","position":[176,496],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o-mini","cachedResultName":"GPT-4O-MINI"},"options":{"maxTokens":600},"responses":{"values":[{"role":"system","content":"={{ $json.openAiPayload.messages[0].content }}"},{"content":"={{ $json.openAiPayload.messages[1].content }}"}]},"builtInTools":{}},"typeVersion":2.1},{"id":"595a2370-08ed-4443-966a-e68e215792d2","name":"Build OpenAI Payload","type":"n8n-nodes-base.code","position":[-48,496],"parameters":{"jsCode":"const job = $('Filter: Client Rating').first().json;\n\nconst userMessage = `Write a proposal for this Upwork job:\n\nJOB TITLE: ${job.jobTitle}\n\nJOB DESCRIPTION:\n${job.jobDescription}\n\nBUDGET: ${job.budget}\nSKILLS REQUIRED: ${job.skillsRequired}\nMATCHED SKILLS: ${Array.isArray(job.matchedSkills) ? job.matchedSkills.join(', ') : (job.matchedSkills || 'Not specified')}\n\nMY PROFILE:\n- Name: [YOUR NAME]\n- Core Skills: [YOUR SKILLS]\n- Experience: [YOUR EXPERIENCE]\n- Style: Direct, technical, solution-first. No buzzwords.\n\nWrite a tailored proposal that:\n1. References a SPECIFIC detail from this exact job post in the opening line\n2. Matches my skills precisely to their requirements\n3. Proposes a concrete first step or quick win\n4. Ends with a clear but soft call-to-action`;\n\nconst payload = {\n  model: \"gpt-4o-mini\",\n  max_tokens: 600,\n  messages: [\n    {\n      role: \"system\",\n      content: \"You are an expert Upwork freelancer proposal writer. You write concise, personalized, high-converting proposals that directly address the client's needs. Never use generic templates. Always: (1) Open with a line proving you read the job post carefully, (2) Demonstrate specific relevant experience with real numbers, (3) Propose a clear approach or solution, (4) End with a soft call-to-action. Keep proposals between 150-250 words. No filler words, no fluff.\"\n    },\n    {\n      role: \"user\",\n      content: userMessage\n    }\n  ]\n};\n\nreturn [{\n  json: {\n    ...job,\n    openAiPayload: payload\n  }\n}];"},"typeVersion":2},{"id":"a97f2b64-ee71-4510-9bab-6c262cef6ba6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-752,64],"parameters":{"width":620,"height":620,"content":"## How it works\n\nThis workflow monitors Upwork job listings every minute via a Vollna RSS feed. Each new job is parsed to extract the title, description, budget, skills, and a clean Upwork URL. Jobs are scored against your skill list — only those matching 2 or more of your skills pass through. Low-rated clients are filtered out. Each job is checked against Airtable to avoid processing duplicates.\n\nFor every new qualifying job, GPT-4o-mini writes a personalised 150–250 word proposal referencing details from the actual job post. The proposal and all job data are saved to Airtable with a status of \"New\". A Slack message is sent instantly with the job details, matched skills, and the full proposal ready to copy and submit.\n\n## Setup steps\n\n1. **Vollna** — Sign up at vollna.com, create a job filter for your skills, and copy the RSS feed URL into the RSS trigger node\n2. **OpenAI** — Add your API key as an n8n credential and connect it to the AI node\n3. **Airtable** — Create a base using the schema in the README, then add your Base ID and Table ID to both Airtable nodes\n4. **Slack** — Create a Slack app with `chat:write` scope, invite it to your channel, and connect it in the Slack node\n5. **Customise** — Update YOUR_SKILLS in the Filter node and update MY PROFILE in the Build OpenAI Payload node with your actual experience"},"typeVersion":1},{"id":"733d0d39-c7c7-45e1-b188-7defe5adf14f","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-112,64],"parameters":{"color":7,"width":532,"height":310,"content":"📡 **Ingest & Parse**\nPolls Vollna RSS every minute. Extracts job title, description, budget, skills, and clean Upwork URL from each item."},"typeVersion":1},{"id":"4e5cfecc-424b-4cb6-b008-0b717dd9c01c","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[432,64],"parameters":{"color":7,"width":964,"height":310,"content":"🎯 **Filter & Deduplicate**\nNeeds 2+ skill matches. Skips low-rated clients and already-processed jobs."},"typeVersion":1},{"id":"6b7ce2c0-3674-423c-b69a-8dd5c028092d","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-112,384],"parameters":{"color":7,"width":1508,"height":294,"content":"🤖 **Generate, Save & Notify**\nGPT-4o-mini writes a tailored proposal. Saves to Airtable, sends to Slack."},"typeVersion":1},{"id":"83abc871-4136-4fa4-a163-12b53d7021fc","name":"Extract Details from RSS","type":"n8n-nodes-base.code","position":[192,160],"parameters":{"jsCode":"const item = $input.item.json;\n\nfunction extractUpworkUrl(vollnaUrl) {\n  try {\n    const split = vollnaUrl.split('url=');\n    if (split.length < 2) return 'no url param found';\n    const raw = split[1];\n    const step1 = raw.replace(/%25/g, '%');\n    const step2 = decodeURIComponent(step1);\n    return step2;\n  } catch(e) {\n    return 'decode error: ' + e.message;\n  }\n}\n\nfunction extractBudget(text) {\n  if (!text) return 'Not specified';\n  const fixed = text.match(/Budget:\\s*\\$?([\\d,]+)/i);\n  const hourly = text.match(/\\$([\\d.]+)\\s*\\/hr/i);\n  if (fixed) return `Fixed: $${fixed[1]}`;\n  if (hourly) return `Hourly: $${hourly[1]}/hr`;\n  return 'Not specified';\n}\n\nfunction extractSkills(text) {\n  if (!text) return '';\n  const match = text.match(/Skills:\\s*([^\\n<]+)/i);\n  return match ? match[1].trim() : '';\n}\n\nfunction extractClientRating(text) {\n  if (!text) return null;\n  const match = text.match(/([\\d.]+)\\s*of\\s*5/i) || text.match(/Rating:\\s*([\\d.]+)/i);\n  return match ? parseFloat(match[1]) : null;\n}\n\nfunction extractClientSpent(text) {\n  if (!text) return null;\n  const match = text.match(/\\$([\\d,]+)\\+?\\s*spent/i) || text.match(/\\$([\\d,]+)\\+?\\s*total spent/i);\n  return match ? match[1].replace(/,/g, '') : null;\n}\n\nfunction generateJobId(url) {\n  const match = url?.match(/~([a-zA-Z0-9]+)/);\n  return match ? match[1] : url;\n}\n\nconst description = item.contentSnippet || item.content || item.summary || '';\nconst guid = item.guid || item.link || '';\n\nreturn [{\n  json: {\n    jobTitle: item.title || 'Untitled',\n    jobUrl: item.link || item.url || '',\n    jobDescription: description,\n    postedAt: item.pubDate || item.isoDate || new Date().toISOString(),\n    budget: extractBudget(description),\n    skillsRequired: extractSkills(description),\n    clientRating: extractClientRating(description),\n    clientSpent: extractClientSpent(description),\n    jobId: generateJobId(item.link || item.url || guid),\n    rawGuid: guid,\n    upworkUrl: extractUpworkUrl(guid)\n  }\n}];"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"8ceacd4c-087e-4e99-98c6-eb97b50b96f2","connections":{"Is New Job?":{"main":[[{"node":"Build OpenAI Payload","type":"main","index":0}]]},"Build Slack Message":{"main":[[{"node":"Slack Notification","type":"main","index":0}]]},"Build OpenAI Payload":{"main":[[{"node":"AI: Generate Proposal","type":"main","index":0}]]},"Filter: Skills Match":{"main":[[{"node":"Filter: Client Rating","type":"main","index":0}]]},"AI: Generate Proposal":{"main":[[{"node":"Extract Proposal Text","type":"main","index":0}]]},"Extract Proposal Text":{"main":[[{"node":"Airtable: Save Proposal","type":"main","index":0}]]},"Filter: Client Rating":{"main":[[{"node":"Airtable: Check Duplicate","type":"main","index":0}]]},"Airtable: Save Proposal":{"main":[[{"node":"Build Slack Message","type":"main","index":0}]]},"Extract Details from RSS":{"main":[[{"node":"Filter: Skills Match","type":"main","index":0}]]},"Airtable: Check Duplicate":{"main":[[{"node":"Is New Job?","type":"main","index":0}]]},"RSS Feed - n8n & Automation":{"main":[[{"node":"Extract Details from RSS","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":16,"nodeTypes":{"n8n-nodes-base.if":{"count":1},"n8n-nodes-base.code":{"count":6},"n8n-nodes-base.slack":{"count":1},"n8n-nodes-base.airtable":{"count":2},"n8n-nodes-base.stickyNote":{"count":4},"@n8n/n8n-nodes-langchain.openAi":{"count":1},"n8n-nodes-base.rssFeedReadTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Vivekanand M","username":"vivek120819","bio":"","verified":true,"links":[""],"avatar":"https://gravatar.com/avatar/3d641762a2843f9a1146e16033e88f3fc0771c5e5caa85e665fede58c5749a0b?r=pg&d=retro&size=200"},"nodes":[{"id":2,"icon":"file:airtable.svg","name":"n8n-nodes-base.airtable","codex":{"data":{"resources":{"generic":[{"url":"https://n8n.io/blog/2021-goals-level-up-your-vocabulary-with-vonage-and-n8n/","icon":"🎯","label":"2021 Goals: Level Up Your Vocabulary With Vonage and n8n"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-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/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/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"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/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/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/sending-sms-the-low-code-way-with-airtable-twilio-programmable-sms-and-n8n/","icon":"📱","label":"Sending SMS the Low-Code Way with Airtable, Twilio Programmable SMS, and n8n"},{"url":"https://n8n.io/blog/automating-conference-organization-processes-with-n8n/","icon":"🙋‍♀️","label":"Automating Conference Organization Processes with n8n"},{"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/app-nodes/n8n-nodes-base.airtable/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/airtable/"}]},"categories":["Data & Storage"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"Airtable"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMDAgMTcwIj48cGF0aCBmaWxsPSIjZmNiNDAwIiBkPSJNODkgNC44IDE2LjIgMzQuOWMtNC4xIDEuNy00IDcuNC4xIDkuMWw3My4yIDI5YzYuNCAyLjYgMTMuNiAyLjYgMjAgMGw3My4yLTI5YzQuMS0xLjYgNC4xLTcuNC4xLTkuMWwtNzMtMzAuMUMxMDMuMiAyIDk1LjcgMiA4OSA0LjgiLz48cGF0aCBmaWxsPSIjMThiZmZmIiBkPSJNMTA1LjkgODguOXY3Mi41YzAgMy40IDMuNSA1LjggNi43IDQuNWw4MS42LTMxLjdjMS45LS43IDMuMS0yLjUgMy4xLTQuNVY1Ny4yYzAtMy40LTMuNS01LjgtNi43LTQuNUwxMDkgODQuM2MtMS45LjgtMy4xIDIuNi0zLjEgNC42Ii8+PHBhdGggZmlsbD0iI2Y4MmI2MCIgZD0ibTg2LjkgOTIuNi0yNC4yIDExLjctMi41IDEuMkw5LjEgMTMwYy0zLjIgMS42LTcuNC0uOC03LjQtNC40VjU3LjVjMC0xLjMuNy0yLjQgMS42LTMuM3EuNi0uNiAxLjItLjljMS4yLS43IDMtLjkgNC40LS4zbDc3LjUgMzAuN2M0IDEuNSA0LjMgNy4xLjUgOC45Ii8+PHBhdGggZmlsbD0iI2JhMWU0NSIgZD0ibTg2LjkgOTIuNi0yNC4yIDExLjctNTkuNC01MHEuNi0uNiAxLjItLjljMS4yLS43IDMtLjkgNC40LS4zbDc3LjUgMzAuN2M0IDEuNCA0LjMgNyAuNSA4LjgiLz48L3N2Zz4="},"displayName":"Airtable","typeVersion":2,"nodeCategories":[{"id":3,"name":"Data & Storage"}]},{"id":20,"icon":"fa:map-signs","name":"n8n-nodes-base.if","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The IF node can be used to implement binary conditional logic in your workflow. You can set up one-to-many conditions to evaluate each item of data being inputted into the node. That data will either evaluate to TRUE or FALSE and route out of the node accordingly.\n\nThis node has multiple types of conditions: Bool, String, Number, and Date & Time.","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/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/create-a-toxic-language-detector-for-telegram/","icon":"🤬","label":"Create a toxic language detector for Telegram in 4 step"},{"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/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"},{"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/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/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/how-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/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.if/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"If","color":"#408000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"If","typeVersion":2,"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":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":1227,"icon":"fa:rss","name":"n8n-nodes-base.rssFeedReadTrigger","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.rssfeedreadtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"RSS Feed Trigger","color":"#b02020"},"iconData":{"icon":"rss","type":"icon"},"displayName":"RSS Feed Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1250,"icon":"file:openAi.svg","name":"@n8n/n8n-nodes-langchain.openAi","codex":{"data":{"alias":["LangChain","ChatGPT","Sora","DallE","whisper","audio","transcribe","tts","assistant"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-langchain.openai/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Miscellaneous","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"OpenAI"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg1IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NiAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MSA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K"},"displayName":"OpenAI","typeVersion":2,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":37,"name":"Lead Generation"},{"id":51,"name":"Multimodal AI"}],"image":[]}}