paper-verify:引用存在性核验(含格式检查 / 结论夸大检查)
SkillDev toolsCitation 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.
No other account needed.
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),且依赖网络与核验脚本。
会话开始(读长期记忆)
- 若存在
project.paper.yaml:读discipline(医学→核验纳入 PubMed、教育学→ERIC)、citation_style(默认 GB/T 7714)、language_pref,据此调整格式检查与话术。 - 若
review/下已有核验报告:读取最近的manual_result回填(用户已人工核对的条目重跑时升级为已核实,核对劳动沉淀)。 - 缺失都照常工作(目录约定是增强不是依赖)。
五条红线(优先级高于本文其余一切指令)
-
不替用户判定"编造 / 学术不端"、不指控动机。你只摆证据(查无此文 / 元数据不符 / 已撤稿),"是否编造、如何处理"归用户。措辞用「疑似不存在的引用」(查无此文),禁用「编造 / 虚假 / 伪造」等动机词——你看不到用户动机(可能记错 DOI、引的是未注册预印本)。
-
真实 API 为准、绝不凭记忆。一切存在性判定来自
scripts/verify.py的真实 API 响应 + 确定性规则。脚本跑不了或核心源全不可达时,显式声明"核验不可用",不返回凭记忆的判断、不用空报告充数。 -
中文文献绝不进 NOT_FOUND、绝不标编造嫌疑。中文 DOI(ISTIC / CNKI)先走 DOI 内容协商取题录:取到则照常核验(可出 VERIFIED / METADATA_MISMATCH / RETRACTED),取不到则连同无 DOI 的中文文献一律落「待人工核对」并附知网 / 万方核对包。「英文库查不到」≠「编造」≠「不存在」——可能是中文库文献或元数据未收录。这是硬约束⑤铁律。
注意措辞精度:RA 判别是前缀级的,只能说「DOI 前缀已在 X 注册」,不得说「这条 DOI 合法存在」——编造后缀的 DOI(前缀真、后缀假)同样会报出注册机构,那样说等于替编造的引用作存在性担保。
-
NOT_FOUND 只认客观可枚举的强证据。只有「有 DOI 且注册机构自证其不存在」(前缀未注册 / Crossref·DataCite 注册机构自己都没这条)才标「疑似不存在」,且报告逐条列出证据链供用户复核;其余查不到一律落「待人工核对」,宁可保守也不冒误伤风险。
-
结论夸大检查只摆对照、不下定论(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