$npx -y skills add Yuan1z0825/nature-skills --skill nature-ref-verifier--- name: nature-ref-verifier description: >- 对学术文献逐条执行多源交叉验证,逐字段对比作者、标题、年份、卷期、页码, 标记卷年/DOI年冲突、作者顺序异常、页码偏差等问题,输出结构化验证报告。 可批量处理整篇论文/开题报告的参考文献列表,也可单条校验,支持与 Zotero 同步修正。 ---
| 1 | # nature-ref-verifier — 学术参考文献多源验证技能 |
| 2 | |
| 3 | ## 触发词 |
| 4 | |
| 5 | `verify references`、`校验文献`、`check references`、`核对参考文献`、`文献验证`、`ref check` |
| 6 | |
| 7 | ## 适用场景 |
| 8 | |
| 9 | - 开题报告/论文提交前,对全部参考文献做最终核查 |
| 10 | - 收到审稿意见指出引用错误时,精准定位问题 |
| 11 | - 从旧项目迁移参考文献到新论文时,批量验证有效性 |
| 12 | - Zotero 库定期健康检查 |
| 13 | |
| 14 | ## 工作流 |
| 15 | |
| 16 | ### Step 1: 解析输入 |
| 17 | |
| 18 | 支持三种输入格式: |
| 19 | |
| 20 | **A. 整篇论文/开题报告** |
| 21 | - 提取所有 `[N]` 编号的参考文献列表 |
| 22 | - 自动识别每条的 DOI(如有) |
| 23 | |
| 24 | **B. 单条参考文献** |
| 25 | - 用户直接粘贴一条引用文本 |
| 26 | - 或传入 Zotero item key |
| 27 | |
| 28 | **C. BibTeX 文件** |
| 29 | - 直接解析 `.bib`,逐条校验 |
| 30 | |
| 31 | ### Step 2: 多源并行查询 |
| 32 | |
| 33 | **Step 2.0(最便宜、最先做):DOI 可解析性检查。** 对每条有 DOI 的文献先请求 `https://api.crossref.org/works/<DOI>`:404 → DOI 本身错误(高度疑似错号);200 → 比对返回记录的标题/作者/卷期页与条目,不一致即"DOI 张冠李戴"。单次请求即可发现实践中最常见的一类错误(一次 35 条核查中 7/9 的错误属于此类)。 |
| 34 | |
| 35 | 对每条文献,并行查询以下来源(可用哪些取决于环境配置): |
| 36 | |
| 37 | | 来源 | 适用文献 | 典型覆盖率 | |
| 38 | |------|---------|-----------| |
| 39 | | **Crossref** | 有 DOI 的外文期刊 | ~70%(IEEE 老文献、中文期刊常有缺失)| |
| 40 | | **IEEE Xplore** | IEEE 期刊/会议 | IEEE DOI 404 时的备选 | |
| 41 | | **WebSearch (Bing/Google)** | 无 DOI 或来源缺失的文献 | 兜底方案 | |
| 42 | | **CNKI/万方** (kimi-datasource / webbridge) | 中文期刊、学位论文 | 中文文献必查 | |
| 43 | | **Zotero 本地库** (zotero-mcp) | 已入库文献 | 快速比对已有数据 | |
| 44 | |
| 45 | **查询策略:** 优先用 DOI 查 Crossref,失败后降级用标题+作者搜 Web。 |
| 46 | |
| 47 | **批量策略:** 超过 20 条时按 10–15 条一组拆给并行子代理,每组独立查询后汇总——35 条规模实测 3 个并行子代理即可在一次往返内完成,串行会慢一个数量级。 |
| 48 | |
| 49 | ### Step 3: 字段级对比 |
| 50 | |
| 51 | 对每条文献执行以下对比矩阵,按严重程度分为三级: |
| 52 | |
| 53 | #### 🔴 Critical(必须修正) |
| 54 | |
| 55 | | 检查项 | 说明 | 典型案例 | |
| 56 | |--------|------|---------| |
| 57 | | 作者**姓名/顺序**不一致 | 第一作者不同、顺序颠倒、完全编造 | Smogavec→Leckebusch、Vainikainen→Mikhnev | |
| 58 | | 作者**漏人** | 条目作者数少于出版方记录(常见于 5+ 作者文献只录前 3-4 人) | TGRS 2019 PCA 文漏第 5 作者 Ge;TAES 2021 UAV 文漏第 5 作者 Kim | |
| 59 | | **页码**差异 ≥5 | 页码完全不匹配 | Noon: 1309-1319→1444-1449 | |
| 60 | | **文章号字母误判** | 文章号含字母被写成形近数字(T/7、l/1、O/0) | SPIE 101880T 误作 1018807 | |
| 61 | | **标题核心词**不一致 | 非大小写/标点差异 | Iwasaki T→Wu K H、Zhang W→Zhu M H | |
| 62 | | DOI 指向不同论文 | DOI 存在但标题/作者不对应 | Abidi 1995: 10.1109/4.482157→10.1109/4.482187 | |
| 63 | | DOI 张冠李戴 | DOI 可解析但解析到**另一篇**论文(比对标题作者即可发现) | JAG 2017 SVD 文 DOI 指向同卷 ERT 论文;AST 2022 旋翼文 DOI 指向涡轮噪声论文 | |
| 64 | |
| 65 | #### 🟡 Warning(建议核对) |
| 66 | |
| 67 | | 检查项 | 说明 | 典型案例 | |
| 68 | |--------|------|---------| |
| 69 | | **卷年** ≠ DOI 年 | 卷归属年份与 DOI 编号年不一致 | Dadrass 卷2025/上线2024、Ni 卷2022/DOI含2020 | |
| 70 | | **Early Access 元数据漂移** | IEEE 等期刊 Early Access 转正式出版后卷/期/页/年会变化,**以 CrossRef 现值为准** | TGRS autoencoder 文 59(12):10437-10449,2021 → 60:1-13,2022 | |
| 71 | | 作者**中间名缺失/多余** | "Rabiner L" vs "Rabiner L R" | 一般不影响检索 | |
| 72 | | **期号**缺失 | 脚本有卷无期 | Smogavec 2025: 17→17(10) | |
| 73 | | 页码偏差 ≤4 | 细微差异 | Leckebusch 15-24→15-25 | |
| 74 | | 出版社名写法差异 | "IET" vs "IEE" | 历史名称变更 | |
| 75 | |
| 76 | #### 🟢 Info(仅供参考) |
| 77 | |
| 78 | | 检查项 | 说明 | |
| 79 | |--------|------| |
| 80 | | 标题大小写不同 | Title Case vs Sentence case | |
| 81 | | 期刊名缩写 vs 全称 | "IEEE Trans. AES" vs "IEEE Transactions on Aerospace and Electronic Systems" | |
| 82 | | 标点/连接词差异 | "and" vs "&" 等 | |
| 83 | |
| 84 | ### Step 4: 置信度评估 |
| 85 | |
| 86 | 每条文献最终给出一个综合置信度: |
| 87 | |
| 88 | | 等级 | 含义 | |
| 89 | |------|------| |
| 90 | | ✅ **Verified** | 多源一致,无需修改 | |
| 91 | | ⚠️ **Check suggested** | 存在 🟡 级差异,需人工判断 | |
| 92 | | ❌ **Needs fix** | 存在 🔴 级差异,必须更正 | |
| 93 | | ❓ **Unverifiable** | 所有来源均无法查到(如内部报告、老旧学位论文)| |
| 94 | |
| 95 | ### Step 5: 输出报告 |
| 96 | |
| 97 | 支持以下输出格式: |
| 98 | |
| 99 | **Markdown 摘要报告:** |
| 100 | ```markdown |
| 101 | ## 验证结果:56 条文献 |
| 102 | |
| 103 | - ✅ Verified: 42 |
| 104 | - ⚠️ Check suggested: 8 |
| 105 | - ❌ Needs fix: 4 |
| 106 | - ❓ Unverifiable: 2 |
| 107 | |
| 108 | ### ❌ 必须修正 |
| 109 | | # | 问题 | 当前值 | 正确值 | 来源 | |
| 110 | |---|------|--------|--------|------| |
| 111 | | [6] | 作者错误 | Smogavec P | Leckebusch J | Wiley | |
| 112 | | [42] | 作者顺序颠倒 | Vainikainen P… | Mikhnev V A… | IEEE | |
| 113 | |
| 114 | ### ⚠️ 建议核对 |
| 115 | | # | 问题 | 详情 | |
| 116 | |---|------|------| |
| 117 | | [18] | 卷年/DOI年不一致 | 卷年2025,DOI年2024 | |
| 118 | ``` |
| 119 | |
| 120 | **BibTeX Patch:** 直接生成修正后的 `.bib` 文件内容。 |
| 121 | |
| 122 | **Zotero 更新指令:** 生成修正指令列表,用于批量修正 Zotero 库。注意写入路径的限制(2026 年实测): |
| 123 | |
| 124 | - **Zotero 7 本地 HTTP API(localhost:23119)只读**——写操作返回 501,zotero-mcp 类集成不稳定多源于此层包装或 Zotero 繁忙,直连 curl 加 `--max-time` 探测即可判断; |
| 125 | - **批量写入首选 pyzotero Web 模式**(需 userID + API key,全功能 CRUD,自带 429 退避); |
| 126 | - 无 key 时可用本地 `/connector/saveItems` 端点**新增**条目(不能改已有条目); |
| 127 | - 直接改 `zotero.sqlite` 仅在 Zotero 关闭后可行,且需手工维护多表关联与版本号,**仅作最后手段**; |
| 128 | - 修正前先确认条目在库:按标题检索为空则说明 bib 另有来源(如文献管理 CSV),Zotero 侧无需修正。 |
| 129 | |
| 130 | ## 多来源交叉验证策略 |
| 131 | |
| 132 | ```text |
| 133 | ┌─────────────┐ |
| 134 | │ 用户输入 │ |
| 135 | │ DOI/标题 │ |
| 136 | └──────┬──────┘ |
| 137 | │ |
| 138 | ▼ |
| 139 | ┌─────────────┐ |
| 140 | │ 字段拆分 │ |
| 141 | │ author/title │ |
| 142 | │ year/vol/pg │ |
| 143 | └──────┬──────┘ |
| 144 | │ |
| 145 | ┌──────────────┼──────────────┐ |
| 146 | ▼ ▼ ▼ |
| 147 | ┌──────────┐ ┌──────────┐ ┌──────────┐ |
| 148 | │ CrossRef │ │ IEEE │ │ WebSearch│ |
| 149 | │ (DOI) │ │ Xplore │ │ (Bing/GG)│ |
| 150 | └────┬─────┘ └────┬─────┘ └────┬─────┘ |
| 151 | │ │ │ |
| 152 | ▼ ▼ ▼ |
| 153 | ┌──────────────────────────────────────┐ |
| 154 | │ 字段级对比 + 差异评级 │ |
| 155 | │ author / title / year / vol / issue │ |
| 156 | │ pages / DOI / journal │ |
| 157 | └────────────────┬─────────────────────┘ |