Недели три назад я понял, что трачу по 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 минут, и он был кривой, но работал. Всё остальное — итерации поверх работающей основы.
