SuperAPI AI 工具集

cnki-export

写作与研究

查看项目

更新于 10-15 09:01

技能介绍

用途

cnki-export 用于从中国知网(CNKI)导出论文的引用数据,并将其推送到 Zotero 桌面版,或保存为 RIS 文件,或输出 GB/T 7714 格式的引用文本。适用于需要将 CNKI 论文快速保存到文献管理工具或导出引用数据的场景。

主要能力

  • 支持三种导出模式:
    • zotero(默认):通过本地 API 推送到 Zotero 桌面版
    • ris:保存为 .ris 文件
    • gb:输出 GB/T 7714 引用文本
  • 支持单篇导出(在论文详情页操作)和批量导出(在搜索结果页操作)。
  • 批量导出通过直接调用 CNKI 导出 API 实现,无需逐篇进入详情页,可大幅减少工具调用次数(例如 9 篇论文从 33 次调用降至 3 次)。
  • 可选择性导出搜索结果中的指定论文(按索引过滤)。
  • 提供 Python 脚本处理导出数据,解析 ELEARNING 格式并调用 Zotero 本地接口。

使用方式

模式选择

根据当前页面上下文选择模式:

  • 在论文详情页:使用单篇导出(步骤 1A),需 1 次 evaluate + 1 次 bash。
  • 在搜索结果页,保存全部或选中论文:使用批量导出(步骤 1B),需 1 次 evaluate + 1 次 bash。
  • 需要先搜索再保存:先使用 cnki-search,再进行批量导出,共 4 次调用。

当需要保存多篇论文时,优先使用批量导出(1B)。

单篇导出(步骤 1A)

在论文详情页,使用 mcp__chrome-devtools__evaluate_script 执行脚本,从页面获取导出 URL 和加密 ID,调用 CNKI 导出 API,返回包含 GBTREFER、ELEARNING、ENDNOTE 等模式的数据,并提取 ISSN、dbcode、dbname、filename 等信息。

批量导出(步骤 1B)

在 CNKI 搜索结果页,提取所有复选框(input.cbItem)的值(即导出加密 ID),直接调用导出 API(https://kns.cnki.net/dm8/API/GetExport),返回 JSON 数组。可通过索引过滤仅导出指定论文。

推送到 Zotero(步骤 2)

将导出数据(单个对象或 JSON 数组)保存到临时文件,然后运行 Python 脚本:

python "e:/cnki/.claude/skills/cnki-export/scripts/push_to_zotero.py" /tmp/papers.json

该脚本支持单篇和批量 JSON 输入,处理 UTF-8 编码,解析 ELEARNING 格式为 Zotero 条目字段,并调用 POST http://127.0.0.1:23119/connector/saveItems。返回 201 表示成功,500 表示错误,0 表示 Zotero 未运行。

报告结果(步骤 3)

单篇导出后报告标题、作者、期刊和 GB/T 7714 引用;批量导出后报告已添加的论文数量及列表。

导出 API 参考

  • API URL:https://kns.cnki.net/dm8/API/GetExport(固定,任意页面可用)
  • filename:加密 ID(详情页为 #export-id,结果页为 input.cbItem 的值)
  • displaymode:GBTREFER,elearning,EndNote(逗号分隔)
  • uniplatform:NZKPT(必需)

已验证的选择器:

  • 导出 URL:#export-url(仅详情页)
  • 导出 ID:#export-id(仅详情页)
  • 复选框(即导出 ID):input.cbItem(搜索结果页)
  • 结果行:.result-table-list tbody tr(搜索结果页)
  • 标题链接:td.name a.fz14(搜索结果页)

Zotero API 参考

  • POST http://127.0.0.1:23119/connector/saveItems
  • Content-Type: application/json
  • X-Zotero-Connector-API-Version: 3
  • 响应:201 = 创建成功,500 = 错误
  • 保存到 Zotero 当前选中的分类
  • 查询分类:
python "e:/cnki/.claude/skills/cnki-export/scripts/push_to_zotero.py" --list

适用场景

  • 需要将 CNKI 论文保存到 Zotero 进行文献管理。
  • 需要导出 CNKI 论文的引用数据为 RIS 文件或 GB/T 7714 文本。
  • 在搜索结果页批量保存多篇论文。

限制与注意事项

  • Windows 编码问题:必须使用 Python 脚本,不能直接通过 bash/curl 传递中文 JSON。
  • Zotero 必须正在运行:localhost:23119 需要 Zotero 桌面版在后台运行。
  • 中文作者:使用 name 字段(单字段,不拆分),creatorType 为 "author"。
  • CNKI 导出 API 的 filename 必须是加密 ID(#export-id 或 input.cbItem 的值),而非 #paramfilename。
  • 批量导出可节省约 90% 的工具调用。