Если вы выгружали данные с сайтов вручную, то знаете, как это утомляет: нужно открыть сайт и множество ссылок, потом перейти по каждой, скопировать данные и вставить в таблицу. А если данных много, процесс превращается в нескончаемую рутину.
Хорошая новость — это можно автоматизировать без навыков программирования. Один раз настроить сценарий, и всё будет работать самостоятельно: платформа n8n возьмет данные, сохранит их в базу и отправит дальше, если нужно.
В этой статье рассмотрим, как настроить такой процесс с минимальными усилиями. Мы создадим цепочку, которая:
- получает список статей,
- сохраняет данные в PostgreSQL,
- собирает полный текст каждой публикации,
- складывает всё в базу.
Всё это не требует специальных навыков: достаточно базового понимания, как работает терминал и веб-панель. Можно разобраться, даже если вы впервые слышите про n8n.
Дальше разложим процесс по шагам — от запуска сервера до сборки рабочего процесса. В конце получите схему, которая экономит часы и делает рутину за вас.
cloud
Обзор задачи и инфраструктуры
Предположим, нужно собрать тексты всех статей раздела «Инструкции». Чтобы выполнить задачу, разобьем ее на последовательность шагов — иначе это называется пайплайном.
Что нужно сделать?
-
Собрать в каталоге названия всех статей и ссылки на них. Сайт отдает данные в каталоге статей по страницам — нельзя получить все ссылки сразу. Нужно собрать данные циклично.
-
В цикле — сохранить собранные ссылки в базу данных. Если ссылок много, надежнее всего хранить промежуточные данные в базе данных.
-
После цикла — извлечь ссылки из БД и начать новый цикл. Перед началом этапа мы получили таблицу со ссылками на статьи. Теперь нужно обработать каждую ссылку и получить текст.
-
Сохранить тексты статей. В новом цикле сохраняем данные в новую таблицу в базе данных.
Что будем использовать?
Чтобы реализовать проект, возьмем готовые облачные сервисы. В Timeweb Cloud можно быстро развернуть:
-
Облачный сервер с предустановленным образом n8n. Работа в терминале не потребуется вовсе — система сама установит зависимости и предоставит временный домен для доступа в веб-интерфейс n8n.
-
Облачная база данных (DBaaS) PostgreSQL.
Шаг 1. Создайте сервер с n8n
Чтобы не тратить время на ручную установку, воспользуйтесь готовым решением. В маркетплейсе Timeweb Cloud выберите предустановленный образ n8n и запустить сервер буквально в пару кликов.
Зайдите в панель управления и откройте раздел «Облачные серверы» в панели слева. Нажмите на кнопку «Добавить». В пункте «1. Образ» выберите вкладку «Маркетплейс», а в поиске введите n8n. Выберите появившийся вариант, подходящую локацию и конфигурацию.
Отдельное внимание уделите локации сервера. Эта статья — первая из серии статей про автоматизацию технической поддержки через n8n. В ней мы рассматриваем автоматическую выгрузку данных, а далее — использование AI-ассистента на основе выгруженных данных. Если вы планируете работать с API зарубежных сервисов, таких как OpenAI ChatGPT или Anthropic Claude, рекомендуем сразу создавать сервис за рубежом.
При выборе конфигурации учитывайте, что n8n сам по себе очень легкий — его образ не содержит ничего лишнего. Основная нагрузка приходится на память (RAM). Она используется для поддержки множества одновременных задач, записи большого объема логов/истории. Дополнительные ядра CPU пригодятся для масштабных цепочек с множеством преобразований и при большом числе одновременных запусков. Ниже сравнительная таблица по выбору подходящего конфига:
Конфигурация |
Характеристика |
Для каких задач подойдет |
1 × 3.3 ГГц, 2 ГБ, 30 ГБ |
Слабо |
Тестовые сценарии, 1-2 простых workflow без больших циклов и обработки вложений. |
2 × 3.3 ГГц, 2 ГБ, 40 ГБ |
Оптимально для большинства задач |
Небольшие автоматизации: выгрузка данных, работа с API, сохранение в БД, периодические задачи. Можно начинать с этого тарифа. |
2 × 3.3 ГГц, 4 ГБ, 50 ГБ |
Универсальный вариант |
Средняя нагрузка: десятки активных workflow, циклы по сотням элементов, работа с JSON и парсингом. Хороший запас по памяти. |
4 × 3.3 ГГц, 8 ГБ, 80 ГБ |
Для продакшна и больших сценариев |
Высокая нагрузка: постоянные cron-триггеры, обработка больших массивов данных, интеграции с несколькими сервисами. |
8 × 3.3 ГГц, 12 ГБ, 100 ГБ |
С избытком для n8n |
Подходит, если планируете ставить дополнительные контейнеры (например, очередь сообщений, собственный API). Только для n8n обычно избыточно. |
8 × 3.3 ГГц, 16 ГБ, 160 ГБ |
Избыточно |
Нет смысла брать под один n8n. Такой тариф нужен, если планируете одновременно запускать много сервисов (сервер приложений, базы, брокеры). |
В пункте «4. Сеть» оставьте выбранным публичный IPv4-адрес — он гарантирует доступность по домену из любой сети. Добавьте приватную сеть — для соединения с базой данных; можно использовать настройки по умолчанию. В остальных пунктах изменяйте параметры по необходимости. Нажмите на кнопку «Заказать».
Создание и настройка сервера занимает около 10 минут. Пока сервер создается, можно создать базу данных. Перейдите к шагу 2, а после вернитесь сюда и завершите настройку. По окончании на электронную почту придет уведомление, а в панели появится технический домен — через него мы будем работать с n8n.
URL для доступа появляется в панели вскоре после создания сервера
Перейдите по ссылке в панели. Введите данные для начала работы.
Первоначальный экран в n8n
После короткого опроса n8n предложит включить платные (в будущем) функции, которые сейчас навсегда бесплатно доступны всем новым пользователям. Среди них — история workflow, расширенная отладка ошибок и организация сценариев по папкам. Чтобы активировать эти возможности, укажите свой email и ввести код из письма.
Экран с активацией платных функций. На момент написании статьи эта функциональность бесплатна.
Настройка сервера на этом завершена.
Шаг 2. Создайте базу данных PostgreSQL
Когда сервер с n8n уже работает, нужно подготовить место для хранения данных. Для этого используем облачную базу данных PostgreSQL — DBaaS.
Это удобнее и практичнее, чем разворачивать ее самостоятельно: вам не нужно устанавливать и поддерживать оборудование, настраивать ПО и администрировать сложные хранилища. К тому же, если вам нужно отказоустойчивое решение — в Timeweb Cloud можно развернуть кластер баз данных.
Зайдите в панель управления, нажмите на таб «Базы данных» в панели слева. Нажмите на кнопку «Добавить». В пункте «1. Тип базы данных» выберите СУБД PostgreSQL 17.
В пункте «4. Сеть» можно отключить публичный IPv4-адрес — подключение к базе данных будет происходить через приватную сеть. Это не только безопаснее, но и экономнее.
Нажмите на кнопку «Заказать». База данных будет готова примерно через 5 минут.
Шаг 3. Изучите общую информацию об устройстве n8n
В n8n разобраться легко — и в этом несложно убедиться. В этом шаге посмотрим на основные элементы в n8n и изучим, за что они отвечают и когда их использовать.
Что такое ноды и зачем они нужны
В n8n любая автоматизация собирается из нод (nodes) — блоков, которые выполняют одну конкретную задачу:
Тип ноды |
Что делает |
Trigger |
Запускает workflow по событию: по времени (Schedule), по веб‑хуку, при изменении в сервисе |
Action |
Отправляет запрос или выполняет операцию: HTTP Request, отправка письма, запись в БД. |
Logic |
Управляет потоком: If, Switch, Merge, Split In Batches. |
Function / Code |
Позволяет вставить JS‑код (Function, Code) или быстрые Expressions. |
Любой сценарий можно реализовать через эти типы.
Как создавать ноды
- Нажмите «+» в правом верхнем углу рабочего поля или на стрелке выходной точки другой ноды.
- Введите в поиске название узла — пример:
http
илиpostgres
. - Кликните — нода появится и сразу откроется ее панель настроек.
- Заполните обязательные поля: URL, метод, креды. Поля с красной рамкой считаются обязательными.
- Нажмите Execute Node — вы увидите «green check» и секцию OUTPUT с данными. Это быстрый способ проверить, что узел настроен верно.
Что еще полезного есть в n8n
Возможность |
Где найти |
Зачем нужна |
Credentials |
Главная страница n8n (Overview), вкладка Credentials |
Хранит логины/токены; один раз настроить и можно использовать в любой ноде. |
Variables |
Любое поле ввода поддерживает выражения |
Динамические даты, счетчики, ссылки на данные предыдущих узлов. |
Executions |
Главная страница n8n (Overview), вкладка Executions |
Логи всех запусков: видно входные/выходные данные, ошибки, время выполнения. |
Workflow History |
Включается при активации расширенных функций Кнопка находится в верхней панели на странице Workflow |
Аналог Git: можно откатиться к любой версии сценария. |
Folders |
Главный экран Создать папку можно нажатием на икнонку папки с плюсом. Она находится рядом с сортировкой и поиском по workflow |
Удобная иерархия, если сценариев десятки. |
Templates |
Вкладка Templates слева на экране workflow, или по ссылке |
Готовые рецепты: подключение Airtable, Slack‑бот, парсинг RSS. |
Шаг 4. Соберите рабочий процесс в n8n
Теперь у нас есть всё необходимое: сервер с n8n и база PostgreSQL — можно переходить к сборке пайплайна.
На главном экране нажмите на кнопку «Create workflow» — откроется рабочая среда.
Если вы повторяете пример из статьи и что-то не получается, воспользуйтесь готовой копией рабочей среды. Ее можно легко развернуть в n8n на своем сервере и посмотреть, если возникли сложности.
Для старта пайплайна нужен триггер. Для тестов используйте «Trigger manually» — с его помощью можно запускать процесс с помощью клика по кнопке. После тестирования можно использовать любой подходящий — например, настроить выгрузку данных по времени, раз в сутки.
Окно n8n после создания workflow — выбор триггера для запуска сценария вручную или по расписанию
Составим «универсальный» пайплайн — он будет ходить по сайтам, постранично извлекать ссылки, затем проходиться по всем и извлекать данные. Правда, так как все сайты устроены по-разному и используют разные технологии, нет гарантии, что решение будет работать на любом сайте без доработок.
Получите запрос из браузера
Нажмите на «+» рядом с триггером — откроется панель выбора дальнейшего действия. В строке поиска наберите «http» и выберите «HTTP Request».
Выбор следующего шага в n8n — добавление узла «HTTP Request» для отправки запросов к сайту
Откроется панель для настройки параметров. Но можно просто импортировать нужные данные из браузера — тогда не придется вникать в детали работы HTTP-запросов.
Сейчас нужно понять, как именно браузер получает данные, чтобы отобразить их на странице. Обычно это происходит одним из двух способов: в ответе с сервера приходит готовая HTML-страница с данными или JSON-словарь.
Откройте в браузере страницу, откуда нужно взять данные. Для примера используем страницу «Инструкции». Далее откройте инструменты разработчика (DevTools) нажатием F12. Перейдите на вкладку «Network» или «Сеть».
Пример использования вкладки «Network» в DevTools для отслеживания запросов сайта и изучения их ответов
На нашем сайте-доноре есть кнопка — «Показать еще 12 публикаций». По нажатии на нее браузер сделает запрос к серверу и получит ответ. Так работает на многих сайтах.
Когда пользователь нажимает кнопку для показа деталей, обычно отправляется один запрос, который сразу возвращает нужную информацию. Изучим ответ — для этого нажмите на появившийся запрос и перейдите на вкладку «Response» или «Ответ» (1). Там действительно есть вся информация про статью, включая ссылку (2).
Если следуете примеру, найдите GET-запрос, который начинается на https://content.timeweb.com/items/cloud_tutorials?...
— именно он возвращает список публикаций. У вас он может отличаться, если вы анализируете другой сайт.
DevTools — просмотр вкладки «Response» для анализа JSON-ответа сервера с данными о статьях и ссылками
На вкладке «Headers» или «Заголовки» можно изучить структуру ответа — чтобы понять, как он строится. Видим, что в примере на сервер передаются параметры — limit
и offset
. Первый ограничивает количество выдаваемых статей в одном запросе, в нашем случае до 12 штук. Второй — сдвиг относительно начала. В запросе на скриншоте offset
равен 6. Это верно, потому что 6 статей изначально отображаются на странице, когда мы заходим, и браузеру нет смысла получать их вновь.
DevTools — вкладка «Headers» показывает параметры запроса, включая limit и offset для постраничной загрузки данных
Чтобы получать статьи с других страниц, с каждым запросом будем сдвигать параметр offset и накапливать данные.
Скопируйте команду в формате cURL — она включает всю информацию о запросе. Нажмите правой кнопкой мыши по запросу в веб-инспекторе, выберите параметр «Копировать значение» (1), а далее «Копировать как cURL» (2). В примере запрос выглядит так:
curl 'https://content.timeweb.com/items/cloud_tutorials?limit=12&offset=6&fields\[\]=url&fields\[\]=title&fields\[\]=image&fields\[\]=date_created&fields\[\]=tags&fields\[\]=author.name&fields\[\]=author.link_github&fields\[\]=author.link_email&fields\[\]=author.link_telegram&fields\[\]=author.bio&fields\[\]=author.tags&fields\[\]=author.path&fields\[\]=author.avatar&fields\[\]=author.details&fields\[\]=author_reviewed.name&fields\[\]=author_reviewed.gender&fields\[\]=author_reviewed.link_github&fields\[\]=author_reviewed.link_email&fields\[\]=author_reviewed.link_telegram&fields\[\]=author_reviewed.bio&fields\[\]=author_reviewed.tags&fields\[\]=author_reviewed.path&fields\[\]=author_reviewed.avatar&fields\[\]=author_reviewed.details&fields\[\]=author_reviewed.details_expert&fields\[\]=topic.name&fields\[\]=topic.path&fields\[\]=views&fields\[\]=rating&fields\[\]=similar_tutorials.similar_tutorial.url&fields\[\]=similar_tutorials.similar_tutorial.title&fields\[\]=similar_tutorials.similar_tutorial.topic&meta=filter_count&filter=%7B%22_and%22:\[%7B%22status%22:%7B%22_eq%22:%22published%22%7D%7D,%7B%22_or%22:\[%7B%22publish_after%22:%7B%22_null%22:%22true%22%7D%7D,%7B%22publish_after%22:%7B%22_lte%22:%22$NOW(%2B3+hours)%22%7D%7D\]%7D\]%7D&sort=-date_created' \
-H 'accept: application/json, text/plain, */*' \
-H 'accept-language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7' \
-H 'dnt: 1' \
-H 'origin: https://timeweb.cloud' \
-H 'priority: u=1, i' \
-H 'referer: https://timeweb.cloud/' \
-H 'sec-ch-ua: "Chromium";v="139", "Not;A=Brand";v="99"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: cross-site' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36'
Копирование запроса из DevTools в формате cURL для последующего импорта в n8n
Теперь можно вернуться в n8n. Нажмите на кнопку «Import cURL» и вставьте полученное значение.
Окно n8n — импорт команды запроса в формате cURL в узел «HTTP Request»
Важно: если вы копируете команду из Firefox, в URL могут появиться лишние символы ^
, которые мешают выполнению запроса.
Чтобы их убрать:
Способ 1 — прямо в n8n
- После импорта команды нажмите на значок шестеренки рядом с полем URL в интерфейсе n8n.
- Выберите «Add Expression» — URL превратится в редактируемое поле.
- Нажмите Ctrl + F (или Cmd + F на macOS), включите режим «Replace», укажите
^
в поле поиска и оставьте поле замены пустым. - Нажмите «Replace All», чтобы удалить все лишние
^
.
Способ 2 — через VSCode
- Вставьте скопированную cURL-команду в новый файл
.txt
или.sh
в VSCode.
Нажмите Ctrl + H (Cmd + H на macOS) — это откроет режим поиска и замены. - В поле «Найти» введите
^
. - Поле «Заменить на» оставьте пустым.
- Нажмите «Заменить все» или сочетание Alt + Enter (Cmd + Alt + Enter на macOS).
Скопируйте исправленную команду обратно в n8n.
Нажмите на кнопку «Import», а далее на «Execute step». Спустя немного времени в окне справа должны появиться данные, полученные с сайта.
Результат запроса в n8n — полученные с сайта данные отображаются в окне «OUTPUT»
Теперь вы умеете получать данные с сайта через n8n.
Добавьте цикличный алгоритм
Вспомним задачу: нужно циклично пройтись по всем страницам и собрать данные в базу данных. Для этого построим следующий пайплайн:
Схема цикличного пайплайна в n8n для постраничной загрузки данных и записи их в базу
Сперва добавьте тестовый триггер — «Trigger manually». Он запускается, когда вы нажимаете на кнопку запуска рабочего процесса. Подключайте к нему все ноды, которые будете создавать, по порядку — например, как на скриншоте выше.
В первой ноде устанавливаются значения limit
и offset
. Если они уже есть во входных данных — оставляются как есть. Если нет — limit
принимается равным 100, а offset
— 0. Эти параметры нужны для постраничной загрузки данных с сервера. Добавьте в рабочую область ноду Edit fields. Нажмите на надпись в центре — «Add Field».
Настройки ноды Edit Fields
В поле «name» введите строку limit
. В поле «value»:
{{ $json.limit !== undefined ? $json.limit : 100 }}
Добавьте новое поле нажатием на надпись «Add Field». Назовите его offset
, а в его значение вставьте аналогичную строку:
{{ $json.offset !== undefined ? $json.offset : 0 }}
Обе конструкции выполняют одну роль — динамически подставляют значения. Если это первый запуск ноды в цикле, то выставляется значение, которое идет после двоеточия. Если до этого данные уже были собраны, сюда приходит новое значение переменной.
Проставьте обоим переменным тип данных Number — это можно сделать по кнопке справа от названия переменной. Включите значение в поле «Include Other Input Fields» — оно будет получать значение в цикле из ноды, которая будет изменять параметры.
Получится такая нода:
Настройки ноды Edit Fields
В ноде HTTP Request выполняется запрос к API с подставленными значениями limit
и offset
. Сервер возвращает массив данных под ключом data
.
Перенесите ноду с запросом, которую вы получили ранее. Значения поля URL должно быть типа Expression (1). Там, где должны быть переменные (2) (3) для получения данных в цикле, вставьте переменные из предыдущей ноды — {{ $json.limit }}
и {{ $json.offset }}
соответственно.
Настройки ноды HTTP Request
Далее в ноде If проверяется результат запроса — пустой ли массив data
. Если массив пустой, это значит, что данные закончились. В этом случае цикл останавливается. Если массив не пустой — обработка продолжается. Для реализации добавьте ноду If в рабочую область. Она должна содержать единственное условие — {{ $json.data }} (1); Array (2) -> is empty(3)
.
Настройки ноды If
Далее, в ответвлении «false» находится нода Split Out. Там массив данных data
разбивается на отдельные элементы. Каждая запись получается отдельно — это нужно для поштучной записи в базу.
Настройки ноды Split Out
Добавьте ноду Insert or update rows in a table (PostgreSQL) в workflow. Теперь нужно сообщить n8n, как подключиться к базе данных — в поле «Credential to connect with» выберите « + Create new credential». В панели Timeweb Cloud на вкладке базы данных найдите данные для подключения. Импортируйте:
- Host — значение из поля «Приватный IP»;
- Database — по умолчанию в Timeweb Cloud:
default_db
; - User / Password — значения из полей «Логин пользователя» и «Пароль пользователя» соответственно.
Настройка доступов к PostgreSQL — Postgres account
Данные в базе хранятся в таблицах. Для составления простых таблиц воспользуйтесь нейросетью — она быстро составит SQL-запрос, который можно вставить в веб-интерфейс. Можно воспользоваться нодой Execute a SQL query в n8n — выполнить ее следует только один раз при настройке проекта. Например, для хранения статей запрос может выглядеть так:
CREATE TABLE tutorials (
id SERIAL PRIMARY KEY,
author_name TEXT,
topic_name TEXT UNIQUE,
topic_path TEXT,
text TEXT
);
После этого таблица готова к заполнению данными.
В ноде Insert or update rows in a table (Postgres) каждый элемент записывается в таблицу tutorials
. В таблицу записываются название темы (topic_name
), имя автора (author_name
), ссылка на тему (topic_path
). Это позволяет создавать новые записи или обновлять уже существующие по ключевому полю.
Настройки ноды Insert or update rows in a table
Данные из ноды записи в базу поступают в ноду Merge. Она объединяет два потока:
- Результаты записи в базу.
- Старые значения
limit
иoffset
, с которыми был выполнен предыдущий запрос.
В этом случае нода записи в PostgreSQL ничего не вернет — но мы включаем ее в Merge. Это нужно, чтобы следующая нода запустилась ровно после того, как завершится запись в таблицу базы данных.
Настройки ноды Merge
Merge должен отдавать только значения второй ноды входного потока, так как первая ничего не возвращает — мы подключили его, чтобы дождаться, пока нода PostgreSQL завершит запись строк в таблицу.
После объединения в ноде Edit fields значение offset
увеличивается на limit
(offset = offset + limit). Это подготавливает параметры для следующего запроса к API. Новый offset
позволяет запросить следующую страницу данных на сервере.
Настройки ноды Edit fields
Далее цикл замыкается — выход конечного Edit fields снова подключается к начальному Edit fields. Таким образом workflow повторяет все шаги заново: устанавливает новые значения limit
и offset
, делает следующий запрос, проверяет результат и записывает данные в базу.
Цикл выполняется до тех пор, пока данные с сервера не закончатся. Когда сервер вернет пустой массив data
, нода If
«увидит» это и остановит повторение.
Если на этом этапе возникли сложности, воспользуйтесь примером из статьи — его можно открыть в вашем окружении и подробнее изучить, что пошло не так.
Добавьте второй цикличный алгоритм для извлечения текстов
В нашем проекте ветвь true в ноде If вызывается, когда все данные извлечены. В этом случае нужно получить все ссылки из базы данных и пройтись по каждой из них. Используем совсем простой пайплайн:
Второй цикл в n8n — обход ссылок из базы и сохранение текста статей в таблицу
Здесь в цикле вызывается запрос для одной статьи. Ее текст записывается в базу данных.
Нода Select rows from a table (PostgreSQL) получает из базы данных строки, которые добавили в прошлом цикле. В n8n не реализован способ промежуточного хранения данных, поэтому использовать базу данных в этом случае — оптимальное решение. В настройках всё просто: используйте операцию SELECT
, нажмите на переключатель Return All — чтобы вернуть все значения без лимита.
Настройки ноды Select rows from a table
Предыдущая нода вернет сразу все статьи, но нам нужно пройтись по каждой и сохранить ее содержимое. С этим поможет нода Loop over items — она и является элементом-началом цикла. У нее есть два вывода — loop
и done
. Всё, что должно быть в цикле, подключается в первый вывод. Во второй подключается последовательность действий после окончания цикла.
Далее нужно выполнить запрос. Чтобы получить URL нового запроса, повторите те же действия: используйте инструменты разработчика и анализируйте все запросы, которые отдают JSON или HTML. В этом случае, чтобы получить текст статьи, пригодится запрос, который называется как URL страницы со статьей. Понятнее это выглядит на скриншоте — цифрой 1 обозначен текст, который нужно вытащить, а под цифрой 2 тот самый запрос.
Обратите внимание, что запрос в примере появляется только при переходе в статью с раздела «Инструкции». Если обновить страницу уже находясь в статье, то данные будут отдаваться серверов в формате HTML-кода. Чтобы научиться извлекать такие данные из кода, изучите инструкцию из документации n8n.
Если возникают сложности — вы можете воспользоваться готовым примером из этой статьи на GitHub и разобраться с n8n самостоятельно.
В ноде запроса нужно подставить лишь путь к статье, который отдается в базе данных. Как и ранее, переведите поле URL в тип Expression. Вставьте путь в запрос, как на скриншоте.
Настройки ноды HTTP Request
Теперь добавьте в таблицу базы данных текст, который получен из предыдущей ноды.
Настройки ноды Update rows in a table
На этом цикл завершен — можно промежуточно проверить работу.
Шаг 5. Настройка расписания запуска
Чтобы не запускать сценарий руками каждый раз, можно настроить автоматический старт по расписанию. Это полезно, если нужно регулярно обновлять базу — например, раз в день или раз в час.
n8n делает это через специальный узел «Schedule Trigger». Добавьте его вместо «Trigger manually» в пайплайн.
В его настройках можно обозначить интервал срабатывания, от одной секунды.
Настройка узла «Schedule Trigger» в n8n для автоматического запуска сценария по расписанию
На этом весь пайплайн завершен. Чтобы Schedule Trigger работал, активируйте собранный сценарий — включите переключатель «Inactive» в верхней части экрана справа:
На основе полученных данных можно, например, автоматизировать техподдержку — бот сможет самостоятельно искать знания в базе данных.
Обзор часто встречающихся ошибок
В таблице приведены основные ошибки, их симптомы и решения.
Симптом |
Причина (ошибка) |
Рабочее решение |
При переключении веб-хука из «Test» в «Prod» сценарий сразу падает с сообщением «The workflow has issues and cannot be executed» |
В одном из узлов нарушена валидация (обязательное поле пустое, устаревший credential, и т.д.) |
Открыть workflow, узлы с красным треугольником привести «в зеленое» — заполнить пропущенные поля, обновить креды, снова активировать |
Узел PostgreSQL отвечает Connection refused |
Сервис БД недоступен по сети: закрыт firewall, не тот порт/хост, нет разрешения Docker-сети |
Если БД развернута в Docker: проверить, что БД слушает 5432, ее IP в white-list, контейнер n8n в той же сети; добавить Если используется DBaas Timeweb Cloud: проверить, что база данных и хост n8n находятся в одной приватной сети; проверить, что база данных активна. |
Узел падает с «Cannot read properties of undefined» |
Скрипт/узел обращается к полю, которого нет во входящем JSON |
Перед обращением ставить узел IF или |
Выполнение обрывается, в логе: n8n may have run out of memory |
Сценарий обрабатывает слишком много элементов за раз; Split In Batches держит большой массив в RAM |
Уменьшить размер батча, добавить узел Wait, разбить workflow, или поднять тариф с большим объемом ОЗУ |
Split In Batches на последней итерации выдаёт OOM или «висит» |
Утечка памяти при множестве повторов цикла |
Ставить Batch Size минимально нужный, добавлять Wait 200-500 мс, при больших объемах переходить на Queue-Mode |
При подключении к БД получаете pq: SSL is not enabled on the server |
Клиент пытается использовать SSL, а сервер его не поддерживает |
В строке подключения добавить |
Заключение
Автоматическая выгрузка данных через n8n — это не про сложный код или бесконечные скрипты. Это про один раз настроенный сценарий, который сам собирает данные и складывает их в базу.
Мы прошли весь путь:
- создали сервер с n8n без лишних команд в терминале,
- развернули облачную базу PostgreSQL,
- настроили процесс, который циклично собирает ссылки и тексты статей,
- сделали запуск по расписанию, чтобы всё работало без вашего участия.
Всё это работает на готовой облачной инфраструктуре: не нужно администрировать серверы или базы вручную. Можно спокойно масштабироваться — менять тарифы под рост задач, подключать новые сервисы и улучшать сценарий.
На этом примере вы освоили один из самых распространенных паттернов в n8n:
- пройтись по страницам сайта, собрать все ссылки,
- для каждой ссылки получить данные,
- записать всё в базу.
Этот же подход подходит для:
- сбора прайс-листов и мониторинга конкурентов,
- архивации контента,
- интеграции с CRM.
Всё зависит только от вашей фантазии. n8n хорош тем, что его можно подстроить под любую задачу без сложного кода.