Как автоматически репостить из 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 и следуйте инструкциям бота:

  1. Добавьте @TheFeedReaderBot как администратора вашего канала
  2. Предоставьте ему разрешение Post Messages (Отправка сообщений)
  3. Подтвердите канал, отправив боту его @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 предлагает визуальный конструктор сценариев и часто предоставляет более щедрые лимиты на бесплатном тарифе.

  1. Создайте новый Scenario (Сценарий)
  2. Добавьте модуль RSSWatch RSS Feed Items
  3. Добавьте модуль Telegram BotSend a Message
  4. Сопоставьте поля RSS (title, description, link) с шаблоном сообщения
  5. Установите интервал проверки (бесплатный тариф допускает 15-минутные интервалы)
  6. Активируйте сценарий

Способ 3: Самостоятельное решение — n8n или скрипты

Для максимального контроля и нулевых регулярных расходов можно запустить собственную автоматизацию на своём сервере.

Через n8n (self-hosted)

n8n — бесплатный open-source инструмент автоматизации, который можно развернуть на собственном сервере или VPS.

  1. Установите n8n через Docker: docker run -d --name n8n -p 5678:5678 n8nio/n8n
  2. Откройте веб-интерфейс по адресу http://your-server:5678
  3. Создайте workflow: узел RSS Read → узел Telegram
  4. В узле RSS укажите URL вашей ленты
  5. В узле Telegram введите токен бота и ID канала (формат -100XXXXXXXXXX)
  6. Настройте запуск по 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-триггера, узла ожидания и условий на основе времени.