<span class="mw-page-title-main">Doi2bib</span>
Fabrice P. Lauss𝕪s onsensus Web

doi2bib

doi2bib is a perl, jq script to generate the bibTeX entry, according to my own standard and with my own conventions, from the doi of a scientific reference.

More details on the script (including the genesis of its creation) can be found in this blog post.

Usage

Pass a valid doi to the script.

doi2bib 10.1103/PhysRevLett.80.3483

The above example returns:

Article{saleh98a,
  author =       {B. E. A. Saleh and B. M. Jost and H. Fei and M. C. Teich},
  title =        {Entangled-Photon Virtual-State Spectroscopy},
  journal =      prl,
  year =         1998,
  volume =       80,
  pages =        3483,
  pdf =          {sci/saleh98a},
  url =          {doi:10.1103/physrevlett.80.3483}
}

You may have to put the doi between quotes if there are escape characters:

doi2bib "10.1016/0030-4018(91)90618-N"

From the doi to both wikis

Since 9 August (2026), the whole journey of a new paper is three commands:

doi2bib -a 10.1103/...   # the sci.bib entry + Template:<Key> on the local wiki
llw2lw --doit            # the template reaches laussy.org
bib2wiki -uo             # [[Scientific articles]] online, rebuilt now

The third command is only for impatience: the lists on both wikis otherwise refresh themselves at the daily lw-warm cron. A re-push of an existing key (doi2bib -a key) goes through bib2wiki -force, which since v4.0 keeps whatever {{pdf|File:...}} link the template already carries.

Possible improvements

  1. Doesn't detect well doi with escape characters, e.g., 10.1016/0038-1098(95)00389-4 (kavokin95a). This doesn't seem easy to fix besides invoking the doi in quotes at the shell level!
  2. more robust on first names and particles, e.g., does not truncate by its initials lowercases strings, that are typically "de", "del", "von", etc.
curl -LH "Accept: application/json" "http://dx.doi.org/10.48550/arXiv.2305.15827"

Installation

Copy the chmod +x script in the local bin directory. Two additional files should be put somewhere, as defined by

  • iso4 -- substitution rules for journals.
  • bibnames -- substitution rules for authors.

(in my case, these files are in ~/bib/doi2bib/).

Script

Links