Автопостинг из RSS в Telegram через n8n: рабочая схема - Блог Папы Карло

Опубликовано: 5 месяцев назад
Просмотров: 81

Эй, народ, залетайте в мастерскую. Я тут опять кручу гайки у автоматизации, и сегодня у нас штука, которая реально экономит часы: автопостинг из RSS в Telegram через n8n.

Сразу по делу. Если нужен вариант, который не капризничает на ровном месте, я обычно собираю связку Schedule Trigger → RSS Read → Remove Duplicates → Set/Code → Telegram. Такая схема читает ленту по расписанию, отсеивает повторы, приводит текст в нормальный вид и отправляет пост в канал. Дальше покажу, как это настроить, где чаще всего всё спотыкается и что проверить перед запуском.

  • Покажу базовую схему, которая подходит под новостной канал, блог и контент-дайджест.
  • Разберу, когда брать RSS Feed Trigger, а когда удобнее жить через Schedule Trigger.
  • Дам пример структуры сообщения для Telegram.
  • Оставлю чек-лист запуска, чтобы не ловить дубли, пустые посты и молчание бота.

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

Оглавление

  • Почему я беру именно эту схему
  • Две рабочие модели и чем они отличаются
  • Что подготовить перед сборкой
  • Пошаговая настройка workflow в n8n
  • Как оформить сообщение для Telegram
  • Где обычно всё ломается
  • Чек-лист перед публикацией
  • Вывод

Почему я беру именно эту схему

На бумаге всё выглядит просто: взял RSS, ткнул в Telegram и погнали. На практике у такой истории часто всплывают приколы: лента отдаёт несколько записей пачкой, один и тот же материал приезжает повторно, в Telegram улетает кривая разметка, а бот в канале сидит как мебель и ничего не публикует.

Вот поэтому я люблю собирать не «демку на коленке», а нормальную рабочую схему. В ней есть четыре опоры:

  1. Планировщик, который стабильно запускает сценарий.
  2. Чтение RSS-ленты.
  3. Защита от повторов.
  4. Подготовка текста перед отправкой.

Да, в n8n есть RSS Feed Trigger, и он тоже умеет запускать workflow, когда в ленте появляется новая запись. Но в реальных проектах я часто выбираю вариант через Schedule Trigger и RSS Read. Причина простая: так удобнее контролировать расписание, тестировать логику, ловить ошибки и понимать, что именно пришло из источника на каждом шаге. Особенно когда источников несколько или когда лента слегка кривая.

Две модели: быстрая и крепкая

Схема Когда подходит Плюсы На что смотреть
RSS Feed Trigger → Telegram Тест, прототип, один источник Собирается быстро, мало узлов Сложнее расширять, меньше контроля над обработкой
Schedule Trigger → RSS Read → Remove Duplicates → Set/Code → Telegram Канал, дайджест, регулярный автопостинг Понятная логика, гибкая фильтрация, защита от дублей Нужно один раз аккуратно настроить поля

Для статьи с заголовком «Автопостинг из RSS в Telegram через n8n: рабочая схема» я бы тащил именно вторую модель. Она взрослее, крепче и спокойнее переносит реальную нагрузку.

Что подготовить перед сборкой

Перед тем как открывать канвас в n8n, я готовлю три вещи.

1. RSS-ленту

Нужен адрес ленты, который реально отдаёт новые записи. Проверь, что там есть заголовок, ссылка и дата публикации. Идеально, когда ещё приходит guid или какой-то стабильный идентификатор.

2. Telegram-бота

Бота создаём через BotFather, получаем токен, добавляем его в канал и даём право на публикацию. Вот этот пункт народ часто пролетает на повороте: бот уже создан, токен есть, а в канал он добавлен криво. В итоге тест как будто проходит, а публикации нет.

3. Понимание формата поста

Реши заранее, что именно должно улетать в Telegram: только заголовок и ссылка, короткий анонс, заголовок плюс дата, либо уже подчищенный текст с эмодзи и подписью источника. Когда это не продумано, workflow быстро превращается в склад случайных костылей.

Пошаговая настройка workflow в n8n

Шаг 1. Ставлю Schedule Trigger

Я обычно стартую с интервала в 10–15 минут. Для новостных каналов этого хватает с головой. Если источник публикует редко, можно хоть раз в час. Логика тут простая: слишком частый опрос даёт суету, слишком редкий — задержку.

Ещё один важный момент: проверь таймзону workflow. Когда расписание живёт в одной зоне, а сервер — в другой, можно долго удивляться, почему запуск идёт не тогда, когда ты ждёшь.

Шаг 2. Подключаю RSS Read

В узле RSS Read указываю адрес ленты. После первого прогона смотрю, какие поля реально прилетели. Меня обычно интересуют:

  • title
  • link
  • pubDate
  • content или contentSnippet
  • guid, если он есть

Не ленись открыть результат и посмотреть на сырой JSON. Это пять минут работы, которые потом спасают от часа мата.

Шаг 3. Убираю повторы через Remove Duplicates

Вот это место я считаю обязательным. Если в ленте одна и та же запись приехала повторно, в канал она второй раз ехать не должна. Чаще всего я сравниваю по link или guid. Если источник чудной и у него поля пляшут, можно собрать свой ключ из заголовка и ссылки.

В крепком варианте я ориентируюсь на значение, которое не меняется у одной и той же публикации. Тогда автопостинг из rss в telegram не превращается в бесконечную карусель одинаковых сообщений.

Шаг 4. Добавляю Set или Code для подготовки текста

Дальше я обычно привожу запись к нормальной структуре. Например, делаю поля:

  • post_title — заголовок
  • post_url — ссылка
  • post_date — дата
  • post_text — короткий анонс

Если лента отдаёт жирный кусок HTML, его лучше подрезать. Telegram любит аккуратный текст, а не полотно на пол-экрана. Я часто оставляю 200–400 символов анонса, а полный материал отправляю уже ссылкой.

Если нужно, сюда же ставлю IF-узел: например, пропускать только записи с нужным словом в заголовке, только статьи из конкретной категории или только материалы со свежей датой.

Шаг 5. Настраиваю Telegram

В узле Telegram выбираю отправку сообщения, подключаю токен бота и указываю канал. Обычно использую username канала в формате с собачкой. После этого собираю текст поста.

Рабочий шаблон у меня обычно выглядит так:

<b>{{$json.post_title}}</b>

{{$json.post_text}}

<a href="{{$json.post_url}}">Читать материал</a>

Этого уже хватает, чтобы n8n telegram бот автопостинг делал аккуратно и спокойно. Если хочется, можно добавить дату, эмодзи, подпись рубрики или имя источника.

Как я оформляю сообщение, чтобы оно читалось нормально

Есть один старый закон Telegram: чем чище сообщение, тем выше шанс, что его дочитают. Я стараюсь не лепить в пост всё подряд. Лучше такой порядок:

  1. Сильный заголовок.
  2. Пара строк анонса.
  3. Переход к полной статье.

Если источник отдаёт сухие названия, можно на шаге Set или Code слегка причесать текст. К примеру, убрать лишние спецсимволы, сократить слишком длинный заголовок, привести дату к одному виду. А вот полноценный рерайт я бы выносил уже в отдельную ветку, если задача действительно требует ИИ-обработки.

Ещё практичный совет: не пихай в один пост весь HTML из RSS. Это почти всегда выглядит неряшливо. Для Telegram лучше короткий и плотный формат.

Кстати, если у тебя не один источник, а сразу пачка лент, логика почти не меняется. Я обычно добавляю список RSS-адресов, прогоняю их по очереди и уже потом свожу всё к одному формату. Так схема масштабируется нормально и не просит каждый раз пересобирать workflow с нуля.

Где обычно всё ломается

Бот не публикует в канал

Смотри права. В девяти случаях из десяти проблема не в n8n, а в том, что бот не получил нормальную роль в канале.

Посты дублируются

Проверь, по какому полю у тебя работает дедупликация. Если источник каждый раз меняет служебные поля, а ты сравниваешь не по тем значениям, канал начнёт закидывать повторами.

Приходит слишком длинный текст

Значит, нужно резать анонс ещё на этапе подготовки. Оставь краткий ввод и ссылку на оригинал.

Ломается форматирование

Проверь parse mode и убери кривые теги из текста. Я чаще выбираю HTML, потому что он предсказуемее для жирного текста и ссылок.

Workflow молчит по расписанию

Тут я первым делом смотрю три вещи: опубликован ли workflow, верная ли таймзона и реально ли срабатывает триггер по заданному интервалу.

Небольшой апгрейд, если хочется схему помощнее

Когда базовая связка уже работает, я обычно докидываю одну-две полезные фишки:

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

Но важный момент такой: сначала подними базовый конвейер, и только потом тюнингуй. Иначе очень легко навесить гирлянду из умных узлов на схему, которая ещё сама не научилась стабильно читать ленту.

Чек-лист перед запуском

  • RSS-лента отдаёт новые записи.
  • Бот создан, токен сохранён, канал подключён.
  • У бота есть право публиковать.
  • Schedule Trigger настроен по нужной частоте.
  • Таймзона проверена.
  • RSS Read читает поля title, link, pubDate.
  • Remove Duplicates сравнивает по стабильному полю.
  • Текст для Telegram укорочен и вычищен.
  • Тестовый пост уходит в канал в нужном формате.

Вывод

Если подвести итог по-человечески, то рабочая схема для rss в telegram через n8n выглядит так: запуск по расписанию → чтение ленты → защита от дублей → подготовка текста → публикация в Telegram. Я сам люблю именно этот вариант, потому что он не выглядит игрушкой на один вечер. Его легко тестировать, расширять и чинить, когда источник начинает чудить.

Так что если тебе нужен не просто «автопостинг из rss в telegram», а именно нормальный механизм для канала, блога или новостной ленты, собирай конвейер с запасом по адекватности. Один раз сделаешь по уму — и дальше эта железяка будет таскать контент почти сама, пока ты занимаешься чем-то полезнее, чем ручной копипастой.

Метки: , , , , , ,