-
Notifications
You must be signed in to change notification settings - Fork 0
TelegramToRss
telegram-to-rss is an open-source tool that generates RSS feeds from Telegram chats. The project is available at github.com/aigoncharov/telegram-to-rss. It authenticates as a personal Telegram account via the MTProto API, discovers all subscribed channels and groups, and exposes each as an RSS feed URL. Available as a Docker image and as a Python package (pip install telegram-to-rss).
Authentication uses a one-time QR code scan; the session is persisted to a local database file. Configuration is via environment variables: TG_API_ID and TG_API_HASH from my.telegram.org, BASE_URL for the serving address, and optional UPDATE_INTERVAL (default 3600 seconds), FEED_SIZE (default 200 entries), and MAX_VIDEO_SIZE_MB.
Placed in Tools / Assess / center.
The tool solves a genuine information-consolidation problem: many communities and news sources publish exclusively to Telegram channels with no RSS alternative, fragmenting the reading workflow across apps. Converting them to RSS feeds centralises consumption in a single reader.
The default deployment is a long-lived server (Docker Compose, always-on). A more operationally lightweight pattern — viable given the tool writes feed data to DATA_DIR as static files — is a scheduled GitHub Actions job: persist the session file in encrypted storage (base64-encoded GitHub secret or private S3 bucket), run the update cycle, push the generated XML files to GitHub Pages or Cloudflare R2, then upload the refreshed session back. This removes the always-on server requirement at the cost of some glue code, since the tool does not currently expose a native "generate and exit" mode.
Center position reflects the niche scope (Telegram-specific), the operational complexity of MTProto session management in CI, and the need for small patches or wrappers to support the scheduled-job pattern cleanly.
Trial gate: feeds from at least three Telegram channels accessible from an RSS reader, with the session persisted across runs without re-authentication.