关于 fetch-meta-to-kb
fetch-meta-to-kb 是用于增量获取 Crossref 期刊文章并写入数据库的技能,供维护期刊记录的工作流使用。它按 ISSN 查询并依据 DOI 去重,仅处理当前运行的统计与日志。
主要功能
- 01按起始日期增量获取文章
- 02从 journals_issn 读取期刊 ISSN
- 03按期刊名称筛选 Crossref 结果
- 04将文章字段写入 journals
- 05按 DOI 冲突跳过重复记录
适用场景
- 01将新期刊文章记录导入数据库
- 02按指定日期补充 Crossref 元数据
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ tiangong-ai/ agent-skills --skill fetch-meta-to-kb安装后在 Claude Code 中输入/fetch-meta-to-kb确认已加载。
详细介绍
将元数据抓取到知识库
核心目标
- 从 Crossref 拉取指定
--from-date之后的journal-article记录。 - 从
journals_issn读取 ISSN 种子行(journal、issn1)。 - 将行插入
journals,并使用ON CONFLICT (doi) DO NOTHING。 - 确保实现与
fetch_meta_to_kb.py保持一致。
运行工作流
- 设置数据库连接环境变量(用户管理的密钥以
KB_为前缀):
KB_DB_HOSTKB_DB_PORTKB_DB_NAMEKB_DB_USERKB_DB_PASSWORDKB_LOG_DIR(必填,日志输出目录)
- 使用必填日期运行增量抓取:
python3 scripts/fetch_meta_to_kb.py --from-date 2024-05-01
- 如果通过
exec工具调用执行,请将超时设置为 1800 秒(30 分钟)。
- 检查以下位置的日志:
${KB_LOG_DIR}/fetch-meta-to-kb-YYYYMMDD-HHMMSS.log(UTC 时间戳,每次运行生成一个文件)
- 严格根据本次运行的输出生成面向用户的摘要:
- 优先使用
fetch_meta_to_kb.py输出的RUN_SUMMARY_JSON。 - 如果 JSON 不可用,则仅解析本次运行的
${KB_LOG_DIR}/fetch-meta-to-kb-YYYYMMDD-HHMMSS.log。 total_inserted必须表示本次运行插入的行数(DOI 去重后),而不是表中的累计行数。
行为约定
- 查询 Crossref 端点:
https://api.crossref.org/journals/{issn}/works。 - 使用
type:journal-article,from-pub-date:<from-date>进行筛选。 - 仅保留
container-title与目标期刊标题相同的条目(不区分大小写)。 - 使用游标继续分页,直到没有匹配条目为止。
- 将以下字段存入
journals:title、doi、journal、authors、date、abstract(Crossref 没有摘要时可为空)。 - 报告和公告指标必须仅使用本次运行的日志或摘要。
- 不要通过数据库全表查询或时间窗口 SQL(例如
WHERE date >= ...)计算公告数量。
范围边界
- 仅实现 Crossref 增量抓取并插入
journals。
脚本
scripts/fetch_meta_to_kb.py
评论
支持 Markdown