bwiernik/zotero-shortdoi · 上手攻略

  • 仓库:bwiernik/zotero-shortdoi
  • 链接:https://github.com/bwiernik/zotero-shortdoi
  • 分类:学术写作 / Zotero 插件 / DOI 元数据
  • 作者:spark
  • 更新:2026-08-21

是什么

bwiernik/zotero-shortdoi 是一个轻量级 Zotero 插件(XPI),只做一件事:自动从 CrossRef API 抓取期刊文章的 DOI,并通过 shortdoi.org 服务获取 shortDOI,同时对已存在的 DOI 做合法性校验并标记无效项。

它的功能面非常克制——没有 PDF 解析、没有翻译、没有 AI 摘要——但它解决的是几乎所有学术写作者都会遇到的脏数据问题:库里有上千条条目,DOI 字段有的缺失、有的带 https://doi.org/ 前缀、有的指向旧版 identifier、有的直接是 broken 的,插件一次性替你批量清洗

仓库维护者 Brenton M. Wiernik 也是 Zotero 圈知名的 Better BibTeX 等工具的核心贡献者,所以代码风格偏实用:单文件 JS 主体 + MPL-2.0 开源 + 直接吃官方 .xpi 即可。

解决什么问题

学术写作的引用链路下游几乎都对 DOI 友好——出版商解析页、Crossref API、OpenCitations、CSL JSON、Endnote 22+ 的"在线查找文献"功能——只要 DOI 是干净的、没有前缀、合法可解析。现实中 Zotero 库里的 DOI 字段往往:

  1. 缺失:从老 EndNote 导入、从机构 PDF 里 OCR、从手工 BibTeX 抄来,DOI 字段是空的;
  2. 带前缀doi:https://doi.org/、甚至 https://onlinelibrary.wiley.com/doi/abs/10.... 全段 URL 都被原样塞进 DOI 字段;
  3. 指向旧版 / 已重定向:DOI 注册机构做过 merge,库里是 deprecated 形式;
  4. 彻底坏掉:DOI 字段随便写了一串 10.xxxx/y.zzz,根本查不到任何资源。

这个插件直接给三条命令覆盖上述场景:

  • Get shortDOIs:批量从 shortdoi.org 取短码,替换已存的 DOI,并标记 invalid;
  • Get long DOIs:批量从 CrossRef 取完整 DOI,替换已存的 DOI,并标记 invalid;
  • Verify and clean DOIs:拉完整 DOI,验证已存 DOI 是否合法,并剥离不必要前缀(doi: / https://doi.org/ / 出版社 URL 前缀),把 invalid 标记出来。

快速安装

1. 准备工作

  • Zotero 已安装(桌面版,6+ 即可,Windows / macOS / Linux 通用);
  • 浏览器无需操作——这个插件完全在 Zotero 桌面端跑。

2. 装 XPI

  1. Releases 下载最新 .xpi
  2. ⚠️ 如果你用 Firefox 下载,要右键 → Save Link As…,否则可能直接打开预览;
  3. 在 Zotero 里 Tools → Add-Ons…
  4. .xpi 拖到 Add-Ons 弹窗里(或者点 ⚙ → Install Add-On From File…,选文件)。

装完后 Zotero 会要求重启。重启后在 Zotero 工具栏的齿轮 / Add-Ons 列表里能看到 "Short DOI" 处于启用状态。

3. 触发

选中若干条目 → 右键菜单(或 Tools 菜单)会多出三个条目:

  • Get shortDOIs
  • Get long DOIs
  • Verify and clean DOIs

按需点一个,等进度条走完即可。条目数 >500 时建议分批。

核心用法

选哪个命令?

你想要的 命令
把库里所有 DOI 压成最短形式(短码) Get shortDOIs
拿到一份完整可读的 DOI,且库里只有零散 DOI 字段 Get long DOIs
库已"看起来很整齐",但你怀疑有些 DOI 是坏的 / 已重定向 Verify and clean DOIs

"Verify and clean DOIs" 是最常被低估的一条

README 没把这三条单独标优先级,但实际经验里,先跑一次 Verify and clean DOIs 通常性价比最高:它不动你已存的 DOI 主值,只做两件事——1) 拉一份权威 DOI 与本地比对;2)doi:https://doi.org/、出版社 URL 前缀剥掉。两件事一次完成,条目侧基本立刻能看到"DOI 字段终于干净了"。

之后再决定要不要用 shortDOIs 进一步压缩。

"替换"语义

⚠️ 三条命令默认都会替换已存的 DOI 字段(包括 None 的会被填上,已存的会被覆盖)。README 原话「replacing stored DOIs, if any」。

  • 怕丢原文?先导出库的备份(在主库上 File → Export Library… 选 CSL JSON / BibTeX 即可);
  • 想保守?只对已知缺 DOI 的子集右键跑命令,不要全库一把梭。

Invalid 标记

当 CrossRef / shortdoi.org 返回 404 / 不存在 / 不匹配,插件会把该条目标记为 invalid。在条目列表视图里排序/筛选时,这个标记就是去重清洗的入口。

配额

插件走 CrossRef 与 shortdoi.org 的公开 API。CrossRef 公开 API 有匿名 quota(Crossref API etiquette),默认每 IP 略有限速。shortdoi.org 的政策见其站点。短时大批量时建议分批(每次 ≤500 条),遇到 429 等几秒再继续。

典型适用场景

  1. 接手导师 / 同实验室的旧库:从 EndNote / RefWorks / Mendeley 导出来的 BibTeX 经常有 URL 形式 DOI、prefix 形式 DOI、缺 DOI 字段——一次 Verify and clean DOIs 把它们全部拉干净。
  2. 准备投稿前:出版社官网要求 DOI 必须完整且无前缀,否则会卡格式校验。先跑 Get long DOIs 拉完整 DOI,再用 Verify and clean DOIs 去前缀。
  3. 压缩引文链接:社交分享、ORCID 同步、邮件附件里想用短链——跑 Get shortDOIs
  4. 数据科学项目:把 Zotero 库导进 OpenCitations / doi.org 元数据管线前,先确保 DOI 字段无前缀且全合法,否则管线一半条目解析失败。
  5. 学期初清洗:学期结束清过一次,下学期初再来一次——成本极低、效果立现。

坑与注意

  • .xpi 在 Firefox 上要 Save Link As…:直接点击会被浏览器当 ZIP 预览。
  • 三条命令都会覆盖已存 DOI:见上文,先备份
  • CrossRef 不覆盖预印本 / 报告:arXiv、bioRxiv、SSRN 等没有正式 CrossRef DOI 的条目,Get long DOIs 拿不到东西——这种情况通常需要 Short DOI add-on 外的其它工具 抓 arXiv ID。
  • shortdoi.org 偶尔慢 / 挂:在高峰期 shortdoi.org 服务会慢;Get shortDOIs 超时不要反复点,先把库备份好,再等几分钟。
  • 多语言 / 非英文元数据:CrossRef 返回的标题字段可能是出版商原语言,没问题;但若你的库条目里有 CJK 元数据,注意 Zotero 自身的字段编码一致即可,与本插件无直接关系。
  • 许可证 = MPL 2.0:宽松开源,可放心在公司 / 商业 Zotero 工作流里使用。MPL 2.0 不强制衍生作品整体开源,只要求修改过的 MPL 文件本身公开修改——这是它比 GPL 友好的关键点。
  • 不再大规模维护?:README 内容简短,主要代码在 master 分支;版本节奏不像官方插件那样有明确 roadmap。要做批量化生产部署的,可考虑 fork 自己跑。

与同类替代品对比

维度 bwiernik/zotero-shortdoi Zotero Magic Wand(DOI 查找) Zotero 内置 Crossref 更新
是否原生 第三方插件 第三方插件 内置
抓 shortDOI ✅ 主用场景
自动剥前缀 ⚠️ ⚠️
主动验证 invalid ⚠️ ⚠️
批量(百条级)
CrossRef quota 友好度
适合"清洗历史库" ⚠️
适合"压缩为短链"

定位差异:它是 Zotero 内置 Crossref 更新器的"窄而深"补充——专门解决 DOI 清洗 + shortDOI 这两件 Zotero 默认不主动做的事。

一句话推荐结论

如果你的 Zotero 库里 DOI 字段参差不齐或缺值先跑一次 Verify and clean DOIs——它是投入产出比最高的一招;如果想进一步要短链,再跑 Get shortDOIs。装一个 XPI、装一次、再也用不坏。


参考链接(已核验):

  • https://github.com/bwiernik/zotero-shortdoi
  • https://github.com/bwiernik/zotero-shortdoi/releases/latest
  • https://www.crossref.org/
  • http://shortdoi.org
  • https://github.com/CrossRef/rest-api-doc#etiquette
  • https://github.com/beloglazov/zotero-scholar-citations(被本插件部分基于)