lets-go-rss
ALBEDO-TABAI/lets-go-rss轻量级全平台 RSS 订阅管理器。一键聚合 YouTube、Vimeo、Behance、Twitter/X、知识星球、B站、微博、抖音、小红书的内容更新,支持增量去重和 AI 智能分类。
48 stars
5 forks
Python
6 views
SKILL.md
name: lets-go-rss description: 轻量级全平台 RSS 订阅管理器。一键聚合 YouTube、Vimeo、Behance、Twitter/X、知识星球、B站、微博、抖音、小红书的内容更新,支持增量去重和 AI 智能分类。
Let's Go RSS
全平台 RSS 内容聚合工具,支持增量更新、去重、AI 分类。
快速使用
添加订阅
python3 scripts/lets_go_rss.py --add "https://www.youtube.com/@MatthewEncina"
python3 scripts/lets_go_rss.py --add "https://vimeo.com/xkstudio"
python3 scripts/lets_go_rss.py --add "https://www.behance.net/yokohara6e48"
更新全部(耗时操作,建议用 crontab 后台跑)
python3 scripts/lets_go_rss.py --update --no-llm --digest --skip-setup
读取缓存报告(Bot 推送用,瞬间返回)
python3 scripts/lets_go_rss.py --status
查看订阅
python3 scripts/lets_go_rss.py --list
python3 scripts/lets_go_rss.py --stats
Bot 推送最佳实践
问题:--update 需要 30-60 秒抓取全部订阅,Bot 定时任务可能超时。
方案:抓取和推送解耦——crontab 提前跑更新,Bot 只读缓存文件。
稳定命令(推荐)
# 后台更新(内置超时参数 + 并发防重入锁)
./scripts/run_update_cron.sh
# Bot 推送只读缓存
./scripts/run_status_push.sh
# crontab -e
# 每 2 小时的 55 分更新(提前 5 分钟准备好数据)
55 */2 * * * cd /path/to/lets-go-rss && ./scripts/run_update_cron.sh >> /tmp/rss_cron.log 2>&1
# Bot 在整点读缓存推送(瞬间完成)
0 */2 * * * cd /path/to/lets-go-rss && ./scripts/run_status_push.sh
Bot 只需调用 --status,该命令直接读取 assets/latest_update.md 并输出内容,无需网络请求、无需等待。
平台支持
| 平台 | 依赖 | 开箱即用 |
|---|---|---|
| Vimeo | httpx | ✅ |
| Behance | httpx | ✅ |
| YouTube | yt-dlp | ✅ |
| 微博 | RSSHub | ⚠️ 需配置 |
| 抖音 | RSSHub | ⚠️ 需配置 |
| B站 | RSSHub | ⚠️ 需配置 |
| 小红书 | RSSHub | ⚠️ 实验性 |
| Twitter/X | Syndication API | ✅ |
| 知识星球 | pub-api (公开) | ✅ |
安装依赖
# 基础(YouTube + Vimeo + Behance)
pip install httpx yt-dlp
# 可选:AI 分类
pip install anthropic
export ANTHROPIC_API_KEY="your-key"
# 可选:中国平台(需要 Docker)
docker run -d --name rsshub -p 1200:1200 diygod/rsshub:chromium-bundled
export RSSHUB_BASE_URL="http://localhost:1200"
# 可选:抓取超时调优(Bot 超时场景)
export RSS_HTTP_TIMEOUT="10"
export RSS_HTTP_RETRIES="2"
export RSS_XHS_TIMEOUT="6"
export RSS_XHS_RETRIES="1"
export RSS_YTDLP_TIMEOUT="12"
Bot 汇报规范(⚠️ 必须严格遵守)
当 Bot 需要推送 RSS 更新时,只需执行一个命令,然后原样转发输出。
完整流程(仅 2 步)
步骤 1: 运行命令
python3 scripts/lets_go_rss.py --status
步骤 2: 把命令输出原封不动地作为你的回复发送
就这么简单。不需要任何额外处理。
输出格式说明
--status 命令会输出类似以下格式的纯文本(自动生成,不需要 Bot 构造):
📡 RSS 更新摘要 | 2026-02-21 18:23 | 3 个账号有新内容
🆕 📺 影视飓风 02-18 03:00
[【4K限免】你的新设备能顶住吗?](https://t.bilibili.com/1170572725010300960)
🆕 🐦 歸藏(guizang.ai) 02-14 17:15
[Tweet by @op7418](https://x.com/op7418/status/2022721414462374031)
🎬 Matthew Encina 12-07 00:00
[Why Moving on Helps You Grow](https://www.youtube.com/watch?v=xxxxx)
每条包含:emoji + 账号名 + 发布时间 → 标题带超链接。🆕 标记有新内容的账号。
❌ 禁止行为
- ❌ 不得重新排版:不可以按平台分组、加表格、加标题
#层级 - ❌ 不得分多条消息:所有内容必须在一条消息内发送
- ❌ 不得删除/修改链接:标题中的链接不可去掉或替换
- ❌ 不得添加前言后语:不要加"以下是 RSS 更新"等多余文字
- ❌ 不得执行 --update:推送时只读缓存,不做抓取
⏸️ 暂无更新时的处理
当 --status 输出中显示"暂无新更新"或类似表述时,只需回复一句话:
RSS 暂无新更新 ✅
不需要列出各账号的最新内容,直接说暂无更新即可。
输出文件
| 文件 | 说明 |
|---|---|
assets/latest_update.md |
更新报告(--status 读取此文件) |
assets/feed.xml |
标准 RSS 2.0 XML |
assets/summary.md |
统计摘要 |
assets/subscriptions.opml |
OPML 订阅导出 |