mcpField
C
cite-verify

cite-verify

github.com/jonckr文档处理458 次安装27 周前更新
代码仓库

关于 cite-verify

cite-verify 是面向研究者和作者的引文核查技能,通过 Crossref 记录比对引文元数据,发现标识符与标题不匹配等问题,包括虚构的参考文献条目。

主要功能

  1. 01通过 Crossref 元数据核查引文
  2. 02发现标识符与标题不匹配
  3. 03读取常见参考文献格式
  4. 04报告核查结果
  5. 05在本地保存基于哈希的审计日志

适用场景

  1. 01提交前检查论文参考文献
  2. 02核实对话中粘贴的引文
  3. 03审查 LLM 生成的参考文献
  4. 04检查基金申请或报告中的引文

安装

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

$npx skills add https://github.com/jonckr/cite-verify --skill cite-verify

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
CHANGELOG.md
CONTRIBUTING.md
LICENSE
README.md
SECURITY.md
requirements.txt
.github/DISCUSSION_TEMPLATE/
catches.yml
ideas.yml
.github/ISSUE_TEMPLATE/
bug.yml
false-negative.yml
feature-request.yml
false-positive.yml
cache/
.gitkeep
docs/
INTERPRETING_REPORTS.md
MIGRATION_v0.1_v0.2.md
examples/
attention-paper-verified.md
acemoglu-partial-match.md
fabricated-not-found.md
transformer-hallucination.md
oster-verified.md
scripts/
install_deps.sh
crossref_lookup.sh
parse_bibtex.py
parse_citation.sh
lint.sh
verify_deps.sh
tests/corpus/
known-hallucination.bib
run_known_hallucination_gate.sh
tests/diagnosis/
01_python_unavailable.sh

详细介绍

cite-verify

根据 Crossref 的规范书目元数据验证参考文献引文。可捕捉一种特定的 LLM 幻觉失误:真实标识符(DOI、NBER 工作论文编号、arXiv ID)与伪造标题配对。

适用场景

适用于:

  • 检查参考文献列表(.bib、.tex、.md、.docx、纯文本)中是否有幻觉引文

在以下情况下调用此技能:

  • 用户要求检查、验证或 lint 文档中的引文
  • 用户在聊天中粘贴一条或多条引文,并询问它们是否真实
  • 用户提到幻觉参考文献、伪造引文或由 LLM 生成的参考文献列表
  • 用户正在准备论文、资助申请或报告,希望在提交前发现幻觉引文
  • 用户询问某条特定引文,并希望确认标题是否与标识符相符

不适用场景

  • 一般性的主张事实核查(此技能只检查引文元数据,不检查引用来源是否支持某项主张)
  • 根据笔记生成引文(此技能是检查器,不是生成器)
  • 引文身份本身较为敏感的情况(此技能会将书目元数据发送到 Crossref,这是一个公共 API)

输入解析

按以下顺序检查用户的消息:

  1. 消息中粘贴的引文文本。 如果用户在消息中直接包含一条或多条引文字符串,请通过 stdin 将其传给 lint 工具。无需文件。
  2. 提供了文件路径。 如果用户提供了 .md、.tex、.bib、.txt 或 .docx 文件的路径,请将路径作为参数传给 lint 工具。对于 macOS 上的 .docx,先进行转换:textutil -convert txt -stdout -- "$path" | ~/.claude/skills/cite-verify/scripts/lint.sh
  3. 两者都有。 如果用户同时提供了两者,先处理粘贴的文本。
  4. 两者都没有。 询问要检查哪些引文。

运行方法

# Pasted text mode:
echo "<citation text>" | ~/.claude/skills/cite-verify/scripts/lint.sh

# Multiple citations - separate with blank lines:
printf 'Citation one here.\n\nCitation two here.\n' | ~/.claude/skills/cite-verify/scripts/lint.sh

# File mode:
~/.claude/skills/cite-verify/scripts/lint.sh /path/to/paper.md

# .docx on macOS:
textutil -convert txt -stdout -- "/path/to/paper.docx" | ~/.claude/skills/cite-verify/scripts/lint.sh

输出解读

lint 工具会输出一份 Markdown 报告,其中包含以下判定类别:

  • VERIFIED - 引文的元数据与规范记录相符。可以放心使用。
  • PARTIAL_MATCH - 存在规范记录,但一个或多个字段不一致(例如,工作论文与已发表版本的年份不同)。请检查并确认。
  • METADATA_MISMATCH - 标识符(DOI 或 NBER 编号)解析到的论文标题不同。这就是 LLM 幻觉失误模式。 几乎总是错误。
  • NOT_FOUND - Crossref 中没有匹配的规范记录。可能是合法但鲜为人知的来源,也可能是幻觉论文。需要人工验证。
  • NEEDS_MANUAL_VERIFICATION - 数据不足,无法验证(标题过短、缺少字段)。

向用户展示报告。如果有 METADATA_MISMATCH 或 NOT_FOUND 条目,请重点指出,并建议用户在使用文档前逐一检查。

范围限制

此技能刻意限定在较窄的范围内:

  • 仅查询 Crossref(通过 DOI、NBER 工作论文编号查询,或按标题和作者搜索)。目前不查询 arXiv 或 OpenAlex。
  • 仅检查引文元数据(标题、作者、年份、发表渠道)。不验证引用论文是否确实支持某项主张。
  • 仅处理常见的学术引文格式(APA、Chicago、简易 BibTeX、纯文本参考文献)。不完整解析复杂的 LaTeX 参考文献文件。
  • 仅支持 macOS 上的 .docx(需要 textutil)。Linux 用户应先转换为纯文本。
  • 每次调用最多处理 60 条引文(DoS 防护)。
  • 每次调用的输入大小上限为 1 MB。

隐私声明

cite-verify 会将书目元数据(标题、作者、年份、DOI、NBER 编号)发送到 Crossref 公共 API。它不会发送:

  • 文档正文
  • 任何数据给工具作者或任何其他服务器
  • 引文元数据本身以外的任何内容

本地审计日志保存在 ~/.claude/skills/cite-verify/logs/verifications.jsonl,其中包含引文字符串的 SHA-256 哈希值(而非原始文本)、验证状态和时间戳。此日志保留在用户的设备上,绝不会发送到任何地方。

如果文档中甚至连被引用论文的列表都属于敏感信息(机密资助提案、尚未公开的研究、匿名评审),请勿使用此技能。Crossref 会看到你检查的每条引文。

反馈

展示结果时,如果报告中发现了问题,或用户提供了反馈,请在报告中提及反馈页脚(链接至 github.com/jonckr/cite-verify/issues),说明用户可以在此分享发现的问题、报告误报或漏报,或提出改进建议。

理论基础

此技能采用 Ludwig、Mullainathan 和 Rambachan(2025)在《Large Language Models: An Applied Econometric Framework》(NBER Working Paper 33344)中提出的验证原则。该论文证明,大模型生成的输出存在系统性测量误差,这种误差会传播至下游产物,除非收集验证样本。cite-verify 将此原则应用于书目:每条引文都被视为大模型生成的标签,在信任它之前,必须与规范记录进行验证。

评论

支持 Markdown