Let's Go RSS - RSS Aggregator

VerifiedCaution

Lightweight cross-platform RSS aggregator for YouTube, Vimeo, Behance, Twitter, Bilibili, Weibo, Douyin, Xiaohongshu, etc. Supports incremental dedup and AI classification.

Sby Skills Guide Bot
ContentIntermediate
7/23/2026
Claude CodeCursorCodex
#rss#content-aggregation#social-media#cli#automation

Recommended for

Automated summary

A command-line RSS subscription manager that aggregates updates from YouTube, Vimeo, Behance, Twitter/X, Zhihu Knowledge Planet, Bilibili, Weibo, Douyin and Xiaohongshu, with incremental deduplication and AI-driven classification.

Strengths

  • Covers roughly ten platforms through layered strategies (native RSS, yt-dlp, syndication API, RSSHub, Chrome sessions)
  • Decouples fetching (background cron) from cached reading, letting a bot push a digest instantly without hitting timeouts
  • Ships real operational tooling: --doctor, --auto-fix, and a self-managed RSSHub worker on port 1201
  • Automates the Playwright login flow for session-gated platforms (Twitter, Xiaohongshu) in a single command

Limitations

  • Several Chinese platforms are flagged unstable or need heavy setup (Chrome with remote debugging, RSSHub, a ~50MB npm install)
  • Heavily dependent on third-party services (RSSHub, syndication API, yt-dlp) that can break without notice
  • AI classification requires an ANTHROPIC_API_KEY in the .env file
When to use it

Use it when an agent should track and summarize new posts from creators across multiple social platforms and push a periodic digest.

When not to use it

Avoid it if you want a graphical feed reader for hands-on human browsing, or if you cannot run a local RSSHub service and a debuggable Chrome instance.

Security analysis

Caution
Quality score84/100

The skill is a legitimate RSS aggregation tool with no signs of exfiltration, obfuscated payloads, or destructive commands. Its risk comes from using powerful local tooling: browser automation, remote debugging, npm installs, cron jobs, API keys, and account login flows. These are appropriate for the stated purpose but warrant caution.

Findings
  • •Uses network access, Python scripts, npm install, and downloads Chromium/Chrome for Testing (~200MB), which are powerful but legitimate for RSS aggregation.
  • •Guides the agent to open a visible Chromium login flow for Twitter/Xiaohongshu and persist platform choices in .env; this touches user accounts and browser sessions.
  • •Relies on Chrome remote debugging and logged-in Chrome sessions for some platforms, increasing exposure if misconfigured.
  • •Stores ANTHROPIC_API_KEY in .env and runs cron jobs/background services; secrets handling and process management should be reviewed before use.
  • •--auto-fix restarts RSSHub and clears stale locks; not destructive to user data but modifies local runtime state.
How this analysis is made

Examples

Subscribe to a creator
Add https://www.youtube.com/@MatthewEncina and https://vimeo.com/xkstudio to my lets-go-rss subscriptions, then show me the list.
Set up automated digest
Configure lets-go-rss so it updates every two hours in the background via cron and write the bot push script that only reads the cached --status report.
Fix broken feeds
Run the lets-go-rss health check, tell me which platforms are failing on auth, and walk me through logging into Twitter so the skill can enable the Playwright tier for it.

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

平台支持

| 平台 | 主策略 | 备注 | |------|--------|:----:| | Vimeo | Native RSS | ✅ | | Behance | Native RSS | ✅ | | YouTube | yt-dlp / Atom feed fallback | ✅ | | 微博 | RSSHub → Chrome session fallback | ⚠️ 需本机 Chrome 开启 remote debugging | | 抖音 | RSSHub | ⚠️ 当前不稳定 | | B站 | RSSHub | ⚠️ 需配置 | | 小红书 | Chrome session primary | ⚠️ 需本机 Chrome 已登录且开启 remote debugging | | Twitter/X | Syndication 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.opml | OPML 订阅导出 |

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/let-s-go-rss-rss-aggregator-mrx3y0ns/download' --output '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md.part' && mv '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md.part' '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md' && test -s '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/lets-go-rss' && cp -R '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns' '.claude/skills/lets-go-rss'

Cursor
test -f '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md' && test -s '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/lets-go-rss' && cp -R '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns' '.cursor/skills/lets-go-rss'

Codex
test -f '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md' && test -s '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/lets-go-rss' && cp -R '.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns' '.agents/skills/lets-go-rss'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns'

openskills read 'let-s-go-rss-rss-aggregator-mrx3y0ns'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/let-s-go-rss-rss-aggregator-mrx3y0ns/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills