mcpField
C
citation-verifier

citation-verifier

github.com/jkitchin文档处理4186 次安装3 天前更新
代码仓库

关于 citation-verifier

citation-verifier 是一项供研究者和文档作者检查科学文献引用的技能。它提取多种标识符并通过相关来源核验,生成包含状态和修复建议的报告。

主要功能

  1. 01从 Markdown、LaTeX/BibTeX、Org-mode 和纯文本提取引用
  2. 02检测 DOI、学术 URL、arXiv ID、PMID、ISBN 和作者年份引用
  3. 03通过 CrossRef、arXiv、PubMed、Open Library 和网络核验标识符
  4. 04报告有效状态、元数据及修复建议

适用场景

  1. 01审查 AI 生成论文中的虚构引用
  2. 02检查稿件中的 DOI 和学术链接
  3. 03提交科学文档前核对参考文献

安装

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

$npx skills add https://github.com/jkitchin/skillz --skill citation-verifier

安装后在 Claude Code 中输入/citation-verifier确认已加载。

详细介绍

引用核验器

检测并核验科学文档中的引用,识别虚构、失效或无效的参考文献。

用途

AI 生成的内容有时会包含看似合理但实际虚假的引用。此技能会系统地提取文档中的所有引用标识符,并对照权威来源逐一核验,生成详细报告,说明核验状态并提供修复无效引用的建议。

使用时机

遇到以下情况时,应调用此技能:

  • 用户要求“核验引用”或“检查文档中的参考文献”
  • 用户怀疑 AI 生成的内容中有虚构引用
  • 用户希望验证论文中的 DOI、URL 或其他标识符
  • 用户要求审查文档中的失效链接或虚假参考文献
  • 用户提到“引用核验”“参考文献检查”或“DOI 验证”

支持的文档格式

  1. Markdown (.md):行内链接 [text](url)、引用式链接 [text][ref]、裸 URL、DOI
  2. LaTeX/BibTeX (.tex、.bib):\cite{}、@article{}、DOI 字段、URL 字段
  3. Org-mode (.org):[[url][text]] 链接、#+BIBLIOGRAPHY、引用链接
  4. 纯文本 (.txt):裸 URL、DOI、arXiv ID、作者-年份格式

检测的引用标识符

DOI(数字对象标识符)
  • 格式:10.\d{4,}/[^\s]+ 或 doi.org/10.\d{4,}/[^\s]+
  • 示例:10.1038/nature12373、https://doi.org/10.1126/science.abc1234
  • 核验方式:通过 https://api.crossref.org/works/{doi} 查询 CrossRef API
论文 URL
  • 格式:指向已知出版商和存储库的链接
  • 域名:nature.com、science.org、sciencedirect.com、springer.com、wiley.com、acs.org、rsc.org、pnas.org、cell.com、plos.org、mdpi.com、frontiersin.org、academic.oup.com、tandfonline.com
  • 核验方式:发送 HTTP HEAD/GET 请求,检查状态码是否为 200,并核对论文元数据
arXiv ID
  • 格式:arXiv:\d{4}\.\d{4,5}(v\d+)? 或 arxiv.org/abs/\d{4}\.\d{4,5}
  • 示例:arXiv:2301.07041、https://arxiv.org/abs/2301.07041v2
  • 核验方式:通过 arXiv API 或直接检查 URL
PubMed ID(PMID)
  • 格式:PMID:\s*\d+ 或 pubmed.ncbi.nlm.nih.gov/\d+
  • 示例:PMID: 12345678
  • 核验方式:检查 PubMed URL https://pubmed.ncbi.nlm.nih.gov/{pmid}/
ISBN
  • 格式:ISBN[:\s]*[\d-]{10,17}(ISBN-10 或 ISBN-13)
  • 示例:ISBN: 978-0-13-468599-1
  • 核验方式:通过 Open Library API https://openlibrary.org/isbn/{isbn}.json 查询
作者-年份引用
  • 格式:([A-Z][a-z]+(?:\s+(?:et\s+al\.?|and|&)\s+[A-Z][a-z]+)?,?\s*\d{4})
  • 示例:(Smith et al., 2023)、(Johnson and Lee, 2022)
  • 核验方式:通过 WebSearch 查找匹配的论文(置信度较低)

核验流程

步骤 1:读取并解析文档

使用 Read 工具加载文档。通过模式匹配提取所有引用标识符:

DOI patterns:
- https?://(?:dx\.)?doi\.org/(10\.\d{4,}/[^\s\])"'>]+)
- doi:\s*(10\.\d{4,}/[^\s\])"'>]+)
- (10\.\d{4,9}/[-._;()/:A-Z0-9]+)  (bare DOI)

arXiv patterns:
- arXiv:(\d{4}\.\d{4,5}(?:v\d+)?)
- arxiv\.org/abs/(\d{4}\.\d{4,5}(?:v\d+)?)

PubMed patterns:
- PMID:\s*(\d+)
- pubmed\.ncbi\.nlm\.nih\.gov/(\d+)

URL patterns:
- https?://[^\s\])"'<>]+  (filter for academic domains)

ISBN patterns:
- ISBN[:\s-]*((?:\d[-\s]?){9}[\dXx]|(?:\d[-\s]?){13})
步骤 2:去重并分类

创建唯一标识符列表,并按类型分类:

  • DOI
  • arXiv ID
  • PubMed ID
  • ISBN
  • URL(学术类)
  • 作者-年份引用(文本类)
步骤 3:核验每个标识符

按可靠性从高到低依次核验每个标识符:

DOI 核验
  1. 构造 CrossRef API URL:https://api.crossref.org/works/{doi}
  2. 使用 WebFetch 检查 API
  3. 如果成功,提取:标题、作者、期刊、年份
  4. 如果返回 404 或出错:标记为无效
arXiv 核验
  1. 构造 URL:https://arxiv.org/abs/{arxiv_id}
  2. 使用 WebFetch 验证页面是否存在
  3. 提取:标题、作者、摘要片段
  4. 如果返回 404:标记为无效
PubMed 核验
  1. 构造 URL:https://pubmed.ncbi.nlm.nih.gov/{pmid}/
  2. 使用 WebFetch 验证
  3. 提取:标题、作者、期刊
  4. 如果返回 404:标记为无效
ISBN 核验
  1. 构造 URL:https://openlibrary.org/isbn/{isbn}.json
  2. 使用 WebFetch 检查
  3. 提取:标题、作者、出版商
  4. 如果返回 404:标记为无效
URL 验证
  1. 使用 WebFetch 访问 URL
  2. 检查 HTTP 200 状态码和学术内容指标
  3. 查找页面上的论文标题、作者和 DOI
  4. 如果无法访问或内容非学术:标记为 SUSPICIOUS
作者-年份验证(置信度最低)
  1. 使用 WebSearch 查询:"{author}" "{year}" paper
  2. 在结果中查找匹配的论文
  3. 如果找到:标记为 LIKELY VALID,并注明来源
  4. 如果未找到:标记为 UNVERIFIED
第 4 步:生成报告

生成结构化的验证报告:

# Citation Verification Report

**Document:** [filename]
**Date:** [date]
**Total citations found:** [count]

## Summary
- Valid: [count]
- Invalid: [count]
- Suspicious: [count]
- Unverified: [count]

## Detailed Results

### Valid Citations
| ID | Type | Title | Source |
|----|------|-------|--------|
| 10.1038/xxx | DOI | Paper Title | CrossRef |

### Invalid Citations (HALLUCINATED)
| ID | Type | Error | Suggestion |
|----|------|-------|------------|
| 10.9999/fake | DOI | 404 Not Found | Remove or find correct DOI |

### Suspicious Citations
| ID | Type | Issue | Recommendation |
|----|------|-------|----------------|
| https://... | URL | Timeout | Verify manually |

### Unverified Citations
| Citation | Type | Notes |
|----------|------|-------|
| (Smith, 2023) | Author-year | No matching paper found via search |

验证状态定义

  • VALID:标识符指向一篇真实论文,且元数据匹配
  • INVALID:标识符不存在或返回 404(可能是幻觉)
  • SUSPICIOUS:无法完全验证;可能受到速率限制、需要付费访问或暂时不可用
  • UNVERIFIED:无法确认的文本引用(采取保守处理方式)

最佳实践

  1. 批量处理相似请求:将 DOI 检查分组,以尽量减少 API 调用
  2. 遵守速率限制:如果遇到速率限制,在请求之间添加延迟
  3. 交叉核对:如果 URL 中包含 DOI,直接验证该 DOI
  4. 结合上下文判断:注明引用出现的位置(方法部分还是论述部分)
  5. 报告不确定性:始终区分“已确认无效”和“无法验证”

对无效引用的输出建议

对于每条无效引用,提供可执行的建议:

  • DOI 格式错误:“DOI 格式似乎有误。请检查拼写错误或多余字符。”
  • DOI 不存在:“未找到论文。这可能是幻觉。请搜索论文的实际标题。”
  • 链接失效:“URL 返回 404。请尝试在 Google Scholar 上搜索论文标题。”
  • 期刊可疑:“无法识别该出版商。请确认其是否为可靠来源。”
  • 未找到作者-年份引用:“无法验证。请添加 DOI 或 URL 以供确认。”

验证会话示例

用户请求:“验证 my-paper.md 中的引用”

预期行为:

  1. 读取 my-paper.md
  2. 提取所有 DOI、URL、arXiv ID 等
  3. 报告:“共找到 15 条引用:8 个 DOI、5 个 URL、2 个 arXiv ID”
  4. 使用适当的 API 或抓取方式验证每个标识符
  5. 生成报告,显示:
    • 10 条有效引用及其元数据
    • 3 条无效引用(404 错误),标记为可能是幻觉
    • 2 条可疑引用(超时),需要手动检查
  6. 提供修正无效引用的建议

限制

  • 速率限制:CrossRef 和其他 API 可能会限制请求频率
  • 付费墙内容:无法验证付费墙后的完整内容
  • 新论文:非常新的论文可能尚未被收录
  • 作者-年份引用:缺少其他标识符时,置信度较低
  • 非英文来源:对非英文引用格式的支持有限
  • 私人/机构 URL:无法访问需要身份验证的内容

相关技能

  • literature-review:用于开展系统性文献检索
  • scientific-reviewer:用于审查科学文档的质量
  • scientific-writing:用于撰写规范引用的文稿

评论

支持 Markdown