关于 sustainability-rss-fetch
sustainability-rss-fetch 是将 RSS 和 Atom 条目导入以 DOI 为键的 SQLite 数据库并按主题筛选的技能。相关条目保留元数据,未选条目精简为仅含 DOI 的记录。
主要功能
- 01导入 RSS 和 Atom 订阅源
- 02在 SQLite 中按 DOI 存储条目
- 03使用主题提示词筛选条目
- 04将无关条目精简为仅含 DOI 的记录
- 05管理订阅源并查询条目
适用场景
- 01筛选前导入可持续发展订阅源条目
- 02为后续处理保留 DOI 键控记录
- 03精简无关条目的存储元数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tiangong-ai/ agent-skills --skill sustainability-rss-fetch安装后在 Claude Code 中输入/sustainability-rss-fetch确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlassets/config.example.jsonjournal.opmlreferences/input-model.mdoutput-rules.mdtime-range-rules.mdscripts/rss_subscribe.py详细介绍
可持续发展 RSS 获取
核心目标
- 在按主题筛选前,将所有 RSS/Atom 条目写入 SQLite。
- 将
doi用作entries中的主键。 - 将 RSS 元数据隔离存储在独立的 DB 文件中。
- 语义筛选后,保留相关行,并将不相关行精简为仅含 DOI 的记录。
触发条件
- 收到导入可持续发展订阅源的请求,并要求先持久化所有获取的记录。
- 收到在 DB 写入后按提示词进行主题筛选的请求。
- 收到将不相关行转换为轻量级、仅含 DOI 记录的请求。
- 需要稳定的 DOI 键控存储,以供下游 API、全文获取和摘要生成使用。
必需工作流
- 准备运行时环境和 RSS 元数据 DB 路径。
python3 -m pip install feedparser
export SUSTAIN_RSS_DB_PATH="/absolute/path/to/workspace-rss-bot/sustainability_rss.db"
python3 scripts/rss_subscribe.py init-db --db "$SUSTAIN_RSS_DB_PATH"
- 收集 RSS 时间范围内的条目,并先写入所有获取的条目。
python3 scripts/rss_subscribe.py collect-window \
--db "$SUSTAIN_RSS_DB_PATH" \
--opml assets/journal.opml \
--start 2026-02-01 \
--end 2026-02-10 \
--max-items-per-feed 150 \
--topic-prompt "筛选与可持续主题相关的文章:生命周期评价、物质流分析、绿色供应链、绿电、绿色设计、减污降碳" \
--output /tmp/sustainability-candidates.json \
--pretty
- 在 Agent 上下文中筛选候选项(使用语义判断,而非仅使用正则表达式)。
- 使用
topic_prompt和用户指令。 - 输出选中的
candidate_id列表。
- 将选中的行标记为相关项,并精简未选中的行。
python3 scripts/rss_subscribe.py insert-selected \
--db "$SUSTAIN_RSS_DB_PATH" \
--candidates /tmp/sustainability-candidates.json \
--selected-ids 3,7,12,21
结果:
- 选中的候选项:
is_relevant=1,保留元数据。 - 未选中的候选项:清除元数据字段,仅保留 DOI 行(
is_relevant=0)。
可选维护同步
python3 scripts/rss_subscribe.py sync --db "$SUSTAIN_RSS_DB_PATH" --max-feeds 20 --max-items-per-feed 100
源管理
python3 scripts/rss_subscribe.py add-feed --db "$SUSTAIN_RSS_DB_PATH" --url "https://example.com/feed.xml"
python3 scripts/rss_subscribe.py import-opml --db "$SUSTAIN_RSS_DB_PATH" --opml assets/journal.opml
查询数据
python3 scripts/rss_subscribe.py list-feeds --db "$SUSTAIN_RSS_DB_PATH" --limit 50
python3 scripts/rss_subscribe.py list-entries --db "$SUSTAIN_RSS_DB_PATH" --limit 100
数据约定
feeds表:订阅和获取状态。entries表(doi主键):- 元数据字段(
title/url/summary/categories/...) doi_is_surrogate(源中不存在 DOI 时使用)is_relevant(1表示相关,0表示已精简的不相关项,NULL表示尚未标记)
- 元数据字段(
- 为提高存储效率,不相关行会精简为仅含 DOI 的数据。
可配置参数
--dbSUSTAIN_RSS_DB_PATH--opml--feed-url--use-subscribed-feeds--topic-prompt--start/--end--max-feeds--max-items-per-feed--user-agent--cleanup-ttl-days
错误和边界处理
- 订阅源或网络故障:继续处理其他订阅源,并在订阅源状态中保留错误信息。
- 缺少
feedparser:提供安装指引。 - RSS 条目缺少 DOI:创建确定性的替代 DOI 键,以确保完整摄取。
- 选中的 ID 无效:在写入标签或精简数据前快速失败。
参考资料
references/input-model.mdreferences/output-rules.mdreferences/time-range-rules.md
资源文件
assets/journal.opmlassets/config.example.json
脚本
scripts/rss_subscribe.py
评论
支持 Markdown