Опубліковано 28 червня 2026 р.
n8n + AI-агенти у 2026: реальні воркфлоу, що виживають у продакшені
Більшість гайдів про n8n + AI-агентів помирають на другому тижні. Збирай Telegram lead-бота і дайджест лідів з ретраями, гілками помилок і передачею. Готовий JSON.
Ти підключаєш n8n до LLM через ноду AI Agent (@n8n/n8n-nodes-langchain.agent). Тригер передає їй повідомлення, ти причеплюєш чат-модель, пам'ять і один чи кілька інструментів, а нода сама крутить цикл виклику інструментів. Увесь бот поміщається на один холст і імпортується як JSON.
Розвести вузли нескладно. Підніми свій n8n у Docker за п'ять хвилин, наведи ноду AI Agent на дешеву модель, дай їй інструмент, що пише у твій CRM, і матимеш Telegram-бота, що відповідає на presales-питання і ловить ліди. Повна кваліфікаційна розмова на gpt-4o-mini коштує частку цента.
Складне починається на другому тижні. Модель повертає текст, що наступна нода не може розібрати. API CRM таймаутить. Клієнт пише щось, чого демо ніколи не бачило, і воркфлоу падає о 2-й ночі без нагляду. Більшість контенту про n8n + AI зупиняється на демо. Цей гайд робить комутацію, а тоді витрачає більше часу на те, що тримає воркфлоу живим: ретраї, гілки помилок, ідемпотентність, крок ручного підтвердження і алертинг. Нижче два реальних воркфлоу з JSON для копіпасту, плюс чесна секція про те, коли варто замість цього взяти Make, Zapier або просто Python.
Чому більшість n8n + AI-туторіалів помирають на другому тижні
Ти бачив ці твіти. Збери 47 агентів на n8n і Claude, напиши комент "agent", і я надішлю шаблон у DM. Тисячі букмарків, а воркфлоу ніколи не стикається з реальним клієнтом. Практик на X у травні сказав це прямо: у кожного відео про n8n AI Agent один недолік, їх роблять для контенту, а не щоб вставити в бізнес щодня.
Тред на r/AiAutomations з червня 2026 пояснює чому. Рік тому з'єднати інструменти через n8n, Make чи Zapier виглядало вражаюче. Тепер це легка частина. Клієнти не купують стек інструментів. Вони купують менше помилок і менше ручної рутини. Інший тред того ж тижня сказав ще гостріше: AI-автоматизація не перенасичена. Перенасичена слабка автоматизація.
Тож цей гайд робить комутацію, а далі припускає, що ти хочеш, щоб воно працювало. Кожен воркфлоу нижче містить те, що демо опускає: ретраї, коли API підводить, гілку помилок, що алертить тебе при збої замість того, щоб вмирати тихо, ідемпотентний гард, щоб ретрай не списав з клієнта двічі, і крок ручного підтвердження для дій, які ти не хочеш автоматизувати наосліп.
Піднімай n8n на своєму сервері за п'ять хвилин
n8n має відкритий код за ліцензією Sustainable Use License, але не є open source у розумінні OSI. Прочитай це правильно: ти можеш запускати його, змінювати і селф-хостити безкоштовно, зокрема для клієнта, що платить. Ліцензія лише забороняє пакувати сам n8n як хостинговий продукт, що конкурує з n8n Cloud. Для майже всіх, хто це читає, він поводиться як безкоштовна програма.
Найшвидший спосіб спробувати це один контейнер:
# Quick test — single container, data in a volume:
docker volume create n8n_data
docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8nВідкрий http://localhost:5678 і маєш редактор. Цього достатньо, щоб зібрати все з цього гайду. Для чогось реального запускай з базою і ключем шифрування, щоб виконання пережили рестарт:
# docker-compose.yml — n8n + Postgres, behind your own reverse proxy (nginx / Caddy / Traefik)
services:
postgres:
image: postgres:16
restart: always
environment:
POSTGRES_USER: n8n
POSTGRES_PASSWORD: change-me
POSTGRES_DB: n8n
volumes:
- pg_data:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
depends_on: [postgres]
ports:
- "5678:5678"
environment:
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres
DB_POSTGRESDB_DATABASE: n8n
DB_POSTGRESDB_USER: n8n
DB_POSTGRESDB_PASSWORD: change-me
N8N_HOST: n8n.example.com
N8N_PROTOCOL: https
WEBHOOK_URL: https://n8n.example.com/
N8N_ENCRYPTION_KEY: replace-with-a-long-random-string
GENERIC_TIMEZONE: Europe/Berlin
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
pg_data:Вистав WEBHOOK_URL на свій реальний https-домен, інакше вебхуки (Telegram, форми) будуть стукати не туди, і твої тригери виглядатимуть зламаними без очевидної причини. Я гоню цей стек на Hetzner CX22 з 4 ГБ RAM десь за €5 (≈ ₴230; курс ₴46/€1, червень 2026) на місяць, з Postgres у комплекті, і він обслуговує десятки виконань на годину на одному ядрі.
Ноду AI Agent на одній схемі
Кожен n8n AI-воркфлоу має однакову форму. Тригер спрацьовує. Нода AI Agent отримує повідомлення. Знизу до агента причеплюються три речі: модель, пам'ять і щонайменше один інструмент. Агент вирішує, що робити, викликає інструменти за потреби і повертає результат.
- Тригер запускає виконання: Telegram, чат-віджет, вебхук, розклад.
- Агент це мозок. Один із LangChain-типів нод, що постачає n8n, наприклад
@n8n/n8n-nodes-langchain.agent. Ти пишеш системний промпт і ставиш ліміт ітерацій. - Модель це LLM. Вставляй OpenAI, Anthropic, Google або локальну модель через Ollama. Той самий слот, міняй ноду.
- Пам'ять це те, що агент пам'ятає між ходами. Window Buffer Memory тримає останні N повідомлень. Дай кожному юзеру свій session id, інакше всі ділять один мозок.
- Інструменти це дії. Інструмент це нода, яку агент може викликати: HTTP-запит, твій CRM, калькулятор, під-воркфлоу.
Агент не виконує твій код сам. Він повертає виклик інструменту, n8n запускає інструмент, результат іде назад, і цикл повторюється, поки агент не відповість або не впреться в ліміт. Це той самий цикл, що я збираю вручну на чистому Python ось тут. n8n просто малює його квадратиками.
Білд один: Telegram lead-бот, що кваліфікує і відповідає
Робочий Telegram-бот в одному воркфлоу на імпорт. Він відповідає на presales-питання з пам'яттю, а коли відвідувач скидає на реальний лід, викликає інструмент, що пише лід у твій CRM з назвою компанії та id чату.
Створи бота через @BotFather у Telegram, скопіюй токен у n8n Telegram-креденшел, тоді імпортуй цей JSON (встав на холст або Import from URL/file):
{
"name": "Telegram lead bot",
"nodes": [
{
"parameters": { "updates": ["message"] },
"id": "a1f00000-0000-4000-8000-000000000001",
"name": "Telegram Trigger",
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.1,
"position": [220, 300]
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.message.text }}",
"options": {
"systemMessage": "You are the pre-sales bot for Acme. Answer questions about pricing and features in under 3 sentences. If the visitor names a company and a real need, call the qualify tool with those details. Never invent prices."
}
},
"id": "a1f00000-0000-4000-8000-000000000002",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.7,
"position": [460, 300]
},
{
"parameters": {
"model": { "__rl": true, "mode": "list", "value": "gpt-4o-mini" },
"options": {}
},
"id": "a1f00000-0000-4000-8000-000000000003",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [340, 520]
},
{
"parameters": {
"sessionId": "={{ $('Telegram Trigger').item.json.message.chat.id }}"
},
"id": "a1f00000-0000-4000-8000-000000000004",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"typeVersion": 1.3,
"position": [520, 520]
},
{
"parameters": {
"name": "qualify",
"description": "Call when a visitor is a qualified lead. Posts company, need, and Telegram chat id to the CRM.",
"method": "POST",
"url": "https://crm.example.com/api/leads",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={\n \"company\": \"{{ $fromAI('company', 'the visitor company name') }}\",\n \"need\": \"{{ $fromAI('need', 'what they want to buy') }}\",\n \"chat_id\": \"{{ $('Telegram Trigger').item.json.message.chat.id }}\"\n}"
},
"id": "a1f00000-0000-4000-8000-000000000005",
"name": "qualify (HTTP tool)",
"type": "@n8n/n8n-nodes-langchain.toolHttpRequest",
"typeVersion": 1.1,
"position": [700, 520]
},
{
"parameters": {
"chatId": "={{ $('Telegram Trigger').item.json.message.chat.id }}",
"text": "={{ $json.output }}",
"additionalFields": {}
},
"id": "a1f00000-0000-4000-8000-000000000006",
"name": "Telegram (reply)",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [720, 300]
}
],
"connections": {
"Telegram Trigger": {
"main": [[{ "node": "AI Agent", "type": "main", "index": 0 }]]
},
"AI Agent": {
"main": [[{ "node": "Telegram (reply)", "type": "main", "index": 0 }]]
},
"OpenAI Chat Model": {
"ai_languageModel": [[{ "node": "AI Agent", "type": "ai_languageModel", "index": 0 }]]
},
"Window Buffer Memory": {
"ai_memory": [[{ "node": "AI Agent", "type": "ai_memory", "index": 0 }]]
},
"qualify (HTTP tool)": {
"ai_tool": [[{ "node": "AI Agent", "type": "ai_tool", "index": 0 }]]
}
},
"settings": { "executionOrder": "v1" }
}Кілька речей не очевидні з квадратиків. У ноді пам'яті sessionId прив'язаний до id чату Telegram, тож два клієнти, що пишуть одночасно, тримають окремі історії. Інструмент юзає n8n-вираз $fromAI(), щоб витягнути аргументи, які обрала модель, з її відповіді в тіло HTTP. Нода відповіді читає $json.output, туди агент кладе фінальний текст.
Один рядок у тому системному промпті робить найбільше роботи: "If the visitor names a company and a real need, call the qualify tool." Без нього агент буде базікати вічно і нічого не зловить.
Зроби так, щоб воно вижило у продакшені
Бот вище працює на щасливому шляху. Продакшен це всі інші шляхи. П'ять змін перетворюють демо на щось, що можна лишити працювати.
- Ретраї на хитрих викликах. Увімкни Retry On Fail на будь-якій ноді, що лізе в мережу: інструмент CRM, відповідь у Telegram, будь-який HTTP-запит. Постав три спроби з кількома секундами між ними. Більшість минущих збоїв (502, rate limit) проходять з другої спроби і ніколи не доходять до тебе.
- Додай error-воркфлоу. n8n постачає ноду Error Trigger. Наведи на неї воркфлоу, і коли будь-яке виконання падає, вона спрацьовує з повним контекстом помилки. Слилай це в Telegram-канал або Slack. Тепер ти дізнаєшся про зламане джобо з телефону, а не від злючого клієнта через тиждень.
- Захистись від подвійних запусків. Вебхуки іноді спрацьовують двічі. Telegram retry'є повідомлення, про яке думає, що ти не підтвердив. Якщо твій інструмент списує гроші чи шле email, ідемпотентність не опціональна. Зберігай id вхідного повідомлення перед тим, як діяти, і пропускай, якщо вже бачив. Дешевий патерн: пиши id у таблицю Postgres з unique-обмеженням і дай дублікату відвалитись.
- Встав людину в цикл для незворотних дій. Нода Wait у n8n може поставити виконання на паузу і відновити по вебхуку. Використай це для кроку підтвердження: агент драфтить refund, воркфлоу чекає, людина клікає approve у Slack, виконання йде далі. Автоматизуй чернетку, а не саме рішення.
- Наглядай. Список виконань n8n показує кожен запуск і його статус. Для дашборду через багато інстансів проєкти типу n8n-dashboard синхронять твої воркфлоу і скорять їхнє здоров'я. Роби щоденну перевірку впалих виконань, і ловитимеш дрейф до того, як він влетить у копієчку.
Тіп для дебагу від самої команди n8n: запускай ноду інструменту саму по собі, без агента, щоб побачити її сирий вивід. Це економить токени і каже, проблема в інструменті чи в моделі.
Білд два: дайджест скорингу лідів за розкладом
Не кожному воркфлоу потрібен чат. Цей бігає за розкладом: щоранку витягує нові рядки з Google Sheet, скорить ліди через AI Agent і кидає рейтинговий дайджест у Telegram-канал. CRM-тред на r/AiAutomations з червня гонить рівно цей патерн для агента з нерухомості, що втрачав угоди через повільний follow-up.
{
"name": "Daily lead digest",
"nodes": [
{
"parameters": {
"rule": { "interval": [{ "field": "cronExpression", "expression": "0 9 * * *" }] }
},
"id": "b2f00000-0000-4000-8000-000000000001",
"name": "Every morning 9am",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [220, 300]
},
{
"parameters": {
"operation": "read",
"documentId": { "__rl": true, "value": "YOUR_SHEET_ID" }
},
"id": "b2f00000-0000-4000-8000-000000000002",
"name": "Read new leads",
"type": "n8n-nodes-base.googleSheets",
"typeVersion": 4.5,
"position": [440, 300]
},
{
"parameters": {
"promptType": "define",
"text": "={{ JSON.stringify($json.all) }}",
"options": {
"systemMessage": "You are a lead-scoring analyst. Rank these leads by likelihood to close this quarter. Return a short digest: rank, company, one-line reason. Top 5 only."
}
},
"id": "b2f00000-0000-4000-8000-000000000003",
"name": "AI Agent (score)",
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.7,
"position": [660, 300]
},
{
"parameters": {
"chatId": "@your-leads-channel",
"text": "={{ 'Daily lead digest\n\n' + $json.output }}",
"additionalFields": {}
},
"id": "b2f00000-0000-4000-8000-000000000004",
"name": "Post to channel",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [880, 300]
}
],
"connections": {
"Every morning 9am": { "main": [[{ "node": "Read new leads", "type": "main", "index": 0 }]] },
"Read new leads": { "main": [[{ "node": "AI Agent (score)", "type": "main", "index": 0 }]] },
"AI Agent (score)": { "main": [[{ "node": "Post to channel", "type": "main", "index": 0 }]] }
},
"settings": { "executionOrder": "v1" }
}Патерн, що варто вкрасти: детермінований тригер, AI посередині судить і збагачує, детермінована дія в кінці. Модель лише вирішує скор. Таблиця і канал це звичайні ноди. Щоб скорити кожен рядок окремо, а не всю таблицю разом, встав ноду Split In Batches між читанням і агентом. Тримай модель на короткому повідку, і воркфлоу стає набагато менше дивним.
Цифри, що насправді важать
Це коштує менше, ніж ти думаєш, якщо селф-хостиш.
| Self-host (Docker) | n8n Cloud Starter | Zapier | |
|---|---|---|---|
| Ліцензія ПЗ | Sustainable Use, $0 | включено | включено |
| Вартість на місяць | ~€5 VPS, безліміт | €24, ~2 500 виконань | $20–100+, за таск |
| Де живуть дані | твій сервер | сервери n8n | сервери Zapier |
| Виконання | безліміт | за лімітом | за лімітом, за таск |
| Може локальну модель | так | ні | ні |
Велика цифра це виконання. Zapier і n8n Cloud беруть за запуск. Self-hosted ні. Якщо твій вебхук спрацьовує 50 000 разів на місяць, ця різниця окупить купу VPS.
LLM це інший рядок витрат, і він малий. Кваліфікаційна розмова це десь 2 000 токенів туди й назад. За ціною gpt-4o-mini це значно менше цента за розмову (перевір сторінку OpenAI за актуальним тарифом, він рухається). Для бота, що робить сотні чатів на день, рахунок за модель це похибка округлення проти одного працівника.
Коли n8n це не той інструмент (візьми Make, Zapier або Python)
n8n не завжди відповідь, і вдавати, що це так, робить тебе менш надійним, а не більше. Бери його, коли хочеш візуальну оркестрацію, селф-хостинг і AI в одному місці. Бери щось інше, коли:
- Ти ненавидиш візуальні білдери. Якщо квадратики і дроти тебе гальмують, пиши цикл агента на Python чи TypeScript. Ти втрачаєш drag-and-drop інтеграції, але отримуєш повний контроль і нормальний дебаггер. (Цей цикл я написав у 60 рядків тут.)
- Клієнт хоче нуль адміну. n8n Cloud, Zapier і Make хостять усе. Клієнт платить щомісячний рахунок і ніколи не SSH'ить нікуди. Для нетехнічного малого бізнесу це правильний трейд.
- Воркфлоу це два кроки і ніколи не змінюється. Google Form у Google Sheet не потребує n8n. Юзай нативну інтеграцію.
- Потрібна субсекундна латентність на високому обсязі. n8n додає оверхед на кожне виконання. Написаний вручну воркер буде швидшим, і на десятках тисяч івентів на секунду n8n просто не тієї форми.
Народ на r/AiAutomations мав рацію. Бізнесу байдуже, це n8n, Make чи Python. Їм важливо, що це економить час, стопить помилки, виживає на edge-case і далі працює після передачі. Обирай інструмент, що дає їм саме це.
Чотири причини, чому твій воркфлоу ламається (і фікс)
- Агент циклиться, поки не спалить твій токен-бюджет. Причина: немає ліміту ітерацій, або інструмент завжди еррорить, тож агент retry'їть вічно. Фікс: постав
maxIterationsна агенті (10 цілком достатньо), і зроби так, щоб помилки інструменту повертали повідомлення, з якого агент може відновитись, замість throw. - Пам'ять тече між юзерами. Причина: у ноді пам'яті немає
sessionId, тож кожен юзер пише в одну бесіду. Фікс: поставsessionIdу значення на юзера, наприклад id чату Telegram. - Вебхук працює в редакторі і більше ніде. Причина:
WEBHOOK_URLвказує на localhost чи http, поки ти сервиш через https. Фікс: виставWEBHOOK_URLна продакшен-https URL, і test URL у ноді співпадатиме. - Ретраї подвоюють твої side-effect'и. Причина: Retry On Fail перезапускає ноду, що шле email чи списує картку. Фікс: ідемпотентність на всьому незворотному, перед тим як увімкнути ретраї.
Що далі (і коли варто відступити)
Тепер у тебе два воркфлоу, що роблять реальну роботу, і харденінг, щоб вони працювали. Наступний крок: під'єднай lead-бота до твого справжнього CRM і дай йому побігати тиждень. Наглядай за списком виконань. Помилки кажуть, що фіксити далі.
Якщо хочеш цикл агента без GUI, я зібрав той самий патерн на чистому Python. Для запуску багатьох агентів у продакшені я описав стек моніторингу і алертингу, яким користуюсь, щоб тримати їх живими о 3-й ночі.
Джерела
-
n8n Sustainable Use License — що ліцензія дозволяє і що обмежує (селф-хостити і змінювати вільно; перевпаковувати n8n як конкуруючу платформу за гроші не можна). https://docs.n8n.io/privacy-and-security/sustainable-use-license
-
n8n Docs — Advanced AI / AI Agent node — нода агента та її слоти під модель, пам'ять і інструменти; структура workflow JSON і типи з'єднань (
ai_languageModel,ai_memory,ai_tool), що фігурують по тексту. https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent/agent/ -
n8n Docs — Self-host with Docker — шаблон docker-compose,
WEBHOOK_URL,N8N_ENCRYPTION_KEYі конфіг Postgres-бекенду. https://docs.n8n.io/hosting/installation/docker/ -
n8n pricing — тарифи Cloud (Starter від €24 з ~2 500 виконань, аж до €800 для високонавантажених планів), станом на червень 2026. Ціни змінюються; перевір живу сторінку. https://n8n.io/pricing/ Отримано 28 червня 2026.
-
n8n Docs — Error handling — нода Error Trigger, Retry On Fail і Continue On Fail із секції про продакшен-харденінг. https://docs.n8n.io/flow-logic/error-handling/
-
OpenAI pricing — ціна gpt-4o-mini за токен, основа для оцінки вартості розмови. https://platform.openai.com/docs/pricing Отримано 28 червня 2026.
Я будую і підтримую n8n + AI-автоматизації для клієнтів, на твоєму сервері чи на моєму. Почни проєкт, і я триматиму воркфлоу живими після того, як передам їх тобі.