# Cnki Auto Download

> 用于 Codex 通过可见浏览器和 Chrome DevTools MCP 执行授权范围内的知网论文批量检索、候选整理、题名精确回查、详情页 PDF 优先下载、下载文件归档与问题清单输出；当用户要求自动搜集并下载 CNKI PDF 论文时使用。

- Skill: `findddx/cnki-auto-download` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add findddx/cnki-auto-download`
- Raw SKILL.md: https://api.skillmd.com/api/skills/findddx/cnki-auto-download/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: Findddx (https://skillmd.com/u/findddx)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/findddx/cnki-auto-download

---


# 知网论文自动检索与 PDF 下载

## 适用范围

用于 Codex 在用户已经具备知网访问权限的前提下，完成中国知网论文搜集和 PDF 下载。该 skill 面向批量任务：先围绕研究主题检索并建立候选清单，再按论文题名或详情页逐篇回查，进入详情页点击 `PDF下载`，最后把下载文件移动到目标目录并输出成功、跳过和失败清单。

如果用户只要求检索结果，可只执行检索与候选清单步骤。如果用户要求下载，默认只下载 PDF；没有 PDF 链接、学校未购买、需要付费、无法授权或只有 CAJ 时，跳过并记录，不下载 CAJ，除非用户明确允许 CAJ。

## 工具与环境依赖

- 浏览器：本机 Chrome 或 Edge，必须是用户可见、可手动操作的浏览器会话。
- 浏览器自动化：Chrome DevTools MCP，常用工具包括 `list_pages`、`select_page`、`new_page`、`navigate_page`、`evaluate_script`、`take_snapshot`。如果这些工具未加载，先通过可用工具发现或要求用户重启 Codex 加载 `chrome-devtools` MCP。
- 知网权限：用户自行完成账号登录、学校认证、机构代理、付费确认和验证码。不得索取或导出密码、Cookie、Token、浏览器配置文件。
- 本地文件：需要能读取浏览器下载目录，并能把当前任务中新产生的 PDF 移动到用户指定输出目录。
- 可选辅助：Python 3.10+ 可运行 `scripts/cnki_manifest_tools.py`，用于候选去重、队列生成、下载文件匹配和 manifest 输出；不依赖第三方包。

## 安全边界

- 不绕过知网登录、验证码、机构权限、付费墙或下载限制。
- 不构造或批量请求隐藏文件直链；下载动作必须通过页面上的真实下载入口触发。
- 遇到 Tencent 滑块验证码时立即停下，让用户在浏览器里手动完成。
- 批量下载逐篇处理，并设置短间隔，避免快速连续搜索、翻页或点击。
- 不删除用户已有文件。若 PDF-only 任务误下 CAJ，只记录或移动到用户指定隔离目录。

## 默认策略

- 下载格式：`pdf_only=true`。
- 操作节奏：每次检索、打开详情页、点击下载之间等待 2.5-6 秒；验证码、登录、下载完成等待可更长。
- 下载路径：优先使用用户指定目录；否则在当前工作区创建 `cnki_papers/`、`cnki_work/`、`cnki_manifests/`。
- 下载方式：不要点击检索结果页的“下载”按钮，因为它经常默认下载 CAJ。必须进入论文详情页，使用 `#pdfDown` 或 `.btn-dlpdf a` 触发 PDF。
- 题名回查：对批量下载，优先用候选结果中的详情页 URL；若详情页失效、跳转异常或需要重新定位，则按论文题名精确检索后进入详情页。

## 工作流程

1. 明确任务参数
   - 记录研究主题、关键词组、目标篇数、输出目录、是否只要 PDF、是否允许硕博论文、是否需要核心/CSSCI/北大核心等筛选。
   - 若用户指定“不要 CAJ”或没有说明格式，一律按 PDF-only 执行。

2. 准备目录和任务时间
   - 创建输出目录、工作目录和 manifest 目录。
   - 记录任务开始时间，用于识别浏览器下载目录中新产生的文件。
   - 如果使用辅助脚本，后续把所有结果写入 JSON/CSV manifest。

3. 广泛检索并收集候选
   - 围绕主题做多轮关键词检索，而不是只搜一个词。可组合研究对象、地域、人物、信仰、神话、传说、庙祠、民俗、地方志、治水工程等词。
   - 每轮使用 CNKI 检索页 `https://kns.cnki.net/kns8s/search`，填入 `input.search-input`，点击 `input.search-btn`。
   - 从 `.result-table-list tbody tr` 抽取题名、作者、来源、日期、引用、下载和详情页 URL。
   - 结果写入 `cnki_search_results.json`，不要边搜边无计划下载。

4. 去重、择优和排队
   - 按规范化题名去重；同题多条保留详情页 URL、来源级别、日期和下载引用信息更完整的一条。
   - 结合关键词命中、来源质量、引用/下载量、题名相关度和用户目标筛选下载队列。
   - 输出 `cnki_download_queue.json`，每条至少包含 `title`、`authors`、`source`、`date`、`href`、`status=pending`。

5. 逐篇打开详情页并触发 PDF
   - 对队列逐条处理，每篇之间等待短间隔。
   - 优先 `navigate_page` 到 `href`；必要时按题名精确回查。
   - 详情页加载后等待 `.brief h1`，检查滑块验证码和登录状态。
   - 查找 `#pdfDown` 或 `.btn-dlpdf a`。存在 PDF 链接时，模拟真实点击；不存在时记录 `skipped_no_pdf`。
   - 若出现未登录、机构无权限、支付提示、下载超时或验证码，记录明确状态。验证码和登录问题需要停下等待用户处理。

6. 等待下载并归档
   - 观察浏览器下载目录，等待 `.crdownload` 消失并出现新的 `.pdf`。
   - 把当前任务中新产生的 PDF 移动到用户指定输出目录，文件名优先使用论文题名和作者。
   - 对未匹配到题名的 PDF，保留原文件名并在 manifest 中标记 `unmatched_pdf`，后续人工核对。

7. 输出验收结果
   - 汇总已下载 PDF、跳过项、失败项、需要用户手动处理项。
   - 生成 `cnki_download_manifest.json/csv` 和 `cnki_problem_downloads.md`。
   - 只有确认文件已经落盘并完成移动，才向用户报告“已下载”。

## 关键页面规则

详细浏览器脚本、选择器和异常判断见：

- `references/browser-workflow.md`
- `references/output-schema.md`

辅助脚本：

- `scripts/cnki_manifest_tools.py`

## 交付口径

最终回复应说明：检索了哪些关键词、候选和队列数量、成功下载 PDF 数量、输出目录、问题清单路径，以及是否存在需要用户登录、认证或手动补下的论文。不要在回复中暴露 Cookie、账号信息或任何敏感浏览器会话数据。

