Skip to content
lets-go-rss logo

Let's Go RSS

lets-go-rss

轻量级全平台 RSS 订阅管理器。一键聚合 YouTube、Vimeo、Behance、Twitter/X、知识星球、B站、微博、抖音、小红书的内容更新,支持增量去重和 AI 智能分类。

ALBEDO-TABAI/lets-go-rss0installs102stars

SKILL.md

Full skill instructions

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 --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

查看全量概览(所有订阅最新一条)

python3 scripts/​lets_go_rss.py --overview

健康体检 & 自动修复

python3 scripts/​lets_go_rss.py --doctor      # 只打印状态
python3 scripts/​lets_go_rss.py --auto-fix    # 自动重启挂掉的 RSSHub、清僵尸锁

Playwright tier(绕过平台反爬)

RSS_PLAYWRIGHT_PLATFORMS 控制哪些平台走 skill 自管的 Chromium(Playwright)—— 用真浏览器访问,继承"正常用户"反爬声誉。

默认已为 Bilibili 开启(B 站无需登录,直接工作)。Twitter / 小红书平台强制要求登录态。

Agent 应主动编排的一次性登录流程

当 --doctor 或摘要报告显示 Twitter/​XHS 源因 auth 失败时,agent 应主动提议用户让你帮他完成登录,而不是让用户自己去跑命令。标准套路:

  1. AskUserQuestion 问用户:要不要现在登录 Twitter / 小红书(多选)
  2. 对用户勾选的每个平台,运行:
    python3 scripts/​lets_go_rss.py --login <twitter|xiaohongshu>
    
    这一条命令会依次:① 打开可见 Chromium 到登录页 → ② 等用户关窗 → ③ 自动拉一条该平台已有订阅验证登录成功 → ④ 自动把该平台写进 .env 的 RSS_PLAYWRIGHT_PLATFORMS
  3. 最后跑一次 --doctor 或一轮冒烟,确认失败数下降

用户看到的步骤极简:只需要在弹出的 Chromium 里登录自己的账号,登完关窗,其他全部由 agent 搞定。

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 并输出内容,无需网络请求、无需等待。

平台支持

平台主策略备注
VimeoNative RSS✅
BehanceNative RSS✅
YouTubeyt-dlp / Atom feed fallback✅
微博RSSHub → Chrome session fallback⚠️ 需本机 Chrome 开启 remote debugging
抖音RSSHub⚠️ 当前不稳定
B站RSSHub⚠️ 需配置
小红书Chrome session primary⚠️ 需本机 Chrome 已登录且开启 remote debugging
Twitter/​XSyndication API✅
知识星球pub-api (公开)✅

安装依赖

# 基础(YouTube + Vimeo + Behance + Twitter syndication + Zsxq pub-api)
pip install httpx yt-dlp anthropic

# 配置环境变量:把 ANTHROPIC_API_KEY 写进 .env(已 git-ignore)
cp .env.example .env && $EDITOR .env

# 中国平台(B站/微博/抖音/小红书 RSSHub 路由)
# 方式 A(推荐):skill 自管的 RSSHub,首次 start 自动 npm install
python3 scripts/​rsshub_manager.py start
# 方式 B:若已经跑了 ready-cowork 的 :1200 RSSHub,skill 会自动作为 fallback
# 方式 C:自己起 Docker rsshub 并通过 RSSHUB_BASE_URL_FALLBACK 指过去

# 可选:启用真实 Chrome 会话抓取(微博 / 小红书推荐)
# 1) 打开 Chrome
# 2) 访问 chrome://inspect/#remote-debugging
# 3) 勾选 Allow remote debugging for this browser instance

RSSHub 自管与升级

首次 rsshub_manager.py start 会:

  1. 在 <skill>/​node_modules/​rsshub 下 npm install rsshub@latest(~50MB,首次 1-2 分钟)
  2. 如未装,自动下载 puppeteer 要求的 Chrome for Testing(约 200MB 到 ~/​.cache/​puppeteer)
  3. 启动 scripts/​rsshub_worker.mjs 监听 :1201,写 pidfile 到 assets/​.rsshub.pid

后续 run_update_cron.sh 在每次 cron 前都会调 start-if-needed(最多等 10 秒),保证 :1201 健在。每周一早晨 06:xx 额外调 update 拉最新 RSSHub(后台跑,不阻塞该轮 cron)。

# 常用运维
python3 scripts/​rsshub_manager.py status
python3 scripts/​rsshub_manager.py restart
python3 scripts/​rsshub_manager.py update      # npm install + restart
python3 scripts/​rsshub_manager.py logs        # tail worker log

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)

仅显示有新内容的账号,无更新时显示"暂无新更新"。若需查看所有订阅的全量状态,使用 --overview。

❌ 禁止行为

  • ❌ 不得重新排版:不可以按平台分组、加表格、加标题 # 层级
  • ❌ 不得分多条消息:所有内容必须在一条消息内发送
  • ❌ 不得删除/修改链接:标题中的链接不可去掉或替换
  • ❌ 不得添加前言后语:不要加"以下是 RSS 更新"等多余文字
  • ❌ 不得执行 --update:推送时只读缓存,不做抓取

⏸️ 暂无更新时的处理

当 --status 输出中显示"暂无新更新"或类似表述时,只需回复一句话:

RSS 暂无新更新 ✅

不需要列出各账号的最新内容,直接说暂无更新即可。


输出文件

文件说明
assets/​latest_update.md增量更新报告(--status 读取,仅含变动账号)
assets/​full_overview.md全量概览(--overview 读取,含所有账号)
assets/​feed.xml标准 RSS 2.0 XML
assets/​summary.md统计摘要
assets/​subscriptions.opmlOPML 订阅导出