Resolve arXiv preprints to official conference proceedings pages (ACL Anthology, CVF Open Access, OpenReview, PMLR, and more).
flowchart LR
A["Input<br/>arXiv URL / ID"] --> B["Fetch metadata<br/>title · comment · journal_ref"]
B --> C{"URL in<br/>metadata?"}
C -->|Yes| Z["Return<br/>official link"]
C -->|No| D{"Venue<br/>hint?"}
D -->|Yes| E["Search hinted venue<br/>e.g. CVPR → cvf"]
E --> F{Found?}
F -->|Yes| Z
F -->|No| G["Sequential search"]
D -->|No| G
G --> V1["ACL Anthology"] --> V2["CVF"] --> V3["ECVA"] --> V4["OpenReview"] --> V5["PMLR"] --> V6["AAAI"]
V6 --> N{Found?}
N -->|Yes| Z
N -->|No| O["DBLP<br/>fallback"]
O --> P{Found?}
P -->|Yes| Z
P -->|No| Q["Not found"]
git clone <your-repo-url>
cd arxiv2conf
pip install -e .Requires Python 3.10+. No third-party dependencies.
arxiv2conf https://arxiv.org/abs/2502.12134
arxiv2conf 2512.10226 --json
python -m arxiv2conf 2505.23648In an interactive terminal, a spinner shows live progress (e.g. Searching CVPR 2026 (cvf)...). Use --json or --quiet to disable it.
✓ Found ACL 2025 via aclanthology
arXiv: 2502.12134
Title: SoftCoT: Soft Chain-of-Thought for Efficient Reasoning with LLMs
Venue: ACL 2025
Proceedings: https://aclanthology.org/2025.acl-long.1137/
Source: aclanthology
Hint: acl 2025
from arxiv2conf import resolve
result = resolve("https://arxiv.org/abs/2502.12134")
if result:
print(result.venue, result.proceedings_url)Use the batch subcommand to resolve many arXiv IDs at once and optionally export normalized BibTeX.
# One ID per line; lines starting with # are ignored
arxiv2conf batch -i arxiv_ids.txt
# JSON array + combined .bib file
arxiv2conf batch -i arxiv_ids.txt --json --bibtex-out papers.bib
# JSONL for streaming pipelines
arxiv2conf batch 2502.12134 2507.06203 --jsonl --progress
# Faster lookup without BibTeX
arxiv2conf batch -i arxiv_ids.txt --no-bibtex --jsonInput file format (arxiv_ids.txt):
2502.12134
https://arxiv.org/abs/2507.06203
# comments are ignored
Default TSV output
2502.12134 ACL 2025 https://aclanthology.org/2025.acl-long.1137/
2507.06203 NOT_FOUND A Survey on Latent Reasoning
Python API
from arxiv2conf import batch_resolve
items = batch_resolve(["2502.12134", "2507.06203"], with_bibtex=True)
for item in items:
print(item.arxiv_id, item.status, item.venue, item.cite_key)Use --delay SEC between papers to reduce arXiv rate limiting (default 3.0, per arXiv API guidance).
The arXiv API requires at least 3 seconds between requests. If you see HTTP Error 429:
- Wait 1–2 minutes and retry (the client backs off automatically, up to ~90s)
- Use the local cache: successful metadata is stored in
.cache/arxiv-api/; repeat lookups skip the API - Increase batch delay:
arxiv2conf batch -i ids.txt --delay 5 - Avoid rapid repeated tests during development; reuse cached IDs
Single-paper mode also supports BibTeX:
arxiv2conf 2502.12134 --bibtex
arxiv2conf 2502.12134 --bibtex-out softcot.bib
arxiv2conf 2502.12134 --json --bibtexBibTeX is fetched from the best available source (ACL Anthology .bib, OpenReview data-bibtex, PMLR page embed, or arXiv /bibtex) and normalized to a consistent style:
- Tab-indented fields, trailing commas, blank line between entries
- Cite keys like
xu_softcot_2025 - arXiv-only papers become
@articlewithjournal = {arXiv preprint arXiv:...}, DOI10.48550/arXiv.... - Conference papers become
@inproceedingswith enrichedbooktitle,publisher,month,address,doi,urlwhen the source BibTeX is incomplete - Drops noisy fields (
editor,ISBN,abstract, …)
If no proceedings link is found, batch mode still emits an arXiv @article entry so your .bib file stays complete.
| Venue | Source |
|---|---|
| ACL / EMNLP / NAACL | ACL Anthology |
| CVPR / ICCV / WACV | CVF Open Access |
| ECCV | ECVA Papers |
| AAAI | AAAI OJS |
| ICLR / NeurIPS / COLM | OpenReview |
| ICML | PMLR (falls back to OpenReview) |
| All venues (last resort) | DBLP |
Venue configuration lives in data/conferences.json.
| Code | Meaning |
|---|---|
0 |
Proceedings link found |
1 |
Not found |
2 |
Invalid input |
3 |
Network error |
ACL, CVF, ECVA, and PMLR pages are cached under .cache/ on first fetch. Repeat lookups are faster. This directory is git-ignored.
arxiv2conf/
├── arxiv2conf/ # Python package
│ ├── cli.py # CLI entry (resolve + batch)
│ ├── batch.py # Batch resolver
│ ├── bibtex.py # BibTeX fetch + normalize
│ ├── bibtex_util.py # BibTeX parse/format helpers
│ ├── resolver.py # Main search orchestration
│ ├── status.py # Terminal spinner
│ └── resolvers/ # Per-venue search backends
├── data/
│ └── conferences.json # Venue registry
├── README.md # English (default)
└── README.zh-CN.md # 简体中文
MIT