mcpField
V
validate-bib

validate-bib

github.com/pedrohcgs文档处理1.7k86 次安装4 周前更新
代码仓库

关于 validate-bib

validate-bib 用于核对课程文件中的引文与参考文献表。默认进行结构检查,也可启用语义模式,检测重复条目、验证 DOI 并检查引文格式。

主要功能

  1. 01查找参考文献表中缺失的引文条目
  2. 02标记未引用条目和疑似键名拼写错误
  3. 03检查参考文献字段及格式
  4. 04在语义模式下检测重复文献
  5. 05可选验证 DOI 元数据和引文格式

适用场景

  1. 01提交前审查课程材料
  2. 02查找引用不一致的参考文献条目
  3. 03检查多个文件中的 DOI 元数据和引文格式

安装

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

$npx skills add https://github.com/pedrohcgs/claude-code-my-workflow --skill validate-bib

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

详细介绍

验证参考文献

交叉核对讲义文件中的引文与参考文献条目。两种模式:

  • **默认(结构):**缺失条目、未使用条目、格式错误的字段、疑似拼写错误的条目。
  • **--semantic:**增加引文漂移检测(同一论文的重复条目)、通过 crossref 验证 DOI,以及检查每个文件内的引文格式是否一致。

报告保存至 quality_reports/bib_audit_[structural|semantic].md。

模式 1:结构(默认)

步骤
  1. 读取参考文献文件并提取所有引文键。

  2. 扫描讲义文件中的引文键:

    • .tex:\cite{、\citet{、\citep{、\citeauthor{、\citeyear{、\textcite{、\parencite{
    • .qmd / .md:@key、[@key]、[@key1; @key2]
    • 提取所有使用过的唯一引文键。
  3. 交叉核对:

    • **缺失条目(严重):**讲义中引用了,但 .bib 中没有。
    • **未使用条目(提示):**在 .bib 中,但从未被引用。
    • **疑似拼写错误的条目:**与 .bib 中某个键的编辑距离不超过 2 的键(例如,Smith2020 与 Smth2020)。
  4. 检查条目质量:

    • 必填字段齐全(author、title、year、journal/booktitle)。
    • author 字段格式正确。
    • year 在 1900 至当前年份之间。
    • 没有格式错误的字符或编码问题。
    • doi 字段已规范化(不以 https://doi.org/ 开头)。
  5. 将报告写入 quality_reports/bib_audit_structural.md。

扫描的文件
Slides/*.tex
Quarto/*.qmd
guide/*.qmd
master_supporting_docs/**/*.tex
参考文献位置

默认位于仓库根目录下的 Bibliography_base.bib;可通过 CLAUDE.md 覆盖。

模式 2:语义(--semantic)

包含模式 1 的所有内容,另加:

2a. 引文漂移检测

不同键对应多个描述同一论文的 .bib 条目。常见表现:

  • Smith2020 和 Smith2020a 的 DOI 或标题完全相同。
  • CallawaySantAnna2021 和 CS2021 都指向同一篇论文。
  • 合作者合并的 .bib 文件。

检测启发式规则(满足任意一项 → 标记):

检查项信号
不同键对应相同 DOI确定重复(严重)
标题相同(忽略大小写并去除标点)很可能重复(严重)
作者、年份和期刊相同可能重复(中)
标题 token 的 Jaccard 相似度 > 0.85,且 token 长度 ≥ 4 个字符疑似重复(低)

对于每组标记的条目:列出两个键、各自的引用位置,并建议一个规范键(优先选择引用次数最多的键,其次按字母顺序选择)。

2b. DOI 验证(可选;需要网络)

对于每个含有 doi 的条目,获取 https://api.crossref.org/works/{doi} 并比较:

  • 第一作者的姓氏
  • 年份
  • 标题(规范化 token 的 Jaccard 相似度 > 0.7)
  • 容器标题 / 期刊(完全一致或缩写形式)

严重程度:

  • 作者或标题不匹配 → 严重(论文错误)
  • 年份不匹配 → 中(预印本与正式发表版本不同,或存在拼写错误)
  • 期刊不匹配 → 低(合法的预印本版本差异)

**速率限制:**每次运行最多查询 50 次,每次调用间隔 0.5 秒。在 quality_reports/.doi_cache.json 中缓存。

**退出方式:**在离线或无法使用 WebFetch 的环境中使用 --skip-doi。

2c. 每个文件内的格式一致性

对于每个文件,统计引文命令(\citet 与 \citep 与 \cite;@key 与 [@key])。如果文件中混用格式且看不出明显规律,则标记该文件(例如,同一套讲义中有 20 个 \citep 和 3 个 \cite)。严重程度低。

2d. 引文与论述的合理性检查(仅标记)

使用 --cite-claim 启用。对于每个文件中引用次数最多的 10 篇文献,使用 WebFetch 获取 Crossref 摘要,并将摘要与文中的上下文一并呈现。不自动判断——由人工决定论述是否相符。

**此项检查的是存在性和结构,而非恰当性。**判断被引论文是否确实表达了文中归于它的观点,是 /verify-claims 的任务——它会读取原文,并通过引文和页码给出支持 / 部分支持 / 反驳的判断(对于有充分依据的具名替代方案,可使用 EXPLAINED 例外)。--cite-claim 只会呈现摘要;如需得出判断,请运行 /verify-claims。

报告结构(quality_reports/bib_audit_semantic.md)
# Bibliography Semantic Audit

**Date:** YYYY-MM-DD
**Bibliography:** Bibliography_base.bib (N entries)
**Files scanned:** [list]

## Summary

| Check | Critical | Medium | Low |
|---|---|---|---|
| Structural | | | |
| Citation drift | | | |
| DOI verification | | | |
| Style consistency | 0 | 0 | |

## Critical Issues

### Duplicate entries
| Keys | Signal | Citations | Recommended canonical |
|---|---|---|---|

### DOI mismatches
| Key | Field | .bib value | crossref value |
|---|---|---|---|

## Medium / Low issues
…

## Next steps
1. Resolve duplicates — pick canonical key, update citations, remove orphans.
2. Fix DOI mismatches — verify paper in crossref or strip the wrong DOI.
3. Review style-consistency notes.

退出行为

  • **结构检查:**退出码为 0;报告会列出问题。
  • **语义检查:**如果只有 LOW 级别的问题,退出码为 0;存在任何 CRITICAL 问题时,退出码为 1。可用作提交前检查关卡。

交叉引用

  • .claude/skills/review-paper/SKILL.md — 配合使用,完成全面的提交前检查。
  • .claude/skills/audit-reproducibility/SKILL.md — 数值声明检查的对应技能。
  • .claude/skills/verify-claims/SKILL.md — 引用恰当性检查的对应技能(被引用的论文是否支持该声明?)。此技能检查引用是否存在且格式正确;/verify-claims 检查引用是否成立。

此技能不做什么

  • 不判断引用是否用于正确的语境——被引用的论文是否确实表达了声明所归因的内容。这是 /verify-claims 的工作(见 2d);此技能只检查引用是否存在以及结构是否正确。
  • 不自动修复你的 .bib 文件——所有修改都只是建议。
  • 不检查非 DOI 标识符(ISBN、arXiv、SSRN)——此项列入路线图。

评论

支持 Markdown