• Version control your references
  • Auto-fetch relevant bibliographic data
  • Render as pretty html or .bib

Example output.


Version control

Pick a paper, come up with a meaningful identifier, attach a doi or arxiv id, and save in a yaml file:

  doi: 10.1016/j.bpj.2015.08.015

  doi: 10.1002/jcc.21439

You can easily version control this file.

Description and tags

You might want to add some tags:

  doi: 10.1016/j.bpj.2015.08.015
  tags: [molecular-dynamics, analysis, python]

  doi: 10.1002/jcc.21439
  tags: [molecular-dynamics, analysis, algorithm]

And descriptions:

  doi: 10.1016/j.bpj.2015.08.015
  description: "MDTraj loads every trajectory format!"

  doi: 10.1002/jcc.21439
  description: "Fast method for computing RMSD!"

Cross-references are a powerful tool to give context to papers.

  doi: 10.1016/j.bpj.2015.08.015
  description: |+
    MDTraj loads every trajectory format! It computes
    RMSD pretty fast using [2009-theobald-rmsd].

  doi: 10.1002/jcc.21439

Contextualize the work by noting important references from the paper (with their reference number)

  doi: 10.1016/j.bpj.2015.08.015
  description: |+
    MDTraj loads every trajectory format!     
    The authors justify their work by noting that
    [2013-milliseconds-folding=2] claims analysis 
    is becoming the bottleneck for MD.

  doi: 10.1016/

Bibliography data fetching

Relevant bibliographic data is automatically fetched using crossref or arxiv. There is no need for you to manually fill in authors, title, etc. Gitbib will cache this metadata to avoid flooding these services with requests.


Clone this repository. Install the program's runtime and installation requirements, resp.

pip install -r requirements.txt
pip install flit

Install the package with flit

flit install


Gitbib expects a directory full of YAML files containing references as well as a file named gitbib.yaml, which specifies configuration options. See example/gitbib.yaml for a commented template of what to put in this file.

Pass the directory containing references and gitbib.yaml to the command-line program gitbib. You can build the example references by going to the example/ folder in this repository and running gitbib.

cd example/
gitbib ./

This will generate html pages and bib files for each output specified in gitbib.yaml as well as an index.html file to browse through the outputs.


Description syntax

The description field uses some markdown-style formatting. Paragraph breaks are indicated with blank lines. Otherwise, duplicated whitespace is trimmed.

You can include [links]( like that.

I'm very-much interested in crossreferencing entries. If the entry cites another entry as reference e.g. 23, link it like

They cite the [2011-prinz=23] review

Otherwise, crossreference like

This is cited by the [2011-prinz] review

See how important good identifiers are!


  • identifier: The key (identifier) must be unique across all input yaml files. I like all-lowercase, hyphen-spaced identifiers starting with the year, optionally middling with the first author's last name (if necessary to distinguish), and ending with a short description of what the paper is about.
  • identifier: Right now, we support doi and arxiv.


Version controled, crossreferenced bibliomanager with automatic metadata fetching

Gitbib Info

⭐ Stars 12
🔗 Source Code
🕒 Last Update 2 years ago
🕒 Created 4 years ago
🐞 Open Issues 1
➗ Star-Issue Ratio 12
😎 Author mpharrigan