RSS 每日日报
技能目录结构
rss-daily-digest/
├── SKILL.md
├── scripts/
│ ├── fetch_rss.py # 抓取单个 RSS 源
│ └── manage_config.py # 读写套餐配置文件
└── references/
└── rss-sources.md # 全量 RSS 源目录 + 套餐定义
配置文件说明
配置存放在 ~/.openclaw/workspace/rss-daily-digest-config.json,结构如下:
{
"plan": "preset-compact | preset-ai | preset-full | custom",
"plan_name": "精简日报",
"sources": [
{"name": "阮一峰的网络日志", "url": "https://www.ruanyifeng.com/blog/atom.xml"}
],
"schedule": "10:00",
"cron_job_id": "rss-daily-xxxxxx",
"user_id": "terytfu",
"channel": "wecom"
}
工作流
第一步:检查配置
python3 <skill_dir>/scripts/manage_config.py read
- 若
exists: false→ 进入「套餐选择流程」 - 若
exists: true→ 进入「日报生成流程」
第二步A:套餐选择流程(无配置时)
- 向用户发送套餐选项卡片(使用 wecom-send-template-card 技能):
{
"card_type": "vote",
"main_title": "📰 RSS 每日日报 - 选择你的套餐",
"sub_title": "请选择订阅套餐,稍后可随时修改",
"select_list": [
{"id": "preset-compact", "text": "🔹 精简日报(5源):阮一峰 · 少数派 · Solidot · Readhub · HuggingFace"},
{"id": "preset-ai", "text": "🤖 AI 技术人员(6源):OpenAI · Google AI · HuggingFace · MIT科技评论 · InfoQ · HelloGitHub"},
{"id": "preset-full", "text": "📡 全面科技日报(8源):36氪 · 虎嗅 · IT之家 · 少数派 · 爱范儿 + 更多"},
{"id": "custom", "text": "✏️ 自定义套餐(从30+源中手动选择)"}
]
}
-
如用户选择「自定义套餐」,读取
references/rss-sources.md,按分类向用户展示全量源列表,提示用户回复 ID(如ai-01,news-01,blog-02)进行多选。 -
询问推送时间(默认 10:00,格式 HH:MM):
> "请问你希望每天几点收到日报?(直接回复时间如08:30,或回车使用默认10:00)" -
获取信息后创建 cron job(使用
cron工具):
-sessionTarget:"isolated"
-payload.kind:"agentTurn"
-payload.message:"执行 rss-daily-digest 技能,当前配置已存在,直接生成并发送今日日报给用户 <user_id>,channel=wecom"
-schedule:{"kind": "cron", "expr": "0 <HH> * * *", "tz": "Asia/Shanghai"}
-delivery:{"mode": "none"}(技能自行发送消息,不需要 cron announce) -
将
cron_job_id写入配置:
bash python3 <skill_dir>/scripts/manage_config.py write '<json>' -
回复确认消息,格式:
> ✅ 已设置「{套餐名称}」,每天 {时间} 准时发送日报!
> 订阅源:{源名列表}
第二步B:日报生成流程(有配置时,或 cron 触发时)
-
读取配置,获取
sources列表。 -
逐一抓取每个 RSS 源(每源取最新 5 条):
bash python3 <skill_dir>/scripts/fetch_rss.py <url> --limit 5
- 若某源抓取失败(有error字段),跳过并在日报末尾注明。
- 建议按顺序串行抓取,避免频繁并发。 -
汇总所有条目,去重(相同 title 保留一条),按时间降序排列。
-
调用 AI(自身能力)整理日报,格式如下:
📰 **科技日报** · {今日日期(如 4月16日 周四)}
---
**🔥 今日精选**
> 从所有条目中挑选 3-5 条最值得关注的内容,各一句话点评
---
**{分类名,如 🤖 AI 资讯}**
• **{标题}** — {一句话摘要} [→]({链接})
• ...
**{另一分类}**
• ...
---
_共聚合 {N} 条资讯 · 来源:{源名用顿号分隔}_
- 通过
message工具将日报发送给用户(channel=wecom,target=用户ID)。
修改套餐
当用户说「修改日报套餐」「更换订阅源」「重新设置」等时:
1. 删除旧 cron job(若配置中有 cron_job_id)
2. 删除配置:python3 manage_config.py delete
3. 重新进入套餐选择流程
脚本路径
Skill 目录路径:读取本 SKILL.md 所在目录(~/.openclaw/skills/rss-daily-digest/)。
所有脚本引用均使用绝对路径:~/.openclaw/skills/rss-daily-digest/scripts/<script>.py
注意事项
- RSSHub 源(
rsshub.app)偶有限速,失败时优雅跳过。 - 日报消息较长时,可拆成「精选」和「详细版」两段发送。
- cron job 的 message 字段需带足够上下文,让孤立 session 能独立执行日报生成任务。
- 读取
references/rss-sources.md获取套餐 JSON 和全量源列表。