AXM bibliographic tools — DOI resolution, BibTeX retrieval, paper search & PDF download
Project description
axm-bib — Bibliographic tools: search papers, resolve DOIs, download & extract PDFs
Features
- 🔍 Search — Find papers by title/keywords (Semantic Scholar + CrossRef fallback)
- 📖 DOI → BibTeX — Resolve any DOI to a BibTeX entry (CrossRef)
- 📥 PDF Pipeline — Download, extract, and organize papers in one command
- 📄 Content Extraction — PDF → Markdown + figure PNGs (PyMuPDF)
- 🪃 arXiv Fallback — Direct download from arXiv when Unpaywall has no URL
- 🤖 MCP Integration — Auto-discovered tools via
axm-mcp
Installation
uv add axm-bib
Quick Start
# Search papers
axm-bib search "attention is all you need" -n 5
# Resolve a DOI to BibTeX
axm-bib doi 10.1145/363235.363259
# Download, extract & organize a paper (full pipeline)
axm-bib pdf 10.48550/arXiv.1706.03762
Pipeline Output
axm-bib pdf creates a complete paper folder:
~/axm/papers/vaswani2017attention/
├── vaswani2017attention.pdf # downloaded PDF
├── paper.bib # BibTeX entry
├── content.md # extracted Markdown
└── figures/
├── fig_001.png
└── ...
Downloaded: ~/axm/papers/vaswani2017attention
PDF: vaswani2017attention.pdf (1,234,567 bytes)
BibTeX: paper.bib
Markdown: content.md (8,432 words, 45,123 chars, 12 pages)
Figures: 8
CLI Commands
axm-bib search
| Option | Default | Description |
|---|---|---|
QUERY |
required | Search query (title, keywords) |
--limit, -n |
5 | Max results (1–100) |
--abstract/--no-abstract |
True |
Show paper abstracts |
--abstract-len |
0 (full) | Truncate abstracts to N chars |
axm-bib doi
| Option | Description |
|---|---|
DOI |
Digital Object Identifier to resolve |
axm-bib pdf
| Option | Default | Description |
|---|---|---|
DOI |
required | DOI of the paper |
--output, -o |
~/axm/papers/ |
Output directory |
Downloads the PDF, extracts Markdown + figures, and writes paper.bib — all in one step.
Supports arXiv papers even when Unpaywall has no URL (direct arXiv fallback).
axm-bib extract
| Option | Default | Description |
|---|---|---|
PDF_PATH |
required | Path to a local PDF file |
--output-dir, -o |
auto | Output directory |
--figures/--no-figures |
True |
Extract figures as PNG |
Standalone extraction for PDFs you already have.
MCP Integration
axm-bib tools are automatically discovered by axm-mcp:
| Tool | Description |
|---|---|
bib_search |
Search papers by keywords |
bib_doi |
Resolve DOI to BibTeX |
bib_pdf |
Full pipeline: download + extract + BibTeX |
bib_extract |
Extract a local PDF to Markdown + figures |
Configuration
| Variable | Purpose |
|---|---|
UNPAYWALL_EMAIL |
Email for Unpaywall API (prompted on first use) |
S2_API_KEY |
Optional Semantic Scholar API key for higher rate limits |
Config file: ~/.config/axm-bib/config.toml
Development
git clone https://github.com/axm-protocols/axm-bib.git
cd axm-bib
uv sync --all-groups
uv run pytest # 173 tests
uv run ruff check src/ # lint
License
Apache License 2.0
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 axm_bib-0.2.1.tar.gz.
File metadata
- Download URL: axm_bib-0.2.1.tar.gz
- Upload date:
- Size: 143.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70c3db83d5353507ec7a433574401448e95a47ae265c4e2d40d24445365851e6
|
|
| MD5 |
605a0be3da549c288493e81b993f8aa9
|
|
| BLAKE2b-256 |
7db9ecdf1f902ddcde993312793d575d826424a79ed6e92ba5ec72abef1871fe
|
Provenance
The following attestation bundles were made for axm_bib-0.2.1.tar.gz:
Publisher:
publish.yml on axm-protocols/axm-bib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axm_bib-0.2.1.tar.gz -
Subject digest:
70c3db83d5353507ec7a433574401448e95a47ae265c4e2d40d24445365851e6 - Sigstore transparency entry: 957275360
- Sigstore integration time:
-
Permalink:
axm-protocols/axm-bib@d15b7c0ae77f3fa9f80cb1952f2c7b3b14d56b88 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/axm-protocols
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d15b7c0ae77f3fa9f80cb1952f2c7b3b14d56b88 -
Trigger Event:
push
-
Statement type:
File details
Details for the file axm_bib-0.2.1-py3-none-any.whl.
File metadata
- Download URL: axm_bib-0.2.1-py3-none-any.whl
- Upload date:
- Size: 29.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ecdfadd2c791e2363921b8208a7fcd1c7ba04a9a642abeebd9a91b3bfe9bd406
|
|
| MD5 |
6fe1af2b6630cf672af5c0fcd83d112f
|
|
| BLAKE2b-256 |
f7e90c269e5f691bef303491b3df1dcbf08749874fa80066353407a03df77368
|
Provenance
The following attestation bundles were made for axm_bib-0.2.1-py3-none-any.whl:
Publisher:
publish.yml on axm-protocols/axm-bib
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
axm_bib-0.2.1-py3-none-any.whl -
Subject digest:
ecdfadd2c791e2363921b8208a7fcd1c7ba04a9a642abeebd9a91b3bfe9bd406 - Sigstore transparency entry: 957275474
- Sigstore integration time:
-
Permalink:
axm-protocols/axm-bib@d15b7c0ae77f3fa9f80cb1952f2c7b3b14d56b88 -
Branch / Tag:
refs/tags/v0.2.1 - Owner: https://github.com/axm-protocols
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d15b7c0ae77f3fa9f80cb1952f2c7b3b14d56b88 -
Trigger Event:
push
-
Statement type: