cnki · git:20261102.a9ed8b4 · 2026-11-02 · sha256 95b5391d6d8ecebf

cnki git:20261102.a9ed8b4A

Immutable. This exact content never changes and is served at /api/v1/blob/95b5391d6d8ecebf.

---
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`。
- 不要把脚本返回的整段摘要贴给用户,按任务需要概括。