Skip to content

MatNoble/rss-to-telegram

Repository files navigation

📰 RSS 到 Telegram 推送系统 🚀

基于 Cloudflare Worker 的服务,自动抓取 RSS 订阅源更新并推送到 Telegram 频道。使用 KV 存储记录已发送文章,防止重复推送。

✨ 功能特点

  • 🔄 定时触发:支持 Cron 触发器(默认每小时检查一次)
  • 📦 智能去重:使用 KV Storage 记录已发送的文章链接
  • 🖼️ 智能配图:自动提取文章封面(支持 HeaderImage、Enclosure、Media:Content 或正文首图)
  • 📝 格式优化:使用 HTML 模式解析,支持富文本
  • 📸 图文消息:以“图片+标题+摘要”的形式发送,无图时自动降级为纯文本

🛠️ 准备工作

⚙️ 配置指南

  1. 克隆项目

    git clone https://github.com/calpa/rss-to-telegram.git
    cd rss-to-telegram
  2. 安装依赖

    yarn install
  3. 配置 Wrangler 复制并修改 wrangler.jsonc,确保 KV Namespace ID 配置正确。

  4. 设置密钥 为了安全,Cloudflare Worker 的敏感信息通过 GitHub Secrets 管理。

    • CLOUDFLARE_API_TOKEN: Cloudflare API Token,用于 GitHub Actions 部署。
      • 获取方法: 登录 Cloudflare Dashboard -> 点击右上角用户图标 -> "我的个人资料 (My Profile)" -> "API 令牌 (API Tokens)" -> "创建令牌 (Create Token)"。选择 "编辑 Cloudflare Workers (Edit Cloudflare Workers)" 模板或自定义令牌(需授予 Workers Scripts 的编辑权限)。请务必保存好此令牌,它只显示一次!
    • TELEGRAM_CHANNEL_ID**: 您的 Cloudflare 账户 ID。
      • 获取方法: 登录 Cloudflare Dashboard -> 选择您的账户 -> 在右侧边栏或概览页找到 “账户 ID (Account ID)”
    • RSS_FEED_URL:RSS 订阅源地址
    • TELEGRAM_BOT_TOKEN:Telegram 机器人 Token
    • TELEGRAM_CHANNEL_ID:目标频道或群组 ID(例如 @HUSTMatNoble -100xxxxxxxxxx

    如何将这些 Secret 添加到 GitHub 仓库: 在您的 GitHub 仓库页面,前往 "Settings" -> "Secrets and variables" -> "Actions",然后点击 "New repository secret" 添加这些 Secret。

    wrangler secret put RSS_FEED_URL
    wrangler secret put TELEGRAM_BOT_TOKEN
    wrangler secret put TELEGRAM_CHANNEL_ID

💻 本地开发

# 启动本地开发服务器
yarn dev

# 运行测试
yarn test

🚀 部署

yarn deploy

ℹ️ 工作原理

  1. ⏰ Cron 定时器触发(每小时)
  2. 📡 抓取最新的 RSS Feed 内容
  3. 🔍 过滤出过去 24 小时内发布的文章
  4. 💾 查询 KV 存储,排除已发送过的文章
  5. 📤 将新文章推送到 Telegram
  6. ✅ 标记文章为已处理(记录保留 7 天)

📄 许可证

MIT

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published