Manage BibTeX libraries from the terminal
Project description
antilibrary
Manage a BibTeX file from the terminal.
Install
pip install antilibrary
# or
uv tool install antilibrary
Usage
Antilibrary manages one or more libraries — each a .bib file with an
optional folder for associated files (PDFs, EPUBs, …). Libraries live in
~/.config/antilibrary/config.toml (override with $ANTILIBRARY_CONFIG).
# Register a library (the first one becomes the default)
antilibrary library add main --bib ~/refs/main.bib --files ~/refs/files
antilibrary library add movies --bib ~/media/movies.bib # no files folder
antilibrary library list # show configured libraries
antilibrary library set-default movies # change the default
antilibrary library remove movies # forget a library (add --purge to delete its files)
Once a default is set, the entry commands operate on it. Use -l/--library NAME
to target another:
antilibrary add # interactively add an entry
antilibrary add -l movies # add to the movies library
antilibrary get smith2024 # print citation for a key
antilibrary browse # list entries
antilibrary browse -q "attention" # fuzzy search
antilibrary browse -t "nlp,transformers" # filter by tags
antilibrary remove smith2024 # delete an entry (+ its managed file)
The library is resolved in this order: -l/--library NAME, then -f/--file FILE
(ad-hoc, no files folder), then $ANTILIBRARY_BIB, then the configured default.
Associated files
If a library has a files folder, attaching a file copies it there and renames
it to the entry's key (e.g. smith2024.pdf); the entry's file field stores the
relative name. If the library has no files folder, the file is left in place and
file stores its absolute path. Removing an entry deletes its managed file (pass
--keep-file to keep it).
antilibrary add --attach ~/Downloads/paper.pdf # attach during interactive add
Citation styles
antilibrary get KEY --style {bibtex|bibtex-full|latex|org-cite|pandoc} prints
a citation in the requested format:
| style | output |
|---|---|
bibtex |
smith2024 |
bibtex-full |
the whole entry |
latex |
\cite{smith2024} |
org-cite |
[cite:@smith2024] |
pandoc |
[@smith2024] |
Adding entries
antilibrary add is interactive — it prompts for type, title, author, year,
key, and any extra fields. Adding an entry that matches an existing one
(by DOI, arXiv ID, ISBN, or normalized title+author) silently fills any
empty fields on the existing entry rather than creating a duplicate. Pass
--no-merge to skip on duplicate, or --force to append anyway with an
auto-suffixed key.
Bulk add from files or online search
Antilibrary integrates with its two companion tools:
- antifile — extract BibTeX from PDFs, EPUBs, URLs, DOIs, arXiv IDs, or ISBNs.
- antifind — online search (movies, TV, music, papers, books) → BibTeX.
Install them as extras:
pip install 'antilibrary[files]' # antifile
pip install 'antilibrary[search]' # antifind
pip install 'antilibrary[all]' # both
Then add entries in bulk. Files that resolve to a real path are attached using the library's files-folder rules:
antilibrary add --add-from-files paper.pdf book.epub 10.1145/3292500
antilibrary add --add-from-search "attention is all you need" --kind papers --limit 3
For PDFs, antifile resolves metadata by identifier (DOI / arXiv / ISBN) or a
CrossRef title match. When none of those work it falls back to an LLM: set
ANTHROPIC_API_KEY (or OPENAI_API_KEY / GEMINI_API_KEY) and that key is
passed through. With no key set, it still tries the claude CLI if it's on your
PATH.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file antilibrary-0.3.10.tar.gz.
File metadata
- Download URL: antilibrary-0.3.10.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
040075393c087b56de19c18da8ff14a83af9ff45942dbeee7b4a363f43fbb050
|
|
| MD5 |
63379107efd285f02108dc131aa81046
|
|
| BLAKE2b-256 |
b16c7bc8f3d5f2c0c1fab14f5439a6ba966b19da70182662023231cf12af1f41
|
File details
Details for the file antilibrary-0.3.10-py3-none-any.whl.
File metadata
- Download URL: antilibrary-0.3.10-py3-none-any.whl
- Upload date:
- Size: 25.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ccca190c5ddef2ec148f289685893dde893a2cce77abc17d1bd52b09dc5d0c34
|
|
| MD5 |
d211de1a9bc6b552e049c5b27f80d70e
|
|
| BLAKE2b-256 |
4ae3b21a4fcb1668e1782ba49ef9e73c1a3fdaae4be37770573d55cb7e980d73
|