A Claude Code skill that turns a single paper identifier — DOI, PMID, arXiv id, OpenAlex id, or title — into one complete metadata record: title, full author list, first author, corresponding author(s), publication date, journal name + ISO-4 abbreviation, impact factor, volume/issue/pages, DOI/PMID, citation count, and abstract.
| Field | Native Claude Code | Journal Meta |
|---|---|---|
| Title / authors / date / venue | Guessed from memory | Resolved from OpenAlex (+ Crossref fallback) |
| First author | Ambiguous | author_position == first |
| Corresponding author | Not available | OpenAlex is_corresponding (never guessed) |
| Journal abbreviation | Manual guessing | Delegated to journal-abbrev (ISO-4, ~25K journals) |
| Impact factor | Not available | Delegated to journal-if (curated JCR) |
| Batch of DOIs/PMIDs | Not supported | batch file.txt |
- OpenAlex (free, no key) resolves the identifier and supplies nearly every field, including the corresponding-author flag. Crossref is a fallback for DOIs OpenAlex hasn't indexed yet.
- The journal name is enriched by delegating to two sibling skills when they
are installed:
journal-abbrev→ ISO-4 abbreviation.journal-if→ curated JCR impact factor.- Fallbacks (AbbrevISO, OpenAlex 2-year mean citedness) kick in automatically
if those skills aren't found.
meta.sourcesalways tells you which was used.
# From a DOI
python3 journal_meta.py "10.1038/s41586-020-2649-2"
# From a PMID / arXiv id / title
python3 journal_meta.py 32939066
python3 journal_meta.py 1706.03762
python3 journal_meta.py "Attention is all you need"
# A list, one identifier per line
python3 journal_meta.py batch papers.txt
# Skip enrichment, or force JSON
python3 journal_meta.py <id> --no-if --no-abbrev
python3 journal_meta.py <id> --format jsonOutput is a human key-value view on a TTY and a stable JSON envelope when piped.
meta.sources records the provenance of the abbreviation and impact factor.
| Env var | Effect |
|---|---|
JOURNAL_META_MAILTO / OPENALEX_MAILTO |
Email for OpenAlex's polite pool (recommended). |
JOURNAL_ABBREV_CLI |
Explicit path to journal-abbrev's jabbrv.py. |
JOURNAL_IF_CLI |
Explicit path to journal-if's journal_if.py. |
- Corresponding author relies on OpenAlex's
is_correspondingflag, which is only present when the publisher supplied it — an empty list means "not marked," not "none." The skill never infers one. - Impact factor from
journal-ifis the curated JCR value; the fallback is an OpenAlex approximation and is labelled as such inimpact_factor_source. - Title search returns OpenAlex's single top hit; prefer a DOI or PMID for the version of record.
- Python 3 (standard library only — no third-party packages).
- Optional but recommended: the
journal-abbrevandjournal-ifskills installed alongside this one for curated abbreviations and impact factors.
Works with: Claude Code and any coding agent that can run a Python CLI.
If this skill helps you, consider supporting the author:
WeChat Pay |
Alipay |
Buy Me a Coffee |
Give a Reward |
Agents365-ai
- GitHub: https://github.com/Agents365-ai
- Bilibili: https://space.bilibili.com/441831884
CC BY-NC 4.0 — Free for non-commercial use. Commercial use requires permission.




