Sci-Download — Unified Paper Download Skill
Academic paper PDF download tool with intelligent DOI routing across 8 sources.
Trigger Phrases
- "下载这篇论文 10.1038/s41586-023-06600-9"
- "download paper by DOI"
- "从 arXiv 下载 2301.07041"
- "下载知网论文"
Capabilities
| Source | Type | Auth | Coverage |
|---|---|---|---|
| Elsevier/ScienceDirect | API | API Key | Elsevier journals |
| Springer Nature | API | API Key | Springer/Nature OA |
| IEEE Xplore | API | API Key | IEEE/IET |
| arXiv | Direct | None | Physics/CS/Math preprints |
| Unpaywall | API | Email only | Any DOI → OA version |
| Semantic Scholar | API | None | Cross-source OA aggregation |
| PubMed Central | Direct | None | Biomedical OA |
| CNKI (知网) | FSSO/WebVPN | University account | Chinese journals/theses |
Auto-Routing
The CLI automatically selects the source based on identifier format:
10.1016/... → Elsevier
10.1038/... → Springer Nature
10.1007/... → Springer Nature
10.1109/... → IEEE Xplore
2301.07041 → arXiv
PMC1234567 → PubMed Central
12345678 → PubMed (PMID)
中文关键词 → CNKI
Other DOI → Unpaywall → Semantic Scholar (waterfall)
Usage
Main script: ./sci_download.py
# Auto-route by DOI prefix
python skills/sci-download/sci_download.py "10.1038/s41586-023-06600-9"
# Download arXiv paper (auto-detected)
python skills/sci-download/sci_download.py "2301.07041"
# Force a specific source
python skills/sci-download/sci_download.py "10.1021/acs.nanolett.3c00123" --source unpaywall
# Search papers (requires --source)
python skills/sci-download/sci_download.py --search "perovskite solar cells" --source semantic_scholar --limit 5
# Search arXiv
python skills/sci-download/sci_download.py --search "large language model" --source arxiv --limit 5
# Show config and API key status
python skills/sci-download/sci_download.py --status
# Custom output directory
python skills/sci-download/sci_download.py "2301.07041" --output-dir ./papers
Configuration
API keys are stored in the unified ~/.aut_sci_write/.env (auto-created on first use).
Non-secret settings (school, output_dir, proxy) are in ~/.aut_sci_write/sci-download/config.json.
Set API Keys
Edit ~/.aut_sci_write/.env directly or use the config helper:
cd skills/sci-download
python -c "from config import update_config; update_config('elsevier_api_key', 'YOUR_KEY')"
python -c "from config import update_config; update_config('springer_api_key', 'YOUR_KEY')"
python -c "from config import update_config; update_config('ieee_api_key', 'YOUR_KEY')"
python -c "from config import update_config; update_config('unpaywall_email', 'you@email.com')"
Key Sources
| Service | URL | Notes |
|---|---|---|
| Elsevier | https://dev.elsevier.com/ | Free, Article Retrieval API |
| Springer | https://dev.springernature.com/ | Free, OA only |
| IEEE | https://developer.ieee.org/ | Free tier |
| Unpaywall | N/A | Just provide email |
Free Sources (no key needed)
- arXiv, Semantic Scholar, PubMed Central
CNKI Setup
python skills/sci-download/cnki_download.py set-mode fsso
python skills/sci-download/cnki_download.py status
# Login at https://fsso.cnki.net → export cookies → save to ~/.aut_sci_write/webvpn_cookies.json
Dependencies
requests, pycryptodome, beautifulsoup4
© License & Copyright
Aut_Sci_Write — Autonomous Scientific Writer
- Author: Shuo Zhao
- License: MIT License
- Copyright: © 2026 Shuo Zhao. All rights reserved.