Nature 文献合法下载器
通过开放获取、出版商 API 与机构授权通道,合法获取学术全文与 PDF。
该技能在文档层面展现出较强的安全意识:明确禁止绕过付费墙、DRM、验证码,不读取或导出 cookie、密码、localStorage 或 session 文件;API 密钥通过标准输入传入并存储为 0600 权限,避免在命令参数、日志、回复和 manifest 中回显;要求 SI 确认,避免意外下载;有 provider-friendly pacing 和 audit trail。然而,技能核心依赖用户已登录的浏览器和 CDP 代理,涉及对用户浏览器环境的操作,而权限控制、会话隔离和回滚机制并未完全明确;文档虽提及限制,但未提供具体实现细节,如浏览器控制的范围、限制和故障恢复。扣分理由:权限和隔离不完全,恢复机制欠缺。
技能文档提供了详细的流程、状态码和失败处理,但关键脚本(如 batch_download.mjs、configure_school.py、browser_pdf_downloader.mjs)及其测试套件未被审查,无法验证其正确性。文档中明确要求 Node 22+和 Python 3,但未提供依赖列表和安装指南,可能导致环境缺失。此外,许多失败状态(如 verification_auto_failed, carsi_waiting_user)依赖浏览器状态,静态审查无法确认其实现。扣分理由:仅静态审查,未执行测试,且依赖的外部服务(CNKI、Web of Science)可能无法从中国大陆直接访问,可能影响可靠性。
技能有清晰的目标受众(需要合法获取学术全文的用户)和场景(CNKI 机构访问、OA 获取、出版商 API),但能力边界和触发条件在文档中虽明确,实际触发仍需依赖用户输入和配置。中文支持良好,但核心功能依赖 CNKI、Web of Science 等海外服务,这些服务在中国大陆可能被限制或需要特定访问方式,会影响适应性。扣分理由:环境适配和可达性未得到验证,海外服务依赖可能影响在中国大陆的使用。
技能具有完整的信息架构:SKILL.md、README.md、README_EN.md、references/ 和 data/。文档提供配置、安装、示例和边界说明,但缺少明确的已知限制(如对个别学校的兼容性)和版本/变更日志。发布者未验证,但文档中提供了明确的维护者信息,责任归属基本清晰。扣分理由:缺少已知限制和变更记录。
技能声称能完成下载任务,但静态审查无法验证实际输出质量。文档提供了明确的输出格式(manifest.json、PDF、HTML等),且示例命令详细,但缺少对输出可用性的独立验证。扣分理由:静态审查无法确认输出是否直接可用,且依赖浏览器状态和外部服务,可能影响实际效果。
文档提供了测试命令(python3 -m unittest discover -s tests/python 和 node --test tests/unit/*.test.mjs),但测试文件和结果未被审查,无法确认真实性。存在内部设计文档(docs/nature-downloader-reference-research-2026-07-15.md)提供了外部参考,但未看到具体验证数据。扣分理由:测试未执行,外部验证数据不足,只有静态文档证据。
- 技能依赖用户已登录的浏览器和 CDP 代理,务必确保用户明确同意并了解浏览器控制的范围,避免越权操作。
- 核心功能依赖海外服务(如 CNKI、Web of Science),在中国大陆可能无法直接访问或需要特定网络环境,使用前应确认可达性。
- API 密钥和登录状态属于敏感信息,务必遵循文档中的安全存储和传输要求,避免泄露。
- 本静态审查未执行实际测试,实际可靠性、效果和安全性需进一步验证。
这个 Skill 能做什么,适合哪些场景?
本技能提供一套完整的学术文献下载流程,支持开放获取(OA)、出版商 API(Elsevier、Springer Nature、IEEE)和机构授权(CNKI、Web Access)三种合法途径。它强调使用用户已有的图书馆登录态和 Chrome 会话,不绕过付费墙或 DRM。技能包含 SI(补充材料)确认门、API 优先与 OA 回退逻辑、状态分类清单以及批量下载脚本,确保下载过程合规、可审计。该技能属于 nature-skills 仓库中的一项,需 Node.js 22+ 和 Python 3 环境。
读取 DOI、标题或 PDF URL,识别语言与出版商;中文文献直接走 CNKI,英文文献优先尝试出版商 API,失败后自动检索 OA 源(PMC、Unpaywall、arXiv 等),OA 不可用时再走 Web Access 机构授权。运行批量下载脚本(batch_download.mjs),支持 --si/--no-si 参数,生成 manifest.json 记录下载状态、来源和校验信息。使用 configure_school.py 和 configure_credentials.py 管理配置与凭据,通过 Chrome CDP 复用用户登录态,自动处理验证码滑块等挑战,最终产出 PDF、HTML、CAJ 或 SI 文件到指定目录。
- 研究生需要下载 CNKI 上某篇中文论文的 PDF 时,可通过本技能利用学校图书馆的 CNKI 订阅权限。
- 研究人员想合法获取某篇 Elsevier 文章的全文,可用已注册的 API key 尝试 API 下载,失败后自动查找 OA 副本。
- 教师需要批量下载一组指定 DOI 的论文及其补充材料(SI),可运行批量脚本并统一询问 SI 需求。
- 用户没有机构订阅但目标论文是 OA,可通过 PMC 或 arXiv 等合法渠道直接下载 PDF。
- 当用户所在图书馆对某篇论文无全文权限时,技能会明确告知并避免无效重试。
这个 Skill 有哪些优点和局限?
- 严格遵循合法下载路径,不规避付费墙
- 支持多种英文出版商 API 和 OA 源,自动回退
- 提供批量下载和审计清单,适合多论文场景
- 强调复用用户登录态,降低重复认证成本
- 清晰的错误状态分类,便于诊断问题
- 依赖 Node.js 22+ 和 Python 3,环境要求较高
- CNKI、Web Access 和 SI 下载需要 Chrome 远程调试配置,有一定技术门槛
- 无内置学校预设,首次配置需用户提供资源 URL
- 未明确提供测试套件或跨平台验证(macOS/Linux)
- 部分出版商 API 需额外注册密钥,支持有限
如何安装这个 Skill?
从仓库安装本技能:使用 npx skills add Yuan1z0825/nature-skills --skill nature-downloader --agent codex --global --yes --copy 安装到 Codex,或手动将 skills/nature-downloader 目录复制到 ~/.claude/skills/ 或 ~/.codex/skills/。需确保 Node.js 22+ 和 Python 3 可用。安装后需按需配置图书馆资源 URL(configure_school.py)和出版商 API 密钥(configure_credentials.py)。
如何使用这个 Skill?
向 Agent 描述任务,例如:“下载这篇论文的 PDF:DOI 10.1007/s00122-021-03957-1,不要 SI”。或者直接运行批量脚本:node scripts/batch_download.mjs --dois "10.1007/s00122-021-03957-1" --no-si --out "<项目目录>"。首次使用需配置学校资源 URL(python3 scripts/configure_school.py url "https://library.example.edu")和必要的 API key(python3 scripts/configure_credentials.py set elsevier)。技能会引导你完成浏览器远程调试(chrome://inspect)以便复用登录态。
这个 Skill 与同类方案有什么区别?
与同仓库的 nature-academic-search 相比,本技能专注于下载,而后者主要做检索和引用分析;自然下载器可与其配合使用,但下载能力是独立的。