SuperAPI AI 工具集

journal-meta

写作与研究

查看项目

更新于 10-15 08:59

技能介绍

用途

journal-meta 用于把一篇论文的单一标识符解析为完整的元数据记录。它面向需要论文题录信息的场景,例如整理引用、核对作者与期刊信息、获取影响因子或摘要。

主要能力

  • 输入自动识别:支持 DOI(10.x/...)、PMID(纯数字)、arXiv id(NNNN.NNNNN)、OpenAlex id(W...)或标题字符串,标识符类型自动检测。
  • 数据源:主源为 OpenAlex(免费、无需 API key);对于 OpenAlex 尚未索引的 DOI,使用 Crossref 作为回退。
  • 期刊名称增强:在已安装同系列技能时委派给两个技能——journal-abbrev 提供 ISO-4 / MEDLINE 期刊缩写(JabRef 缓存,约 25K 期刊),journal-if 提供人工整理的 JCR 影响因子。若未找到这些技能,则自动回退到 AbbrevISO(缩写)与 OpenAlex 的 2yr_mean_citedness(近似 IF)。
  • 输出数据字段: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。
  • 输出格式:被管道捕获时 stdout 为稳定 JSON 信封,在 TTY 上为人可读的键值视图;可用 --format json|human|auto 强制(--json 等同于 --format json)。JSON 信封结构为 { "ok": true, "data": {...}, "meta": { "schema_version", "cli_version", "sources", "latency_ms" } },其中 meta.sources 记录每个字段的来源,便于区分人工整理数据与近似值。

使用方式

  • 从 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 子命令为可选,直接使用裸标识符即可。

退出码:0 成功;1 运行时/上游错误(可重试);2 校验/错误输入(缺少文件、空查询);3 未找到(无匹配论文)。

工作流程

  1. 识别输入:DOI、PMID、arXiv id、OpenAlex id 或标题字符串,均自动检测。建议优先使用 DOI 或 PMID;标题搜索只返回 OpenAlex 的单个最佳匹配,对于常见标题可能是预印本或重新索引的副本,而非正式发表版本。若用户提供标题,应确认返回的 DOI/年份。
  2. 运行 python3 journal_meta.py <id>。
  3. 呈现用户要求的字段。完整引用可使用 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>)解析;若预印本未在该处索引,则回退到标题搜索。
  • 遇到全新 DOI 的 not_found:OpenAlex 索引有滞后,Crossref 回退能覆盖多数,但最新 DOI 可能需要一天。
  • 缩写看起来错误或与全名相同:单词标题(Nature、Cell、Science)按 ISO 4 不缩写;其他标题由 journal-abbrev 给出 ISO-4 形式。
  • 标题搜索返回错误论文:改用 DOI 或 PMID,标题搜索只取 OpenAlex 最佳匹配。
  • IF 显示为 "OpenAlex ... (approx)" 而非 JCR:journal-if 未找到,需安装或设置 JOURNAL_IF_CLI。

环境变量

  • JOURNAL_META_MAILTO / OPENALEX_MAILTO:用于 OpenAlex 礼貌池的邮箱(更快,推荐)。
  • JOURNAL_ABBREV_CLI:journal-abbrev 的 jabbrv.py 显式路径(跳过自动发现)。
  • JOURNAL_IF_CLI:journal-if 的 journal_if.py 显式路径。

若同系列技能位于非标准位置,设置这些变量,使增强功能使用其人工整理数据而非内置回退。