SuperAPI AI 工具集

kb-meta-fetch

数据与分析

查看项目

更新于 10-16 04:15

技能介绍

用途

kb-meta-fetch 的核心目标是从 Crossref 拉取指定起始日期之后的期刊文章记录,并将其写入 PostgreSQL 的 journals 表。它面向需要按 ISSN 批量、增量同步期刊元数据的场景,例如维护文献库、构建知识库的元数据层。

主要能力

  • 从 journals_issn 表读取 ISSN 种子行(字段:journal、issn1)。
  • 按给定的 --from-date 增量抓取 Crossref 中的期刊文章。
  • 查询 Crossref 接口:https://api.crossref.org/journals/{issn}/works。
  • 使用过滤条件 type:journal-article,from-pub-date:<from-date>。
  • 仅保留 container-title 与目标期刊标题一致(不区分大小写)的条目。
  • 使用游标(cursor)持续分页,直到没有匹配条目为止。
  • 将 title、doi、journal、authors、date、abstract 写入 journals 表;当 Crossref 没有摘要时 abstract 可为空。
  • 通过 ON CONFLICT (doi) DO NOTHING 实现 DOI 去重插入。
  • 每次运行生成独立日志文件,并优先输出 RUN_SUMMARY_JSON 供汇总使用。

使用方式

  1. 设置数据库连接环境变量(用户自行管理的、以 KB_ 为前缀的键):

    • KB_DB_HOST
    • KB_DB_PORT
    • KB_DB_NAME
    • KB_DB_USER
    • KB_DB_PASSWORD
    • KB_LOG_DIR(必填,日志输出目录)
  2. 运行增量抓取,必须提供日期参数: python3 scripts/crossref_multi_increment.py --from-date 2024-05-01

  3. 如果通过 exec 工具调用执行,请将超时设置为 1800 秒(30 分钟)。

  4. 在以下位置查看日志: ${KB_LOG_DIR}/crossref-YYYYMMDD-HHMMSS.log(UTC 时间戳,每次运行一个文件)

  5. 面向用户的汇总必须严格基于本次运行的输出:

    • 优先使用 crossref_multi_increment.py 输出的 RUN_SUMMARY_JSON。
    • 如果 JSON 不可用,只解析本次运行的 ${KB_LOG_DIR}/crossref-YYYYMMDD-HHMMSS.log。
    • total_inserted 必须表示本次运行中(经 DOI 去重后)插入的行数,而不是表中的累计行数。

行为约定

  • 报告或公告中的指标只能使用本次运行的日志或汇总。
  • 不得通过数据库全表或时间窗口 SQL(例如 WHERE date >= ...)来计算公告计数。

适用范围与限制

  • 仅实现 Crossref 增量抓取并插入 journals 表。
  • 实现需与 1_crossref_multi_increment.py 保持一致。
  • 脚本路径:scripts/crossref_multi_increment.py。
  • 其他功能、收费、价格、平台或效果信息暂未提供。