乐于分享
好东西不私藏

只要有论文标题,也能一键下到 PDF

只要有论文标题,也能一键下到 PDF

找论文 PDF,你一定经历过这些:DOI 粘到搜索引擎里翻好几页、付费墙挡住只能看到摘要、Sci-Hub 偶尔抽风打不开、批量下载几十篇要手动一篇篇点……

paper-fetch 这个小工具把这些麻烦一次性解决了——给它一个 DOI、或者干脆只给论文标题,它会自动遍历 7 个开放获取来源,命中即停,把 PDF 干净利落地放到你指定的地方。能下到的稳定下到,下不到的也明确告诉你为什么、接下来该怎么办。


一、什么时候你会用到它

凡是"我需要这篇论文的 PDF"的场景,都该想到它。下面这些情况,对号入座:

场景 1:手里只有 DOI,想拿到 PDF

你读综述时看到引用 10.1038/s41586-020-2649-2,想立刻看原文。原生 Agent 的做法是临时 Google 搜一圈,结果可能是 Sci-Hub 链接、可能是付费墙、可能根本找不到。paper-fetch 会按 7 源优先级逐个试,命中即停。

场景 2:只记得论文标题,连 DOI 都不知道

你在播客里听到一篇叫 Attention Is All You Need 的论文,想下载来读。直接把标题丢给它,它会先解析出 DOI,再走下载链。一步到位,不需要你先去查 DOI。

场景 3:批量下载几十篇论文

你在做文献综述,Zotero 里导出了一份 50 个 DOI 的列表。手动一篇篇下载是噩梦。用它一次跑完,失败的会单独标出来,成功的自动跳过——第二天重跑只补失败的,不重复下载。

场景 4:论文在付费墙后面,但可能有 OA 版本

很多期刊文章其实有合法的 OA 副本——作者自存档在机构知识库、预印本在 arXiv、或 embargo 期满后释放。你不知道有没有,paper-fetch 会替你查 Unpaywall / Semantic Scholar / PMC 等所有可能藏 OA 副本的地方。

场景 5:让 Agent 自动化整个文献工作流

你在 Claude Code / Cursor 里搭一个"读论文→总结→建知识库"的流水线。你需要的是可机读的输出——成功/失败、文件路径、失败原因、何时该重试。paper-fetch 的结构化输出就是为这种场景设计的,Agent 不用解析自然语言。

场景 6:你在校园网/VPN 内,有机构订阅

你的大学订了 Nature、Science、Wiley 等出版商。开启机构模式后,它会用出版商直链回退,靠你的 IP 完成授权,自动加限速避免触发"系统性下载"封禁。


二、用了之后得到什么

跑一次 paper-fetch,你会拿到三类东西:

1. 一份命中的 PDF 文件

文件名是确定性的:作者_年份_期刊_标题.pdf。同一篇论文永远落同一个文件名,所以重跑不会重复下载——天然幂等。

2. 一份结构化的结果说明

不是含糊的"成功/失败",而是清晰告诉你:

  • • 从哪个源命中的(Unpaywall / Semantic Scholar / arXiv…)
  • • 实际下载的 URL 是什么
  • • 本地文件路径 在哪
  • • 试过哪些源(全链路透明)
  • • 论文元数据(标题、年份、作者)

Agent 直接读这些字段即可决策:成功了拿路径,失败了看原因决定是否重试、何时重试。

3. 一个分类清晰的退出码(决定下一步动作)

退出码
含义
你该做什么
0
全部成功
直接用文件
1
无 OA 副本(非网络问题)
按建议时间(通常一周)后重试,或走 ILL
3
参数错了
修你的输入,立即重试
4
网络问题
立即重试

关键产出差异:原生 Agent 下载失败只会说"下不到",你不知道是论文本来就没有 OA 版(白等),还是网络抖动(该立刻重试)。paper-fetch 的退出码把这两类失败彻底分开——1 别急着重试,4 赶紧重试。

失败时你也会得到明确的补救建议

如果论文真的没有 OA 版本,结果里会告诉你:

  • • 一周后可以重试(也许 embargo 期满)
  • • 你有机构订阅就开机构模式
  • • 或者走馆际互借(ILL)

不会让你对着一个"failed"干瞪眼。


三、它是怎么做到的:7 源回退链

给定 DOI(或标题解析出的 DOI),按优先级依次尝试,命中即停:

#
来源
覆盖范围
启用条件
1
Unpaywall
全学科 OA 数据库(Crossref 全量 DOI)
需设联系邮箱
2
Semantic Scholar
跨学科学术图谱
默认启用
3
arXiv
物理/数学/CS/统计/EE 预印本
S2 返回 ArXiv id 时
4
PubMed Central OA
生物医学全文
有 PMCID 时
5
bioRxiv / medRxiv
生物/医学预印本
DOI 前缀 10.1101 时
6
出版商直链
Nature/Science/Wiley/Springer/ACS/PNAS/NEJM 等
机构模式
7
Sci-Hub 镜像
全学科兜底
默认开启,可关闭

全链失败 → 报告失败并附 title/authors,提示走 ILL(馆际互借)。

学科无关性:仅 Unpaywall + Semantic Scholar 两个源,就足以覆盖化学、材料、经济、心理学、人文社科等任何领域的 OA 论文——它们会自动命中机构知识库、SSRN、RePEc 以及出版商自托管的 OA 版本。

标题 → DOI 解析

只有论文标题时,它会:

  1. 1. 先用 Crossref 查(覆盖所有主流期刊/会议的 DOI)
  2. 2. Crossref 不理想时回退到 Semantic Scholar——关键价值:覆盖 arXiv-only 预印本(Crossref 无 DOI),并合成规范 DOI 让下载链统一
  3. 3. 两个解析器都不理想时,标记为"低置信度",让你决定放弃还是先预览确认

四、为什么用 Agent 调用它更顺手

这是 paper-fetch 区别于普通下载脚本的核心——它专门为 Agent 编排场景设计

  • • 稳定结构化输出:结果永远是结构化数据,Agent 不用解析自然语言
  • • 实时进度:逐行输出"正在试哪个源 / 命中了 / 下载完成"等事件,orchestrator 能追踪进度
  • • 自描述能力:Agent 可以查询它的完整契约(参数、退出码、错误码),缓存后检测版本漂移
  • • 错误码 + 重试时机提示:每个可重试错误都标注何时该重试,Agent 不用猜
  • • 幂等与批量:批量下载、重试零网络开销、流式输出、失败项自动给出重试建议
  • • 输出格式自动识别:管道里输出机器可读格式,终端里输出彩色人类可读文本

五、两个可选模式(按需开启)

这两个模式都仅能由人类操作者启用,Agent 无法自启——这是明确的信任边界。

1. 机构访问模式

适用场景:你有高校或研究机构的出版商订阅(校园网/VPN)。

启用后:

  • • 激活第 6 源(出版商直链回退)——按 DOI 前缀映射到 Nature/Science/Wiley 等的 PDF URL
  • • 加 限速——防止触发出版商的"系统性下载"封禁
  • • 授权由你的 IP/cookies/EZproxy 完成,skill 本身不做登录

⚠️ ToS 警告:几乎所有出版商订阅都禁止"系统性下载"。开多进程并行或绕过限速可能触发 IP 全机构封禁。

2. CloakBrowser 回退

适用场景:出版商在 Cloudflare 后面(如 science.org),普通 HTTP 客户端拿到 403 或 "Just a moment…" JS 挑战页。

工作方式:被 Cloudflare 拦截时,用隐身 Chromium 加载 PDF 主机、通过 JS 挑战,再用页面内 fetch 拿 PDF。返回字节仍过 PDF 魔数 + 50 MB 校验,成功结果带 via: "cloak" 标记。

关键约束:

  • • 位于下载层(不是新源),对所有源解析出的 URL 都生效
  • • 同源 only:跨源重定向会失败回退
  • • 不解交互式 CAPTCHA:能过自动化 JS 挑战,过不了 Turnstile
  • • 失败静默回退:绝不告诉 Agent "下载成功"
  • • 强挑战(如 science.org)需用可见窗口模式

六、怎么触发它

自然语言触发(在支持的 Agent 里)

直接对 Agent 说人话就行:

> 把 AlphaFold2 论文的 PDF 下载到 ~/papers> 帮我下 DOI 10.1038/s41586-020-2649-2> 把 dois.txt 里的全部 DOI 批量下载> 找 "Attention Is All You Need" 这篇论文的 PDF> 不下载,只预览 10.1126/science.abj8754 解析出的 PDF 链接

也可以预览(不下载)——先看解析出的 DOI 和 PDF 链接对不对,再决定要不要真下。


七、实测发现(边界比文档更清晰)

我用 paper-fetch 实测了两篇论文,发现了它的能力边界:

案例 1:Neurology 期刊社论《Sleep and Stroke: A Hate Affair》

  • • 标题解析 ✅ Semantic Scholar 命中,DOI 10.1212/WNL.0000000000209908
  • • 下载 ❌ 所有源都失败:
    • • Unpaywall 未启用(缺联系邮箱)
    • • Semantic Scholar 显示 isOpenAccess: false
    • • 无 PMCID(未被 PMC 收录)
    • • Neurology 官方 403(订阅墙)
    • • Sci-Hub 网络不可达
  • • 结论:订阅制社论且无任何 OA 版本时,技能无能为力。但它诚实地报告失败并提示走机构模式或 ILL,而不是假装成功。

案例 2:Research Square 预印本《Scalp Acupuncture Combined with Mouse Nerve Growth Factor...》

  • • 标题解析 ✅ Crossref 命中,但标记为"模糊匹配"——预印本和正式版分数极接近
  • • 下载 ❌:Semantic Scholar 404(未索引此预印本)+ Sci-Hub 不可达
  • • 绕过技能手动下载 ✅:Research Square 预印本的 PDF URL 模式 https://www.researchsquare.com/article/rs-XXXXXXX/v1.pdf 直接可用,OA 天然可得
  • • 结论:预印本平台(Research Square 等)不在源链内,是个可改进点。遇到这类情况需要手动构造 URL。

实测总结

paper-fetch 的能力边界很清晰:

  • • ✅ 能下到的:主流 OA 期刊、arXiv 预印本、PMC 全文、bioRxiv/medRxiv、有 OA 副本的订阅制论文
  • • ❌ 下不到的:纯订阅制且无任何 OA 版本的论文(如新发表的 Neurology 社论)、不在源链内的预印本平台(如 Research Square)
  • • 💡 关键价值:即使下不到,它也会告诉你为什么下不到接下来该怎么办,而不是给一个含糊的"失败"

八、已知局限

  1. 1. 出版商重定向陷阱:部分出版商返回 HTML 落地页,PDF 魔数校验会拒绝
  2. 2. 默认不解 CAPTCHA:浏览器自动化是独立的可选模式(CloakBrowser)
  3. 3. SSRF 防护可能误伤:私网 IP、非标准端口会被拒
  4. 4. 50 MB 体积上限:超大论文(含高清图)可能被拒
  5. 5. 预印本平台覆盖不全:如 Research Square(10.21203/rs.3.rs-XXXXXXX/v1)不在源链内,需手动构造 PDF URL

九、相关 Skills(学术研究工具链)

paper-fetch 是 Agents365-ai 学术研究 skill 系列的一员,按需搭配:

Skill
定位
何时使用
paper-fetch
DOI/标题 → PDF
需要下载论文 PDF 时
semanticscholar-skill
Semantic Scholar API 检索
下载前先论文时
asta-skill
Ai2 Asta MCP 访问相同语料
宿主支持 MCP 且有 Asta API key
scholar-deep-research
8 阶段文献综述流水线
需要带引用的结构化报告,不只是 PDF
zotero-research-assistant
Zotero 文献库工作流
把文献存进 Zotero 时

一句话总结

paper-fetch 是论文 PDF 的"确定性获取层"——它不试图破解任何付费墙,而是把分散在 7 个源的开放获取副本,编排成一条有退出码分类、有幂等重试、有安全防护的可靠流水线。对于 OA 论文,它几乎总能命中;对于订阅制且无 OA 版本的论文,它会诚实地报告失败并给出补救建议(机构模式 / ILL),而不是假装成功。

它的价值不在"能下到难下的论文",而在"把能下到的论文下得稳定、可预测、可编排"。


关于这个工具

名称
paper-fetch
作者
Agents365-ai
版本
0.15.1
依赖
零运行时依赖,仅需 Python 3.8+
主页
https://github.com/Agents365-ai/paper-fetch
适用 Agent
Claude Code、Codex、Cursor、Copilot 等所有支持 Agent Skills 格式的宿主