| name | paper-download |
| description | 批量下载文献 PDF(DOI/PMID/标题/阅读清单都行)。先走开放获取(Unpaywall/Europe PMC),付费再走 Sci-Hub,校验真伪、写 manifest;拿不到的转 VPN 清单。@ 触发:"@下载文献""@download-papers""@下论文""@抓文献"。自然语言:"下载文献""下载论文""把这些文献下了""批量下 PDF""download papers""从综述里把参考文献下了"。 |
paper-download — 批量下载文献 PDF
风格:简洁、表格、数据先行、不用装饰词。逐步执行,每步报告,最后给总览。
0. 依赖(第一次用先跑)
核心只需 python3(纯标准库)+ curl,不需要 pip 装任何包。
bash "$SKILL_DIR/scripts/setup_check.sh"
缺 python3/curl 时脚本会给出对应平台的安装命令(macOS brew / Debian apt / Fedora dnf)。pdftotext 可选(只用来核验标题)。
1. 准备输入
脚本吃三种输入(自动识别):
.json:[{"title":..,"doi":..,"pmid":..,"pmcid":..,"authors":..,"year":..}, ...](字段都可选)
.txt/.md:每行一个 DOI / PMID / PMCID / 或标题(# 开头忽略)
-:从 stdin 读
若用户给的是综述/map 文件 → 先把要下的文献抽成上面任一格式(标题或 DOI 一行一个即可)。总数大时先确认范围(如"只下核心 ≤30 篇")。
2. 跑下载
python3 "$SKILL_DIR/scripts/download_papers.py" INPUT --out "目标文件夹" --email 用户邮箱 --workers 3
--out:PDF 落地目录(默认当前目录)。
--workers:保持 3 或更低——Sci-Hub 的 ddos-guard 并发高会限流(实测)。
- 幂等:目标目录已有同名有效 PDF 会自动跳过,可反复跑补漏。
产出:PDF + manifest.md(✅已下 / ❌仅链接两张表)+ _results.json(机读,给下一步用)。
3. 流程(脚本内置,命中即停)
| 步 | 手段 | 说明 |
|---|
| 解析 DOI | 给定 DOI → NCBI idconv(PMID) → Crossref 题名检索 | 错 DOI 会抓错文,题名检索有 0.45 阈值兜底 |
| 开放获取 | Europe PMC render → Unpaywall | OA 首选,最稳;PMC 直连已反爬,别用 |
| 付费回退 | Sci-Hub(cookie 预热 + 多镜像 + 重试 + /storage/ 正则) | 仅对 ≤2021 老论文有效 |
| 校验 | %PDF- 头 + 体积 >30KB + 正文标题词匹配(pdftotext) | Sci-Hub 会串文(返回完全不相干的 PDF),必须验正文,否则会把错文当成功 |
细节、API 列表、各网站反爬排坑见 references/sources.md(遇到下不动/限流先读它)。
4'. 抽查/审计已下文献(强烈建议)
%PDF+体积 检不出"串文"。下完跑审计,揪出错文/重复/无文字层:
python3 "$SKILL_DIR/scripts/verify_pdfs.py" "目标文件夹"
python3 "$SKILL_DIR/scripts/verify_pdfs.py" "目标文件夹" --delete-dups
- WRONG-CONTENT:正文标题对不上(多是 Sci-Hub 串文)→ 删了重抓/转 VPN。
- NO-TEXT:无文字层(扫描件/图片 PDF)→ 人工开一眼,可能是好的。
- DUP:字节相同的重复 →
--delete-dups 清掉。
4. 收尾
报告:成功 N / 失败 M。失败的(付费墙、Sci-Hub 没有,多是 2022+ 新刊)→ 调用 paper-vpn-list 技能,把 _results.json 一键整理成 VPN/图书馆直链清单交给用户(用户有校园 VPN 时这是最可靠的补全方式)。
关键事实(别重复踩坑)
- Sci-Hub 只有老论文(2021 后停收);新论文付费 → 只能 VPN。
- ddos-guard 限流:返回 ~900 字节截断页就是被限流了 → 降并发 / 过几小时 / 换 IP / 转 VPN。
- 本领域(生物材料/瓣膜)核心刊几乎全是 Elsevier(付费) → 新论文默认走 VPN。OA 友好刊(Frontiers/Regen Biomater/Adv Sci/Bioactive Materials/JAHA)走 Europe PMC 基本能下。