{"workflow":{"id":14522,"name":"Create AI-powered LinkedIn posts from Telegram with GPT-4 and images","views":5,"recentViews":1,"totalViews":5,"createdAt":"2026-03-31T10:25:08.892Z","description":"# 🚀 **Description**\n\nTurn Telegram into your personal AI-powered LinkedIn content assistant.\n\nThis workflow lets you create high-quality LinkedIn posts from a simple chat message, refine them with natural feedback, generate matching AI images, and publish directly to LinkedIn—all without leaving Telegram.\n\nPerfect for creators, founders, and professionals who want to stay consistent on LinkedIn without switching between tools.\n\n## **⚙️ How it works**\n\n**1. Start with an idea:** Send a topic to your Telegram bot (e.g., “Write about AI in marketing”).\n\n**2. Instant LinkedIn draft:** AI generates a structured, engaging post with a strong hook, insights, and CTA—ready to publish.\n\n**3. Refine with feedback:** Ask for changes like “make it shorter” or “more professional,” and the workflow updates your draft instantly.\n\n**4. Add an AI-generated image (optional):** Describe the visual you want, and the workflow creates a polished, LinkedIn-ready image.\n\n**5. Approve before publishing:** Review and approve both the post and image to maintain full control.\n\n**6. Publish in one step:** The workflow posts directly to LinkedIn with or without the image.\n\n**7. Clean and reset automatically:** Your draft is cleared after publishing, and inactive sessions are cleaned up automatically.\n\n## 🛠️ Set up steps\n\n**Estimated time: 10–15 minutes**\n\n1. Create a Telegram bot and connect it in n8n\n2. Add your OpenAI API key (for content and image generation)\n3. Connect your LinkedIn account via OAuth\n4. Activate the workflow and start chatting with your bot","workflow":{"id":"PEwdJywfvAhmN22b","meta":{"instanceId":"1362b5a668e22782e31a4854e2745931271cfd59f028eb09e87ae2cc9d87675c","templateCredsSetupCompleted":true},"name":"AI LinkedIn Post Assistant with Telegram","tags":[],"nodes":[{"id":"55de8a36-6f38-46b8-8af0-f61de4eb6770","name":"Telegram Trigger","type":"n8n-nodes-base.telegramTrigger","position":[-480,320],"webhookId":"c24db884-1f88-4508-b72d-bd63afd6d385","parameters":{"updates":["message"],"additionalFields":{}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"notesInFlow":false,"typeVersion":1.2},{"id":"f215cb2c-574a-4c41-ab31-9465ca32db87","name":"LinkedIn Post Generator","type":"@n8n/n8n-nodes-langchain.agent","position":[768,128],"parameters":{"text":"={{ $json.topic }}","options":{"systemMessage":"# **System Prompt: LinkedIn Content Strategist (General-Purpose AI Agent)**\n\nYou are a top-tier LinkedIn strategist and content creator who helps grow accounts through authentic, high-performing posts.\n\n## 🎯 Goal\n\nBuild authority & personal brand with a KPI focused on follower growth and engagement.\n\n## 🧠 Core Function\n\nYou are part of an AI agent that receives a **topic from the user**.\nYour task is to **create a compelling LinkedIn post based on that topic**, optimized for engagement, clarity, and shareability.\n\n## 🧩 Niche & Positioning\n\nKeep the content **general and adaptable to any topic provided by the user**.\nDo not assume a fixed niche unless explicitly mentioned in the input topic.\n\n## 👥 Audience Persona\n\nProfessionals, creators, founders, freelancers, and decision-makers looking to learn, grow, and gain insights across various domains.\n\n## 🧱 Content Pillars\n\nAdapt dynamically based on the topic. Common formats include:\n\n* Personal insights or lessons\n* Story-driven experiences\n* Actionable tips or frameworks\n* Industry trends or observations\n* Thought-provoking opinions\n\n## 🗣️ Voice & Tone\n\nStorytelling with emotion, educational, and structured.\n**Do:** Focus on relatability, clarity, and value.\n**Don't:** Use overly technical jargon unless required by the topic.\n\n## 💭 Core Beliefs\n\n* Valuable content is simple, relatable, and actionable.\n* Consistency builds authority.\n* Storytelling increases engagement and retention.\n\n## 📈 Proof & Credibility\n\nWhere relevant, include:\n\n* Examples\n* Personal experiences (real or illustrative)\n* Observations or insights\n\n## 🎬 Hook & Structure Preferences\n\nHook styles: Pain-point hook, Story hook, Curiosity hook\nPost structure: Hook → Problem/Insight → Solution/Takeaway → CTA\n\nEmoji/Hashtag policy:\n\n* Use natural emojis for readability\n* Use up to 5 relevant hashtags\n\n## 🧲 CTA & Offers\n\nUse soft, engaging CTAs such as:\n\n* Ask a question\n* Invite opinions\n* Encourage comments or shares\n\nFrequency: Include a CTA when it feels natural (not forced in every post).\n\n## ⚔️ Differentiation\n\nFocus on **clarity, relatability, and strong storytelling** rather than niche authority.\nMake posts feel human, not robotic.\n\n## 🌏 Localization & Language\n\nContent should be written in clear, natural English.\n\n## 🚫 Taboo Topics\n\n* Avoid unnecessary complexity\n* Avoid overly niche assumptions unless provided in the topic\n\n---\n\n## 📝 Post Format to Follow\n\n### **Hook → Insight → Value → CTA (Flexible Structure)**\n\n✨ **Why it works:** Universal, adaptable to any topic, and highly engaging.\n\n**Structure:**\n\n🪝 **Hook:** Scroll-stopping first line (pain, curiosity, or bold statement)\n💡 **Insight/Problem:** Expand on the idea or highlight the issue\n✅ **Value:** Provide actionable takeaways, lessons, or perspectives\n🔢 **Breakdown (optional):** 3–5 key points for clarity\n📣 **CTA:** Invite engagement (question or prompt)\n\n---\n\n### **Example Template**\n\n[Hook]\n\n[Relatable insight or problem]\n\nHere’s what I’ve learned:\n\n1️⃣ [Point]\n2️⃣ [Point]\n3️⃣ [Point]\n\n[Closing takeaway]\n\n[CTA]\n\n---\n\n## ⚙️ Final Instruction\n\nAlways generate a **complete, ready-to-post LinkedIn post** based on the given topic.\nDo not include explanations or meta commentary—only the final post."},"promptType":"define"},"typeVersion":3.1},{"id":"1d306a0a-dc0e-45b1-84c3-4c0b519eb8b4","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[752,272],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4","cachedResultName":"gpt-4"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"ATOKtrhlzwVRDNz0","name":"OpenAi account 2"}},"typeVersion":1.3},{"id":"5ea693c5-0e1c-462f-80a7-fa296877d07f","name":"Conversation Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[864,288],"parameters":{"sessionKey":"=={{ $json.chatId }}","sessionIdType":"customKey","contextWindowLength":10},"typeVersion":1.3},{"id":"bcbc2172-97f3-4872-908b-87a7f5fecdc1","name":"Save Draft","type":"n8n-nodes-base.code","position":[1120,128],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst postContent = $json.output;\nconst existing = data[chatId] || {};\n\n// New topic = fresh draft, but preserve approved image if it exists\ndata[chatId] = {\n  postContent,\n  status: 'pending',\n  updatedAt: new Date().toISOString(),\n\n  // Preserve approved image from previous session\n  imageStatus: existing.imageApproved ? existing.imageStatus : 'none',\n  imageApproved: existing.imageApproved || false,\n  imageSource: existing.imageApproved ? existing.imageSource : '',\n  imagePrompt: existing.imageApproved ? existing.imagePrompt : '',\n  telegramFileId: existing.imageApproved ? existing.telegramFileId : '',\n  imageUrl: existing.imageApproved ? existing.imageUrl : '',\n  imageMimeType: existing.imageApproved ? existing.imageMimeType : '',\n  imageFileName: existing.imageApproved ? existing.imageFileName : '',\n};\n\nreturn [\n  {\n    json: {\n      chatId,\n      postContent,\n      status: 'pending',\n      imageStatus: data[chatId].imageStatus,\n      imageApproved: data[chatId].imageApproved,\n    },\n  },\n];"},"typeVersion":2},{"id":"b148df8b-49af-4ffa-9411-3a9663ea763c","name":"Send a text message","type":"n8n-nodes-base.telegram","position":[1344,128],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"=📝 *LinkedIn Post Draft*\n\n{{ $json.postContent }}\n\n---\nReply with:\n• 'approve' to post immediately\n• '/image ai..(img description)' to include image\n• Your feedback to request revisions","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"8d4b3e09-4db1-449d-8522-c3d40ef18aa1","name":"Get Saved Draft","type":"n8n-nodes-base.code","position":[528,-448],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst savedDraft = data[chatId] || {};\n\nreturn [\n  {\n    json: {\n      chatId,\n      postContent: savedDraft.postContent || '',\n      status: savedDraft.status || '',\n      imageApproved: savedDraft.imageApproved || false,\n      imageStatus: savedDraft.imageStatus || 'none',\n      imageUrl: savedDraft.imageUrl || '',\n      telegramFileId: savedDraft.telegramFileId || '',\n\n      imageMimeType: savedDraft.imageMimeType || '',\n      imageFileName: savedDraft.imageFileName || '',\n    },\n  },\n];"},"typeVersion":2},{"id":"9612ce71-263d-4451-a7fc-5ceb9726c0f7","name":"Confirmation","type":"n8n-nodes-base.telegram","position":[1712,-448],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"✅ *Posted to LinkedIn!*||Your post has been successfully published.","chatId":"={{ $('Get Saved Draft').first().json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"b0c18c67-7a70-4620-921e-0c54fee70c68","name":"Revise LinkedIn Post","type":"@n8n/n8n-nodes-langchain.agent","position":[752,448],"parameters":{"text":"=Current draft:\n{{ $json.currentDraft }}\n\nUser feedback:\n{{ $json.feedback }}\n\nRevise the draft accordingly.","options":{"systemMessage":"*Post Refinement Instruction*\n\nWhen a previously generated LinkedIn post is provided:\n\nTreat it as a draft that needs improvement or modification, not a new post\n\nApply only the specific changes requested by the user\n\nPreserve the original tone, structure, and intent unless explicitly asked to change\n\nImprove clarity, engagement, and flow where possible\n\nDo not over-edit or completely rewrite unless instructed\n\nOutput only the final revised post (ready to publish). Do not explain changes."},"promptType":"define"},"typeVersion":3.1},{"id":"560f5c88-0012-44a2-a682-66da38828337","name":"Save Revised Draft","type":"n8n-nodes-base.code","position":[1120,448],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nconst chatId = $('Prepare Feedback from AI Intent').first().json.chatId;\nconst postContent = $json.output;\n\nconst existing = data[chatId] || {};\n\ndata[chatId] = {\n  postContent,\n  status: 'pending',\n  updatedAt: new Date().toISOString(),\n\n  // preserve existing image state\n  imageStatus: existing.imageStatus || 'none',\n  imageApproved: existing.imageApproved || false,\n  imageSource: existing.imageSource || '',\n  imagePrompt: existing.imagePrompt || '',\n  telegramFileId: existing.telegramFileId || '',\n  imageUrl: existing.imageUrl || '',\n\n  // preserve stored exact image payload\n  imageMimeType: existing.imageMimeType || '',\n  imageFileName: existing.imageFileName || '',\n};\n\nreturn [\n  {\n    json: {\n      chatId,\n      postContent,\n      status: 'pending',\n      imageStatus: data[chatId].imageStatus,\n      imageApproved: data[chatId].imageApproved,\n      imageUrl: data[chatId].imageUrl,\n    },\n  },\n];"},"typeVersion":2},{"id":"a791fdfc-dc0a-4146-9d9d-ac87ed717b5e","name":"Send Revised Draft","type":"n8n-nodes-base.telegram","position":[1328,448],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"=🔄 *Revised LinkedIn Post*\n\n{{ $json.postContent }}\n\nReply with:\n• 'approve' to post immediately\n• '/image ai..(img description)' to include image\n• Your feedback to request revisions","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"2db70608-3250-4ade-91dc-f1c8f7d95580","name":"Create Image Prompt","type":"@n8n/n8n-nodes-langchain.agent","position":[704,800],"parameters":{"text":"=Create a detailed prompt for generating a professional LinkedIn post image based on this request:\n\n{{ $json.imagePrompt }}","options":{"systemMessage":"You are an expert prompt writer for AI image generation.\n\nCreate a single high-quality image generation prompt for a professional LinkedIn post image.\n\nRules:\n- Make it visually clear and polished\n- Keep it professional and business-friendly\n- Prefer clean composition, modern style, strong focal point\n- Avoid text inside the image unless explicitly requested\n- Output only the final image prompt\n- Do not explain anything"},"promptType":"define"},"typeVersion":3.1},{"id":"c12c0047-737c-47d7-bd60-099523922b02","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[688,976],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4","cachedResultName":"gpt-4"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"ATOKtrhlzwVRDNz0","name":"OpenAi account 2"}},"typeVersion":1.3},{"id":"641fa4bd-8809-4949-98b1-398c9045d837","name":"Generate AI Image","type":"@n8n/n8n-nodes-langchain.openAi","position":[992,784],"parameters":{"prompt":"={{ $json.output }}","options":{"size":"1024x1024","returnImageUrls":true},"resource":"image"},"credentials":{"openAiApi":{"id":"ATOKtrhlzwVRDNz0","name":"OpenAi account 2"}},"typeVersion":2.1},{"id":"48b0a60c-084a-4697-85b5-dc0a6030ffdf","name":"Save AI Image","type":"n8n-nodes-base.code","position":[1104,976],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst item = $input.first();\n\nconst imageUrl =\n  item.json.data?.[0]?.url ||\n  item.json.url ||\n  item.json.output?.[0]?.url ||\n  item.json.image_url ||\n  '';\n\nconst existing = data[chatId] || {};\n\ndata[chatId] = {\n  ...existing,\n  imageStatus: 'pending',\n  imageApproved: false,\n  imageSource: 'ai',\n  imageUrl,\n  updatedAt: new Date().toISOString(),\n};\n\nreturn [\n  {\n    json: {\n      chatId,\n      imageUrl,\n      imageStatus: 'pending',\n      imageApproved: false,\n    },\n  },\n];"},"typeVersion":2},{"id":"7b048a95-daf9-4881-ae1b-efc497e3c431","name":"Approve Image","type":"n8n-nodes-base.code","position":[480,1216],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst existing = data[chatId] || {};\n\nconst hasImage = !!(existing.imageUrl || existing.telegramFileId);\n\nif (!hasImage) {\n  return [\n    {\n      json: {\n        chatId,\n        ok: false,\n        message: 'No pending image found. Generate one with /image ai ... or upload an image first.',\n      },\n    },\n  ];\n}\n\ndata[chatId] = {\n  ...existing,\n  imageStatus: 'approved',\n  imageApproved: true,\n  updatedAt: new Date().toISOString(),\n};\n\nreturn [\n  {\n    json: {\n      chatId,\n      ok: true,\n      imageStatus: 'approved',\n      imageApproved: true,\n      message: 'Image approved',\n    },\n  },\n];"},"typeVersion":2},{"id":"ab519c9e-77b6-4298-9892-803471d123f6","name":"Confirm Image Approval","type":"n8n-nodes-base.telegram","position":[992,1168],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"=✅ *Image approved*\n\nNow you can:\n• send `approve` to post with image\n• or continue editing the post","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"279fb42a-0403-4e2d-aa32-a685ebc7119c","name":"Check Image Status","type":"n8n-nodes-base.switch","position":[1040,-352],"parameters":{"rules":{"values":[{"outputKey":"With Image","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"b8403b5c-c636-4bcd-a32a-51b3d912f9ef","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.imageApproved }}","rightValue":"true"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3.4},{"id":"bb64c5c1-1637-43de-8631-168f9b422733","name":"Post Text Only","type":"n8n-nodes-base.linkedIn","position":[1264,-448],"parameters":{"text":"={{ $json.postContent }}","person":"0iutWNMF-o","additionalFields":{}},"credentials":{"linkedInOAuth2Api":{"id":"fOha546aNTG3jpFz","name":"LinkedIn account"}},"typeVersion":1},{"id":"f83366d9-59e7-49a7-a24a-20d533f9c66a","name":"Confirmation With Image","type":"n8n-nodes-base.telegram","position":[2384,-256],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"✅ *Posted to LinkedIn!*\n\nYour post has been successfully published with Image.","chatId":"={{ $('Get Saved Draft').first().json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"4e75364c-1ae8-481e-887a-39488ede77e0","name":"Check Image Approval Result","type":"n8n-nodes-base.switch","position":[704,1216],"parameters":{"rules":{"values":[{"outputKey":"Success","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"4d4e5217-dd44-43d3-a307-878f58950399","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $json.ok }}","rightValue":"true"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3.4},{"id":"714cb297-7a3c-4894-af17-acae1ee79df9","name":"Image Approval Error","type":"n8n-nodes-base.telegram","position":[992,1360],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"={{ $json.message }}","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"d11b15b2-45f8-4fd9-b518-3ea31a9f69e9","name":"Check Final Post Readiness","type":"n8n-nodes-base.switch","position":[752,-448],"parameters":{"rules":{"values":[{"outputKey":"Image Pending","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"773ba4ad-4af3-4728-ae09-d297d9207b27","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.imageStatus }}","rightValue":"pending"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3.4},{"id":"8e5b41ec-858a-47d4-81ad-c9e464fb1a35","name":"Image Not Approved Warning","type":"n8n-nodes-base.telegram","position":[1056,-560],"webhookId":"7270bf29-b895-448f-9338-59afddcb4ba1","parameters":{"text":"=⚠️ You have a pending image that is not approved yet.\n\nSend `approve image` to use it in the post, or generate/upload a different image.","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"43c4f44f-c065-4b12-a895-f633797da22b","name":"Send a photo message","type":"n8n-nodes-base.telegram","position":[1216,768],"webhookId":"41d46cea-2818-47b7-bf0a-c3c64838147e","parameters":{"file":"={{ $json.imageUrl }}","chatId":"={{ $json.chatId }}","operation":"sendPhoto","additionalFields":{"caption":"=🖼️ *Image Preview*\n\nReply with:\n• `approve image` to use this image\n• or send another `/image ai ...` to regenerate","parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"88aac14e-0160-46c5-ac1b-9e5717214d09","name":"Save Telegram Image File ID","type":"n8n-nodes-base.code","position":[1328,976],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\n\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst existing = data[chatId] || {};\n\nconst photos = $input.first().json.result?.photo || [];\nconst largestPhoto = photos[photos.length - 1] || null;\nconst telegramFileId = largestPhoto?.file_id || '';\n\ndata[chatId] = {\n  ...existing,\n  telegramFileId,\n  updatedAt: new Date().toISOString(),\n};\n\nreturn [\n  {\n    json: {\n      chatId,\n      telegramFileId,\n    },\n  },\n];"},"typeVersion":2},{"id":"fead012a-52f3-42df-82ad-ac5bfaf8d4f9","name":"Get Telegram File","type":"n8n-nodes-base.telegram","position":[1440,768],"webhookId":"41d46cea-2818-47b7-bf0a-c3c64838147e","parameters":{"fileId":"={{ $json.telegramFileId }}","resource":"file","additionalFields":{}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"39240820-bd8d-498d-a444-78c6f4105292","name":"Create a post","type":"n8n-nodes-base.linkedIn","position":[1936,-256],"parameters":{"text":"={{ $json.postContent }}","person":"0iutWNMF-o","additionalFields":{},"shareMediaCategory":"IMAGE"},"credentials":{"linkedInOAuth2Api":{"id":"fOha546aNTG3jpFz","name":"LinkedIn account"}},"typeVersion":1},{"id":"e6a7aaaa-2a25-4180-9b65-f4008ba80968","name":"Prepare Post Data","type":"n8n-nodes-base.code","position":[1264,-256],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst chatId = $('Get Saved Draft').first().json.chatId;\nconst savedDraft = data[chatId] || {};\n\nreturn [{\n  json: {\n    chatId,\n    postContent: savedDraft.postContent || '',\n    telegramFileId: savedDraft.telegramFileId || ''\n  }\n}];"},"typeVersion":2},{"id":"6e90f6a6-5ebe-4541-90cf-f76e2b06c621","name":"Download Image for Post","type":"n8n-nodes-base.telegram","position":[1488,-256],"webhookId":"9ecf0b16-61de-461f-b207-d817218d6b68","parameters":{"fileId":"={{ $json.telegramFileId }}","resource":"file","additionalFields":{}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"40854fc6-176f-4010-acb2-009c810615da","name":"Add Post Content to Image","type":"n8n-nodes-base.set","position":[1712,-256],"parameters":{"options":{},"assignments":{"assignments":[{"id":"id-1","name":"postContent","type":"string","value":"={{ $('Prepare Post Data').item.json.postContent }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"ee7ca075-cb47-49ed-8533-9f618aba4fc2","name":"AI Intent Classifier","type":"@n8n/n8n-nodes-langchain.agent","position":[-256,320],"parameters":{"text":"={{ $json.message.text }}","options":{"systemMessage":"You are an intent classifier for a LinkedIn post creation assistant.\n\nAnalyze the user's message and classify it into ONE of these intents:\n\n1. **new_topic** - User wants to create a new LinkedIn post about a topic\n   Examples: \n   - \"Write about AI\"\n   - \"Create a post on leadership\"\n   - \"I want to post about productivity\"\n   - \"Please draft a post about remote work\"\n   - \"Please create a post on entrepreneurship\"\n   - \"Please write about mental health\"\n   - \"Draft a post on innovation\"\n   - \"Write a post about team building\"\n   - \"Can you write about digital marketing?\"\n   - \"I'd like a post on customer service\"\n\n2. **generate_image** - User wants to generate an AI image for their post\n   Examples: \"Create an image of...\", \"Generate a picture showing...\", \"I need an image with...\"\n\n3. **approve_image** - User approves the generated/uploaded image\n   Examples: \"approve image\", \"use this image\", \"looks good\", \"yes use it\"\n\n4. **approve_post** - User approves the post to publish\n   Examples: \"approve\", \"post it\", \"publish\", \"looks good post it\", \"yes\"\n\n5. **revise_post** - User provides feedback to revise the post\n   Examples: \"make it shorter\", \"add more emotion\", \"change the tone\", \"can you make it more professional\"\n\n6. **cancel_reset** - User wants to cancel/reset and start over\n   Examples: \"cancel\", \"reset\", \"start over\", \"clear everything\", \"delete draft\"\n\n7. **unclear** - Message doesn't clearly match any intent\n   Examples: \"hello\", \"what?\", random text\n\nRules:\n- Be flexible with natural language variations\n- If unsure between two intents, choose the most likely one\n- Only use 'unclear' if truly ambiguous\n- Extract any relevant details (topic, image description, feedback) into the details field\n- **If the user describes a topic they want to post about (even if phrased as a request or question), classify as new_topic**\n- Any message describing a topic or asking to create/draft/write a post should be classified as new_topic\n\n---\n\n## ⚠️ Important Limitations\n\nThis assistant can help you:\n✅ Create new LinkedIn posts on any topic\n✅ Generate AI images for posts\n✅ Revise and refine post drafts\n✅ Approve and publish posts (with or without images)\n\n❌ This assistant CANNOT:\n- Retrieve or view your previous LinkedIn posts\n- Edit already published posts\n- Delete posts from LinkedIn\n- Access your LinkedIn analytics or engagement data\n\nIf the user asks to retrieve, view, edit, or delete previous posts, classify as 'unclear' intent and the details field should contain 'retrieve_previous_posts_not_supported'."},"promptType":"define","hasOutputParser":true},"typeVersion":3.1},{"id":"be694179-bb73-4b3c-80f9-03428cecac74","name":"Intent Classification Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-256,544],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4","cachedResultName":"gpt-4"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"ATOKtrhlzwVRDNz0","name":"OpenAi account 2"}},"typeVersion":1.3},{"id":"71973d31-cf0d-4eaa-b0ef-ac514709f545","name":"Intent Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-128,576],"parameters":{"schemaType":"manual","inputSchema":"{\n  \"type\": \"object\",\n  \"properties\": {\n    \"intent\": {\n      \"type\": \"string\",\n      \"enum\": [\"new_topic\", \"generate_image\", \"approve_image\", \"approve_post\", \"revise_post\", \"cancel_reset\", \"unclear\"],\n      \"description\": \"The classified intent\"\n    },\n    \"details\": {\n      \"type\": \"string\",\n      \"description\": \"Extracted topic, image description, or feedback details\"\n    },\n    \"confidence\": {\n      \"type\": \"string\",\n      \"enum\": [\"high\", \"medium\", \"low\"],\n      \"description\": \"Confidence level of the classification\"\n    }\n  },\n  \"required\": [\"intent\", \"details\", \"confidence\"]\n}"},"typeVersion":1.3},{"id":"68d34f0d-81db-43c2-b063-f4e52b9b82d7","name":"Route by Intent","type":"n8n-nodes-base.switch","position":[96,240],"parameters":{"rules":{"values":[{"outputKey":"New Topic","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"intent-new-topic","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.intent }}","rightValue":"new_topic"}]},"renameOutput":true},{"outputKey":"Generate Image","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"intent-generate-image","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.intent }}","rightValue":"generate_image"}]},"renameOutput":true},{"outputKey":"Approve Image","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"intent-approve-image","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.intent }}","rightValue":"approve_image"}]},"renameOutput":true},{"outputKey":"Approve Post","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"intent-approve-post","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.intent }}","rightValue":"approve_post"}]},"renameOutput":true},{"outputKey":"Revise Post","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"intent-revise-post","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.intent }}","rightValue":"revise_post"}]},"renameOutput":true},{"outputKey":"Cancel/Reset","conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"intent-cancel-reset","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.output.intent }}","rightValue":"cancel_reset"}]},"renameOutput":true}]},"options":{"fallbackOutput":"extra"}},"typeVersion":3.4},{"id":"5737e07a-8348-401a-8e8f-329908db574a","name":"Prepare Topic from AI Intent","type":"n8n-nodes-base.code","position":[528,128],"parameters":{"jsCode":"const chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst details = $json.output.details || '';\n\nreturn [{\n  json: {\n    chatId,\n    topic: details,\n  },\n}];"},"typeVersion":2},{"id":"14511896-cf06-4b47-9821-426aa0154062","name":"Prepare Image Prompt from AI Intent","type":"n8n-nodes-base.code","position":[512,800],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst imagePrompt = $json.output.details || '';\n\nconst existing = data[chatId] || {};\n\ndata[chatId] = {\n  ...existing,\n  imageStatus: 'pending',\n  imageApproved: false,\n  imageSource: 'ai',\n  imagePrompt,\n  updatedAt: new Date().toISOString(),\n};\n\nreturn [{\n  json: {\n    chatId,\n    imagePrompt,\n    imageStatus: 'pending',\n    imageApproved: false,\n    imageSource: 'ai',\n  },\n}];"},"typeVersion":2},{"id":"7d0dfe0b-1aad-4fcb-8702-0df560dd9a76","name":"Prepare Feedback from AI Intent","type":"n8n-nodes-base.code","position":[528,448],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\nconst feedback = $json.output.details || '';\n\nconst savedDraft = data[chatId] || {};\n\nreturn [{\n  json: {\n    chatId,\n    feedback,\n    currentDraft: savedDraft.postContent || '',\n    status: savedDraft.status || '',\n  },\n}];"},"typeVersion":2},{"id":"adc4d089-0a91-4231-9b64-897ed4d3dcb0","name":"Handle Unclear Intent","type":"n8n-nodes-base.telegram","position":[544,1664],"webhookId":"74f80c43-c634-458a-865d-550117d21d72","parameters":{"text":"={{ $json.output.details === 'retrieve_previous_posts_not_supported' ? \"❌ *Feature Not Available*\\n\\nI cannot retrieve, view, or edit your previous LinkedIn posts. This workflow only helps you create and publish NEW posts.\\n\\nWhat I CAN help you with:\\n\\n📝 *Create a post:*\\n• Tell me the topic (e.g., \\\"Write about AI in healthcare\\\")\\n\\n🖼️ *Add an image:*\\n• Describe the image (e.g., \\\"Create an image of a futuristic city\\\")\\n\\n✅ *Approve:*\\n• Say \\\"approve\\\" to publish the post\\n• Say \\\"approve image\\\" to confirm the image\\n\\n✏️ *Revise:*\\n• Give feedback (e.g., \\\"make it shorter\\\" or \\\"add more emotion\\\")\\n\\n🔄 *Start Over:*\\n• Say \\\"cancel\\\" or \\\"reset\\\" to clear everything and start fresh\" : \"I'm not sure what you'd like me to do. Here are the available commands:\\n\\n📝 *Create a post:*\\n• Just tell me the topic (e.g., \\\"Write about AI in healthcare\\\")\\n\\n🖼️ *Add an image:*\\n• Describe the image you want (e.g., \\\"Create an image of a futuristic city\\\")\\n\\n✅ *Approve:*\\n• Say \\\"approve\\\" to publish the post\\n• Say \\\"approve image\\\" to confirm the image\\n\\n✏️ *Revise:*\\n• Give me feedback (e.g., \\\"make it shorter\\\" or \\\"add more emotion\\\")\\n\\n🔄 *Start Over:*\\n• Say \\\"cancel\\\" or \\\"reset\\\" to clear everything and start fresh\" }}","chatId":"={{ $('Telegram Trigger').first().json.message.chat.id }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"0d1807f4-32f6-4df7-94d7-8cafd35c1fba","name":"Clear Post Data After Text Post","type":"n8n-nodes-base.code","position":[1488,-448],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst chatId = $('Get Saved Draft').first().json.chatId;\n\n// Clear the post data after successful posting\ndelete data[chatId];\n\nreturn [{ json: { chatId, cleared: true } }];"},"typeVersion":2},{"id":"151c02d3-92a8-42c8-ac78-a9cf1d3e74ea","name":"Clear Post Data After Image Post","type":"n8n-nodes-base.code","position":[2160,-256],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst chatId = $('Get Saved Draft').first().json.chatId;\n\n// Clear the post data after successful posting\ndelete data[chatId];\n\nreturn [{ json: { chatId, cleared: true } }];"},"typeVersion":2},{"id":"82c5476d-17ce-43e3-b77f-302a66ec4e90","name":"Daily Cleanup Schedule","type":"n8n-nodes-base.scheduleTrigger","position":[-288,1008],"parameters":{"rule":{"interval":[{"triggerAtHour":2}]}},"typeVersion":1.2},{"id":"3d30461d-8a29-4e01-9e7c-dd02e6f59115","name":"Clean Abandoned Drafts","type":"n8n-nodes-base.code","position":[-64,1008],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst now = new Date();\nconst maxAgeHours = 48; // Clean drafts older than 48 hours\nlet cleanedCount = 0;\n\nfor (const chatId in data) {\n  const draft = data[chatId];\n  if (draft.updatedAt) {\n    const draftAge = (now - new Date(draft.updatedAt)) / (1000 * 60 * 60);\n    if (draftAge > maxAgeHours) {\n      delete data[chatId];\n      cleanedCount++;\n    }\n  }\n}\n\nreturn [{\n  json: {\n    cleanedCount,\n    timestamp: now.toISOString(),\n    message: `Cleaned ${cleanedCount} abandoned drafts older than ${maxAgeHours} hours`\n  }\n}];"},"typeVersion":2},{"id":"15afe64c-5e40-4fcb-a8a5-2b2e77fb013a","name":"Reset User Session","type":"n8n-nodes-base.code","position":[544,1840],"parameters":{"jsCode":"const data = $getWorkflowStaticData('global');\nconst chatId = $('Telegram Trigger').first().json.message.chat.id.toString();\n\n// Clear all data for this user\ndelete data[chatId];\n\nreturn [{\n  json: {\n    chatId,\n    reset: true,\n    message: 'Session reset successfully'\n  }\n}];"},"typeVersion":2},{"id":"aae176cb-63df-4dba-a310-b75b7c3da6fd","name":"Confirm Reset","type":"n8n-nodes-base.telegram","position":[848,1840],"webhookId":"675492f9-e4d7-41f6-81ae-ebcac7ad8394","parameters":{"text":"=🔄 *Session Reset*\n\nAll your drafts and images have been cleared. You can start fresh!\n\nSend me a topic to create a new LinkedIn post.","chatId":"={{ $json.chatId }}","additionalFields":{"parse_mode":"Markdown"}},"credentials":{"telegramApi":{"id":"kTv4AOWogn27CCZL","name":"Telegram account"}},"typeVersion":1.2},{"id":"d397887e-cc21-4899-a9a8-b758cbc960b6","name":"Main Overview","type":"n8n-nodes-base.stickyNote","position":[-944,0],"parameters":{"width":420,"height":864,"content":"# 🤖 AI LinkedIn Post Assistant with Telegram\n\n## What This Workflow Does\nCreate professional LinkedIn posts through natural conversation with your Telegram bot. The AI generates content, creates images with DALL-E 3, and publishes directly to LinkedIn—all from your phone.\n\n**How It Works:**\n1. Message your bot with a topic (e.g., \"Write about AI in healthcare\")\n2. Review the AI-generated draft\n3. Optional: Request an AI image or provide feedback for revisions\n4. Say \"approve\" to publish to LinkedIn\n\n## Setup Instructions\n☐ **Create Telegram Bot:** Message @BotFather on Telegram, send `/newbot`, and copy your bot token\n☐ **Add Credentials:** Configure Telegram API, LinkedIn OAuth2, and OpenAI API credentials in n8n\n☐ **Activate Workflow:** Save and toggle to Active\n☐ **Test:** Message your bot with a topic to verify it works\n\n## Customization\n• **Adjust AI tone:** Edit the \"LinkedIn Post Generator\" system message for different writing styles\n• **Change cleanup schedule:** Modify \"Daily Cleanup Schedule\" (default: 2 AM daily, 48-hour retention)\n• **Customize responses:** Edit Telegram message nodes to change bot replies\n\n**Commands:** Just chat naturally say \"approve\", \"approve image\", \"cancel\", or provide feedback like \"make it shorter\""},"typeVersion":1},{"id":"be767fc1-2dfc-43b1-989c-0424d7679679","name":"Section: Post Generation","type":"n8n-nodes-base.stickyNote","position":[448,-32],"parameters":{"color":7,"width":1096,"height":664,"content":"## ✍️ Post Generation & Revision\n\n1st Draft: GPT-4 creates LinkedIn posts based on user topics, saves drafts to workflow memory, and sends previews via Telegram.\n\nRevision: Users provide feedback to refine posts. AI revises content while preserving approved images and conversation context."},"typeVersion":1},{"id":"a876e9e3-6667-4f80-8792-89020e236383","name":"Section: Image Generation","type":"n8n-nodes-base.stickyNote","position":[448,672],"parameters":{"color":7,"width":1176,"height":872,"content":"## 🖼️ Image Generation & Approval\nDALL-E 3 creates professional images based on user descriptions. Images are previewed in Telegram and require approval before posting."},"typeVersion":1},{"id":"21ee1679-6047-4b8d-8893-698f31b2d630","name":"Section: Publishing","type":"n8n-nodes-base.stickyNote","position":[448,-656],"parameters":{"color":7,"width":2136,"height":600,"content":"## 📤 Publishing to LinkedIn\nWhen user approves, posts are published to LinkedIn with or without images. Session data is cleared after successful posting."},"typeVersion":1},{"id":"f62acbd7-0083-47bd-9324-74c53b1b10ca","name":"Section: Maintenance","type":"n8n-nodes-base.stickyNote","position":[-400,848],"parameters":{"color":4,"width":552,"height":312,"content":"## 🧹 Automatic Cleanup\nDaily schedule removes abandoned drafts older than 48 hours to prevent memory bloat. Users can also manually reset with \"cancel\" command."},"typeVersion":1},{"id":"946aa66a-1bce-4be3-a9ee-8dedc9784575","name":"Section: Intent Classification","type":"n8n-nodes-base.stickyNote","position":[-304,160],"parameters":{"color":7,"width":312,"height":536,"content":"## 🎯 Intent Classification\nAI analyzes user messages to determine intent (new post, image generation, approval, revision, or cancel) and routes to the appropriate handler."},"typeVersion":1},{"id":"8e2d5a65-4ee3-42ea-bad0-1f256bf96ed3","name":"Section: Maintenance1","type":"n8n-nodes-base.stickyNote","position":[464,1568],"parameters":{"color":7,"width":552,"height":424,"content":"## Fallback & Reset the Seession"},"typeVersion":1}],"active":true,"pinData":{},"settings":{"binaryMode":"separate","availableInMCP":false,"executionOrder":"v1"},"versionId":"ee3cd035-7e7c-4f3d-b73a-d90703db9f24","connections":{"Save Draft":{"main":[[{"node":"Send a text message","type":"main","index":0}]]},"Approve Image":{"main":[[{"node":"Check Image Approval Result","type":"main","index":0}]]},"Create a post":{"main":[[{"node":"Clear Post Data After Image Post","type":"main","index":0}]]},"Save AI Image":{"main":[[{"node":"Send a photo message","type":"main","index":0}]]},"Post Text Only":{"main":[[{"node":"Clear Post Data After Text Post","type":"main","index":0}]]},"Get Saved Draft":{"main":[[{"node":"Check Final Post Readiness","type":"main","index":0}]]},"Route by Intent":{"main":[[{"node":"Prepare Topic from AI Intent","type":"main","index":0}],[{"node":"Prepare Image Prompt from AI Intent","type":"main","index":0}],[{"node":"Approve Image","type":"main","index":0}],[{"node":"Get Saved Draft","type":"main","index":0}],[{"node":"Prepare Feedback from AI Intent","type":"main","index":0}],[{"node":"Handle Unclear Intent","type":"main","index":0},{"node":"Reset User Session","type":"main","index":0}]]},"Telegram Trigger":{"main":[[{"node":"AI Intent Classifier","type":"main","index":0}]]},"Generate AI Image":{"main":[[{"node":"Save AI Image","type":"main","index":0}]]},"Get Telegram File":{"main":[[]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"LinkedIn Post Generator","type":"ai_languageModel","index":0},{"node":"Revise LinkedIn Post","type":"ai_languageModel","index":0}]]},"Prepare Post Data":{"main":[[{"node":"Download Image for Post","type":"main","index":0}]]},"Check Image Status":{"main":[[{"node":"Prepare Post Data","type":"main","index":0}],[{"node":"Post Text Only","type":"main","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"Create Image Prompt","type":"ai_languageModel","index":0}]]},"Reset User Session":{"main":[[{"node":"Confirm Reset","type":"main","index":0}]]},"Save Revised Draft":{"main":[[{"node":"Send Revised Draft","type":"main","index":0}]]},"Conversation Memory":{"ai_memory":[[{"node":"LinkedIn Post Generator","type":"ai_memory","index":0},{"node":"Revise LinkedIn Post","type":"ai_memory","index":0}]]},"Create Image Prompt":{"main":[[{"node":"Generate AI Image","type":"main","index":0}]]},"AI Intent Classifier":{"main":[[{"node":"Route by Intent","type":"main","index":0}]]},"Intent Output Parser":{"ai_outputParser":[[{"node":"AI Intent Classifier","type":"ai_outputParser","index":0}]]},"Revise LinkedIn Post":{"main":[[{"node":"Save Revised Draft","type":"main","index":0}]]},"Send a photo message":{"main":[[{"node":"Save Telegram Image File ID","type":"main","index":0}]]},"Confirm Image Approval":{"main":[[]]},"Daily Cleanup Schedule":{"main":[[{"node":"Clean Abandoned Drafts","type":"main","index":0}]]},"Download Image for Post":{"main":[[{"node":"Add Post Content to Image","type":"main","index":0}]]},"LinkedIn Post Generator":{"main":[[{"node":"Save Draft","type":"main","index":0}]]},"Add Post Content to Image":{"main":[[{"node":"Create a post","type":"main","index":0}]]},"Check Final Post Readiness":{"main":[[{"node":"Image Not Approved Warning","type":"main","index":0}],[{"node":"Check Image Status","type":"main","index":0}]]},"Check Image Approval Result":{"main":[[{"node":"Confirm Image Approval","type":"main","index":0}],[{"node":"Image Approval Error","type":"main","index":0}]]},"Intent Classification Model":{"ai_languageModel":[[{"node":"AI Intent Classifier","type":"ai_languageModel","index":0}]]},"Save Telegram Image File ID":{"main":[[{"node":"Get Telegram File","type":"main","index":0}]]},"Prepare Topic from AI Intent":{"main":[[{"node":"LinkedIn Post Generator","type":"main","index":0}]]},"Clear Post Data After Text Post":{"main":[[{"node":"Confirmation","type":"main","index":0}]]},"Prepare Feedback from AI Intent":{"main":[[{"node":"Revise LinkedIn Post","type":"main","index":0}]]},"Clear Post Data After Image Post":{"main":[[{"node":"Confirmation With Image","type":"main","index":0}]]},"Prepare Image Prompt from AI Intent":{"main":[[{"node":"Create Image Prompt","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":52,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":14},"n8n-nodes-base.switch":{"count":4},"n8n-nodes-base.linkedIn":{"count":2},"n8n-nodes-base.telegram":{"count":12},"n8n-nodes-base.stickyNote":{"count":7},"@n8n/n8n-nodes-langchain.agent":{"count":4},"n8n-nodes-base.scheduleTrigger":{"count":1},"n8n-nodes-base.telegramTrigger":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":3},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Ishan Gandhi","username":"automated-ai-systems","bio":"","verified":false,"links":["https://www.linkedin.com/in/ishangandhi711/"],"avatar":"https://gravatar.com/avatar/c4ff77bc4c25751c70e2929c165fed627eb5694c997a740b7ff7e3ac6a0b9f7a?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":49,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegram","codex":{"data":{"alias":["human","form","wait","hitl","approval"],"resources":{"generic":[{"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/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/world-poetry-day-workflow/","icon":"📜","label":"Celebrating World Poetry Day with a daily poem in Telegram"},{"url":"https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/","icon":"💪","label":"Using Automation to Boost Productivity in the Workplace"},{"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/creating-scheduled-text-affirmations-with-n8n/","icon":"🤟","label":"Creating scheduled text affirmations with n8n"},{"url":"https://n8n.io/blog/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"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.telegram/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication","HITL"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"HITL":["Human in the Loop"]}}},"group":"[\"output\"]","defaults":{"name":"Telegram"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"},{"id":28,"name":"HITL"}]},{"id":50,"icon":"file:telegram.svg","name":"n8n-nodes-base.telegramTrigger","codex":{"data":{"resources":{"generic":[{"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/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/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/creating-telegram-bots-with-n8n-a-no-code-platform/","icon":"💬","label":"Creating Telegram Bots with n8n, a No-Code Platform"},{"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/trigger-nodes/n8n-nodes-base.telegramtrigger/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/telegram/"}]},"categories":["Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"trigger\"]","defaults":{"name":"Telegram Trigger"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjYgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9ImEiIG92ZXJmbG93PSJ2aXNpYmxlIj48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIHN0cm9rZT0ibm9uZSI+PHBhdGggZmlsbD0iIzM3YWVlMiIgZD0iTTAgMzJjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMyczMyLTE0LjMyNyAzMi0zMlM0OS42NzMgMCAzMiAwIDAgMTQuMzI3IDAgMzIiLz48cGF0aCBmaWxsPSIjYzhkYWVhIiBkPSJtMjEuNjYxIDM0LjMzOCAzLjc5NyAxMC41MDhzLjQ3NS45ODMuOTgzLjk4MyA4LjA2OC03Ljg2NCA4LjA2OC03Ljg2NGw4LjQwNy0xNi4yMzctMjEuMTE5IDkuODk4eiIvPjxwYXRoIGZpbGw9IiNhOWM2ZDgiIGQ9Im0yNi42OTUgMzcuMDM0LS43MjkgNy43NDZzLS4zMDUgMi4zNzMgMi4wNjggMGw0LjY0NC00LjIwMyIvPjxwYXRoIGQ9Im0yMS43MyAzNC43MTItNy44MDktMi41NDVzLS45MzItLjM3OC0uNjMzLTEuMjM3Yy4wNjItLjE3Ny4xODYtLjMyOC41NTktLjU4OCAxLjczMS0xLjIwNiAzMi4wMjgtMTIuMDk2IDMyLjAyOC0xMi4wOTZzLjg1Ni0uMjg4IDEuMzYxLS4wOTdjLjIzMS4wODguMzc4LjE4Ny41MDMuNTQ4LjA0NS4xMzIuMDcxLjQxMS4wNjguNjg5LS4wMDMuMjAxLS4wMjcuMzg2LS4wNDUuNjc4LS4xODQgMi45NzgtNS43MDYgMjUuMTk4LTUuNzA2IDI1LjE5OHMtLjMzIDEuMy0xLjUxNCAxLjM0NWMtLjQzMi4wMTYtLjk1Ni0uMDcxLTEuNTgyLS42MS0yLjMyMy0xLjk5OC0xMC4zNTItNy4zOTQtMTIuMTI2LTguNThhLjM0LjM0IDAgMCAxLS4xNDYtLjIzOWMtLjAyNS0uMTI1LjEwOC0uMjguMTA4LS4yOHMxMy45OC0xMi40MjcgMTQuMzUyLTEzLjczMWMuMDI5LS4xMDEtLjA3OS0uMTUxLS4yMjYtLjEwNy0uOTI5LjM0Mi0xNy4wMjUgMTAuNTA2LTE4LjgwMSAxMS42MjktLjEwNC4wNjYtLjM5NS4wMjMtLjM5NS4wMjMiLz48L2c+PC9zeW1ib2w+PC9zdmc+"},"displayName":"Telegram Trigger","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"}]},{"id":112,"icon":"fa:map-signs","name":"n8n-nodes-base.switch","codex":{"data":{"alias":["Router","If","Path","Filter","Condition","Logic","Branch","Case"],"resources":{"generic":[{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/automation-for-maintainers-of-open-source-projects/","icon":"🏷️","label":"How to automatically manage contributions to open-source projects"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow"]}}},"group":"[\"transform\"]","defaults":{"name":"Switch","color":"#506000"},"iconData":{"icon":"map-signs","type":"icon"},"displayName":"Switch","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":367,"icon":"file:linkedin.svg","name":"n8n-nodes-base.linkedIn","codex":{"data":{"resources":{"generic":[{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.linkedin/"}],"credentialDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/credentials/linkedin/"}]},"categories":["Marketing","Communication"],"nodeVersion":"1.0","codexVersion":"1.0"}},"group":"[\"input\"]","defaults":{"name":"LinkedIn"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB2aWV3Qm94PSIwIDAgNjcgNjYiPjx1c2UgeGxpbms6aHJlZj0iI2EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJhIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgZmlsbC1ydWxlPSJub256ZXJvIiBzdHJva2U9Im5vbmUiPjxwYXRoIGZpbGw9IiMwMTc3YjUiIGQ9Ik01OS4yNiAwSDQuNzI0QzIuMTIgMCAwIDIuMDY2IDAgNC42MXY1NC43ODhjMCAyLjUzIDIuMTIgNC42IDQuNzI0IDQuNmg1NC41NGMyLjYxIDAgNC43MzYtMi4wNyA0LjczNi00LjZWNC42MUM2NCAyLjA2NiA2MS44NzQgMCA1OS4yNiAwIi8+PHBhdGggZD0iTTkuNDkgMjMuOTkySDE5djMwLjU0SDkuNDl6bTQuNzQ4LTE1LjJjMy4wMzQgMCA1LjUgMi40NjYgNS41IDUuNWE1LjUxIDUuNTEgMCAwIDEtNS40OTggNS41MDYgNS41MiA1LjUyIDAgMCAxLTUuNTA4LTUuNTA2IDUuNSA1LjUgMCAwIDEgNS41MDYtNS41bTEwLjcgMTUuMmg5LjEwNHY0LjE3NGguMTI2YzEuMjY4LTIuNCA0LjM2NC00LjkzMiA5LTQuOTMyIDkuNjEyIDAgMTEuMzg2IDYuMzI2IDExLjM4NiAxNC41NDh2MTYuNzUyaC05LjQ4NlYzOS42NzhjMC0zLjU0LS4wNjQtOC4xLTQuOTMyLTguMS00Ljk0IDAtNS43IDMuODYtNS43IDcuODR2MTUuMTA4aC05LjQ4NHYtMzAuNTR6Ii8+PC9nPjwvc3ltYm9sPjwvc3ZnPg=="},"displayName":"LinkedIn","typeVersion":1,"nodeCategories":[{"id":6,"name":"Communication"},{"id":27,"name":"Marketing"}]},{"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":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":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":1163,"icon":"fa:database","name":"@n8n/n8n-nodes-langchain.memoryBufferWindow","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorybufferwindow/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Memory"],"Memory":["For beginners"]}}},"group":"[\"transform\"]","defaults":{"name":"Simple Memory"},"iconData":{"icon":"database","type":"icon"},"displayName":"Simple Memory","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":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":31,"name":"Content Creation"},{"id":47,"name":"AI Chatbot"}],"image":[]}}