Как автоматически репостить из RSS
Автоматический репостинг из RSS-лент в Telegram-канал — это один из самых эффективных способов поддерживать регулярный поток контента без ручного копирования. Вы можете настроить автоматическую публикацию новостей, статей и обновлений из любых сайтов с RSS/Atom-лентой, используя специализированных ботов, платформы автоматизации или собственные скрипты.
Как работает репостинг из RSS в Telegram
RSS (Really Simple Syndication) — это стандартизированный формат, который сайты используют для публикации обновлений. RSS-лента представляет собой структурированный список последних записей, каждая из которых содержит заголовок, ссылку, краткое описание и дату публикации.
Когда вы настраиваете автоматический репостинг, бот или сервис периодически проверяет RSS-ленту на наличие новых записей. При обнаружении нового элемента он форматирует содержимое и отправляет его сообщением в ваш Telegram-канал. Интервал проверки варьируется — от одной минуты до нескольких часов — в зависимости от выбранного инструмента.
Что понадобится для начала работы
- Telegram-канал, в котором вы являетесь администратором
- Бот, созданный через @BotFather, добавленный в канал как администратор с правом отправки сообщений
-
URL RSS-ленты источника, из которого вы хотите репостить (обычно доступна по адресам вида
example.com/feed,example.com/rssилиexample.com/feed.xml)
Чтобы найти RSS-ленту сайта, попробуйте добавить
/feedили/rssк его адресу. Также можно открыть исходный код страницы и поискать тег<link rel="alternate" type="application/rss+xml">.
Способ 1: Бот @TheFeedReaderBot (самый простой)
Это самый быстрый способ настроить RSS-репостинг без программирования и внешних сервисов. Подходит для каналов вроде «Новости Москвы» или «IT-дайджест», где нужен стабильный поток контента из одного-двух источников.
Шаг 1: Запустите бота
Откройте Telegram и найдите @TheFeedReaderBot. Нажмите Start для активации.
Шаг 2: Подпишитесь на RSS-ленту
Отправьте боту URL вашей RSS-ленты напрямую:
https://habr.com/ru/rss/all/all/
Бот распознает ленту и покажет последние записи для подтверждения.
Шаг 3: Подключите канал
Используйте команду /addchannel и следуйте инструкциям бота:
- Добавьте
@TheFeedReaderBotкак администратора вашего канала - Предоставьте ему разрешение Post Messages (Отправка сообщений)
- Подтвердите канал, отправив боту его
@usernameили числовой ID
Шаг 4: Привяжите ленту к каналу
После подключения канала используйте меню бота, чтобы назначить вашу RSS-подписку конкретному каналу. Новые записи из ленты теперь будут публиковаться автоматически.
Важно: Бесплатная версия @TheFeedReaderBot проверяет ленты каждые 30–60 минут. Если вам нужны более быстрые обновления, рассмотрите платный тариф или другой способ.
Способ 2: Платформы автоматизации (Zapier, Make, Albato)
Платформы автоматизации дают больше контроля над форматированием, фильтрацией и объединением нескольких источников. Для русскоязычных пользователей также доступна платформа Albato — отечественный аналог с поддержкой на русском языке.
Настройка через Zapier
Шаг 1: Создайте новый Zap
Войдите в Zapier и нажмите Create Zap. Выберите RSS by Zapier как триггер и укажите событие New Item in Feed.
Шаг 2: Настройте RSS-триггер
Вставьте URL вашей RSS-ленты. Бесплатный тариф Zapier проверяет ленту каждые 15 минут, платные — каждые 1–5 минут.
Шаг 3: Добавьте действие Telegram
Выберите Telegram Bot как действие. Укажите Send Message и подключите бота через API-токен от @BotFather.
Шаг 4: Настройте шаблон сообщения
Сконфигурируйте формат публикации. Типичный шаблон:
📰 {{title}}
{{summary}}
🔗 Читать далее: {{link}}
Zapier позволяет очищать HTML-теги, обрезать длинный текст и добавлять хештеги автоматически.
Шаг 5: Протестируйте и включите
Запустите тест, чтобы увидеть, как сообщение выглядит в канале, затем активируйте Zap.
Настройка через Make (Integromat)
Make предлагает визуальный конструктор сценариев и часто предоставляет более щедрые лимиты на бесплатном тарифе.
- Создайте новый Scenario (Сценарий)
- Добавьте модуль RSS → Watch RSS Feed Items
- Добавьте модуль Telegram Bot → Send a Message
- Сопоставьте поля RSS (title, description, link) с шаблоном сообщения
- Установите интервал проверки (бесплатный тариф допускает 15-минутные интервалы)
- Активируйте сценарий
Способ 3: Самостоятельное решение — n8n или скрипты
Для максимального контроля и нулевых регулярных расходов можно запустить собственную автоматизацию на своём сервере.
Через n8n (self-hosted)
n8n — бесплатный open-source инструмент автоматизации, который можно развернуть на собственном сервере или VPS.
- Установите n8n через Docker:
docker run -d --name n8n -p 5678:5678 n8nio/n8n - Откройте веб-интерфейс по адресу
http://your-server:5678 - Создайте workflow: узел RSS Read → узел Telegram
- В узле RSS укажите URL вашей ленты
- В узле Telegram введите токен бота и ID канала (формат
-100XXXXXXXXXX) - Настройте запуск по Cron-триггеру (например, каждые 10 минут)
Через Python-скрипт
Для разработчиков, которые предпочитают лёгкое и полностью подконтрольное решение:
import feedparser
import requests
import json
import time
BOT_TOKEN = "your_bot_token"
CHANNEL_ID = "@your_channel"
FEED_URL = "https://habr.com/ru/rss/best/daily/"
SEEN_FILE = "seen_entries.json"
def load_seen():
try:
with open(SEEN_FILE, "r") as f:
return set(json.load(f))
except FileNotFoundError:
return set()
def save_seen(seen):
with open(SEEN_FILE, "w") as f:
json.dump(list(seen), f)
def send_message(text):
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
requests.post(url, json={
"chat_id": CHANNEL_ID,
"text": text,
"parse_mode": "HTML",
"disable_web_page_preview": False
})
seen = load_seen()
feed = feedparser.parse(FEED_URL)
for entry in reversed(feed.entries):
if entry.id not in seen:
message = f"<b>{entry.title}</b>\n\n{entry.summary[:300]}...\n\n<a href='{entry.link}'>Читать далее</a>"
send_message(message)
seen.add(entry.id)
time.sleep(2) # Пауза для соблюдения лимитов Telegram
save_seen(seen)
Запускайте скрипт через cron каждые 10–15 минут:
*/10 * * * * /usr/bin/python3 /path/to/rss_to_telegram.py
Аренда VPS в России (Timeweb, Selectel, REG.RU) обойдётся от 150–300 рублей в месяц, что делает решение крайне экономичным для каналов с 5 000+ подписчиков.
Способ 4: Другие Telegram-боты для RSS
Помимо @TheFeedReaderBot, существует ряд альтернатив:
- @RSSBot — простой бот для RSS-подписок прямо в Telegram
- @Feed2Telegram_bot — ориентирован на репостинг в каналы с возможностями форматирования
- @FeedlyBot — интеграция с вашим аккаунтом Feedly
Процесс настройки у всех похож: добавляете бота, указываете URL ленты, привязываете канал.
Продвинутые настройки: фильтрация и форматирование
Фильтрация по ключевым словам
Большинство платформ автоматизации позволяют фильтровать записи из RSS перед публикацией. Например, если вы ведёте канал «Финансы и инвестиции», но подписаны на общий экономический RSS-источник, можно настроить фильтр, который пропускает только записи с ключевыми словами акции, инвестиции, рынок или дивиденды.
Форматирование через HTML
Telegram поддерживает ограниченный набор HTML-тегов в сообщениях:
-
<b>жирный</b>— для заголовков -
<i>курсив</i>— для выделения -
<a href="url">текст ссылки</a>— для кликабельных ссылок -
<code>моноширинный</code>— для технических терминов
Объединение нескольких RSS-лент
Если ваш канал агрегирует контент из нескольких источников, настройте отдельный RSS-триггер для каждого. Добавляйте метку источника к каждому сообщению, чтобы подписчики видели, откуда пришла новость:
📡 Источник: Хабр
📰 Заголовок статьи
Краткое описание...
🔗 Читать далее
Советы и лайфхаки
- Контролируйте частоту публикаций. Если RSS-источник выдаёт 50 статей в день, ваши подписчики будут завалены. Оптимальная частота для большинства каналов — 3–10 постов в день. Используйте фильтры или выбирайте ленты, соответствующие вашему темпу.
- Добавляйте ценность сверх заголовка. Каналы, которые просто зеркалят RSS без контекста, быстро теряют подписчиков. Дополняйте репосты собственным комментарием, эмодзи-рейтингом или кратким резюме на 1–2 предложения.
- Используйте превью ссылок грамотно. Telegram автоматически генерирует превью для ссылок — с картинкой и заголовком статьи. Если превью уже содержит всю нужную информацию, не дублируйте её в тексте.
- Мониторьте работоспособность лент. RSS-ленты иногда меняют URL или перестают работать. Настройте еженедельную проверку или используйте сервис мониторинга, который уведомит вас, когда лента перестанет обновляться.
- Создайте веб-зеркало канала. Сервисы вроде tgchannel.space позволяют экспортировать содержимое вашего Telegram-канала в SEO-оптимизированный блог. Так ваш курированный RSS-контент получит вторую жизнь в виде поискового веб-архива, доступного аудитории из Google и Яндекс.
- Тестируйте на закрытом канале. Прежде чем подключать RSS к основному каналу с тысячами подписчиков, создайте тестовый приватный канал и убедитесь, что форматирование и частота публикаций вас устраивают.
Частые ошибки
Ошибка 1: Бот не добавлен как администратор канала
Почему это неправильно: Без прав администратора (а именно разрешения «Post Messages») бот не сможет отправлять сообщения в канал, и вы увидите молчаливые ошибки без каких-либо уведомлений.
Как избежать: Перейдите в Настройки канала → Администраторы → Добавить администратора, выберите вашего бота и включите разрешение Отправка сообщений.
Ошибка 2: Публикация полных статей вместо анонсов
Почему это неправильно: Многие RSS-ленты включают полный HTML-текст статьи. Публикация полного текста создаёт чрезмерно длинные сообщения, которые Telegram может обрезать, а читатели — проигнорировать.
Как избежать: Используйте поле summary или description вместо content и обрезайте текст до 300–500 символов с кнопкой «Читать далее».
Ошибка 3: Игнорирование лимитов Telegram на отправку сообщений
Почему это неправильно: Telegram ограничивает ботов примерно 20 сообщениями в минуту в один чат. Если в вашей RSS-ленте накопилось 100 записей, бот получит временную блокировку.
Как избежать: Добавьте задержку 1–3 секунды между сообщениями и обрабатывайте очереди постепенно. При первой настройке рекомендуется пропустить существующие записи и начать публикацию только новых.
Ошибка 4: Использование RSS-ленты, требующей авторизации
Почему это неправильно: Некоторые сайты защищают RSS-ленты авторизацией или paywall. Бот получит пустой ответ или ошибку.
Как избежать: Проверьте URL ленты в режиме инкогнито браузера. Если вы не можете открыть её без авторизации — бот тоже не сможет.
Ошибка 5: Отсутствие дедупликации
Почему это неправильно: Без отслеживания уже опубликованных записей бот может отправить одну и ту же статью повторно, особенно при перезапуске или сбое.
Как избежать: Убедитесь, что ваш инструмент сохраняет список обработанных entry.id или guid между запусками.
Часто задаваемые вопросы
Можно ли репостить из нескольких RSS-лент в один канал?
Да, большинство ботов и платформ автоматизации поддерживают несколько подписок на один канал. Просто повторите процесс настройки для каждой ленты. Следите за общим объёмом публикаций, чтобы не перегрузить подписчиков.
Будут ли изображения из RSS отображаться в Telegram?
Зависит от способа. Превью ссылок в Telegram обычно подтягивают главное изображение статьи автоматически. Если вам нужны изображения прямо в теле сообщения, потребуется более продвинутая настройка с использованием метода sendPhoto Telegram Bot API и извлечением URL изображений из тегов <enclosure> или <media:content> ленты.
Как быстро новые записи из RSS появляются в канале?
Это зависит от инструмента. @TheFeedReaderBot проверяет каждые 30–60 минут. Бесплатный тариф Zapier — каждые 15 минут. Собственные решения могут проверять каждые 1–2 минуты, хотя чаще чем раз в 5 минут редко бывает необходимо.
Можно ли отредактировать или удалить репост после отправки?
Боты могут редактировать свои сообщения через метод editMessageText Bot API, но большинство RSS-инструментов не делают этого автоматически. Если статья обновлена в RSS-ленте, она будет обработана как новая запись или проигнорирована — в зависимости от того, как инструмент отслеживает прочитанные элементы.
Можно ли отложить публикацию RSS-постов на определённое время?
Да. Платформы автоматизации (Zapier, Make, n8n) позволяют добавлять шаги задержки и планирования. Вы можете собирать новые RSS-записи и отправлять их пакетом в заданное время — например, ежедневно в 9:00 утра по московскому времени. В n8n для этого используется комбинация RSS-триггера, узла ожидания и условий на основе времени.