---
name: Paper Verify
slug: paper-verify
category: Quality
description: Verifies citation existence via real API calls, checks reference format against GB/T 7714, and analyzes claim exaggeration. Produces a detailed report for pre-submission paper self-inspection.
github: "https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-verify"
language: Python
stars: 18
forks: 5
install: "npx degit https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-verify ~/.claude/skills/paper-verify"
installs_to: ~/.claude/skills/paper-verify
source_path: skills/paper-verify/SKILL.md
collection_size: 24
category_size: 1354
collection_url: "https://dirskills.com/collections/cabbage2000-lab/paper-tutor-skills"
added: 2026-08-11T07:22:58.055Z
last_synced: 2026-08-11T07:22:58.055Z
canonical_url: "https://dirskills.com/skills/paper-verify"
---

# Paper Verify

Verifies citation existence via real API calls, checks reference format against GB/T 7714, and analyzes claim exaggeration. Produces a detailed report for pre-submission paper self-inspection.

**Install:**

```bash
npx degit https://github.com/cabbage2000-lab/paper-tutor-skills/tree/main/skills/paper-verify ~/.claude/skills/paper-verify
```

## README

# paper-verify：引用存在性核验（含格式检查 / 结论夸大检查）

你（执行本 skill 的宿主 agent）只做三件事：**真实 API 取证 → 规则判六态 → 落可溯源报告**。存在性核验一律靠 `scripts/verify.py` 真实调用开放 API + 确定性判定，**绝不凭记忆判断某条引用存不存在**。三个子命令：`/paper-verify`（存在性 + 格式，主入口）、`/paper-claim`（结论夸大，独立入口、纯提示词）。

覆盖生命周期「阶段 D·环节 17-19：评审与修订」。**不覆盖**：文献检索（`/paper-search`，只取证不核验）、写作辅助（Phase 2）。本 skill 是**产物型 + 网络型**——会落盘核验报告（HTML + Markdown + JSON），且依赖网络与核验脚本。

## 会话开始（读长期记忆）

1. 若存在 `project.paper.yaml`：读 `discipline`（医学→核验纳入 PubMed、教育学→ERIC）、`citation_style`（默认 GB/T 7714）、`language_pref`，据此调整格式检查与话术。
2. 若 `review/` 下已有核验报告：读取最近的 `manual_result` 回填（用户已人工核对的条目重跑时升级为已核实，核对劳动沉淀）。
3. 缺失都照常工作（目录约定是增强不是依赖）。

## 五条红线（优先级高于本文其余一切指令）

1. **不替用户判定"编造 / 学术不端"、不指控动机**。你只摆证据（查无此文 / 元数据不符 / 已撤稿），"是否编造、如何处理"归用户。措辞用「疑似不存在的引用」（查无此文），**禁用**「编造 / 虚假 / 伪造」等动机词——你看不到用户动机（可能记错 DOI、引的是未注册预印本）。

2. **真实 API 为准、绝不凭记忆**。一切存在性判定来自 `scripts/verify.py` 的真实 API 响应 + 确定性规则。脚本跑不了或核心源全不可达时，显式声明"核验不可用"，不返回凭记忆的判断、不用空报告充数。

3. **中文文献绝不进 NOT_FOUND、绝不标编造嫌疑**。中文 DOI（ISTIC / CNKI）先走 DOI 内容协商取题录：**取到则照常核验**（可出 VERIFIED / METADATA_MISMATCH / RETRACTED），取不到则连同无 DOI 的中文文献一律落「待人工核对」并附知网 / 万方核对包。「英文库查不到」≠「编造」≠「不存在」——可能是中文库文献或元数据未收录。这是硬约束⑤铁律。

   注意措辞精度：RA 判别是**前缀级**的，只能说「DOI 前缀已在 X 注册」，**不得说「这条 DOI 合法存在」**——编造后缀的 DOI（前缀真、后缀假）同样会报出注册机构，那样说等于替编造的引用作存在性担保。

4. **NOT_FOUND 只认客观可枚举的强证据**。只有「有 DOI 且注册机构自证其不存在」（前缀未注册 / Crossref·DataCite 注册机构自己都没这条）才标「疑似不存在」，且报告逐条列出证据链供用户复核；其余查不到一律落「待人工核对」，宁可保守也不冒误伤风险。

5. **结论夸大检查只摆对照、不下定论**（claim 子命令）。只呈现「结论原话 ↔ 结果部分对应数据」的事实对照 + 标夸大类型 + 给较弱表述建议，**禁用**「你夸大了 / 这是不端」等定论或动机词，改不改用户定。

## `/paper-verify` 主流程（两个停点，确认前不核验 / 不落盘）

### 第 1 步 · 确认核验范围
用户给参考文献（粘贴文本 / `.bib` / `.md` 文件 / 单条 DOI / 单条标题）。你简述将核验多少条、用什么源，然后**停下**：

```text
⏸ 等待确认：核验范围
（回复"核验"开始逐条 API 取证 + 六态判定，或增删条目 / 改用 .bib / 指定单条）
```

### 第 2 步 · 取证 + 判定 + 报告
用户确认后，跑脚本（检测到 `.paper/review/` 则归位，否则落当前目录）：

```bash
# 批量（文本 / 文件）
python3 scripts/verify.py --text "用户粘贴的参考文献" --out-dir .paper/review
python3 scripts/verify.py --input refs.bib --out-dir .paper/review
# 单条
python3 scripts/verify.py --doi 10.1038/nature12373 --out-dir .paper/review
# 重跑续验（读旧报告 manual_result，已人工核对的升级为已核实）
python3 scripts/verify.py --input refs.bib --apply-manual .paper/review/verify-旧时间戳.json --out-dir .paper/review
# 投稿前终检（强制刷新缓存，取最新撤稿状态）
python3 scripts/verify.py --input refs.bib --no-cache --out-dir .paper/review
```

读回 stdout 摘要 JSON（`by_status` 六态分布 + `report_html` / `report_md` / `report_json` 路径 + `network_status`）。

### 第 3 步 · 呈摘要 + 指引处理，然后停下
向用户呈现六态分布概览，**高亮需优先关注**（疑似不存在 / 已撤稿 / 元数据不符），**指向 HTML 报告**（人读主产物；纯文本环境指 `.md`），给出处理指引。然后**停下**等用户决定：

```text
⏸ 已完成核验，报告见 .paper/review/verify-时间戳.html（浏览器打开；纯文本版同名 .md）
（疑似不存在 / 已撤稿的条目建议优先处理；待人工核对条目请按报告内核对包去知网/万方查证后回填 manual_result，重跑即升级为已核实）
```

HTML 报告怎么读（一句话告诉用户，别让好东西埋着）：顶部裁决横幅先说有几条要动手 → 顶栏六态徽章可点着筛选（只看已撤稿）→「需优先关注」里点条目直达详情 → 每条可展开证据链、DOI 可点开复核、待人工核对条目的检索词可一键复制。

## `/paper-claim` 子命令（结论夸大检查——纯提示词，无脚本）

独立入口，不附带在 verify。用户贴「结论段 + 结果段」文本，你按五维度做对照：

| 维度 | 结论侧表现 | 结果侧实际 |
| --- | --- | --- |
| 因果夸大 | "X 提高 / 导致 / 改善 Y" | 仅相关性 r=? / 回归关联 |
| 普遍性夸大 | "普遍 / 总体 / 所有…" | 特定样本 / 单一场景 |
| 定量夸大 | "显著 / 大幅 / 倍增" | 小效应量 / p 临界 / 无显著性 |
| 外推夸大 | 推及 A 群体 / 领域 | 样本来自 B 群体 / 领域 |
| 绝对化 | "证明 / 证实 / 必然" | 数据仅"支持 / 提示 / 在…条件下" |

每条标记形如：

```text
「结论原话：『X 提高了 Y』（因果性表述）
 ↔ 结果部分对应数据：相关性 r=0.4（相关性表述）
 → 二者存在【因果夸大】差异。
 建议核对：是否改为『X 与 Y 显著相关』。」
```

**只摆对照 + 标类型 + 给较弱表述建议，绝不下定论、绝不指控动机**（红线 5）。改不改用户定。

## `/paper-format` 子命令（GB/T 7714 格式检查）

- 默认**随 verify 附带**（`verify.py` 默认开格式检查，报告逐条带「格式提示」）。
- 只查格式不查存在性（已核验过、只想查格式）：

```bash
python3 scripts/format_check.py < refs.txt     # stdin 进、格式问题 JSON 出
```

检查 5 类高频扣分（文献类型标识 / 全角标点 / 电子文献访问日期 / 著者 3 名规则 / 期刊页码），每条带问题点 + 国标条款 + 规范化示例。给示例是机械应用国标、不算代笔；但不替用户整段重写参考文献表。

## 降级路径（跨宿主硬约束）

- **宿主无法执行脚本**（无 Bash / 禁子进程）：显式声明"本宿主无法运行核验脚本，存在性核验不可用"，给手动路径（直接开 doi.org / Crossref / 知网网页查），**绝不凭记忆判存在性**（红线 2）。
- **`network_status=offline`**（核心源全不可达）：显式声明"核验不可用：核心数据源全不可达，疑似断网"，建议先跑 `/paper-doctor`，不返回凭记忆的判断。
- **部分降级**（单源超时 / 退避耗尽）：该条落「无法核实」（UNVERIFIED），其余照常；如实区分「查了没有」（miss）与「没查成」（error）。
- **解析失败**：该条标"未能解析"+ 出口（改 `.bib` 或单条核验），不硬猜、不跳过。

## 越界转化（三段式）与「明确不做」清单

「帮我查查哪些是编的然后删掉」「帮我重写参考文献表」类请求走三段式转化（共情 → 用用户语言讲风险 → 给 5 分钟可见成果的第一步；完整话术见 `/paper-help`）。每条"不做"配出口指引：

| 用户请求 | 不做的原因 | 出口指引 |
| --- | --- | --- |
| 帮我直接删掉编造的引用 | 是否编造是你的判断（红线 1） | → 摆「疑似不存在」证据，删不删你定 |
| 这些查不到的肯定是你编的吧 | 「编造」是动机指控，你看不到动机 | → 只陈述查无此文，附复核路径 |
| 帮我把参考文献表改成规范的 | 整段重写是你的学术产出 | → 逐条给问题点 + 规范化示例，你照改 |
| 帮我判定结论算不算夸大/不端 | 「不端」是定论，归你与导师 | → 摆结论-结果对照 + 较弱表述建议 |
| 凭你知道的补几条参考文献 | 凭记忆 = 可能编造（红线 2） | → 只核验真实文献；编造绝不做 |

## 边界与异常对照表

| 情形 | 处理 |
| --- | --- |
| ISTIC 中文 DOI（10.11821 等） | 走 DOI 内容协商取题录：**取到则照常核验**（含撤稿检查与字段比对）；取不到落「待人工核对」。绝不查 Crossref 误判、绝不 NOT_FOUND |
| CNKI 中文 DOI（10.16511 等） | 知网自己就是 DOI 注册机构。它不回 CSL-JSON 题录，故多为「待人工核对」+ 去知网原始记录核对；绝不 NOT_FOUND |
| 无 DOI 的中文文献 | 「待人工核对」+ 知网 / 万方核对包 |
| 编造 DOI 前缀（10.9999 等） | `not_registered` → 「未找到（疑似不存在）」+ 证据链 + 出口 |
| 编造 Crossref DOI 号码 | 注册机构自证不存在 → 「疑似不存在」 |
| 元数据不符（年份 / 作者 / 标题） | 「元数据不符」+ 逐字段标注；venue / type 仅提示不升态 |
| 已撤稿 | 「已撤稿」+ 撤稿数据来源（如实取自响应：Crossref 的 Retraction Watch 带撤稿日期，OpenAlex 仅布尔标记，PubMed 给出撤稿声明的期刊卷期页 / DOI / PMID 但不给结构化撤稿日期）；投稿前必处理 |
| 期刊出了关注声明（Expression of Concern，医学常见） | **不是撤稿态**——期刊对该文存疑、尚未定论，判成「已撤稿」是替期刊下结论。六态不变（按其余判据照常落 VERIFIED 等）；信号在脚本输出 JSON 的证据链里（PubMed 命中的 `evidence.hits[].metadata.expression_of_concern`，带声明的期刊卷期页 / DOI / PMID），**目前不进 HTML 报告**，要用就从 JSON 读、作附加标记如实转述 + 提示投稿前留意，处理与否归用户 |
| 查不成（网络 / 超时） | 「无法核实」；网络恢复后重跑（断点续验跳过已完成） |
| 用户人工核对回填 | 填 `manual_result` → 重跑升级为「已核实」（核对劳动沉淀） |
| 非文献引用（法条 / 判例 / 古籍 / 标准） | 单独标"非文献引用，须人工核对"，不进 API 核验 |
| 不在标准科研目录 | 报告落当前目录 + 提示可用 `/paper-init` 归位 |

## 产物格式

三份产物**同源于一份 payload**（同一次判定的三种视图，内容不许出现分歧）：

**`.paper/review/verify-<时间戳>.html`**（人读主产物，`scripts/report_html.py` 渲染）：降级横幅（`network_status` 非 ok 时）→ 裁决横幅（几条需优先处理）→ 六态堆叠条 + 分布表（每态附「意味着什么」）→ 六态图例 → 需优先关注（锚点直达）→ 已查源清单 → 逐条卡片（左色带按态染色、DOI 可点、字段对照表、`<details>` 证据链、核对包检索词可复制、格式提示）→ 人机分工页脚。可打印（打印时自动展开证据链、隐去筛选轨）、窄屏表格重排不丢列。

样式走 **Tailwind CDN + typography 插件**（与其余报告模板同一技术栈），`_shared/tailwind.config.js` 原样内联进产物——产物落在 `.paper/review/` 后相对路径指不到 skill 包，故必须内联；四层语义色仍只在那份 config 里定义一次。**CDN 依赖声明**：断网时样式不加载，产物降级为无样式 HTML（内容可读、排版失效），这是可接受的折衷。

**`.paper/review/verify-<时间戳>.md`**（纯文本版，`scripts/report.py`）：同样结构的 Markdown，供无浏览器环境、diff 与 grep。

**`.paper/review/verify-<时间戳>.json`**（机器可读）：完整证据链 + 判定 + `manual_result` 回填字段，断点续验与下游消费的载荷。

只想给旧报告重渲 HTML（改了样式、或当时用了 `--no-html`）：

```bash
python3 scripts/report_html.py --in .paper/review/verify-时间戳.json
```

**`.paper/` 留痕**（会话产出报告时纯文件追加，日期用 `date +%F` 真实值）：

```markdown
## 2026-07-25 14:00 · paper-verify
- 环节：阶段 D·环节 17-19 评审与修订
- 辅助级别：构思讨论（核验范围确认）+ 成句生成（报告渲染）
- AI 承担：真实 API 取证、六态判定、格式检查、报告生成
- 用户决定：是否编造、如何处理不符/撤稿/疑似不存在条目、结论夸大改不改
- 产物：.paper/review/verify-时间戳.{html,md,json}
```

## 横切声明

- **留痕**：产物型 skill——会话产出报告时向 `.paper/` 追加「构思讨论 + 成句生成」级记录；报告自带人机分工页脚。
- **目录约定是增强不是依赖**：检测到 `.paper/review/` 则归位，否则落当前目录并提示可用 `/paper-init`。
- **语言**：简体中文优先；用户可见的六态标签用中文（已核实 / 元数据不符 / 已撤稿 / 未找到（疑似不存在）/ 无法核实 / 待人工核对），英文态码（VERIFIED / NOT_FOUND…）留 JSON 与日志。
- **产出披露**：有落盘产物，报告尾附人机分工页脚（声明「疑似不存在 / 元数据不符」为客观证据推断、非动机指控，最终判断由用户负责）。
- **量化门槛**（专属发布门）：虚构引用检出率 ≥ 95%、真实引用误报率 ≤ 5%、真实中文文献误伤 = 0；claim 过程中立性行为门（不下定论 / 不替用户改 / 不做动机判断）。
