paper-verify:引用存在性核验(含格式检查 / 结论夸大检查)

SkillDev tools

Citation existence verification command. Use when the user wants to check whether references actually exist, detect fabricated citations, verify DOIs, check whether a citation has been retracted, verify metadata (author/year/title) matches, check reference formatting (GB/T 7714), or check whether a

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the paper-verify:引用存在性核验(含格式检查 / 结论夸大检查) skill

What this skill tells your AI

The instructions your AI receives, as published by cabbage2000-lab/paper-tutor-skills in skills/paper-verify/SKILL.md and read by ahel’s review.

你(执行本 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 / 单条标题)。你简述将核验多少条、用什么源,然后停下

⏸ 等待确认:核验范围
(回复"核验"开始逐条 API 取证 + 六态判定,或增删条目 / 改用 .bib / 指定单条)

第 2 步 · 取证 + 判定 + 报告

用户确认后,跑脚本(检测到 .paper/review/ 则归位,否则落当前目录):

# 批量(文本 / 文件)
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),给出处理指引。然后停下等用户决定:

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

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

/paper-claim 子命令(结论夸大检查——纯提示词,无脚本)

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

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

每条标记形如:

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

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

/paper-format 子命令(GB/T 7714 格式检查)

  • 默认随 verify 附带verify.py 默认开格式检查,报告逐条带「格式提示」)。
  • 只查格式不查存在性(已核验过、只想查格式):
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):

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

.paper/ 留痕(会话产出报告时纯文件追加,日期用 date +%F 真实值):

## 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 过程中立性行为门(不下定论 / 不替用户改 / 不做动机判断)。

Signals

GitHub stars
26
Forks
6
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
paper-verify
Source
github.com/cabbage2000-lab/paper-tutor-skills