У n8n нет кнопки «запустить бота». Есть холст. На него перетаскивают узлы, прямоугольники с одной операцией внутри, и соединяют их стрелками в цепочку. Собранная цепочка называется воркфлоу и выполняется целиком при каждом запуске. На этом движке работают наши ассистенты, которые отвечают клиентам в чатах, и сценарии попроще: отчёт по расписанию, очистка почтового ящика.
Из чего это сделано
По расписанию или по вебхуку — с одного из двух стартует почти любая цепочка узлов, и первый узел в ней зовут триггером. Дальше обычные узлы: сходить в чужой API, отфильтровать по условию, позвать нейросеть, записать результат в базу. Каждый узел получает данные от предыдущего и передаёт их следующему.
Вебхук — это просто URL. Кто-то присылает на него данные, и с этого момента цепочка начинает работать.
n8n называет исполнением полный проход цепочки, с первого узла и по последний. По исполнениям смотрят, что пришло на вход и что получилось на выходе. Если что-то упало, видно, на каком узле.
Что мы строим на нём
Одни узлы разбирают сообщение клиента и решают, звать ли оператора. Другие в шесть утра открывают почтовый ящик и решают, что там мусор, а что нет.
Во-первых, ассистенты: бот отвечает в чате, уточняет детали и в сложных случаях передаёт диалог человеку. Как устроен наш конструктор ботов, подробно разобрано в обзоре парка.
Во-вторых, сценарии «событие → действие» без чата и часто без нейросети вообще. У нас есть пример совсем без чат-бота: Gmail Cleaner. Воркфлоу раз в сутки открывает почтовый ящик, прогоняет письма через белый и чёрный список, а то, что не попало ни туда, ни туда, отправляет на классификацию модели gpt-4o-mini. Итог: письмо удаляется или остаётся с пометкой и коротким отчётом в Telegram. На 15 сентября этот воркфлоу стоит на паузе, но как пример устройства он рабочий.
Почему воркфлоу не рисуют руками
Визуальный редактор звучит как инструмент для тех, кто не пишет код: перетащил узел, соединил стрелкой, готово. Но ни один воркфлоу в нашем парке не нарисован руками. Ни разу.
Один файл настроек описывает бота, и конструктор сам собирает из него готовый workflow-JSON, обычно 60–80 узлов; топология у всех ботов одинаковая. Сборка детерминированная: тот же конфиг даёт байт-в-байт тот же файл, потому что идентификаторы узлов и их положение на холсте считаются от имени бота, а не генерируются случайно.
Столько узлов никто не держит в голове.
Поэтому правка конфига в git превращается в понятный diff, а не в перетасовку сотни случайных id. Как это устроено внутри, разбираем в отдельной статье про конструктор.
Что здесь ломается и как это видно
У обычных сбоев узнаваемые лица. Общий ключ модели у бота, который поймал всплеск сообщений, отвечает 429: «too many requests», и бот молчит минуту-другую, пока лимит не отпустит. Токен канала протухает: VK или Telegram присылают «invalid or could not be processed», и сообщения перестают доходить, хотя воркфлоу активен. Вебхук отвечает 404 при включённом воркфлоу: это залипший кэш пути, который лечится циклом «выключить — включить»: кэш при этом сбрасывается.
5 августа воркфлоу всего парка встали на одиннадцать минут, с 05:43 до 05:53. Причину сперва искали в памяти: узел отправки сообщения во внешний сервис упал с ошибкой «Workflow did not finish, possible out-of-memory issue», и версия о нехватке памяти выглядела логично. Не подтвердилась. Картинка, из-за которой упал узел, весила 363 килобайта, а лимит памяти у n8n давно за четыре гигабайта. Процесс просто закрутился на 100% CPU и перестал отвечать по HTTP даже локально. Помог обычный docker restart — минута простоя вместо часа гипотез.
Сколько это стоит
3 900 ₽ в месяц — цена сценария, и она не зависит от того, сколько в нём узлов и сколько раз в день он срабатывает. Счёт простой. Платите за сценарий целиком: например, за то, что заявка с сайта сама попадает в CRM и в мессенджер, а не разбирается по числу узлов в воркфлоу. Второй сценарий и каждый следующий стоят столько же. Что входит в сценарий, а что нет, смотрите на странице «Автоматизация». Если у системы клиента нет API или процесс нужно менять под сценарий, это отдельная работа: 2 500 ₽ в час, по факту того, что выяснилось на разговоре.