mcpField
S
sustainability-fulltext-fetch

sustainability-fulltext-fetch

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

关于 sustainability-fulltext-fetch

sustainability-fulltext-fetch 用于补充相关 DOI RSS 记录,获取摘要或网页正文,并将结果单独存储。它适合可持续发展研究工作流,用于增量更新内容并安全重试。

主要功能

  1. 01抓取相关 DOI 记录的内容
  2. 02优先使用 OpenAlex,再尝试 Semantic Scholar
  3. 03无法取得 API 元数据时提取网页正文
  4. 04按 DOI 保存并更新内容记录
  5. 05支持增量同步与重试

适用场景

  1. 01为 RSS 条目补充摘要
  2. 02API 元数据不可用时提取全文
  3. 03重试失败抓取且避免 DOI 记录重复

安装

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

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

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

详细介绍

可持续性全文获取

核心目标

  • 从 RSS 元数据数据库读取相关 DOI 条目。
  • 将获取的内容写入单独的全文数据库。
  • 仅处理相关条目(is_relevant=1)。
  • 优先通过 DOI 获取 API 元数据(首先使用 OpenAlex,失败时回退到 Semantic Scholar)。
  • API 元数据不可用时,回退到网页全文提取。
  • 在 entry_content 中为每个 DOI 保存一条内容记录。

触发条件

  • 收到为相关 DOI 记录补充摘要/全文内容的请求。
  • 收到将优先抓取网页改为优先使用 API 补充内容的请求。
  • 需要支持安全重试的增量更新,且不产生重复记录。

工作流

  1. 确保上游 DOI/相关性数据已存在。
export SUSTAIN_RSS_DB_PATH="/absolute/path/to/workspace-rss-bot/sustainability_rss.db"
export SUSTAIN_FULLTEXT_DB_PATH="/absolute/path/to/workspace-rss-bot/sustainability_fulltext.db"
python3 scripts/fulltext_fetch.py init-db --content-db "$SUSTAIN_FULLTEXT_DB_PATH"
  1. 运行增量同步(优先使用 API,网页作为回退方案)。
python3 scripts/fulltext_fetch.py sync \
  --rss-db "$SUSTAIN_RSS_DB_PATH" \
  --content-db "$SUSTAIN_FULLTEXT_DB_PATH" \
  --limit 50 \
  --openalex-email "[email protected]" \
  --api-min-chars 80 \
  --min-chars 300
  1. 按需获取单个 DOI。
python3 scripts/fulltext_fetch.py fetch-entry \
  --rss-db "$SUSTAIN_RSS_DB_PATH" \
  --content-db "$SUSTAIN_FULLTEXT_DB_PATH" \
  --doi "10.1038/nature12373"
  1. 检查已存储的内容状态。
python3 scripts/fulltext_fetch.py list-content \
  --rss-db "$SUSTAIN_RSS_DB_PATH" \
  --content-db "$SUSTAIN_FULLTEXT_DB_PATH" \
  --status ready \
  --limit 100

数据约定

  • 从 RSS 数据库的 entries 表读取:
    • doi、doi_is_surrogate、is_relevant、canonical_url、url、title。
  • 写入全文数据库的 entry_content 表(主键为 doi):
    • 来源 URL/状态/提取器
    • content_kind(abstract 或 fulltext)
    • content_text、content_hash、content_length
    • 重试字段和时间戳。

提取优先级

  1. API 元数据路径:
  • 按 DOI 查询 OpenAlex。
  • 按 DOI 回退查询 Semantic Scholar。
  • 若符合条件(--api-min-chars),则以 content_kind=abstract 保存。
  1. 网页回退路径:
  • 依次使用 canonical_url 和 url。
  • 有 trafilatura 时使用它提取,否则使用内置 HTML 解析器。
  • 以 content_kind=fulltext 保存。

更新语义

  • Upsert 键:doi。
  • 成功:状态设为 ready,重置重试计数器。
  • 失败且已有状态为 ready 的记录:保留旧内容,记录最新错误。
  • 失败且没有状态为 ready 的记录:将 status 设为 failed,增加重试状态计数。

可配置参数

  • --rss-db
  • --content-db
  • SUSTAIN_RSS_DB_PATH
  • SUSTAIN_FULLTEXT_DB_PATH
  • --limit
  • --force
  • --only-failed
  • --refetch-days
  • --timeout
  • --max-bytes
  • --min-chars
  • --openalex-email / OPENALEX_EMAIL
  • --s2-api-key / S2_API_KEY
  • --api-timeout
  • --api-min-chars
  • --disable-api-metadata
  • --max-retries
  • --retry-backoff-minutes
  • --user-agent
  • --disable-trafilatura
  • --fail-on-errors

错误处理

  • 缺少以 DOI 为键的 entries 表:停止并提示可执行的解决方案。
  • RSS 数据库与全文数据库路径冲突:立即失败,并要求使用不同文件。
  • API/网络/HTTP 失败:记录失败并继续处理队列。
  • 网页内容为非文本:将该 DOI 标记为失败。
  • 提取内容过短:根据阈值判定失败,以避免低质量内容。

参考资料

  • references/schema.md
  • references/fetch-rules.md

资源文件

  • assets/config.example.json

脚本

  • scripts/fulltext_fetch.py

评论

支持 Markdown