Find missing PDFs.
Clean up your library.
Keep control of your papers.
Fill the gaps in the Zotero library you already keep. Open access first, campus when you have it. A folder copy stays on this machine — yours to back up or take elsewhere.
The application
See what’s missing, grow the collection, tidy the records, then ask the PDFs you already have.
What can I do with it?
- Fill missing PDFs — free copies first, campus access when you have it (Preview shows what a fetch can reach)
- Grow the library from a topic search or from people you follow
- Tidy duplicates, identifiers, and broken attachments
- Keep a folder copy you can back up or hand to another tool
- Ask the papers you already have — optional local AI, off until you turn it on
On your machine
Downloads, notes, and the folder copy stay on this computer. Zotero remains the catalogue. Optional AI uses Ollama locally and stays off until you turn it on. You copy the folder yourself; Zotero stays the catalogue on this computer.
From a collection to PDFs you trust
- Open the workbench and pick a collection.
- On Wanted, preview what’s missing, then fetch copies onto your computer.
- Open the files yourself and attach the ones you trust, or set Grab to attach them on Zotero 10 or newer.
- Grow the library on Discover. Tidy records on Repair after you turn on Advanced.
Install
Build on your machine — there is no app store package and no published image. Keep Zotero on the host with the local API enabled, then open the workbench at http://127.0.0.1:8765.
git clone --branch v1.0 https://github.com/glen-w/Paperful.git
cd Paperful
cp .env.example .env
mkdir -p ../paperful-data
cp config.minimal.toml ../paperful-data/config.toml # set email
docker compose build
docker compose run --rm paperful doctor
docker compose up
Compose reads config.toml from
PAPERFUL_DATA (the .env default is
../paperful-data), not from the git root. Set a real
email in that file (Unpaywall). To keep data in the
checkout, set PAPERFUL_DATA=. and copy
config.toml next to compose.yaml.
Omit --branch v1.0 to track latest main.
Docker
·
Zotero
·
First fill
·
README