mcpField
S
sustainability-rss-fetch

sustainability-rss-fetch

github.com/tiangong-ai数据与数据库1158 次安装1 周前更新
代码仓库

关于 sustainability-rss-fetch

sustainability-rss-fetch 是将 RSS 和 Atom 条目导入以 DOI 为键的 SQLite 数据库并按主题筛选的技能。相关条目保留元数据,未选条目精简为仅含 DOI 的记录。

主要功能

  1. 01导入 RSS 和 Atom 订阅源
  2. 02在 SQLite 中按 DOI 存储条目
  3. 03使用主题提示词筛选条目
  4. 04将无关条目精简为仅含 DOI 的记录
  5. 05管理订阅源并查询条目

适用场景

  1. 01筛选前导入可持续发展订阅源条目
  2. 02为后续处理保留 DOI 键控记录
  3. 03精简无关条目的存储元数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tiangong-ai/agent-skills --skill sustainability-rss-fetch

安装后在 Claude Code 中输入/sustainability-rss-fetch确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
assets/
config.example.json
journal.opml
references/
input-model.md
output-rules.md
time-range-rules.md
scripts/
rss_subscribe.py

详细介绍

可持续发展 RSS 获取

核心目标

  • 在按主题筛选前,将所有 RSS/Atom 条目写入 SQLite。
  • 将 doi 用作 entries 中的主键。
  • 将 RSS 元数据隔离存储在独立的 DB 文件中。
  • 语义筛选后,保留相关行,并将不相关行精简为仅含 DOI 的记录。

触发条件

  • 收到导入可持续发展订阅源的请求,并要求先持久化所有获取的记录。
  • 收到在 DB 写入后按提示词进行主题筛选的请求。
  • 收到将不相关行转换为轻量级、仅含 DOI 记录的请求。
  • 需要稳定的 DOI 键控存储,以供下游 API、全文获取和摘要生成使用。

必需工作流

  1. 准备运行时环境和 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"
  1. 收集 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
  1. 在 Agent 上下文中筛选候选项(使用语义判断,而非仅使用正则表达式)。
  • 使用 topic_prompt 和用户指令。
  • 输出选中的 candidate_id 列表。
  1. 将选中的行标记为相关项,并精简未选中的行。
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 的数据。

可配置参数

  • --db
  • SUSTAIN_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.md
  • references/output-rules.md
  • references/time-range-rules.md

资源文件

  • assets/journal.opml
  • assets/config.example.json

脚本

  • scripts/rss_subscribe.py

评论

支持 Markdown