关于 cite-verify
cite-verify 是面向研究者和作者的引文核查技能,通过 Crossref 记录比对引文元数据,发现标识符与标题不匹配等问题,包括虚构的参考文献条目。
主要功能
- 01通过 Crossref 元数据核查引文
- 02发现标识符与标题不匹配
- 03读取常见参考文献格式
- 04报告核查结果
- 05在本地保存基于哈希的审计日志
适用场景
- 01提交前检查论文参考文献
- 02核实对话中粘贴的引文
- 03审查 LLM 生成的参考文献
- 04检查基金申请或报告中的引文
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jonckr/ cite-verify --skill cite-verify安装后在 Claude Code 中输入/cite-verify确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignoreCHANGELOG.mdCONTRIBUTING.mdLICENSEREADME.mdSECURITY.mdrequirements.txt.github/DISCUSSION_TEMPLATE/catches.ymlideas.yml.github/ISSUE_TEMPLATE/bug.ymlfalse-negative.ymlfeature-request.ymlfalse-positive.ymlcache/.gitkeepdocs/INTERPRETING_REPORTS.mdMIGRATION_v0.1_v0.2.mdexamples/attention-paper-verified.mdacemoglu-partial-match.mdfabricated-not-found.mdtransformer-hallucination.mdoster-verified.mdscripts/install_deps.shcrossref_lookup.shparse_bibtex.pyparse_citation.shlint.shverify_deps.shtests/corpus/known-hallucination.bibrun_known_hallucination_gate.shtests/diagnosis/01_python_unavailable.sh详细介绍
cite-verify
根据 Crossref 的规范书目元数据验证参考文献引文。可捕捉一种特定的 LLM 幻觉失误:真实标识符(DOI、NBER 工作论文编号、arXiv ID)与伪造标题配对。
适用场景
适用于:
- 检查参考文献列表(
.bib、.tex、.md、.docx、纯文本)中是否有幻觉引文
在以下情况下调用此技能:
- 用户要求检查、验证或 lint 文档中的引文
- 用户在聊天中粘贴一条或多条引文,并询问它们是否真实
- 用户提到幻觉参考文献、伪造引文或由 LLM 生成的参考文献列表
- 用户正在准备论文、资助申请或报告,希望在提交前发现幻觉引文
- 用户询问某条特定引文,并希望确认标题是否与标识符相符
不适用场景
- 一般性的主张事实核查(此技能只检查引文元数据,不检查引用来源是否支持某项主张)
- 根据笔记生成引文(此技能是检查器,不是生成器)
- 引文身份本身较为敏感的情况(此技能会将书目元数据发送到 Crossref,这是一个公共 API)
输入解析
按以下顺序检查用户的消息:
- 消息中粘贴的引文文本。 如果用户在消息中直接包含一条或多条引文字符串,请通过 stdin 将其传给 lint 工具。无需文件。
- 提供了文件路径。 如果用户提供了
.md、.tex、.bib、.txt或.docx文件的路径,请将路径作为参数传给 lint 工具。对于 macOS 上的.docx,先进行转换:textutil -convert txt -stdout -- "$path" | ~/.claude/skills/cite-verify/scripts/lint.sh - 两者都有。 如果用户同时提供了两者,先处理粘贴的文本。
- 两者都没有。 询问要检查哪些引文。
运行方法
# 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 将此原则应用于书目:每条引文都被视为大模型生成的标签,在信任它之前,必须与规范记录进行验证。