---
name: cnki
description: 知网检索与核对（乔淼PhD · AI学术训练营 · AI学术工作流）。用学员自己电脑上的浏览器查中国知网：按主题 / 篇名 / 关键词 / 作者 / 来源检索，可限年份、核心期刊（CSSCI / 北大核心 / CSCD 等）、只要学术期刊；按篇名核对一篇中文文献是否真实存在、作者 / 年份 / 刊名对不对；取题录详情（摘要、关键词、卷期页、DOI、GB/T 引文）；导出 RIS 或直接进 Zotero。不用装 MCP，随 skill 附 scripts/cnki.mjs（要 Node.js 18 以上）。Trigger on："在知网搜一下"、"查知网"、"核对这篇中文文献是不是真的"、"知网检索 CSSCI 期刊"、"把知网结果导出到 Zotero"、"search CNKI"、"verify this Chinese paper on CNKI"。
---

# CNKI · 知网检索与核对

**必须用本 skill 目录下的 `scripts/cnki.mjs`，不要自己写抓网页的代码，也不要改用别的知网 skill**。脚本会自己打开浏览器、选能用的知网站点、控制查询速度，最后回一段 JSON 给你。

```
node <skill>/scripts/cnki.mjs <命令> [参数]
```

## 命令

| 要做的事 | 命令 |
|---|---|
| 检索 | `search "检索词" [--field 主题] [--years 2015-2025] [--core CSSCI,北大核心] [--type 期刊] [--page 1] [--size 20]` |
| 核对一篇是否真实（验真用） | `verify "篇名" [--author 第一作者] [--year 2024] [--journal 刊名]` |
| 题录详情 | `detail <行号或条目编号或知网链接>...` |
| 导出 | `export <行号或条目编号>... --to ris [--out 文件.ris]`，或 `--to zotero` |
| 打开知网窗口 | `open`（第一次用、要登录、要拖验证码时） |
| 自检 | `check`（开课前或怀疑知网改版时跑） |

- `--field`：主题（默认）/ 篇名 / 关键词 / 作者 / 来源 / 篇关摘 / 摘要 / 全文。检索词可以用知网的运算符：`*` 并且、`+` 或者、`-` 不含，比如 `(认知卸载 + 认知外包) * 教育`。
- `--core`：北大核心 / CSSCI / CSCD / EI / AMI / WJCI，可以写多个，用逗号隔开，命中任意一个就算。
- `--type 期刊`：只要学术期刊，排除学位论文、会议、报纸。
- `--years`：按刊期的年份筛。结果行里的 `date` 是知网显示的上网日期，网络首发的文章可能比刊期晚一年。核对年份一律用 `verify` 或 `detail` 返回的 `year`。
- 行号是**上一次 `search`** 结果里的第几条（`n` 字段）。脚本把上一次的结果记在本机，可以直接用 `export 1 3 5`，不用抄很长的条目编号。
- `--size` 最大 50。每查一次知网都要隔 2–5 秒，一小时最多 150 次。所以一次多取几条，少翻页。

## 返回

每次回一段 JSON，先看 `status`：

| status | 意思 | 你怎么做 |
|---|---|---|
| `ok` | 成功 | 往下做 |
| `not_found` | 没查到 | 用 `verify` 核对时，这就是「知网查无此文」 |
| `captcha` | 要拖验证码 | 脚本已经把浏览器窗口提到前面，并等了 3 分钟。请用户在那个窗口里拖一下拼图，拖完再跑同一条命令 |
| `blocked` | 被知网拦了（HTTP 418 / 403） | 停下，告诉用户过一阵再查，不要连续重试 |
| `limit` | 这一小时查太多次了 | 同上 |
| `unreachable` | 国内站和海外版都打不开 | 让用户检查网络 |
| `layout_changed` | 知网页面改了，脚本取不到字段 | 告诉用户「知网改版了，知网 skill 要更新」，并把 `msg` 原样转给用户 |
| `no_browser` | 没找到 Chrome 或 Edge | 请用户装 Chrome |
| `error` | 参数错了或其他问题 | 看 `msg` |

`verify` 返回的 `verdict` 只有三种：
- `对上`：篇名完全一致，你给的作者、年份、刊名也都一致。
- `有出入`：`diff` 里逐条写着哪里不一样，`match` 是知网上的那篇。
- `没找到`：`nearest` 列出最接近的几条，**不要拿它们顶替原文献**。

`detail` 和 `verify` 的 `match` 里有篇名、全部作者、刊名、年份（刊期年）、卷、期、页码、关键词、单位、DOI、ISSN，以及 GB/T 7714 格式的 `citation`。`detail` 还带摘要。

## 规矩

- **不自动破解验证码、不绕过登录**。遇到验证码只能请用户自己拖。
- 检索和导出题录都不需要登录（海外版实测过）。如果用户想用自己学校的权限，就运行 `open`，让用户在弹出的窗口里登录，以后会记住。
- 脚本用的是**单独的一份浏览器资料**（放在用户目录下的 `.cnki-skill/browser`），不会碰用户平时用的浏览器。
- `export --to zotero` 会导入到 Zotero 里**当前选中的分类**。要放进指定分类、或者要连 PDF 一起入库，用 `lit-pdf-zotero`。
- 不下载 PDF，下载 PDF 用 `scansci-pdf`。
- 不要把脚本返回的整段摘要贴给用户，按任务需要概括。
