前言¶
写综述、改 AI 生成的初稿,或维护带 PMID 的知识库时,常见做法是逐条打开 PubMed 看编号是否存在。这只覆盖了一半问题:不少「看起来合法」的引用,PMID 在库里真有记录,却指向另一篇同年、同领域的论文——单纯的存在性检查会把这类错配全部放过。
下面介绍 SkillHub 上的 PubMed文献引用批量验证(pubmed-verifier)。它在 Agent 对话里按自然语言触发批量核验,底层用纯 Python 标准库脚本对接 NCBI 等公开学术接口,在本地生成审计报告,不额外拉第三方运行时依赖。
这是什么¶
一句话定位:批量核验 PMID / DOI / arXiv 等引用是否真实,并判断编号是否对得上你声称的那篇文献;错配时可推荐更可能的 PMID,并支持参考文献格式化导出。
该 Skill 在 SkillHub 发布,官方入口为:
https://api.skillhub.cn/user_481397b5/pubmed-verifier
公开页显示分类为 professional,评分 93097,下载 1855 次(以 SkillHub 展示为准)。同类技能说明页(如 @indiv-sorsor/pubmed-verifier)将能力概括为:五态判定、引用上下文解析与交叉比对、撤稿检测、arXiv 与纯文本参考文献表解析、GB/T 7714 / Vancouver / APA / AMA 等格式导出,以及 NCBI、Europe PMC、Crossref、OpenAlex 多数据源;网络不可达时标注为「未判定」,不误报为「不存在」。许可为 MIT-0,核心实现为单文件 CLI scripts/verify_pmids.py,零依赖、纯本地运行(需联网访问学术注册库)。
核心功能¶
五态判定¶
与仅返回「有 / 无」不同,核验结果分为五类(含义与 Skill 文档一致):
| 判定 | 含义 |
|---|---|
| Correct | PMID 存在,且与声称的题名、作者、期刊、年份等一致 |
| Mismatch | PMID 存在,但指向另一篇文献(AI 幻觉引用里较常见) |
| Partial | 部分元数据吻合(例如作者、期刊对但题名不同) |
| Invalid | PubMed 中不存在该 PMID |
| Unknown | 声称信息不足无法交叉比对,或数据源暂时不可达 |
输入与交叉比对¶
- 从项目目录扫描
.html、.md、.txt、.json等中的 PMID / PubMed 链接,并启发式解析周围参考文献上下文。 - 支持 Word(
.docx)、PowerPoint(.pptx)、导出 HTML、BibTeX / RIS、粘贴的参考文献表(--parse-text/--stdin)。 - 可选
--claims-file(JSON 或 CSV)传入期望题名与作者,做决定性五态判定;可选--verify-doi、--suggest(错配时检索候选 PMID)、撤稿与 DOI 拼接检测。 - 输出终端摘要、HTML 仪表盘、JSON、CSV,以及
--format-references等格式化结果。
Agent 侧触发¶
在 Cursor 等兼容环境中安装 Skill 后,可用中文或英文触发词唤起,例如:验证 PMID、参考文献核查、引用验证、撤稿检查、文献排版、verify PMIDs、citation audit、AI幻觉检测 等。Skill 说明强调:只做验真与排版,不润色、不翻译、不凭空生成参考文献。
安装与启用¶
- 在浏览器打开 SkillHub 官方地址(见上文),按页面指引将 Skill 安装到当前使用的 Agent(如 Cursor)。各客户端的具体菜单或命令以 SkillHub 当时展示为准;本文不写无法从公开资料核实的安装命令。
- 安装完成后,技能包内通常包含
scripts/verify_pmids.py与SKILL.md。除对话触发外,也可在技能目录下直接调用 CLI 做批处理或 CI。
可选环境变量(用于 NCBI 限速与身份标识,非必须):
export NCBI_API_KEY="你的_NCBI_API_Key"
export PUBMED_VERIFIER_MAILTO="you@lab.org"
大陆网络环境可参考 Skill 文档:使用 HTTPS_PROXY / HTTP_PROXY、先执行 --check-net,或通过 --meta-source europepmc 等参数;Skill 包在 ModelScope 等镜像仅减轻安装摩擦,核验仍访问学术注册库。
典型用法¶
下列示例来自公开的 pubmed-verifier Skill 文档,路径请替换为本机技能目录下的 scripts/verify_pmids.py。
投稿前快速全量检查(刷新缓存、DOI 交叉验证、错配建议):
python3 scripts/verify_pmids.py --source /path/to/draft --quick --output report.html
验证指定 PMID:
python3 scripts/verify_pmids.py --pmids 31018962,22213727
粘贴参考文献表(无需先存文件):
python3 scripts/verify_pmids.py --parse-text references.txt --no-cache
# 或从管道读入
cat references.txt | python3 scripts/verify_pmids.py --stdin
带声称元数据的 CSV,并对错配给出 PMID 建议:
python3 scripts/verify_pmids.py --claims-file claims.csv --suggest --output report.html
claims.csv 需包含 pmid、title 等列;缺 title 时判定最高只能到 partial。可先离线校验:
python3 scripts/verify_pmids.py --lint-claims claims.csv
在 Python 中调用(将 sys.path 指向技能内 scripts 目录):
import sys
sys.path.insert(0, "/path/to/pubmed-verifier/scripts")
import verify_pmids as vp
info = vp.fetch_summaries(["31018962"], batch_size=1)["31018962"]
cross = vp.cross_check_citation(
{"claimed_title": "Classification criteria for autoinflammatory recurrent fevers",
"claimed_year": "2019"},
{"title": info["title"], "authors": info["authors"],
"journal": info["journal"], "pubdate": info["pubdate"]})
print(cross["verdict"], round(cross["confidence"], 2))
适用场景与注意¶
适合谁
- 系统综述、meta 分析投稿前的参考文献自检。
- 审核 AI 生成文稿中的 PMID / DOI 列表。
- 医学科普、教学材料、内部知识库引文 QA。
使用上要注意
--pmids只做存在性检查时,不能等同于「引用正确」;要判 mismatch,应提供题名等 claims(--claims-file或解析上下文)。- 终稿前建议加
--no-cache,避免新收录或撤稿状态被旧缓存误导。 - 大批量(数百条以上)时,
--verify-doi与--suggest会显著增加请求次数;可先扫一遍,再对 flagged 条目深度核验。 - 引用上下文解析是启发式,非常规排版可能拆错;精确场景请用结构化 claims。
- 工具连接
eutils.ncbi.nlm.nih.gov、www.ebi.ac.uk、api.crossref.org、api.openalex.org、export.arxiv.org等官方接口;报告与缓存写在本地(默认缓存目录~/.cache/pubmed-verifier/,可用--no-cache关闭)。
结尾¶
PubMed文献引用批量验证把「PMID 是否存在」推进到「是否指向正确论文」,用五态结果和可导出的 HTML / JSON 报告,适合在 Agent 里用自然语言发起,也适合用同一套 CLI 做投稿前批处理。官方地址:
https://api.skillhub.cn/user_481397b5/pubmed-verifier