mcpField
J
journal-abbrev

journal-abbrev

github.com/agents365-ai生产力973.0k 次安装2 周前更新
代码仓库

关于 journal-abbrev

journal-abbrev 是用于查询和规范期刊、杂志缩写的命令行技能。它先查本地 JabRef 数据库,再使用 AbbrevISO 和 NLM Catalog,并可处理 BibTeX 文件及期刊列表。

主要功能

  1. 01缩写或展开期刊名称
  2. 02模糊搜索与批量查询
  3. 03处理并展开 BibTeX 条目
  4. 04使用 JabRef、AbbrevISO 和 NLM 数据源
  5. 05输出机器可读的 JSON

适用场景

  1. 01规范 BibTeX 文件中的期刊名称
  2. 02查询参考文献中的期刊缩写
  3. 03确认不完整或不确定的刊名
  4. 04批量处理期刊名称列表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agents365-ai/365-skills --skill journal-abbrev

安装后在 Claude Code 中输入/journal-abbrev确认已加载。

附带文件.gitignorejabbrv.py

详细介绍

期刊缩写查询

使用多源级联查询期刊/杂志名称缩写:JabRef 数据库(约 25K 种期刊)→ AbbrevISO API(ISO 4)→ NLM Catalog(MEDLINE)。

重要规则: 查询时务必使用 jabbrv.py。切勿猜测缩写——即使是常见期刊,其缩写也可能不直观。

快速参考

用户想要……层级命令
缩写期刊名称readpython3 jabbrv.py abbrev "Nature Medicine"
展开缩写readpython3 jabbrv.py expand "Nat. Med."
自动检测方向readpython3 jabbrv.py lookup "J. Am. Chem. Soc."
模糊搜索(分页)readpython3 jabbrv.py search "biolog chem" --limit 10 --offset 0
处理 .bib 文件writepython3 jabbrv.py bib refs.bib
预览 .bib 更改(不写入)readpython3 jabbrv.py bib refs.bib --dry-run
指定 .bib 输出路径writepython3 jabbrv.py bib refs.bib --output out.bib
展开 .bib 中的缩写writepython3 jabbrv.py bib refs.bib --expand
可安全重放的 .bib(重试时返回缓存的信封)writepython3 jabbrv.py bib refs.bib --idempotency-key run-001
批量文本列表readpython3 jabbrv.py batch journals.txt
将批量结果作为 NDJSON 流输出readpython3 jabbrv.py batch journals.txt --stream
检查缓存状态readpython3 jabbrv.py cache status
下载缺失的缓存文件writepython3 jabbrv.py cache update
预览更新将获取的内容readpython3 jabbrv.py cache update --dry-run
原子重建⚠️ 破坏性操作python3 jabbrv.py cache rebuild --yes
预览重建(不删除)readpython3 jabbrv.py cache rebuild --dry-run
禁止在 stderr 中显示进度readpython3 jabbrv.py --quiet cache update
机器可读的 CLI 契约readpython3 jabbrv.py schema
单个子命令的架构readpython3 jabbrv.py schema lookup
输出格式

当 CLI 未连接到终端时(通过管道传输或由 Agent 捕获),标准输出为稳定的 JSON 信封;在 TTY 中运行时,则显示为面向用户的表格/缩进视图。强制指定格式:--format json|table|human|auto。--json 仍作为 --format json 的向后兼容别名保留。标志可置于子命令之前或之后。

信封结构(所有子命令始终包含相同字段):

  • 成功:{ "ok": true, "data": ..., "meta": { "schema_version", "cli_version", "cache", "latency_ms" } }
  • 部分成功(批量处理):{ "ok": "partial", "data": { "succeeded": [...], "failed": [...] }, "meta": {...} }
  • 错误:{ "ok": false, "error": { "code", "message", "retryable", ... }, "meta": {...} }
退出码
代码含义
0成功(包括部分成功)
1运行时/上游错误
2验证错误/输入无效(文件缺失、标志错误)
3未找到(查询的期刊不存在)
错误代码(位于 error.code 中)
代码可重试退出码含义
not_found否3查询已完成,但未匹配到任何来源
upstream_unavailable是1一个或多个上游 API 暂时性故障;无法得出查询结果。包含列出各项故障的 error.sources[]。请稍后重试。
file_not_found否2输入文件路径不存在
validation_error否2参数错误或标志组合无效
runtime_error是1意外的内部错误

请根据 error.code + error.retryable 分支处理,而不要只依据退出码——退出码 1 同时涵盖 upstream_unavailable 和 runtime_error。完整的机器可读列表:python3 jabbrv.py schema → data.error_codes。

环境变量(由宿主设置,不通过 Agent 参数传入)
变量效果
JABBRV_CACHE_DIR覆盖缓存目录(默认值:<install>/cache)。适用于安装目录为只读的沙箱。
JABBRV_OFFLINE设为真值(1/true/yes/on)时,跳过 AbbrevISO 和 NLM;仅查询本地 JabRef 缓存。未命中会变为确定的 not_found(不可重试),因为宿主已声明禁止访问上游。每个信封中都会出现 meta.offline: true,以便调用方了解此策略。
NO_COLORhttps://no-color.org 约定。任何非空值都会禁用颜色。目前不会输出 ANSI 转义序列;设置后会出现 meta.no_color: true,以便调用方了解此策略。

信任边界:这些变量从进程环境中读取,而非从参数中读取。宿主或沙箱负责设置;Agent 无法通过 argv 覆盖它们。架构内省:python3 jabbrv.py schema → data.global_env。

重试、幂等性与破坏性操作意图
  • 根据 error.code 和 error.retryable 分支处理,不要只看退出代码。退出代码 1 同时涵盖 upstream_unavailable(重试)和 runtime_error(重试一次,然后升级处理)。
  • bib --idempotency-key <token> 会将成功信封与输出文件一同持久化,文件名为 <output>.<token>.envelope.json。使用相同密钥重试时,会返回该信封,并设置 meta.idempotent_replay: true,而不会重新执行改写。令牌必须匹配 [A-Za-z0-9._-]{1,64}。
  • cache rebuild 是原子操作——下载内容会暂存到同级目录,只有所有文件均成功后才会进行切换。如果任一文件失败,则保留现有缓存,并返回 upstream_unavailable(可重试)。添加 --yes 可记录 meta.confirmed: true,用于审计策略;CLI 本身不会提示,因此 --yes 并非执行门槛。

工作流

步骤 1:识别意图
意图操作
单个期刊名称/缩写使用 lookup(自动检测)或 abbrev/expand(指定方向)
“X 的缩写是什么?”使用 abbrev
“X 是什么期刊?”使用 expand
不完整或不确定的名称使用 search 进行模糊匹配
修正 .bib 文件中的期刊名称使用 bib
要处理的期刊列表使用 batch
步骤 2:执行

运行相应的 jabbrv.py 命令。脚本会处理:

  1. 查询本地缓存(即时,从 JabRef 获取约 25K 种期刊)
  2. 回退到 AbbrevISO API(算法化 ISO 4 缩写,仅支持正向转换)
  3. 回退到 NLM Catalog(生物医学期刊,支持双向转换)

首次运行时会自动下载 JabRef CSV 缓存文件(约 2–5 MB)。

步骤 3:呈现结果
  • 显示全名、缩写和来源
  • 相关时注明所用标准(ISO 4 或 MEDLINE)
  • 处理 .bib 文件时:确认前显示更改摘要

ISO 4 与 MEDLINE

常见的缩写标准有两种:

标准句点示例用途
ISO 4有Nat. Med.大多数出版商、BibTeX
MEDLINE无Nat MedPubMed、NLM 数据库

JabRef 使用 ISO 4 风格。NLM Catalog 使用 MEDLINE 风格。AbbrevISO 根据 LTWA(《标题词缩写表》)通过算法计算 ISO 4 缩写。

常见缩写模式

单词缩写单词缩写
Journal(期刊)J.International(国际)Int.
American(美国)Am.European(欧洲)Eur.
Science/Sciences(科学)Sci.Medicine/Medical(医学)Med.
Biology/Biological(生物学)Biol.Chemistry/Chemical(化学)Chem.
Physics/Physical(物理学)Phys.Engineering(工程学)Eng.
Research(研究)Res.Review/Reviews(评论)Rev.
Society(学会)Soc.National(国家)Natl.
Proceedings(论文集)Proc.Transactions(汇刊)Trans.
Letters(快报)Lett.Communications(通信)Commun.
Applied(应用)Appl.Computational(计算)Comput.

注意: 根据 ISO 4 规则,单词标题(例如 “Nature”、“Science”、“Cell”)不会缩写。

集成示例

与 Zotero 配合使用
# Export BibTeX from Zotero, then standardize journal names
zot export COLLECTION_KEY --format bibtex > refs.bib
python3 jabbrv.py bib refs.bib
使用 LaTeX
# Before compiling, ensure all journal names are abbreviated
python3 jabbrv.py bib references.bib
# Use the output file (references_abbrev.bib) in your LaTeX document
批量处理

创建一个文本文件,每行写一个期刊名称:

Nature Medicine
Journal of Biological Chemistry
Proceedings of the National Academy of Sciences

然后运行:

python3 jabbrv.py batch journals.txt

故障排除

问题解决方案
“未找到结果”尝试使用部分名称执行 search,进行模糊匹配
缓存下载失败检查网络连接,然后重试 cache update(或使用 cache rebuild 强制重建)
缩写样式错误JabRef = ISO 4(带点),NLM = MEDLINE(不带点)
未检测到 BibTeX 字段确保格式为 journal = {Name}(花括号)

评论

支持 Markdown