| name | journal-meta |
| description | Use when the user wants full metadata for a paper — from a DOI, PMID, arXiv id, OpenAlex id, or title. Returns title, 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 in one record. Triggers on "paper metadata", "who is the corresponding author", "first author of", "what journal / impact factor for this DOI/PMID", "cite this paper", "文献元数据", "通讯作者", "第一作者", "影响因子". PROACTIVELY USE when the user pastes a DOI/PMID/arXiv id or paper title and asks about its authors, venue, or impact. |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep |
| author | Agents365-ai |
| category | Academic Research |
| version | 0.1.0 |
| created | 2026-07-14T00:00:00.000Z |
| updated | 2026-07-14T00:00:00.000Z |
| github | https://github.com/Agents365-ai/journal-meta |
| homepage | https://github.com/Agents365-ai/journal-meta |
| metadata | {"version":"0.1.0","openclaw":{"requires":{"bins":"[Truncated]"},"emoji":"🗂️","homepage":"https://github.com/Agents365-ai/journal-meta","os":["macos","linux","windows"]}} |
Paper Metadata Lookup
Resolve one paper identifier into a full metadata record. Primary source is
OpenAlex (free, no API key); Crossref is a fallback for DOIs OpenAlex
hasn't indexed. The journal name is enriched by delegating to two sibling
skills when installed:
journal-abbrev → ISO-4 / MEDLINE journal abbreviation (JabRef cache, ~25K journals)
journal-if → curated JCR impact factor
If those skills aren't found, it falls back to AbbrevISO (abbreviation) and
OpenAlex 2yr_mean_citedness (approximate IF) automatically.
Critical rule: Always use journal_meta.py. Never fabricate authors,
corresponding authors, dates, or impact factors — resolve them.
Quick Reference
| User wants... | Command |
|---|
| Metadata from a DOI | python3 journal_meta.py "10.1038/s41586-020-2649-2" |
| Metadata from a PMID | python3 journal_meta.py 32939066 |
| Metadata from an arXiv id | python3 journal_meta.py 1706.03762 |
| Metadata from a title | python3 journal_meta.py "Attention is all you need" |
| Process a list | python3 journal_meta.py batch papers.txt |
| Skip impact-factor lookup | python3 journal_meta.py <id> --no-if |
| Skip abbreviation lookup | python3 journal_meta.py <id> --no-abbrev |
| Machine-readable contract | python3 journal_meta.py schema |
The subcommand lookup is optional — a bare identifier works. Identifier type
(DOI / PMID / arXiv / OpenAlex id / title) is auto-detected.
Output format
Stdout is a stable JSON envelope when piped/captured, and a human key-value
view on a TTY. Force it with --format json|human|auto (--json = --format json).
Envelope: { "ok": true, "data": {...}, "meta": { "schema_version", "cli_version", "sources", "latency_ms" } }.
meta.sources records where each field came from (e.g. ,
, or a fallback), so you can tell curated data from approximations.