Полный курс по n8n: от архитектуры до монетизации автоматизации

Глубокое погружение в n8n: от понимания внутренней логики и использования JavaScript до развертывания на VPS и стратегий заработка. Вы научитесь строить сложные системы автоматизации, интегрировать сервисы и обеспечивать стабильность workflow в продакшене.

1. Архитектура n8n: триггеры, ноды и логика передачи данных

Архитектура n8n: триггеры, ноды и логика передачи данных

Понимание n8n начинается не с изучения интерфейса, а с осознания того, как система «мыслит». В отличие от многих no-code инструментов, которые скрывают технические детали за красивыми кнопками, n8n — это визуальная надстройка над программированием. Он оперирует объектами, массивами и потоками данных так же, как это делает JavaScript-скрипт, но представляет их в виде графической схемы.

Чтобы строить сложные системы, а не просто линейные цепочки, необходимо разобраться в трех фундаментальных компонентах: нодах (узлах), структуре данных и логике выполнения.

Анатомия Workflow: Ноды и Связи

Любой сценарий автоматизации в n8n называется Workflow (рабочий процесс). Он состоит из отдельных блоков — Nodes (нод), соединенных линиями.

Каждая нода — это независимая функция. Она получает данные на вход, обрабатывает их и передает результат на выход. В n8n не существует «глобального состояния» по умолчанию: нода знает только то, что ей передали, или то, что она сама запросила у предыдущих шагов.

Типы нод

Глобально все ноды делятся на две категории:

  • Триггеры (Triggers)
  • Это стартовые точки. У них нет входа (слева), только выход (справа). Триггер ожидает определенного события, чтобы запустить выполнение всего workflow. Примеры:* получение Webhook, наступление времени (Schedule), появление новой строки в Google Sheets, сообщение в Telegram.

  • Регулярные ноды (Regular Nodes)
  • Выполняют действия или логику. Они имеют и вход, и выход. Они могут трансформировать данные, отправлять запросы во внешние API, фильтровать информацию или ветвить процесс.

    !Поток данных от триггера через действие к логической обработке

    Структура данных: Всё есть JSON

    Самый важный аспект архитектуры n8n, который отличает его от конкурентов — это формат передачи данных. n8n всегда работает с массивом объектов.

    Даже если вы обрабатываете одну заявку, внутри системы она выглядит как массив, содержащий один объект. Стандартная структура данных, выходящая из любой ноды, выглядит так:

    Обратите внимание на ключ json. Все текстовые и числовые данные (поля из CRM, текст письма, заголовки) всегда находятся внутри этого ключа. Если нода работает с файлами (картинки, PDF), добавляется второй ключевой раздел — binary.

    Почему это важно?

    Когда нода получает на вход массив из 10 элементов (например, 10 новых заказов), она по умолчанию выполнится 10 раз — по одному разу для каждого элемента (или обработает их пакетом, в зависимости от типа ноды). Это позволяет создавать циклы обработки без написания специальных циклов for или while.

    Если представить процесс обработки данных математически, то каждая нода применяет трансформацию к входящему массиву данных :

    где — массив входящих объектов, — операция ноды над конкретным объектом, а — результирующий массив, который пойдет к следующей ноде.

    Логика передачи данных (Data Flow)

    Связи между нодами (линии) передают данные. Однако в n8n есть нюанс: данные передаются от выхода к входу, но доступ к данным может быть получен и из любой предыдущей ноды, даже если она не соединена напрямую.

    Прямой поток (Input Data)

    По умолчанию нода видит только то, что ей передала предыдущая нода. Если Нода А передала данные в Ноду Б, а Нода Б передала их в Ноду В, то Нода В видит только результат работы Ноды Б. Исходные данные из А могут быть потеряны, если Б их не сохранила.

    Ссылочный поток (Referencing)

    Чтобы использовать данные из начала цепочки в самом конце, используются выражения (Expressions). Вы можете обратиться к любой ноде по её имени. Это похоже на использование переменных, но вместо переменных вы ссылаетесь на выход конкретного шага.

    Ветвление и управление потоком

    Линейные сценарии встречаются редко. Чаще всего требуется логика: «Если сумма сделки больше 10 000, отправить менеджеру, иначе — отправить письмо клиенту».

    Для этого используются логические ноды, такие как If (или Switch). Нода If принимает данные и проверяет условие. У неё два выхода: * True (верхний выход): сюда идут данные, соответствующие условию. * False (нижний выход): сюда идут остальные данные.

    Формально логику работы ноды If можно описать так:

    где — это проверка условия для каждого входящего элемента . Важно понимать, что если на вход пришло 5 объектов, и 3 из них подходят под условие, а 2 — нет, то сработают оба выхода: 3 объекта пойдут по ветке True, а 2 — по ветке False.

    !Разделение потока данных на основе условия

    Жизненный цикл выполнения (Execution Lifecycle)

    Когда срабатывает триггер, создается Execution (исполнение). Это конкретный запуск вашего сценария с конкретными данными.

  • Инициализация: Триггер получает данные (например, Webhook payload).
  • Построение графа: n8n определяет, какие ноды подключены к триггеру.
  • Последовательная обработка: Данные передаются в первую ноду. Она отрабатывает, формирует JSON-выход.
  • Передача: Этот JSON-выход становится входом для следующей ноды.
  • Завершение: Процесс останавливается, когда данные доходят до конечных нод, у которых нет исходящих связей, или когда данные «заканчиваются» (например, фильтр отсек все элементы).
  • Понимание того, что n8n передает данные пакетами (массивами), является ключом к профессиональной работе. Ошибка новичка — думать об одном объекте, когда система всегда готова к обработке множества.

    Итоги

    * Всё есть нода: Сценарий состоит из триггеров (начало) и действий (обработка). * JSON-массивы: n8n всегда передает данные как массив объектов, обернутых в ключ json. * Поток данных: Ноды обрабатывают входящие данные последовательно; доступ к данным из глубины истории возможен через прямые ссылки на имена нод. * Ветвление: Логические ноды разделяют поток данных на части, позволяя обрабатывать разные элементы массива разными путями.

    2. Продвинутая работа: JavaScript, API, Webhooks и структуры JSON

    Продвинутая работа: JavaScript, API, Webhooks и структуры JSON

    Базовые ноды позволяют строить линейные процессы, но настоящая сила n8n раскрывается при работе с кодом, сложными структурами данных и внешними интерфейсами. Переход от использования готовых интеграций к прямой работе с API и JavaScript превращает n8n из простого конструктора в полноценную среду разработки backend-логики.

    Глубокое погружение в JSON и структуру данных

    Как обсуждалось ранее, n8n оборачивает данные в объект с ключом json. Однако в реальных задачах данные редко бывают плоскими. Ответы от API часто содержат вложенные объекты и массивы.

    Доступ к вложенным данным

    Предположим, API вернул сложную структуру пользователя. Внутри n8n это выглядит так:

    Чтобы получить второй номер телефона в Expression Editor (редактор выражений), используется точечная нотация:

    {{ ("Webhook").item.json.body.someField }}

    Проблема [Object: object]

    Частая ошибка новичков — попытка вставить весь объект в текстовое поле (например, в сообщение Telegram). n8n вернет строку [Object: object]. Чтобы передать объект как текст, его нужно превратить в строку (stringify). В JavaScript это делается методом JSON.stringify().

    Нода Code: JavaScript как суперсила

    Когда стандартных нод трансформации недостаточно, используется нода Code. Она позволяет писать полноценный JavaScript. В n8n есть два режима работы этой ноды:

  • Run Once for All Items: Скрипт запускается один раз и получает на вход сразу весь массив данных. Идеально для агрегации (сумма всех заказов) или сортировки.
  • Run for Each Item: Скрипт запускается отдельно для каждого входящего элемента. Удобно для простых трансформаций строки в строку.
  • Синтаксис и методы

    Внутри ноды Code вы работаете с переменными:

    * input.item — возвращает текущий элемент (в режиме Run for Each). * return [...] — вы обязаны вернуть массив объектов.

    Пример сложной фильтрации и трансформации, которую невозможно сделать стандартными средствами:

    ``javascript // Получаем все входные данные const items = DRfDf(d)dRT_{total}nt_iit_{net}T_{total}input.all()), так и поэлементно. * HTTP Request: Универсальный инструмент для интеграции с любыми REST API. Важно правильно управлять методами (GET/POST) и аутентификацией. Webhooks: Позволяют запускать сценарии по внешним событиям. Нода Respond to Webhook* превращает асинхронный запуск в синхронный обмен данными.