$npx -y skills add ShZhao27208/Aut_Sci_Write --skill sci-download学术论文 PDF 下载。支持 8 个数据源:Elsevier、Springer Nature、IEEE Xplore、 arXiv、Unpaywall、Semantic Scholar、PubMed Central、知网(CNKI)。 自动根据 DOI 前缀路由到对应数据源,未知 DOI 自动尝试 Unpaywall → Semantic Scholar。
| 1 | # Sci-Download — Unified Paper Download Skill |
| 2 | |
| 3 | Academic paper PDF download tool with intelligent DOI routing across 8 sources. |
| 4 | |
| 5 | ## Trigger Phrases |
| 6 | - "下载这篇论文 10.1038/s41586-023-06600-9" |
| 7 | - "download paper by DOI" |
| 8 | - "从 arXiv 下载 2301.07041" |
| 9 | - "下载知网论文" |
| 10 | |
| 11 | ## Capabilities |
| 12 | |
| 13 | | Source | Type | Auth | Coverage | |
| 14 | |--------|------|------|----------| |
| 15 | | **Elsevier/ScienceDirect** | API | API Key | Elsevier journals | |
| 16 | | **Springer Nature** | API | API Key | Springer/Nature OA | |
| 17 | | **IEEE Xplore** | API | API Key | IEEE/IET | |
| 18 | | **arXiv** | Direct | None | Physics/CS/Math preprints | |
| 19 | | **Unpaywall** | API | Email only | Any DOI → OA version | |
| 20 | | **Semantic Scholar** | API | None | Cross-source OA aggregation | |
| 21 | | **PubMed Central** | Direct | None | Biomedical OA | |
| 22 | | **CNKI (知网)** | FSSO/WebVPN | University account | Chinese journals/theses | |
| 23 | |
| 24 | ## Auto-Routing |
| 25 | |
| 26 | The CLI automatically selects the source based on identifier format: |
| 27 | |
| 28 | ``` |
| 29 | 10.1016/... → Elsevier |
| 30 | 10.1038/... → Springer Nature |
| 31 | 10.1007/... → Springer Nature |
| 32 | 10.1109/... → IEEE Xplore |
| 33 | 2301.07041 → arXiv |
| 34 | PMC1234567 → PubMed Central |
| 35 | 12345678 → PubMed (PMID) |
| 36 | 中文关键词 → CNKI |
| 37 | Other DOI → Unpaywall → Semantic Scholar (waterfall) |
| 38 | ``` |
| 39 | |
| 40 | ## Usage |
| 41 | |
| 42 | Main script: `./sci_download.py` |
| 43 | |
| 44 | ```bash |
| 45 | # Auto-route by DOI prefix |
| 46 | python skills/sci-download/sci_download.py "10.1038/s41586-023-06600-9" |
| 47 | |
| 48 | # Download arXiv paper (auto-detected) |
| 49 | python skills/sci-download/sci_download.py "2301.07041" |
| 50 | |
| 51 | # Force a specific source |
| 52 | python skills/sci-download/sci_download.py "10.1021/acs.nanolett.3c00123" --source unpaywall |
| 53 | |
| 54 | # Search papers (requires --source) |
| 55 | python skills/sci-download/sci_download.py --search "perovskite solar cells" --source semantic_scholar --limit 5 |
| 56 | |
| 57 | # Search arXiv |
| 58 | python skills/sci-download/sci_download.py --search "large language model" --source arxiv --limit 5 |
| 59 | |
| 60 | # Show config and API key status |
| 61 | python skills/sci-download/sci_download.py --status |
| 62 | |
| 63 | # Custom output directory |
| 64 | python skills/sci-download/sci_download.py "2301.07041" --output-dir ./papers |
| 65 | ``` |
| 66 | |
| 67 | ## Configuration |
| 68 | |
| 69 | API keys are stored in the unified `~/.aut_sci_write/.env` (auto-created on first use). |
| 70 | Non-secret settings (school, output_dir, proxy) are in `~/.aut_sci_write/sci-download/config.json`. |
| 71 | |
| 72 | ### Set API Keys |
| 73 | |
| 74 | Edit `~/.aut_sci_write/.env` directly or use the config helper: |
| 75 | ```bash |
| 76 | cd skills/sci-download |
| 77 | python -c "from config import update_config; update_config('elsevier_api_key', 'YOUR_KEY')" |
| 78 | python -c "from config import update_config; update_config('springer_api_key', 'YOUR_KEY')" |
| 79 | python -c "from config import update_config; update_config('ieee_api_key', 'YOUR_KEY')" |
| 80 | python -c "from config import update_config; update_config('unpaywall_email', 'you@email.com')" |
| 81 | ``` |
| 82 | |
| 83 | ### Key Sources |
| 84 | |
| 85 | | Service | URL | Notes | |
| 86 | |---------|-----|-------| |
| 87 | | Elsevier | https://dev.elsevier.com/ | Free, Article Retrieval API | |
| 88 | | Springer | https://dev.springernature.com/ | Free, OA only | |
| 89 | | IEEE | https://developer.ieee.org/ | Free tier | |
| 90 | | Unpaywall | N/A | Just provide email | |
| 91 | |
| 92 | ### Free Sources (no key needed) |
| 93 | - arXiv, Semantic Scholar, PubMed Central |
| 94 | |
| 95 | ### CNKI Setup |
| 96 | |
| 97 | ```bash |
| 98 | python skills/sci-download/cnki_download.py set-mode fsso |
| 99 | python skills/sci-download/cnki_download.py status |
| 100 | # Login at https://fsso.cnki.net → export cookies → save to ~/.aut_sci_write/webvpn_cookies.json |
| 101 | ``` |
| 102 | |
| 103 | ## Dependencies |
| 104 | |
| 105 | ``` |
| 106 | requests, pycryptodome, beautifulsoup4 |
| 107 | ``` |
| 108 | |
| 109 | --- |
| 110 | ## © License & Copyright |
| 111 | **Aut_Sci_Write** — Autonomous Scientific Writer |
| 112 | |
| 113 | - **Author**: Shuo Zhao |
| 114 | - **License**: MIT License |
| 115 | - **Copyright**: © 2026 Shuo Zhao. All rights reserved. |