Rss Digest
v1.0.0从OPML列表的RSS/Atom订阅源生成结构化的每日或每周markdown摘要,支持通过关键词过滤,用于Obsidian或Discord。
运行时依赖
安装命令
点击复制技能文档
RSS Digest 从 OPML feed 列表生成 markdown 摘要。无需 API 密钥。仅使用 Python 标准库。
脚本 脚本目的 输入 输出 scripts/parse_opml.py 解析 OPML → feed 列表 OPML 文件路径 JSON 数组(stdout) scripts/fetch_feeds.py 获取 feeds → 文章 JSON feed 列表(stdin 或 --feeds) JSON 数组(stdout) scripts/build_digest.py 文章 → markdown JSON 文章(stdin) Markdown(stdout 或 --output)
参考 OPML: references/opml-example.opml 所有脚本将进度/错误写入 stderr,数据写入 stdout —— 可以安全地管道传输。
设置 使脚本可执行一次: chmod +x ~/.openclaw/workspace/skills/rss-digest/scripts/.py 为方便起见,设置一个变量: SKILL=~/.openclaw/workspace/skills/rss-digest
一次性摘要 运行完整管道: python3 $SKILL/scripts/parse_opml.py ~/feeds.opml | python3 $SKILL/scripts/fetch_feeds.py --hours 24 | python3 $SKILL/scripts/build_digest.py --period Daily --output ~/digest.md 在 Obsidian 或终端中打开 ~/digest.md。
每周摘要 python3 $SKILL/scripts/parse_opml.py ~/feeds.opml | python3 $SKILL/scripts/fetch_feeds.py --hours 168 | python3 $SKILL/scripts/build_digest.py --period Weekly --group-by category --output ~/weekly-digest.md
关键词过滤 仅包括与特定主题匹配的文章: python3 $SKILL/scripts/parse_opml.py ~/feeds.opml | python3 $SKILL/scripts/fetch_feeds.py --hours 24 --keywords "AI,machine learning,LLM" | python3 $SKILL/scripts/build_digest.py --title "AI Digest" --keywords 是逗号分隔的,大小写不敏感。匹配标题或摘要。
Cron 计划 添加到 crontab(crontab -e)以在 7 点 ET 每天生成摘要: 0 7 python3 /Users/openclaw/.openclaw/workspace/skills/rss-digest/scripts/parse_opml.py ~/feeds.opml | python3 /Users/openclaw/.openclaw/workspace/skills/rss-digest/scripts/fetch_feeds.py --hours 24 | python3 /Users/openclaw/.openclaw/workspace/skills/rss-digest/scripts/build_digest.py --period Daily --output /Users/openclaw/.openclaw/workspace/vault/daily-recap/rss-$(date +\%Y-\%m-\%d).md 每周一 8 点生成每周摘要: 0 8 1 python3 /Users/openclaw/.openclaw/workspace/skills/rss-digest/scripts/parse_opml.py ~/feeds.opml | python3 /Users/openclaw/.openclaw/workspace/skills/rss-digest/scripts/fetch_feeds.py --hours 168 | python3 /Users/openclaw/.openclaw/workspace/skills/rss-digest/scripts/build_digest.py --period Weekly --group-by category --output /Users/openclaw/.openclaw/workspace/vault/daily-recap/rss-weekly-$(date +\%Y-\%m-\%d).md
选项参考 fetch_feeds.py 标志 默认值 描述 --hours N 24 最近 N 小时的文章 --keywords K (none) 逗号分隔的过滤关键词 --feeds 文件 stdin JSON feed 列表文件(与管道传输相反) --timeout N 10 每个 feed 的 HTTP 超时时间(秒)
build_digest.py 标志 默认值 描述 --title STR "RSS Digest" 摘要标题 --period STR "Daily" 期间标签(每日/每周) --output 文件 stdout 将输出写入文件而不是 stdout --group-by STR "feed" 分组依据:feed、类别或无 --max-summary N 300 文章摘要的最大字符数(0 = 省略) --date STR 今天 覆盖日期标签
OPML 文件 从任何 RSS 阅读器(Feedly、NetNewsWire、Reeder、Inoreader 等)导出 OPML 文件,方法是通过其导出设置。请参阅 references/opml-example.opml 以获取预期格式。 feeds 可以是平面或嵌套在类别文件夹中。
输出格式 摘要是干净的 markdown,包含: H1 标题和文章计数 每个 feed/类别的 H2 部分 链接文章标题、发布时间和截断摘要 带有生成时间戳的页脚 适合粘贴到 Discord(纯 markdown)、保存到 Obsidian 或发送电子邮件。
错误处理 无法访问的 feeds 会跳过并在 stderr 中发出警告 —— 其余部分继续。 没有发布日期的文章会被包含(无法对它们应用时间过滤器)。 格式错误的 XML feeds 会被跳过。 空结果集会生成“未找到文章”的摘要,而不是崩溃。