nature-downloader
Use when a user needs lawful academic full text, CNKI institutional access, English OA retrieval, publisher API access, institutional browser fallback, or supporting information downloads.
Install / Use
npx skills add Yuan1z0825/nature-skills --skill nature-downloaderInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Our assessment of nature-downloader
nature-downloader scores 100/100 on our quality scale, 6th of 586 Marketing skills we index (top 2%).
Its SKILL.md is 23 KB long, well organised into 22 sections with 14 code examples: a thorough specification that gives an agent plenty to work with.
With 44,346 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so nature-downloader is actively maintained.
- Our last check on 2026-10-22 found the source still online.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
ReviewOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review judged it risky: The skill instructs the agent to automatically solve visible verification controls such as sliders, CAPTCHA checkboxes, and robot checks ('estimate the visible travel distance and simulate a gradual drag', 'try the visible checkbox once'),.
AI review: risky
- The skill instructs the agent to automatically solve visible verification controls such as sliders, CAPTCHA checkboxes, and robot checks ('estimate the visible travel distance and simulate a gradual drag', 'try the visible checkbox once'),
- It drives an authenticated browser session to scrape/download publisher and institutional content, including CNKI and publisher APIs, creating risk of unauthorized bulk downloading or terms-of-service violations even though it frames access
- It tells the agent to click a pre-filled institutional login button on the user's behalf, which could facilitate access using credentials the agent cannot verify the user authorized, and it mixes user handoff rules with automated bypass att
AI review by kimi-k2.7-code on 2026-09-25. Automated pattern scan on 2026-09-25. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
nature-downloader compared with similar skills
nature-downloader has the highest quality score among these 4 similar skills, though 4 alternatives have been updated more recently.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| nature-downloader (this skill)by Yuan1z0825 | 100 | 44.3k | 46d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 110.3k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 79.1k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 99.8k | today | MCP Server |
| crawl4aiby unclecode | 100 | 87.1k | 4d ago | MCP Server |
Frequently asked questions
- How do I install nature-downloader?
- Run
npx skills add Yuan1z0825/nature-skills --skill nature-downloader. The install tabs above show the steps for each supported agent. - Which AI agents does nature-downloader work with?
- It is written for Zed, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is nature-downloader safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review judged it risky: The skill instructs the agent to automatically solve visible verification controls such as sliders, CAPTCHA checkboxes, and robot checks ('estimate the visible travel distance and simulate a gradual drag', 'try the visible checkbox once'),. It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is nature-downloader still maintained?
- The repository was last updated about 2 months ago, so nature-downloader is actively maintained.
Skill content
View source on GitHubname: nature-downloader description: Use when a user needs lawful academic full text, CNKI institutional access, English OA retrieval, publisher API access, institutional browser fallback, or supporting information downloads. metadata: compatibility: Requires Node.js 22+ and Python 3. CNKI, Web Access, and SI routes additionally require the user's authenticated Chrome session and remote debugging. Uses only lawful OA, publisher API, and user-authorized institutional access.
Nature Literature Downloader
This skill routes literature through lawful open-access, publisher-API, CNKI institutional, and browser-based institutional providers. scripts/batch_download.mjs is the orchestration entry point; school configuration, publisher credentials, metadata/OA resolution, provider downloads, content validation, and manifests are separate modules.
Verified routes are examples, not defaults. Every institution should start from the user's actual library resource URL, because resource portals, CAS callbacks, EZproxy, WebVPN, IP-authenticated database pages, and database detail pages reveal the live authorization path more reliably than a school name.
SI confirmation gate — do this first. Before downloading any PDF, CAJ, HTML, XML, archive, or attachment, ask whether the user wants Supporting Information. An explicit request for SI counts as yes; an explicit request for正文 only counts as no. Otherwise ask once for the whole batch. Run the downloader with exactly one of
--sior--no-si. Without either flag the script returnssi_confirmation_requiredand does not create the output directory.
Main workflow. Normalize the DOI/title and identify language and publisher before routing. Chinese literature always uses CNKI. For English Elsevier, Springer Nature, and IEEE articles with usable provider credentials, try the publisher API first and do not require an OA determination after a successful API download. If that API attempt fails, automatically check legitimate OA sources. Other English publishers check OA first, then use the institutional Web Access route when OA is unavailable.
规范化 DOI/题名并识别语言、出版商
├─ 中文文献:直接走 CNKI
└─ 英文文献
├─ Elsevier / Springer Nature / IEEE,且已配置有效 Key
│ ├─ 优先通过出版商 API 下载
│ ├─ API 下载成功:结束,不强制判断 OA
│ └─ API 下载失败:检查文章级 OA,再走 PMC / Unpaywall / 合法仓储
└─ 其他出版商
├─ 检查文章级 OA
└─ OA 不可用:走 Web Access 机构授权
Chinese literature is CNKI-only. A Chinese title,
zhmetadata language, explicit CNKI source URL, or--route cnkimust use CNKI even if another OA copy appears to exist. Reuse the user's current Chrome library/CNKI login state and prefer configureddiscovery.cnki_url. Never export cookies or collect the institutional password.
Publisher API fallback. A valid API key does not guarantee full-text entitlement. When an Elsevier, Springer Nature, or IEEE API attempt returns no entitlement or no usable full text, automatically try legitimate OA sources first. Return
api_fallback_confirmation_requiredand ask once whether to use Web Access only after both the publisher API and OA routes fail. Do not switch to institutional Web Access automatically.
Browser-state principle. Authorized downloads depend on the exact browser profile where the user is logged in. If a proxy, CDP session, or browser automation tool opens a fresh profile or a different browser with no login state, do not treat the failure as missing library permission. Switch to a control path that reuses the user's active browser session, or ask the user to authenticate in the controlled browser instance.
Format principle. PDF, HTML full text, and database-native formats such as CAJ are different deliverables. If the user asks for PDF only, require a real PDF link or
no_authorized_pdf_found/pdf_fetch_failedwhen none exists. Do not save CAJ, HTML, or a login page as if it were a PDF.
Download Intake and First-Run Configuration
For every download request, first establish the paper list and ask:
是否同时下载这些文献的 Supporting Information(SI,补充材料)?
Do metadata lookup before this question only when needed to identify the requested papers. Do not download files until the answer is known. Configure a library only when the selected route is CNKI or Web Access. Configure a publisher API only when the selected English article belongs to Elsevier, Springer Nature, or IEEE; an OA determination is not required before trying a configured provider API.
Paid Library Resource Configuration
Ask for the library resource URL the user actually uses:
请发你平时进入图书馆电子资源/数据库的平台链接。
可以是资源门户、数据库列表、Web of Science 入口、某个数据库详情页,
或跳转到统一身份认证的登录链接。
Then infer the authorization route from the URL before saving config:
python3 scripts/configure_school.py infer "https://example.edu/library/resources"
python3 scripts/configure_school.py url "https://example.edu/library/resources"
python3 scripts/configure_school.py show
python3 scripts/configure_school.py health --force
The distributed skill contains no school presets. If the user cannot provide a resource URL, ask them to locate their institution's library/database entry instead of guessing a school-specific domain.
The default config path is:
~/.config/lit-dl/school.json
For tests or isolated profiles, set:
LIT_DL_CONFIG_DIR=/path/to/configdir
The downloader reads this config automatically. If discovery.web_of_science_url is present, scripts/batch_download.mjs uses it as the Web of Science entry; otherwise it falls back to https://www.webofscience.com/wos/woscc/basic-search.
For Chinese literature, the downloader also reads discovery.cnki_url when present. If absent, scripts/batch_download.mjs --title "<中文题名>" falls back to https://kns.cnki.net/kns8s/defaultresult/index.
API-First and Open-Access Fallback
For an English article, identify its publisher before deciding when to resolve article-level OA:
-
Collect a DOI, PMID, exact title, article URL, or a definite paper list, then normalize its metadata and publisher.
-
If it belongs to Elsevier, Springer Nature, or IEEE and usable provider credentials are configured, try that publisher API first. On success, record
accessMode: publisher_apiandoa_status: not_checked_api_first; do not run OA resolution only to label the article. -
If the publisher API fails, automatically search legitimate OA sources such as PMC, Unpaywall, publisher OA pages, arXiv, and other lawful repositories or clearly open PDF URLs. Preserve the failed API attempt in the manifest.
-
For all other English publishers, search those legitimate OA sources before Web Access.
-
For an exact title or an explicit OA-only request, prefer:
node scripts/batch_download.mjs --title "<exact title>" --open-access --no-si --out "<project>"Use
--pdf-urlwhen the user supplies a known legitimate OA PDF URL. -
Verify the downloaded file and record the source. Mark a successful PDF as
open_access_downloaded. -
If no lawful OA full text is found, mark
oa_not_found. For a supported publisher whose API already failed, request confirmation before Web Access. For another publisher, continue to Web Access. If--route open_accesswas explicitly requested, stop after the OA result.
Publisher API Credentials
Configure credentials lazily, only when the route first needs them:
python3 scripts/configure_credentials.py set elsevier
python3 scripts/configure_credentials.py set springer_nature
python3 scripts/configure_credentials.py set ieee --fulltext-endpoint 'https://issued-endpoint.example/articles/{doi}'
python3 scripts/configure_credentials.py set elsevier --stdin
python3 scripts/configure_credentials.py show
python3 scripts/configure_credentials.py validate <provider>
python3 scripts/configure_credentials.py delete <provider>
python3 scripts/configure_credentials.py contact-email researcher@example.org
Give the user the official registration link: Elsevier https://dev.elsevier.com/, Springer Nature https://dev.springernature.com/docs/quick-start/api-access/, or IEEE https://developer.ieee.org/member/register.
Do not proactively ask the user to paste an API key into chat. If the user voluntarily sends a publisher API key, treat that as authorization to save that exact key: do not reject it, ask them to regenerate it, or repeat it back. Pass it to configure_credentials.py set <provider> --stdin, keep it out of command-line arguments, logs, replies, and manifests, then report only the masked confirmation and validation status. The local hidden prompt remains the preferred path when the key has not already been provided. IEEE Metadata API access is not paid full-text access; require the issued Full-Text Access endpoint/template before treating IEEE as downloadable through the API. Secrets are stored in ~/.config/lit-dl/credentials.json with mode 0600.
Resource URL Triage
Classify the user-provided URL before choosing an access path:
cas.* / /authserver/login CAS / SSO login page; inspect service= callback, then return to the service portal
idp/shibboleth / carsi CARSI / Shibboleth institutional route
ezproxy / libproxy EZproxy remote-access proxy
webvpn / vpn WebVPN route
metaersp / metaauth / uas Library resource aggregation portal
webofscience / sciencedirect Database or publisher entry; check whether it was reached through a portal
If the URL is a login page with a service= parameter, treat the callback host as the resource service and do not make the login page the whole workflow. For example, https://login.university.example/authserver/login?service=https://resources.university.example/callback means the identity service returns to the user's resource portal after authentication.
Institution-Specific Domains
Confirm against what actually appears in the user's address bar; correct these for each institution instead of assuming a preset is complete.
Library home / aggregation: library.example.edu, resources.example.edu
Discovery/database entry: webofscience.com, clarivate.com, cnki.net, sciencedirect.com, provider.example.com
Unified identity / SSO: sso.example.edu, cas.example.edu, idp.example.edu
Federation / WAYF: ds.carsi.edu.cn, wayf.example.org, shibboleth/openathens hosts
Proxy / WebVPN: ezproxy.example.edu, webvpn.example.edu
Treat configured institutional login, federation, proxy, and database-login hosts as sign-in stages. Do not treat reaching them as a final failure.
Boundaries
Use only the user's legitimate institutional access. Do not bypass paywalls, DRM, or two-factor authentication.
Verification-first rule: When a visible slider, checkbox, robot check, or simple verification control appears in the user's authenticated Chrome session, attempt it in the browser before asking the user to intervene. Keep the attempt bounded (at most two attempts on one tab), verify that the challenge disappeared, and continue from that same tab when successful.
- Slider/drag challenges (including CNKI puzzle sliders): estimate the visible travel distance and simulate a gradual drag.
- ScienceDirect robot checks, managed Turnstile, and reCAPTCHA checkbox stages: try the visible checkbox once.
- Simple
Continue,Verify, or equivalent visible controls: click once, then re-check the page state.
User handoff: Ask the user only after the bounded attempt fails, or immediately when the page requires secret or identity-bearing input such as an image-selection answer, QR approval, SMS/OTP, passkey, hardware key, or two-factor authentication. Keep the challenged tab open and never ask the user to paste credentials or codes into chat.
Avoid unbounded or indiscriminate downloading. Process only the definite paper list confirmed by the user, apply provider-friendly paci
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
110.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
79.1kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Scrapling
99.8k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
87.1kOfficial Crawl4AI Cloud: a hosted web scraping, extraction, and search API for AI agents. Free API key, 1,000 credits a month, no card. Fully open source: this repo is the Apache-2.0 crawler that powers it, and you can self-host it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
