Effective Bibliography Management with Zotero
Motivation
Throughout my Ph.D. I built a highly flexible, automated bibliography management pipeline. I was driven by three factors:
- I love automating things. I would rather spend 5 hours automating a manual task than spend one hour doing repetitive work.
- I’m interested in way too many different research directions, so I needed a way to structure papers of many different fields. My goal: be able to find that one cool paper after 3 years of reading it.
- My PI was obsessed with high quality bibliographies in papers and it kind of caught on with me.
I thought having some form of bibliography management was standard, but a short poll revealed that quite a few people don’t use a bibliography management tool yet:

With my favorite answer being “I use google chrome”:

Therefore, I want to give you an overview of how I structure my bibliography management in Zotero.
For each component that I use, I will try to give my reasoning of how it makes my life easier and you can decide for yourself if this component is worthwhile for you.
All components of my setup are independent of each other, so pick your poison!
Note: I’m working in Linux Ubuntu, but most of these elements should run on Mac or Windows as well.
Setup Overview
My general setup consists of the following elements:
- Zotero: the core bibliography management software. Here you save and categorize your papers and later export them to a .bib file.
- Zotero Connector: save papers directly from the website to Zotero.
- Better BibTex For Zotero: unify your citation keys and improve the file export.
- ZotMoov: Automatically organize your pdf files on your computer in the same folder structure as your Zotero library and rename the files.
- Bibliography Cleaner: Clean your exported .bib file to make your bibliography look cleaner in your paper. The usage of the entire system is best explained in an example workflow.
Example Usage of the Entire Setup
Create a Folder Structure
Let’s start by opening Zotero and creating a new collection by right-clicking on My Library -> New Collection. I called it “Example”.
Now we can create ourselves a folder structure within that collection.
For this, I right-click on the new collection, e.g., “Example”, and select New Subcollection.

Proceed with creating an initial structure for your work.

Add Papers to Zotero
If we want to add papers, we first need to make sure we find the correct version.
Find the Correct Version of the Paper
We start with our typical paper search in google scholar. Let’s say, we found the following paper:

This paper was already published at the NeurIPS conference, but google scholar still links to the Arxiv version. A common mistake is simply to cite the Arxiv version. This is very frowned upon by the reviewers and might negatively impact your chance of publication!
Therefore, we instead click on All (some number) Verions and select the website of the original publisher. This is most often quite easy to figure out, e.g., IEEExplore, Nature, Science, etc. In the case of the big AI conferences, we will look for the openreview link.

This will bring us to the publisher website, in our example:

Add the Paper to Zotero
There are two alternative ways to add this work to Zotero 1. Manually, and 2. Automatically with Zotero Connector.
1. Manually Adding Papers
On the publisher website, search for Download Citation or Bibtex to download the reference.bib file. Also, download the PDF file.
In Zotero select the sub-collection you would like to save this paper in. Then, go to File -> Import and import the downloaded bibtex file.
You can right-click on the new item and Add Attachment -> File to add the downloaded PDF.
This process is of course way too manual for me. Let’s look at how to automate this.
2. Automatically using Zotero Connector
Open Zotero and select the sub-collection you would like to save this paper in, e.g.:

Now, go to your browser window with the publisher website open and click on the Zotero Connector extension. The paper reference and PDF will be automatically downloaded and added to your Zotero.

Inspect your Paper in Zotero
You can now see all the properties of this reference in the right panel of Zotero if you click on this paper.

You can view the PDF by double clicking on the little red PDF symbol in Zotero. Zotero actually has an amazing PDF viewer with multiple highlight colors and other features built-in. Therefore, I mostly read my papers in here.

Fix Mistakes in Zotero
Sometimes, the downloaded reference is incorrect. In this example, a NeurIPS paper (which is a conference) was labelled as a journal article. We can easily correct any wrong entries in the right panel.
Change from journal:

to conference:

Export your Papers to Bibtex
To cite your papers in Latex, you will need a .bib file that includes all your references.
To create this file, right-click on your collection, e.g., Example, and select Export Collection.
After accepting the default export configurations, you will get a .bib file like this:
@inproceedings{bonnaire2025why,
title = {Why Diffusion Models Don't Memorize: The Role of Implicit Dynamical Regularization in Training},
shorttitle = {Why Diffusion Models Don't Memorize},
booktitle = {The Thirty-Ninth Annual Conference on Neural Information Processing Systems},
author = {Bonnaire, Tony and Urfin, Rapha{\"e}l and Biroli, Giulio and Mezard, Marc},
year = 2025,
month = oct,
url = {https://openreview.net/forum?id=BSZqpqgqM0},
urldate = {2026-03-11},
}
@inproceedings{NEURIPS2022_5e6cec2a,
title = {Diffusion Models as Plug-and-Play Priors},
booktitle = {Advances in Neural Information Processing Systems},
author = {Graikos, Alexandros and Malkin, Nikolay and Jojic, Nebojsa and Samaras, Dimitris},
year = 2022,
month = dec,
volume = {35},
pages = {14715--14728},
url = {https://proceedings.neurips.cc/paper_files/paper/2022/hash/5e6cec2a9520708381fe520246018e8b-Abstract-Conference.html},
urldate = {2026-03-11},
}
Note that the automatic citation keys NEURIPS2022_5e6cec2a and bonnaire2025why do not follow a universal pattern as they are given by the publisher.
To fix this, we will use the Better BibTex extension for Zotero.
Setting up Better BibTex
- Follow the installation instructions on the Better BibTex Website.
- Change your desired citation key style by going in
Zoteroin the top bar toEdit->Settings->Better BibTexand customize your citation key. I am usingauth.lower + "_" + year + "_" + shorttitle(2, 2), which would give megraikos_2022_DiffusionModelsandbonnaire_2025_WhyDiffusioninstead of the previousNEURIPS2022_5e6cec2aandbonnaire2025why. - Export your library again and enjoy your unified citation keys.
Note: some venues add their citation key to Extras field of the bibtex. This will override Better BibTex 😡. To fix that, you have to delete the extras field in the right panel of Zotero for these papers.
Clean up Your Messy Bib File
Let’s use the exported bib file, e.g., bib_manager_example.bib, in a dummy .tex document:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{cite}
\begin{document}
\title{Bibliography Test}
\author{Jakob Thumm}
\maketitle
\section{Introduction}
We cite a couple of papers \cite{bonnaire_2025_WhyDiffusion, graikos_2022_DiffusionModels, gyevnar_2025_AISafety}.
\bibliographystyle{plain}
\bibliography{bib_manager_example}
\end{document}
This will result in a good bibliography, but there are a couple of things that can be improved.

Common points for improvements are:
- Too much information:
- place of the conference
- names of editors
- month of publication
- year stated multiple times
- Inconsistent conference proceeding titles. Conferences change the name of their proceeding in the bibtex almost yearly. Additionally, the proceeding title often includes unnecessary information like the number of the conference.
- Zotero removes the capitalization from titles as it is often wrong. We need to re-capitalize common terms like “AI”.
To fix these points, we wrote an automatic Bibliography Cleaner!
After installing, we can simply run the cleaner with:
python bibliography_cleaner/run.py \
-in [PATH_TO_FILE]/bib_manager_example.bib -out [PATH_TO_FILE]/bib_manager_example_cleaned.bib\
-c bibliography_cleaner/bib_configs/default.yml --overwrite\
--proceedings_abbreviations bibliography_cleaner/bib_configs/proceedings.yml\
--forbidden_characters bibliography_cleaner/bib_configs/special_tex_characters.yml\
--special_letters bibliography_cleaner/bib_configs/special_letters.yml\
--capitalization bibliography_cleaner/bib_configs/capitalization.yml
The outcome is a clean and consistent bibliography that all reviewers will love.

Find your PDF Files
After some extensive research, you might want to share PDF files with students or colleagues.
By default, Zotero saves all PDF files in one folder without any structure.
Additionally, the PDFs downloaded from the publisher sites do not follow any naming convention, so you will have to figure out which paper LGAFI2026_396.pdf is.
ZotMoov improves that by automatically recreating the folder structure that you have in Zotero in your file system and renames the papers in a meaningful way. The outcome is something like this:
