用途
sustainability-rss-summary 是一个零抓取(zero-scraper)的可持续性情报流水线技能。其核心目标是在不爬取网页的前提下获取论文摘要:以 DOI 作为唯一查询键,通过官方 RSS DOI 事件配合开放 API 获取摘要,并处理论文因过新而尚未被索引的延迟问题,最终输出可直接供下游 LLM 摘要使用的摘要文本。
主要能力
- 从官方 RSS 源摄取 DOI 事件,至少保留 doi 字段,并在可用时包含 title、link 和 source_feed。
- 使用双塔 API 获取摘要:主用 OpenAlex(通过 abstract_inverted_index 重建摘要),回退使用 Semantic Scholar(读取 abstract 文本字段)。
- 通过 SQLite 队列管理任务状态,状态模型包括:new(等待首次尝试或延迟重试)、ready(摘要可用,已设置 abstract_source 与 abstract_text)、failed(重试预算耗尽,需人工跟进)。
- 支持延迟重试:当两个 API 均未命中时,递增 retry_count、设置 next_retry_at,并保持状态为 new;当 retry_count 达到 max_retries 时标记为 failed。
- 提供 fetch 命令用于单个 DOI 的即时检查与调试,queue-add 用于从 JSONL 批量入队,queue-run 用于按计划(如每日)运行队列,queue-list 用于查看队列状态。
使用方式
单 DOI 获取:
python3 scripts/abstract_pipeline.py fetch
--doi "10.1177/014920639101700108"
--openalex-email "you@example.com"
--pretty
从 JSONL 入队:
python3 scripts/abstract_pipeline.py queue-add
--db sustainability-rss-summary.db
--jsonl assets/rss-events.example.jsonl
--max-retries 3
运行队列(含重试):
python3 scripts/abstract_pipeline.py queue-run
--db sustainability-rss-summary.db
--backoff-hours "24,24,48"
推荐通过环境变量设置凭据:
export OPENALEX_EMAIL="you@example.com" export S2_API_KEY="optional-semantic-scholar-key"
手动紧急重跑(忽略 next_retry_at):
python3 scripts/abstract_pipeline.py queue-run
--db sustainability-rss-summary.db
--force
查看队列状态:
python3 scripts/abstract_pipeline.py queue-list
--db sustainability-rss-summary.db
--pretty
适用场景
- 需要为可持续性/科学论文构建或运行 RSS 到摘要的流水线。
- 收到包含 DOI/title/link 的 RSS 条目,需要合法、低维护的摘要获取方式。
- 需要 OpenAlex 优先、Semantic Scholar 回退的编排逻辑。
- 需要针对过新、尚未被索引的论文进行重试处理。
限制与操作规则
- 本技能不抓取出版商网页来提取摘要。
- 优先使用 OpenAlex(成本与开放性考虑),Semantic Scholar 仅作回退。
- 每次未命中都必须持久化到队列,不得静默丢弃 DOI 任务。
- 输出元数据中始终携带精确 DOI 以便追溯。
- 建议使用 --openalex-email(或 OPENALEX_EMAIL)以获得更礼貌、更快的 OpenAlex 路由。
- API 限流/网络错误应视为临时重试,而非永久失败。
- --force 仅用于手动回填或调试;计划任务应保持正常到期模式。
参考资料与资产
- references/architecture.md
- references/testing.md
- assets/rss-events.example.jsonl