Nature Downloader

Literature & ReadingView on GitHub ↗

Retrieve full-text PDFs from DOIs, arXiv identifiers, and publisher pages.

Run this skill

Balance: tokens

$0.19 in · $1.55 out per 1M tokens

Your input is sent to the selected AI model to generate the output and saved to your run history. Don't paste text you aren't permitted to share. Privacy

Enter input to estimate cost

About this skill

nature-downloader

nature-downloader — 补齐 nature 工作流缺失的 PDF 落地环节

nature-downloader 是一个合法机构权限下的学术全文/PDF 下载 skill。它把两部分能力合在一起:

  • 首次资源入口配置:先记录用户实际使用的图书馆电子资源链接,再识别学校、SSO/CARSI/EZproxy/WebVPN/资源聚合平台信息,配置保存到 ~/.config/lit-dl/school.json
  • 真实全文落地:通过用户已经登录的 Chrome 会话和 web-access CDP proxy,复用本人的图书馆/CARSI/出版社访问权限,把能合法访问的 PDF 保存到项目文件夹;如果馆藏只提供 HTML 全文,则保存 HTML/文本并明确说明没有 PDF。
  • 中文文献默认知网:按中文题名下载时,默认优先走用户已登录/已授权的 CNKI/知网页面;可通过学校配置或 --cnki-url 指定图书馆提供的知网入口。
  • 开放获取优先:若文献本身是开放获取或开源期刊文章,直接走合法开放 PDF;若图书馆资源明确无权限,直接告诉用户。

它不绕过付费墙,不使用镜像站,不破解验证码,不读取或导出 cookies、密码、localStorage、session 文件。遇到 jAccount/CARSI、验证码、Cloudflare、短信/OTP、人机验证时,会停下让用户本人在 Chrome 里完成。

快速使用

把下面这句话复制给 agent,即可让它自动完成首次配置引导:

请使用 nature-downloader 帮我完成首次图书馆资源配置:先向我索要图书馆电子资源/数据库入口链接,识别授权路径并保存配置;如果需要登录,请引导我在 Chrome 中完成统一身份认证/CARSI 登录;最后运行配置展示和连通性自检,确认后续可复用该图书馆资源下载文献。

1. 配置资源入口

全新用户优先提供图书馆电子资源/数据库入口链接,而不是先填学校名:

python3 scripts/configure_school.py infer "https://whu.metaersp.cn/personalIndex"
python3 scripts/configure_school.py url "https://whu.metaersp.cn/personalIndex"
python3 scripts/configure_school.py show

infer 只判断授权路径不保存,url 会写入配置。比如武汉大学 whu.metaersp.cn 会被识别为资源聚合门户,后续需要登录时再跳转到 cas.whu.edu.cn

如果没有资源入口链接,再用预设学校兜底:

python3 scripts/configure_school.py preset 上海交通大学
python3 scripts/configure_school.py show

查看可用预设:

python3 scripts/configure_school.py list

运行连通性自检:

python3 scripts/configure_school.py health --force

配置路径默认是 ~/.config/lit-dl/school.json。测试或多 profile 场景可以用 LIT_DL_CONFIG_DIR=/path/to/configdir 覆盖。

2. 准备浏览器登录态

  1. 在 Chrome 里打开本校图书馆或学术资源聚合入口。
  2. 用本人账号完成统一身份认证/CARSI 登录。
  3. 确认 Web of Science 或目标出版商页面能在 Chrome 中正常看到全文入口。
  4. 打开 chrome://inspect/#remote-debugging,允许当前浏览器实例远程调试。
  5. 启动 web-access CDP proxy。

3. 下载文献

按 DOI 下载:

node scripts/batch_download.mjs \
  --dois "10.1007/s00122-021-03957-1,10.1111/pbi.14066" \
  --out "./文献自动下载"

按中文题名下载,默认走知网:

node scripts/batch_download.mjs \
  --title "乡村振兴背景下数字治理研究" \
  --out "./文献自动下载"

如果只要 PDF、不要 CAJ,加 --cnki-format pdf。这样在知网没有明确 PDF 下载入口时,脚本会报出未找到可授权 PDF,而不会保存 .caj

node scripts/batch_download.mjs \
  --title "乡村振兴背景下数字治理研究" \
  --cnki-format pdf \
  --out "./文献自动下载"

如果学校图书馆提供了专用知网入口,可显式指定:

node scripts/batch_download.mjs \
  --title "乡村振兴背景下数字治理研究" \
  --cnki-url "https://kns.cnki.net/kns8s/defaultresult/index" \
  --out "./文献自动下载"

按主题从 Web of Science 检索并下载前 N 篇:

node scripts/batch_download.mjs \
  --topic "rice blast resistance gene" \
  --count 10 \
  --out "./文献自动下载"

按精确题名下载开放获取论文(适合 arXiv 论文、无 DOI 论文):

node scripts/batch_download.mjs \
  --title "Attention Is All You Need" \
  --open-access \
  --out "./文献自动下载"

已知 PDF 地址时直接下载并验证:

node scripts/batch_download.mjs \
  --pdf-url "https://arxiv.org/pdf/1706.03762" \
  --title "Attention Is All You Need" \
  --out "./文献自动下载"

默认只下载主 PDF。只有明确需要补充材料时才加:

node scripts/batch_download.mjs --dois "10.xxxx/example" --out "./文献自动下载" --si

输出目录:

文献自动下载/
  PDFs/
  SupportingInformation/

脚本会输出 JSON 状态,常见状态包括 downloadedopen_access_downloadedfull_text_html_availablelibrary_no_permissioncarsi_waiting_userpublisher_verification_waiting_usersciencedirect_robot_checkno_authorized_pdf_foundfailed_after_retry。当状态是 full_text_html_available 时,表示已拿到可读 HTML 全文,但当前授权路径没有有效 PDF,回复用户时必须说清楚;当状态是 library_no_permission 时,表示当前图书馆资源没有该文献全文权限,也必须直接说明。

当前实现边界

  • 已实现:学校配置、配置文件读写、预设库、连通性自检、Web of Science 入口配置读取、Chrome 登录态下 PDF 下载、PDF 文件头验证、状态码体系。
  • 已实现:中文题名默认 CNKI/知网路由,复用 Chrome 中已有的图书馆/知网登录态下载可授权访问的 PDF/CAJ;可用 --cnki-format pdf 限制为只下载 PDF。
  • 已验证路径:以上海交通大学/SJTU + Web of Science + CARSI/Chrome 会话为主要真实下载路径。
  • 新用户首配策略:优先从图书馆资源入口链接识别授权链路;学校预设只作为兜底。
  • 已验证开放获取路径:--title "Attention Is All You Need" --open-access 会精确匹配 arXiv 标题并下载 PDF。
  • 工作流策略:开放获取文章直接下载;非开放获取文章走已配置图书馆资源;馆藏无权限时明确告知用户。
  • 可扩展路径:其他学校可通过 data/schools.yaml 配置 SSO/CARSI 和 discovery.web_of_science_url
  • 不承诺:无登录态下载、绕过出版社限制、自动处理验证码/OTP/Cloudflare、无限批量下载。
  • 注意:--topic 是 Web of Science 主题检索,不保证精确题名命中;精确题名优先使用 --title

依赖

pip install -r requirements.txt
node --version  # 推荐 Node.js 22+

验证

python3 -m unittest discover -s tests/python
node --test tests/unit/*.test.mjs
node --check scripts/batch_download.mjs
node --check scripts/browser_pdf_downloader.mjs

详见 SKILL.md 了解完整工作流、安全边界、状态码体系和失败处理。

Curated by
Yuan1z0825
License
Apache-2.0

Reviews

No reviews yet

Sign in to rate and review this skill.

Related skills