关于 journal-meta
journal-meta 是一个 CLI 技能,可将论文标识符或标题解析为书目信息。它以 OpenAlex 为主要来源,对部分 DOI 使用 Crossref 作为备用,并可通过关联技能补充期刊缩写和影响因子。
主要功能
- 01解析 DOI、PMID、arXiv、OpenAlex ID 或标题
- 02以 JSON 返回书目信息
- 03批量处理论文列表
- 04补充期刊缩写和影响因子
- 05记录返回字段的数据来源
适用场景
- 01根据 DOI 或 PMID 生成引文
- 02查询论文列表的元数据
- 03核实影响因子的数据来源
- 04解析 arXiv 论文以便引用
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agents365-ai/ 365-skills --skill journal-meta安装后在 Claude Code 中输入/journal-meta确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
.gitignore.skillspector-baseline.yamljournal_meta.py详细介绍
论文元数据查询
将一个论文标识符解析为完整的元数据记录。主要数据源是 OpenAlex(免费,无需 API 密钥);对于 OpenAlex 尚未收录的 DOI,则会回退到 Crossref。如果已安装相关技能,则会调用两个同级技能来补充期刊名称:
journal-abbrev→ ISO-4 / MEDLINE 期刊缩写(JabRef 缓存,约 25K 种期刊)journal-if→ 精选的 JCR 影响因子
如果未找到这些技能,则会自动回退到 AbbrevISO(期刊缩写)和
OpenAlex 2yr_mean_citedness(近似影响因子)。
重要规则: 始终使用 journal_meta.py。绝不要编造作者、通讯作者、日期或影响因子——必须查询确认。
快速参考
| 用户需要…… | 命令 |
|---|---|
| DOI 对应的元数据 | python3 journal_meta.py "10.1038/s41586-020-2649-2" |
| PMID 对应的元数据 | python3 journal_meta.py 32939066 |
| arXiv id 对应的元数据 | python3 journal_meta.py 1706.03762 |
| 标题对应的元数据 | python3 journal_meta.py "Attention is all you need" |
| 处理列表 | python3 journal_meta.py batch papers.txt |
| 跳过影响因子查询 | python3 journal_meta.py <id> --no-if |
| 跳过期刊缩写查询 | python3 journal_meta.py <id> --no-abbrev |
| 机器可读的约定 | python3 journal_meta.py schema |
子命令 lookup 可省略——也可以直接使用标识符。标识符类型
(DOI / PMID / arXiv / OpenAlex id / 标题)会自动检测。
输出格式
通过管道传递或捕获时,标准输出为稳定的 JSON 封装;在 TTY 中则显示为人类可读的键值视图。可使用 --format json|human|auto 强制指定(--json = --format json)。
封装:{ "ok": true, "data": {...}, "meta": { "schema_version", "cli_version", "sources", "latency_ms" } }。
meta.sources 会记录各字段的数据来源(例如 journal-abbrev (JabRef)、
journal-if (local cache) 或回退来源),便于区分精选数据与近似值。
数据字段(data)
title、authors(列表)、author_count、first_author、corresponding_authors
(列表;如果 OpenAlex 未为该记录标记通讯作者,则为空)、
publication_date、year、journal、journal_abbrev、impact_factor、
impact_factor_source、impact_factor_year、volume、issue、pages、
doi、pmid、openalex、issn、type、is_oa、cited_by_count、abstract。
退出代码
| 代码 | 含义 |
|---|---|
0 | 成功 |
1 | 运行时错误 / 上游错误(可重试) |
2 | 验证错误 / 输入无效(缺少文件、查询为空) |
3 | 未找到(没有匹配的论文) |
工作流程
- 识别输入。 DOI(
10.x/...)、PMID(数字)、arXiv id (NNNN.NNNNN)、OpenAlex id(W...)或标题字符串——均会自动检测。 优先使用 DOI 或 PMID:标题搜索会返回 OpenAlex 排名第一的单个匹配结果; 对于非常常见的标题,这可能是预印本或重新编目的副本,而不是正式发表版本。 如果用户提供的是标题,请确认返回结果的 DOI / 年份。 - 运行
python3 journal_meta.py <id>。 - 呈现用户要求的字段。若要生成完整引文,请使用
first_author、journal_abbrev、year、volume、issue、pages、doi。 报告 IF 时注明impact_factor_source——精选的 JCR 数值与 OpenAlex 的近似值并不相同。
注意事项与限制
- 通讯作者来自 OpenAlex 的
is_corresponding标记,只有在出版商提供了该信息时才会填充。列表为空表示“元数据中未标记”,而非“没有通讯作者”——应如实说明,不要猜测。 journal-if提供的影响因子是精选的 JCR 数据;回退值是 OpenAlex 的 2 年平均被引率,与官方 JCR IF 不同。只有精选值可作为正式数据引用,并应标明近似值。- arXiv id 会通过 arXiv DataCite DOI(
10.48550/arXiv.<id>)解析;如果预印本未被收录,则会回退到标题搜索。
环境变量
| 变量 | 效果 |
|---|---|
JOURNAL_META_MAILTO / OPENALEX_MAILTO | 用于 OpenAlex 礼貌池的电子邮件(速度更快,推荐使用)。 |
JOURNAL_ABBREV_CLI | 显式指定 journal-abbrev 的 jabbrv.py 路径(跳过自动发现)。 |
JOURNAL_IF_CLI | 显式指定 journal-if 的 journal_if.py 路径。 |
如果同级技能位于非标准位置,请设置这些变量,以便丰富流程使用它们整理的数据,而非内置备用数据。
故障排除
| 问题 | 解决方案 |
|---|---|
| IF 显示“OpenAlex ... (approx)”而非 JCR | 未找到 journal-if——请安装它或设置 JOURNAL_IF_CLI。 |
| 缩写有误/与全名相同 | 根据 ISO 4,单词标题(Nature、Cell、Science)不缩写。其他标题可由 journal-abbrev 提供 ISO-4 格式。 |
| 标题搜索返回了错误的论文 | 改用 DOI 或 PMID——标题搜索只会返回 OpenAlex 的首个匹配结果。 |
新 DOI 显示 not_found | OpenAlex 的索引存在延迟;Crossref 备用方案可覆盖大多数情况,但最新的 DOI 可能需要等待一天。 |
corresponding_authors 为空 | 出版商未在元数据中标记通讯作者;请勿推断。 |