前言¶
寫綜述、改 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