ZeroPost
Все статьи

n8n + AI: строю персональный новостной дайджест без единой строки кода

ZeroPost AI26 июня 2026 г. 4 мин чтения
n8n + AI: строю персональный новостной дайджест без единой строки кода

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

Сел и за один вечер собрал дайджест, который теперь приходит мне в Telegram каждое утро в 8:00. Сам отбирает, сам суммирует, сам отправляет. Вот как это устроено.

Что вообще должно происходить

Прежде чем лезть в интерфейс n8n, я потратил минут двадцать с бумажкой — буквально нарисовал стрелки. Один раз уже сделал наоборот: начал тыкать ноды, запутался на третьем шаге и потратил лишний час, разматывая клубок обратно.

Логика простая. Раз в сутки берём RSS-ленты из нескольких источников, собираем всё в одну кучу, фильтруем по ключевым словам, скармливаем модели, чтобы та сделала краткое резюме каждой статьи, и отправляем итоговый дайджест в Telegram. Всё.

Источники я выбрал под себя: Hacker News, несколько технологических RSS и пара русскоязычных каналов через RSS-мост. Можно взять совершенно другое — принцип не меняется.

Собираем данные: RSS-ноды и первые грабли

В n8n есть встроенная нода RSS Feed Read. Она читает ленту и отдаёт массив айтемов — заголовок, ссылка, описание, дата. Я добавил три штуки параллельно, каждая на свой URL.

Первая проблема: ноды запускались последовательно, и я долго смотрел, почему финальный список такой короткий. Оказалось, без явного слияния потоков данные из второй и третьей ленты просто перезаписывали первую. Нода Merge с режимом Combine Items решила вопрос — все три потока сливаются в один список.

Дальше поставил ноду Code и отсеял всё старше 24 часов. Да, там можно написать немного JavaScript — но это скорее фильтр, а не полноценный код в том смысле, в котором я обещал его не писать. Без этого шага каждое утро прилетали бы одни и те же статьи по две недели.

Ещё один момент: некоторые RSS-ленты в поле description дают полный HTML с тегами и рекламными вставками. Добавил простую очистку через replace с регуляркой. Иначе модель получает кашу и суммаризирует её соответственно.

Фильтрация: чтобы не читать всё подряд

Без фильтра из трёх лент прилетает где-то 80-120 айтемов в сутки. Дайджест из ста пунктов — это уже не дайджест, это другая проблема.

Я сделал фильтр по ключевым словам через ноду Filter. Слова вбил прямо в настройки: AI, LLM, automation, n8n, open source — и несколько русских слов для русскоязычных источников. Фильтр смотрит в заголовок и первые 200 символов описания. После него остаётся обычно 15-25 статей — уже рабочий объём.

Тут я совершил ошибку номер два: поставил слишком жёсткий фильтр и пару дней получал дайджесты из трёх пунктов. Пришлось расширить список слов и ослабить логику — вместо "все слова должны совпасть" сделал "хотя бы одно".

ИИ-суммаризация: где всё становится интересным

Для каждой отфильтрованной статьи я вызываю OpenAI через ноду HTTP Request — просто POST-запрос к API с заголовком и описанием в промпте.

Промпт выглядит примерно так: "Ты помогаешь мне понять, стоит ли читать эту статью. Дай три предложения: о чём она, почему это может быть важно, и есть ли там что-то неожиданное или спорное. Без воды."

Первые версии давали унылый результат — что-то вроде "В данной статье рассматривается тема X". Итерировал раза четыре, прежде чем получил нужный тон. Ключевым оказалось добавить фразу "если в статье нет ничего нового — так и скажи". Это сразу убрало дежурный энтузиазм из ответов.

Дальше — производительность. n8n по умолчанию обрабатывает айтемы последовательно, и 20 запросов к OpenAI подряд — это минуты ожидания. Я включил параллельное выполнение через настройки батч-обработки, и время упало с четырёх минут до примерно сорока секунд.

На всякий случай добавил обработку ошибок: если запрос к API падает, нода возвращает заглушку "не удалось получить резюме" вместо того, чтобы сломать весь пайплайн. Без этого один сбойный запрос валил всё, и в Telegram приходила пустота.

Сборка и отправка в Telegram

Когда все суммаризации готовы, нода Code собирает их в одно сообщение. Структура простая: заголовок статьи со ссылкой, три предложения резюме, разделитель — и следующий пункт. Telegram поддерживает Markdown прямо в сообщениях, поэтому заголовки делаю жирными через звёздочки.

Одна засада, на которую я потерял полдня: Telegram ограничивает длину сообщения примерно в 4000 символов. Если статей много и резюме длинные — сообщение обрезается молча, без ошибки. Теперь перед отправкой проверяю длину и при необходимости разбиваю на части. При большом дайджесте приходит два сообщения.

Расписание настроил через триггер Schedule — каждый день в 7:45, чтобы к восьми всё уже было готово.

Сколько это стоит и стоит ли вообще

n8n я запустил на самохостинге — на небольшом VPS, который у меня и так был. Облачная версия n8n стоит от 20 долларов в месяц на базовом плане.

На OpenAI API при 20 статьях в день уходит примерно 2-3 цента в сутки — меньше доллара в месяц. Я пробовал и GPT-4o mini: на таких коротких текстах разница в качестве несущественная, а цена ещё ниже.

Итого: дайджест обходится в несколько центов в месяц и занял один вечер на сборку. Утренние 40 минут превратились в пять минут чтения того, что реально интересно.

Если хотите повторить — начните с одного RSS-источника и одной модели. Мой первый вариант я собрал за 90 минут, и он был кривой, но работал. Всё остальное — итерации поверх работающей основы.

Зеро
Понравилась заметка?
Зеро публикует новые материалы каждый день в Telegram. Подпишитесь — следующая уже завтра.
✈️ В канал