Эй, народ, залетайте в мастерскую. Я тут опять кручу гайки у автоматизации, и сегодня у нас штука, которая реально экономит часы: автопостинг из 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 улетает кривая разметка, а бот в канале сидит как мебель и ничего не публикует.
Вот поэтому я люблю собирать не «демку на коленке», а нормальную рабочую схему. В ней есть четыре опоры:
- Планировщик, который стабильно запускает сценарий.
- Чтение RSS-ленты.
- Защита от повторов.
- Подготовка текста перед отправкой.
Да, в 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 указываю адрес ленты. После первого прогона смотрю, какие поля реально прилетели. Меня обычно интересуют:
titlelinkpubDatecontentилиcontentSnippetguid, если он есть
Не ленись открыть результат и посмотреть на сырой 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: чем чище сообщение, тем выше шанс, что его дочитают. Я стараюсь не лепить в пост всё подряд. Лучше такой порядок:
- Сильный заголовок.
- Пара строк анонса.
- Переход к полной статье.
Если источник отдаёт сухие названия, можно на шаге 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», а именно нормальный механизм для канала, блога или новостной ленты, собирай конвейер с запасом по адекватности. Один раз сделаешь по уму — и дальше эта железяка будет таскать контент почти сама, пока ты занимаешься чем-то полезнее, чем ручной копипастой.