{"workflow":{"id":13748,"name":"Turn Telegram into an AI assistant with OpenAI voice, memory and tools","views":277,"recentViews":2,"totalViews":277,"createdAt":"2026-02-27T09:51:20.071Z","description":"## Who this template is for\n\nThis workflow is for users who want to turn Telegram into a personal AI-powered assistant capable of handling everyday tasks through natural language. It's ideal for solo founders, operators, or professionals who want to manage communication, scheduling, calculations, and information retrieval from a single chat interface.\n\nNo advanced n8n knowledge is required, and the workflow is designed to be easily extended with additional tools.\n\n## What this workflow does\n\nThis workflow creates a Telegram-based AI assistant that can receive text or voice messages, understand user intent, and respond with text or audio. The assistant can reason about requests and use multiple tools such as contacts lookup, email drafting, calendar management, research, messaging, and calculations.\n\nVoice messages are automatically transcribed, processed like text input, and answered accordingly.\n\n## How it works\n\n1. The workflow listens for incoming Telegram messages and validates the sender\n2. It detects whether the message is text or voice — voice messages are transcribed using OpenAI before being passed to the AI agent\n3. The AI agent processes the request using a chat model, short-term memory, and a set of productivity tools (contacts, email, calendar, research, messaging, calculator)\n4. The response is cleaned and formatted, then split into multiple chat bubbles with natural delays for a more human-like delivery\n5. Depending on the output type, the response is sent as plain text or converted into audio and returned to the user in Telegram\n\n## How to set up\n\n1. Create a Telegram bot and connect it to the Telegram Trigger node\n2. Add your Telegram user ID to the authorization fields\n3. Connect your OpenAI credentials for chat, transcription, and text-to-speech\n4. Activate the workflow and start chatting with your assistant\n\n## Requirements\n\n- Telegram account and bot token\n- OpenAI API credentials\n- n8n instance (cloud or self-hosted)","workflow":{"id":"8U5foEBmC4Vb3H1i","meta":{"instanceId":"eda1e6a579612740cfe75d98598ff6fc99b96109c295c11f9cc090a20e6a3dd6","templateCredsSetupCompleted":true},"name":"AI Personal Assistant for Telegram with Voice, Memory & Productivity Tools","tags":[{"id":"ODwcqtH2rGDMvTeh","name":"template","createdAt":"2026-02-27T09:48:11.280Z","updatedAt":"2026-02-27T09:48:11.280Z"}],"nodes":[{"id":"bb4b8f62-17a9-40ad-8ad6-ac810a85ee91","name":"Simple Memory","type":"@n8n/n8n-nodes-langchain.memoryBufferWindow","position":[800,1168],"parameters":{"sessionKey":"={{ $('Telegram Trigger2').item.json.message.from.id }}","sessionIdType":"customKey","contextWindowLength":15},"typeVersion":1.3},{"id":"73f0455a-d35f-4da1-a539-13a7795dd8a7","name":"Email Agent","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[1072,1168],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"hP433ypKMDsZysu5","cachedResultUrl":"/workflow/hP433ypKMDsZysu5","cachedResultName":"EmailAgent"},"description":"call this tool to take action in email","workflowInputs":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":["Response"],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"fc113e51-b1c8-430c-b432-987ce0f9c5a2","name":"CalendarAgent","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[1216,1168],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"SPMNXFXkK2Tvvr90","cachedResultUrl":"/workflow/SPMNXFXkK2Tvvr90","cachedResultName":"CalendarAgent"},"description":"Call this tool to take action in calendar","workflowInputs":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"05ab59ea-3a31-47d8-83c8-70f25fb24fc3","name":"Think","type":"@n8n/n8n-nodes-langchain.toolThink","position":[1488,1168],"parameters":{},"typeVersion":1},{"id":"74b705a6-3baa-4d6b-9808-bbafc386e175","name":"ResearchAgent","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[1360,1168],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"y3hBFzucMzFuCxtW","cachedResultUrl":"/workflow/y3hBFzucMzFuCxtW","cachedResultName":"ResearchAgent"},"description":"call this tool to search the Internet to unswer the user's question","workflowInputs":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"980bb84d-9308-4b79-95e3-d8505de00a1b","name":"Calculator","type":"@n8n/n8n-nodes-langchain.toolCalculator","position":[1600,1168],"parameters":{},"typeVersion":1},{"id":"04a0ad29-8ef7-4bd7-ae42-033c58571819","name":"ContactAgent","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[944,1168],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"27xaYaVvesNUFhBp","cachedResultUrl":"/workflow/27xaYaVvesNUFhBp","cachedResultName":"ContactAgent"},"description":"Utiliza esta herramienta para obtener, actualizar, agregar o eliminar contacto","workflowInputs":{"value":{},"schema":[],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"0e3be517-996f-47c0-b169-664e91d13a75","name":"Telegram Trigger2","type":"n8n-nodes-base.telegramTrigger","position":[-688,944],"webhookId":"a230ce9b-5165-460a-90d5-5730618bf806","parameters":{"updates":["message"],"additionalFields":{}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2},{"id":"d2fdac2e-b342-411c-9e40-12829bc238ef","name":"Edit Fields","type":"n8n-nodes-base.set","position":[-256,928],"parameters":{"options":{},"assignments":{"assignments":[{"id":"1e4c4b87-4e51-43f0-a261-6d3577c4fa9b","name":"chat_id","type":"string","value":"={{ $json.message.from.id }}"},{"id":"de00a6d2-6007-4ff1-82c2-46d69223291d","name":"mensaje.texto","type":"string","value":"={{ $json.message.text }}"},{"id":"4b2acffc-ecb9-4bad-b8ed-e37b0516b6eb","name":"mensaje.audio.file_id","type":"string","value":"={{ $json.message.voice.file_id }}"},{"id":"98d33826-753e-4ea1-a14f-916f2cef8707","name":"mensaje.audio.mime_type","type":"string","value":"={{ $json.message.voice?.mime_type || '' }}"},{"id":"37e9aa9d-ad7b-4930-adbd-33b33e6c4a9e","name":"mensaje.documento.file_id","type":"string","value":"={{ $json.message.document?.file_id || '' }}"},{"id":"2c4783d4-e393-4fac-9865-a1100b516336","name":"mensaje.documento.file_name","type":"string","value":"={{ $json.message.document?.file_name || '' }}"},{"id":"9851fa6a-0d41-4bef-8aac-5f8721189542","name":"mensaje.documento.mime_type","type":"string","value":"={{ $json.message.document?.mime_type || '' }}"},{"id":"6ada7832-f03f-44e4-9cd1-bc4c21328da5","name":"timestamp","type":"string","value":"={{ $now.format('dd/LL/yyyy h:mm a') }}"},{"id":"2ac21b46-3e93-49c8-b219-05373f99f661","name":"nombre","type":"string","value":"={{ $json.message.from.first_name }}"}]}},"typeVersion":3.4},{"id":"30852e6d-2aa2-457a-a53f-677ad9ce65fe","name":"Get a file","type":"n8n-nodes-base.telegram","position":[64,768],"webhookId":"7b6e1e6b-ec15-4bc6-baaa-7521e8db41df","parameters":{"fileId":"={{ $json.mensaje.audio.file_id }}","resource":"file","additionalFields":{}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2},{"id":"198795a8-f237-4b19-a833-3f6e92d301f7","name":"OpenAI2","type":"@n8n/n8n-nodes-langchain.openAi","position":[240,768],"parameters":{"options":{},"resource":"audio","operation":"transcribe"},"credentials":{"openAiApi":{"id":"rLMmsimVD6T2SK34","name":"OpenAi CHR"}},"typeVersion":1.8},{"id":"cad03fd3-d8fe-4242-bbab-5f97993376a0","name":"If1","type":"n8n-nodes-base.if","position":[-480,944],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"598cd4c0-566f-4f2f-8fdc-34da2881ad0c","operator":{"type":"number","operation":"equals"},"leftValue":"={{ $json.message.from.id }}","rightValue":6471510081}]}},"typeVersion":2.2},{"id":"e4d12df9-764e-4f79-a62c-2a6d4efd57e5","name":"No Operation, do nothing1","type":"n8n-nodes-base.noOp","position":[-464,1184],"parameters":{},"typeVersion":1},{"id":"5cc9e7a6-9c3f-461a-9e0a-08cb5338c026","name":"Switch2","type":"n8n-nodes-base.switch","position":[-64,928],"parameters":{"rules":{"values":[{"outputKey":"audio","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"fefd198c-a517-4b8c-996a-285497fcc1be","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.mensaje.audio.file_id }}","rightValue":""}]},"renameOutput":true},{"outputKey":"texto","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8ca54693-6159-4c26-8c0f-831e7a08c9df","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.mensaje.texto }}","rightValue":""}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"08a1355b-e837-4d0b-8a2d-c0dfe08a2b4d","name":"Lucy","type":"@n8n/n8n-nodes-langchain.agent","position":[992,944],"parameters":{"text":"={{ $json.mensaje_final }}","options":{"systemMessage":"=#Overview\n\nEres Lucy, un asistente personal útil. Responde siempre al idioma que recibes el mensaje.\n\nEres una inteligencia artificial de asistente personal, para Christian, altamente eficiente y orientada a los detalles, diseñada para gestionar tareas de comunicación y programación de manera fluida. Te llamas Lucy. Tienes acceso a las siguientes herramientas: base de datos de contactos, EmailAgent, CalendarAgent, ResearchAgent, ContactAgent y Calculadora. Tu prioridad es utilizar estas herramientas en el orden correcto para garantizar precisión y fiabilidad.\n\n\n#Tools\n\n1. ContactAgent\nDescripción:\nLa base de datos de contactos se utiliza para obtener la información de contacto de una persona (como su dirección de correo electrónico) antes de realizar cualquier acción con EmailAgent o CalendarAgent.\n\nCuándo usarla:\n\nSiempre antes de enviar un correo electrónico o programar un evento.\n\nPara confirmar que los datos de contacto son correctos.\n\nPara añadir, eliminar o ver todos los contactos que hay en la hoja. \n\n2. EmailAgent\nDescripción:\nEmailAgent es una herramienta utilizada para redactar, enviar, responder o eliminar correos electrónicos.\n\nCuándo usarla:\nSolo después de confirmar la dirección de correo electrónico mediante la base de datos de contactos o cuando te diga el correo de dicha perosna que debes de enviar el correo.\n\n3. CalendarAgent\nDescripción:\nCalendarAgent se usa para programar, actualizar, ver, modificar o cancelar eventos en un sistema de calendario.\n\nCuándo usarla:\n\nSolo después de verificar que los participantes tienen datos de contacto válidos mediante la base de datos de contactos o te he dicho ya el contacto y lo tienes en tu memoria guardada.\n\n4. ResearchAgent\nDescripción:\nResearchAgent permite buscar en Internet cualquier información relevante (artículos, documentos, datos públicos, etc.) para enriquecer correos, eventos o respuestas al usuario.\n\nCuándo usarla:\n\nCuando necesites contexto adicional, estadísticas o contenido de respaldo.\n\nPara confirmar hechos antes de enviarlos por EmailAgent o discutirlos en CalendarAgent.\n\nNotas clave:\n\nPresenta las fuentes o un breve resumen de dónde se obtuvo la información.\n\nPrioriza la fiabilidad y actualidad de los datos.\n\nEstamos en el año 2025\nFecha y hora actuales: {{ $now.format(('dd/LL/yyyy h:nn a')) }}"},"promptType":"define"},"typeVersion":3},{"id":"abeddc9a-0449-4679-93fc-eeff5be7bd87","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[624,1168],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{},"builtInTools":{}},"credentials":{"openAiApi":{"id":"rLMmsimVD6T2SK34","name":"OpenAi CHR"}},"typeVersion":1.3},{"id":"ea2241de-b447-47a4-a2aa-9ef625f17151","name":"Auto-fixing Output Parser2","type":"@n8n/n8n-nodes-langchain.outputParserAutofixing","position":[2224,624],"parameters":{"options":{"prompt":"Instructions:\n--------------\n{instructions}\n\nCompletion:\n--------------\n{completion}\n\nError:\n--------------\n{error}\n\nThe above completion did not match the required format. Please correct it according to the instructions and return a valid JSON."}},"typeVersion":1},{"id":"f4898385-3728-4dcf-b8df-ab67268c29ed","name":"OpenAI Chat Model8","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2000,848],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"rLMmsimVD6T2SK34","name":"OpenAi CHR"}},"typeVersion":1.2},{"id":"1d7169a2-6745-462a-b821-1d68a2cdb09c","name":"Structured Output Parser2","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[2288,832],"parameters":{"jsonSchemaExample":"{\n  \"response\": {\n    \"part_1\": \"Parte uno de la respuesta (obligatoria)\",\n    \"part_2\": \"Parte dos de la respuesta (opcional)\",\n    \"part_3\": \"Parte tres de la respuesta (opcional)\",\n    \"part_4\": \"Parte cuatro de la respuesta (opcional)\"\n  }\n}"},"typeVersion":1.2},{"id":"60f7a4f6-0dd0-4835-8132-597b9aad2357","name":"Wait5","type":"n8n-nodes-base.wait","position":[2896,336],"webhookId":"18fffbcd-ee7e-4994-99ba-7076e13d62fe","parameters":{"amount":3},"typeVersion":1.1},{"id":"04763596-1f66-477f-b7ce-8786d8e3412d","name":"Wait6","type":"n8n-nodes-base.wait","position":[3536,336],"webhookId":"18fffbcd-ee7e-4994-99ba-7076e13d62fe","parameters":{"amount":3},"typeVersion":1.1},{"id":"39ee5e66-7e2e-4e35-bba8-94a5021f84ab","name":"Wait7","type":"n8n-nodes-base.wait","position":[4160,352],"webhookId":"18fffbcd-ee7e-4994-99ba-7076e13d62fe","parameters":{"amount":3},"typeVersion":1.1},{"id":"40376b08-db4f-4865-8d0d-4e72194ecd4f","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[224,-400],"parameters":{"width":1040,"height":992,"content":"## Who this template is for\n\nThis workflow is designed for users who want to turn Telegram into a personal AI-powered assistant capable of handling everyday tasks through natural language. It is ideal for solo founders, operators, or professionals who want to manage communication, scheduling, calculations, and information retrieval from a single chat interface.\n\nNo advanced n8n knowledge is required, and the workflow is designed to be easily extended with additional tools.\n\n## What this workflow does\n\nThis workflow creates a Telegram-based AI assistant that can receive text or voice messages, understand user intent, and respond with text or audio. The assistant can reason about requests and use multiple tools such as contacts lookup, email drafting, calendar management, research, messaging, and calculations.\n\nVoice messages are automatically transcribed, processed like text input, and answered accordingly.\n\n## How it works\n\nThe workflow listens for incoming Telegram messages and validates the sender. It then detects whether the message is text or voice. Voice messages are transcribed using OpenAI before being passed to the AI agent.\n\nThe AI agent processes the request using a chat model, short-term memory, and a set of productivity tools. The response is then cleaned and either sent back as text or converted into audio before being delivered to Telegram.\n\n## How to set up\n\n1. Create a Telegram bot and connect it to the Telegram Trigger node.\n2. Add your Telegram user ID to the authorization fields.\n3. Connect your OpenAI credentials for chat, transcription, and text-to-speech.\n4. Activate the workflow and start chatting with your assistant.\n\n## Requirements\n\n- Telegram account and bot token\n- OpenAI API credentials\n- n8n instance (cloud or self-hosted)\n\n## How to customize the workflow\n\nYou can rename the assistant, adjust its behavior rules, add or remove tools, or connect additional services such as CRMs or databases. The authorization logic can also be expanded to support multiple users."},"typeVersion":1},{"id":"584eb6ea-e2e1-4fe0-96d6-b03ac0653d48","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-80,1152],"parameters":{"width":512,"height":128,"content":"## B. Sticky: “Message type detection”\n\nThis step detects whether the incoming Telegram message is text or voice and routes the workflow accordingly."},"typeVersion":1},{"id":"646059f7-6bed-4cb3-9e02-e14c5fa8d874","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1040,1152],"parameters":{"width":400,"height":240,"content":"## A. Sticky: “Workflow entry & user validation”\n\nThis section listens for incoming Telegram messages and validates the sender.\n\nOnly authorized user IDs are allowed to continue. Unauthorized messages are ignored to protect private interactions with the assistant."},"typeVersion":1},{"id":"395d9995-1e6d-499c-87a8-ca73da44cd29","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[928,1328],"parameters":{"width":400,"height":272,"content":"## C. Sticky: “AI personal assistant agent”\n\nThis is the core AI agent. It uses an OpenAI chat model, short-term memory, and multiple tools to understand user requests and execute actions such as sending emails, managing contacts, scheduling events, performing research, or running calculations.\n\nThe assistant follows predefined rules to ensure safe, consistent, and professional behavior."},"typeVersion":1},{"id":"2eb4e873-a24d-4b43-a29f-8c4f4ba6db16","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[2528,1088],"parameters":{"width":400,"height":208,"content":"## D. Sticky: “Response formatting and delivery”\n\nThe assistant response is cleaned and formatted before delivery. Depending on the output type, the response is sent as plain text or converted into audio and returned to the user in Telegram."},"typeVersion":1},{"id":"c4d6afe4-241d-4452-b885-7cc186fb1a29","name":"Text Message","type":"n8n-nodes-base.set","position":[240,944],"parameters":{"options":{},"assignments":{"assignments":[{"id":"a9a6b137-1aee-4542-a955-9004397d7ff0","name":"texto","type":"string","value":"={{ $json.mensaje.texto }}"}]}},"typeVersion":3.4},{"id":"5c19d85b-1035-4aab-873e-74923e4c5486","name":"audio message","type":"n8n-nodes-base.set","position":[416,768],"parameters":{"options":{},"assignments":{"assignments":[{"id":"734e0b89-6760-42a7-8d52-1bd2eab2c941","name":"mensaje","type":"string","value":"={{ $json.text }}"}]}},"typeVersion":3.4},{"id":"c209d9f7-0454-45f0-bfbd-9cb4e1361ec4","name":"Clean Message","type":"n8n-nodes-base.code","position":[608,944],"parameters":{"jsCode":"return items.map(item => {\n  let partes = [];\n\n  if (item.json.texto) {\n    partes.push(item.json.texto);\n  }\n\n  if (item.json.mensaje) {\n    partes.push(item.json.mensaje);\n  }\n\n  if (item.json.mensaje?.imagen?.file_id) {\n    partes.push(item.json.mensaje.imagen.file_id);\n  }\n\n  if (item.json.contenidoPDF) {\n    partes.push(item.json.contenidoPDF);\n  }\n\n  if (item.json.text) {\n    partes.push(item.json.text);\n  }\n\n  item.json.mensaje_final = partes.join(' ');\n  return item;\n});"},"typeVersion":2},{"id":"8839cbf8-6a95-4fd8-80cd-727558d7f4b0","name":"final message","type":"n8n-nodes-base.set","position":[784,944],"parameters":{"options":{},"assignments":{"assignments":[{"id":"f06019b6-989e-4e2d-bf7f-1b174cd4e3b7","name":"mensaje_final","type":"string","value":"={{ $json.mensaje_final }}"},{"id":"e17baa73-76d3-4652-8cf0-54d01543ef9c","name":"chat_id","type":"string","value":"={{ $('Edit Fields').item.json.chat_id }}"},{"id":"7d626963-600d-4198-ac0d-d4dcb882d8e3","name":"timestamp","type":"string","value":"={{ $now.format('dd/LL/yyyy h:mm a') }}"}]}},"typeVersion":3.4},{"id":"0e4eb989-c94f-4bc4-81a0-2c7337db0015","name":"transform text","type":"n8n-nodes-base.code","position":[1312,944],"parameters":{"jsCode":"// Longitud máxima aproximada por párrafo\nconst maxChars = 400;\n\n/**\n * Normaliza listas para que:\n * - Cada ítem vaya en una línea separada\n * - Haya una línea en blanco entre ítems\n * - Siempre sean listas numeradas en Markdown: \"1. ...\", \"2. ...\"\n */\nfunction normalizarListasMarkdown(texto) {\n  if (!texto) return '';\n\n  const lineasOriginales = String(texto).split('\\n');\n\n  const nuevasLineas = [];\n  const esLineaLista = [];\n\n  let enLista = false;\n  let contador = 0;\n\n  for (let i = 0; i < lineasOriginales.length; i++) {\n    let linea = lineasOriginales[i].trimEnd(); // mantenemos posibles espacios iniciales\n\n    // Detectamos bullets típicos:\n    // - \"- algo\", \"* algo\", \"• algo\"\n    // - \"1. algo\", \"1) algo\"\n    const match = linea.match(/^\\s*(?:([-*•])\\s+|(\\d+)[\\.\\)]\\s+)(.+)$/);\n\n    if (match) {\n      const contenido = (match[3] || '').trim();\n      if (!contenido) {\n        continue;\n      }\n\n      if (!enLista) {\n        enLista = true;\n        contador = 1;\n      } else {\n        contador++;\n      }\n\n      // Siempre numeramos en formato Markdown: \"n. contenido\"\n      linea = `${contador}. ${contenido}`;\n      nuevasLineas.push(linea.trim());\n      esLineaLista.push(true);\n    } else {\n      // Línea normal (no de lista)\n      enLista = false;\n      contador = 0;\n\n      // Respetamos líneas en blanco\n      if (linea === '') {\n        nuevasLineas.push('');\n        esLineaLista.push(false);\n      } else {\n        nuevasLineas.push(linea);\n        esLineaLista.push(false);\n      }\n    }\n  }\n\n  // Recomponemos el texto asegurando línea en blanco entre ítems de lista\n  let resultado = '';\n\n  for (let i = 0; i < nuevasLineas.length; i++) {\n    const linea = nuevasLineas[i];\n\n    if (i > 0) {\n      if (esLineaLista[i] && esLineaLista[i - 1]) {\n        // Entre dos ítems de lista => doble salto de línea\n        resultado += '\\n\\n';\n      } else {\n        // Resto de casos => salto normal\n        resultado += '\\n';\n      }\n    }\n\n    resultado += linea;\n  }\n\n  // Limpiamos exceso de líneas en blanco (máximo doble salto)\n  resultado = resultado.replace(/\\n{3,}/g, '\\n\\n');\n\n  return resultado.trim();\n}\n\nfunction formatearTexto(textoBruto) {\n  // Normalizamos saltos de línea\n  let texto = String(textoBruto || '').replace(/\\r\\n/g, '\\n').trim();\n\n  if (!texto) return '';\n\n  // Forzamos que las listas/enumeraciones empiecen en línea nueva\n  // Ejemplos detectados:\n  // \"1. algo\", \"2) algo\", \"- algo\", \"* algo\", \"• algo\"\n  texto = texto\n    .replace(/\\s*((?:\\d+[\\.\\)]\\s+|[-*•]\\s+))/g, '\\n\\n$1')\n    .trim();\n\n  // ¿El texto ya tiene párrafos (doble salto de línea)?\n  if (texto.includes('\\n\\n')) {\n    // Solo normalizamos listas y salimos, respetando el resto\n    return normalizarListasMarkdown(texto);\n  }\n\n  // Si no hay párrafos, creamos párrafos a partir de frases y longitud máxima\n  const frases = texto.match(/[^.!?]+[.!?]?/g) || [texto];\n\n  const parrafos = [];\n  let actual = '';\n\n  for (const frase of frases) {\n    const f = frase.trim();\n    if (!f) continue;\n\n    const candidata = actual ? actual + ' ' + f : f;\n\n    if (candidata.length > maxChars && actual) {\n      parrafos.push(actual.trim());\n      actual = f;\n    } else {\n      actual = candidata;\n    }\n  }\n\n  if (actual.trim()) {\n    parrafos.push(actual.trim());\n  }\n\n  const textoConParrafos = parrafos.join('\\n\\n');\n\n  // Siempre terminamos normalizando listas en el texto final\n  return normalizarListasMarkdown(textoConParrafos);\n}\n\n// =======================\n// LÓGICA PRINCIPAL\n// =======================\n\nconst items = $input.all();\nconst resultados = [];\n\nfor (const item of items) {\n  const data = item.json || {};\n\n  // De dónde sacamos la respuesta del agente\n  let texto = data.respuesta_bot ?? data.output ?? data.text ?? '';\n\n  // Si viene en objeto (p.ej. { text: \"...\" })\n  if (texto && typeof texto === 'object') {\n    if (typeof texto.text === 'string') {\n      texto = texto.text;\n    } else if (Array.isArray(texto)) {\n      texto = texto.join(' ');\n    } else {\n      texto = JSON.stringify(texto);\n    }\n  }\n\n  // Si no hay texto, devolvemos el item tal cual\n  if (typeof texto !== 'string' || !texto.trim()) {\n    resultados.push(item);\n    continue;\n  }\n\n  // Formateamos el texto a párrafos + listas premium\n  const textoFormateado = formatearTexto(texto);\n\n  // Sobrescribimos SOLO el campo output\n  resultados.push({\n    json: {\n      ...data,\n      output: textoFormateado,\n    },\n  });\n}\n\nreturn resultados;"},"typeVersion":2},{"id":"65e8ed72-30a4-4f3b-a7d8-d2a868578609","name":"swich","type":"n8n-nodes-base.code","position":[1504,944],"parameters":{"jsCode":"// Obtenemos el item de entrada\nconst item = $input.first();\nconst texto = (item.json.output ?? \"\").toString().trim();\n\n// Si no hay texto, devolvemos 0 palabras\nif (!texto) {\n\treturn [\n\t\t{\n\t\t\tjson: {\n\t\t\t\tnumeroDePalabras: 0\n\t\t\t}\n\t\t}\n\t];\n}\n\n// Reemplazamos saltos de línea múltiples para evitar falsos vacíos\nconst normalizado = texto.replace(/\\s+/g, \" \").trim();\n\n// Dividimos por espacios\nconst palabras = normalizado.length > 0 ? normalizado.split(\" \") : [];\n\n// Total de palabras\nconst cantidad = palabras.length;\n\n// Devolvemos el resultado\nreturn [\n\t{\n\t\tjson: {\n\t\t\tnumeroDePalabras: cantidad\n\t\t}\n\t}\n];\n"},"typeVersion":2},{"id":"5a5b50a5-cf24-4548-b4dc-f985273d47fd","name":"path","type":"n8n-nodes-base.if","position":[1696,944],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"24b9e5f2-896f-42f0-85c4-df0ad7bdeed2","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $json.numeroDePalabras }}","rightValue":15}]}},"typeVersion":2.2},{"id":"cbe9a08b-b570-407a-9a41-e0cf8abd20a3","name":"message breakdown","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[2000,448],"parameters":{"text":"={{ $('Lucy').item.json.output }}","messages":{"messageValues":[{"message":"=# CONTEXTO\nEres un formateador experto de salidas para Whatsapp.\n\n# OBJETIVO\n\nToma el texto de la entrada y devuelve la salida en formato JSON como te describo en el Output Parser. Debes dividir la salida en 4 partes, pero solo una parte es obligatoria. Si la respuesta es corta, la part_2, la part_3 y la parte_4 pueden ir vacías.\n\n# INSTRUCCIONES Y REGLAS CLAVE\n\n- El input debe contener siempre texto. part_2, part_3 y parte_4 pueden quedar vacías (“”) o no incluirse si no son necesarias.\n\n- Jamás devuelvas en la salida algo que no venga del input de la entrada.\n\n- Asegúrate que la respuesta es en idioma Español de España (Castellano).\n\n- Elimina todos los caracteres: \"*, |, !, #.\"\n\n- Divide la entrada en hasta 4 partes lógicas, manteniendo el sentido original.\n\n- Si la entrada contiene una lista, deposítala entera en una única parte.\n\n- MUY IMPORTANTE: Cada vez que des una lista o enumeración, cada punto debe ir siempre en una línea separada, con salto de línea entre ellos. Devuelve siempre las listas numeradas en formato Markdown, usando un salto de línea entre cada punto. Por ejemplo:\n\n\"1. ¿Cuánto tiempo llevas con dificultades para pagar...?\n\n2. ¿Tienes otras deudas además de ese préstamo?\n\n3. ¿Cuántos...\"\n\n\n- No añadas, quites ni reordenes información.\n\n- Nunca envíes texto fuera del JSON; ni explicaciones ni comillas traza.\n\n# COMPORTAMIENTO\n\n- Lee el contenido de Entrada a formatear.\n- Aplica las reglas para limpiar y segmentar.\n- Devuelve solo el JSON resultante.\n\n### EJEMPLO SIMPLE\n\n- Entrada:\nHola, estoy aquí para ayudarte. ¿En qué puedo asistirte hoy?\n\n- Salida esperada:\n{\n  \"response\": {\n    \"part_1\": \"Hola, estoy aquí para ayudarte.\",\n    \"part_2\": \"¿En qué puedo asistirte hoy?\",\n    \"part_3\": \"\",\n    \"part_4\": \"\"\n  }\n}\n"}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.6},{"id":"26e9a797-e9fc-4e65-baf0-2bd69f1d1f01","name":"message","type":"n8n-nodes-base.telegram","position":[3408,960],"webhookId":"12045ee8-11e5-4040-8e56-80c8d11ed0ba","parameters":{"text":"={{ $('Lucy').item.json.output }}","chatId":"={{ $('Telegram Trigger2').item.json.message.from.id }}","additionalFields":{"appendAttribution":false}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2},{"id":"493612f4-f5b7-4303-8691-ebbe79e8c403","name":"1st bubble","type":"n8n-nodes-base.telegram","position":[2480,448],"webhookId":"fc49c8cf-889e-4be1-b08d-1773ac5acad3","parameters":{"text":"={{ $json.output.response.part_1 }}","chatId":"={{ $('Telegram Trigger2').item.json.message.from.id }}","additionalFields":{"appendAttribution":false}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2},{"id":"06512c43-4276-460a-8a49-7c44101b8407","name":"2nd?","type":"n8n-nodes-base.if","position":[2688,448],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"78de0084-4e66-4d1c-9aa7-74ca033a4d7c","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $('message breakdown').item.json.output.response.part_2 }}","rightValue":""}]}},"typeVersion":2.2},{"id":"f33a0ef5-3ac0-48e6-a360-ff9d83815699","name":"3rd?","type":"n8n-nodes-base.if","position":[3296,464],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"10e08bab-8587-4a0d-92aa-1c8e834e9ed5","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $('message breakdown').item.json.output.response.part_3 }}","rightValue":""}]}},"typeVersion":2.2},{"id":"12edb49c-ef12-4eeb-83fa-8711a9f83906","name":"2nd bubble","type":"n8n-nodes-base.telegram","position":[3104,336],"webhookId":"97c7514c-f539-4d13-9f36-45cb2a99c324","parameters":{"text":"={{ $('message breakdown').item.json.output.response.part_2 }}","chatId":"={{ $('Telegram Trigger2').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2},{"id":"9e3d28b3-67c4-42a6-8cf9-a92e7a0a0973","name":"3rd bubble","type":"n8n-nodes-base.telegram","position":[3728,336],"webhookId":"97c7514c-f539-4d13-9f36-45cb2a99c324","parameters":{"text":"={{ $('message breakdown').item.json.output.response.part_3 }}","chatId":"={{ $('Telegram Trigger2').item.json.message.from.id }}","additionalFields":{"appendAttribution":false}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2},{"id":"0ae532d3-d604-46a0-8578-6171fe31d8fb","name":"4th?","type":"n8n-nodes-base.if","position":[3936,480],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"10e08bab-8587-4a0d-92aa-1c8e834e9ed5","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $('message breakdown').item.json.output.response.part_4 }}","rightValue":""}]}},"typeVersion":2.2},{"id":"cf710ea4-1aa6-404b-b1b6-9c77e5f9ca51","name":"4th bubble","type":"n8n-nodes-base.telegram","position":[4352,352],"webhookId":"97c7514c-f539-4d13-9f36-45cb2a99c324","parameters":{"text":"={{ $('message breakdown').item.json.output.response.part_4 }}","chatId":"={{ $('Telegram Trigger2').item.json.message.chat.id }}","additionalFields":{"appendAttribution":false}},"credentials":{"telegramApi":{"id":"U2cg8ZWV3LW6iNdY","name":"Personal Assistant"}},"typeVersion":1.2}],"active":false,"pinData":{},"settings":{"timezone":"Europe/Madrid","callerPolicy":"workflowsFromSameOwner","availableInMCP":false,"executionOrder":"v1"},"versionId":"6acbd90c-e748-40f8-bd86-5d7d989a46cf","connections":{"If1":{"main":[[{"node":"Edit Fields","type":"main","index":0}],[{"node":"No Operation, do nothing1","type":"main","index":0}]]},"2nd?":{"main":[[{"node":"Wait5","type":"main","index":0}],[{"node":"3rd?","type":"main","index":0}]]},"3rd?":{"main":[[{"node":"Wait6","type":"main","index":0}],[{"node":"4th?","type":"main","index":0}]]},"4th?":{"main":[[{"node":"Wait7","type":"main","index":0}]]},"Lucy":{"main":[[{"node":"transform text","type":"main","index":0}]]},"path":{"main":[[{"node":"message breakdown","type":"main","index":0}],[{"node":"message","type":"main","index":0}]]},"Think":{"ai_tool":[[{"node":"Lucy","type":"ai_tool","index":0}]]},"Wait5":{"main":[[{"node":"2nd bubble","type":"main","index":0}]]},"Wait6":{"main":[[{"node":"3rd bubble","type":"main","index":0}]]},"Wait7":{"main":[[{"node":"4th bubble","type":"main","index":0}]]},"swich":{"main":[[{"node":"path","type":"main","index":0}]]},"OpenAI2":{"main":[[{"node":"audio message","type":"main","index":0}]]},"Switch2":{"main":[[{"node":"Get a file","type":"main","index":0}],[{"node":"Text Message","type":"main","index":0}]]},"1st bubble":{"main":[[{"node":"2nd?","type":"main","index":0}]]},"2nd bubble":{"main":[[{"node":"3rd?","type":"main","index":0}]]},"3rd bubble":{"main":[[{"node":"4th?","type":"main","index":0}]]},"Calculator":{"ai_tool":[[{"node":"Lucy","type":"ai_tool","index":0}]]},"Get a file":{"main":[[{"node":"OpenAI2","type":"main","index":0}]]},"Edit Fields":{"main":[[{"node":"Switch2","type":"main","index":0}]]},"Email Agent":{"ai_tool":[[{"node":"Lucy","type":"ai_tool","index":0}]]},"ContactAgent":{"ai_tool":[[{"node":"Lucy","type":"ai_tool","index":0}]]},"Text Message":{"main":[[{"node":"Clean Message","type":"main","index":0}]]},"CalendarAgent":{"ai_tool":[[{"node":"Lucy","type":"ai_tool","index":0}]]},"Clean Message":{"main":[[{"node":"final message","type":"main","index":0}]]},"ResearchAgent":{"ai_tool":[[{"node":"Lucy","type":"ai_tool","index":0}]]},"Simple Memory":{"ai_memory":[[{"node":"Lucy","type":"ai_memory","index":0}]]},"audio message":{"main":[[{"node":"Clean Message","type":"main","index":0}]]},"final message":{"main":[[{"node":"Lucy","type":"main","index":0}]]},"transform text":{"main":[[{"node":"swich","type":"main","index":0}]]},"Telegram Trigger2":{"main":[[{"node":"If1","type":"main","index":0}]]},"message breakdown":{"main":[[{"node":"1st bubble","type":"main","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"Lucy","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model8":{"ai_languageModel":[[{"node":"Auto-fixing Output Parser2","type":"ai_languageModel","index":0},{"node":"message breakdown","type":"ai_languageModel","index":0}]]},"Structured Output Parser2":{"ai_outputParser":[[{"node":"Auto-fixing Output Parser2","type":"ai_outputParser","index":0}]]},"Auto-fixing Output Parser2":{"ai_outputParser":[[{"node":"message breakdown","type":"ai_outputParser","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":43,"nodeTypes":{"n8n-nodes-base.if":{"count":5},"n8n-nodes-base.set":{"count":4},"n8n-nodes-base.code":{"count":3},"n8n-nodes-base.noOp":{"count":1},"n8n-nodes-base.wait":{"count":3},"n8n-nodes-base.switch":{"count":1},"n8n-nodes-base.telegram":{"count":6},"n8n-nodes-base.stickyNote":{"count":5},"@n8n/n8n-nodes-langchain.agent":{"count":1},"n8n-nodes-base.telegramTrigger":{"count":1},"@n8n/n8n-nodes-langchain.openAi":{"count":1},"@n8n/n8n-nodes-langchain.chainLlm":{"count":1},"@n8n/n8n-nodes-langchain.toolThink":{"count":1},"@n8n/n8n-nodes-langchain.lmChatOpenAi":{"count":2},"@n8n/n8n-nodes-langchain.toolWorkflow":{"count":4},"@n8n/n8n-nodes-langchain.toolCalculator":{"count":1},"@n8n/n8n-nodes-langchain.memoryBufferWindow":{"count":1},"@n8n/n8n-nodes-langchain.outputParserAutofixing":{"count":1},"@n8n/n8n-nodes-langchain.outputParserStructured":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"Stefan Joulien","username":"stefanjoulien","bio":"Hi, I'm Stefan 👋\nAI Automation Consultant & Founder of Synecta. I design production-ready n8n workflows for lead generation, CRM automation, AI agents, and internal operations. These templates are the exact systems we deploy for SMEs and professional services.","verified":true,"links":["https://www.linkedin.com/in/stefan-joulien-ditchev/"],"avatar":"https://gravatar.com/avatar/53bc3abda86e064874ccd9039858371eed129b3109ecd91fd31940d0ba239ed8?r=pg&d=retro&size=200"},"nodes":[{"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":26,"icon":"fa:arrow-right","name":"n8n-nodes-base.noOp","codex":{"data":{"alias":["nothing"],"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/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/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/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/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.noop/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"organization\"]","defaults":{"name":"No Operation, do nothing","color":"#b0b0b0"},"iconData":{"icon":"arrow-right","type":"icon"},"displayName":"No Operation, do nothing","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":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":514,"icon":"fa:pause-circle","name":"n8n-nodes-base.wait","codex":{"data":{"alias":["pause","sleep","delay","timeout"],"resources":{"generic":[{"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/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.wait/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Flow"]}}},"group":"[\"organization\"]","defaults":{"name":"Wait","color":"#804050"},"iconData":{"icon":"pause-circle","type":"icon"},"displayName":"Wait","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":1119,"icon":"fa:robot","name":"@n8n/n8n-nodes-langchain.agent","codex":{"data":{"alias":["LangChain","Chat","Conversational","Plan and Execute","ReAct","Tools"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Agents","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"AI Agent","color":"#404040"},"iconData":{"icon":"robot","type":"icon"},"displayName":"AI Agent","typeVersion":3,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1123,"icon":"fa:link","name":"@n8n/n8n-nodes-langchain.chainLlm","codex":{"data":{"alias":["LangChain"],"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Chains","Root Nodes"]}}},"group":"[\"transform\"]","defaults":{"name":"Basic LLM Chain","color":"#909298"},"iconData":{"icon":"link","type":"icon"},"displayName":"Basic LLM Chain","typeVersion":2,"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":1175,"icon":"fa:tools","name":"@n8n/n8n-nodes-langchain.outputParserAutofixing","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserautofixing/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Output Parsers"]}}},"group":"[\"transform\"]","defaults":{"name":"Auto-fixing Output Parser"},"iconData":{"icon":"tools","type":"icon"},"displayName":"Auto-fixing Output Parser","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":1195,"icon":"fa:calculator","name":"@n8n/n8n-nodes-langchain.toolCalculator","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolcalculator/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Other Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Calculator"},"iconData":{"icon":"calculator","type":"icon"},"displayName":"Calculator","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]},{"id":1205,"icon":"fa:network-wired","name":"@n8n/n8n-nodes-langchain.toolWorkflow","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolworkflow/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Recommended Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Call n8n Workflow Tool"},"iconData":{"icon":"network-wired","type":"icon"},"displayName":"Call n8n Workflow Tool","typeVersion":2,"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"}]},{"id":1289,"icon":"fa:brain","name":"@n8n/n8n-nodes-langchain.toolThink","codex":{"data":{"resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolthink/"}]},"categories":["AI","Langchain"],"subcategories":{"AI":["Tools"],"Tools":["Other Tools"]}}},"group":"[\"transform\"]","defaults":{"name":"Think"},"iconData":{"icon":"brain","type":"icon"},"displayName":"Think Tool","typeVersion":1,"nodeCategories":[{"id":25,"name":"AI"},{"id":26,"name":"Langchain"}]}],"categories":[{"id":43,"name":"Personal Productivity"},{"id":47,"name":"AI Chatbot"}],"image":[]}}