用途
Citation Management 是一个面向科研与写作流程的引用管理技能,用于系统化地管理引用。它覆盖从论文检索、元数据提取、BibTeX 格式化到引用校验的完整流程,目标是保持引用准确、避免参考文献错误,并支持可复现的研究。该技能可与 literature-review 技能集成,形成完整的研究工作流。
主要能力
- 论文检索:支持在 OpenAlex、PubMed 和 Google Scholar 中搜索论文。OpenAlex 覆盖约 2.5 亿篇作品、涵盖所有学科、无需 API key;PubMed 是生物医学与生命科学领域的权威来源(3500 万条以上引用);Google Scholar 覆盖面最广,但通过抓取实现,存在速率限制且容易被封禁,建议作为补充而非依赖。
- 元数据提取:将 DOI、PMID、PMCID、arXiv ID 和 URL 转换为完整元数据。CrossRef 是 DOI 的主要来源。URL 路径中没有 DOI 时,会通过出版商文章页面嵌入的 citation_doi meta 标签解析,再交给 CrossRef。同一篇论文在不同来源中会生成相同的 citation key,便于去重。
- 元数据补全(强制步骤):API 常返回不完整记录。提取后、格式化前需通过 WebSearch/WebFetch 补全缺失字段,并记录来源;确实找不到的字段应写入 note 字段说明,而不是静默留空。
- BibTeX 格式化:生成干净、一致的条目,支持去重与重新生成 citation key(--rekey),便于合并多个来源的结果。
- 引用校验:检查完整性、是否符合期刊规范以及与稿件的一致性,支持 DOI 校验(较慢,会访问 CrossRef)。高严重性错误会导致脚本以非零状态退出。
- 写作流程集成:按“检索—提取—格式化—校验—引用”的顺序衔接写作流程,并支持 literature-review 与 Zotero/pyzotero 导出路径。
使用方式
该技能以脚本形式提供,主要命令包括:
- 检索:
- python scripts/search_openalex.py "CRISPR gene editing" --limit 50 --output results.json
- python scripts/search_pubmed.py "Alzheimer's disease treatment" --limit 100 --output alz.json
- python scripts/search_google_scholar.py "CRISPR gene editing" --limit 50 --output scholar.json
- 元数据提取:
- python scripts/doi_to_bibtex.py 10.1038/s41586-021-03819-2
- python scripts/extract_metadata.py --pmid 34265844
- python scripts/extract_metadata.py --input identifiers.txt --output citations.bib
- 格式化:
- python scripts/format_bibtex.py references.bib --output clean.bib --deduplicate
- python scripts/format_bibtex.py references.bib --output clean.bib --rekey --deduplicate
- 校验:
- python scripts/validate_citations.py references.bib --report report.json
- python scripts/validate_citations.py references.bib --venue nature
- python scripts/validate_citations.py references.bib --manuscript paper.tex
- python scripts/validate_citations.py references.bib --check-dois
写入是可选行为:不带 --output(或 --in-place)时结果输出到 stdout,输入文件保持不变。合并多个来源结果时使用 --rekey,使同一篇论文合并为一条记录。
依赖方面,需要 uv pip install requests 以访问 CrossRef、PubMed、OpenAlex、arXiv;BibTeX 解析、渲染、去重与校验使用标准库(scripts/_common.py),因此 format_bibtex.py 和 validate_citations.py 无需第三方包即可运行。search_google_scholar.py 可选依赖 uv pip install scholarly。该技能不需要 API key;它读取的可选环境变量包括 NCBI_API_KEY 和 NCBI_EMAIL(仅发送至 eutils.ncbi.nlm.nih.gov,用于提高 Entrez 速率限制和调用方标识)、OPENALEX_EMAIL(仅发送至 api.openalex.org,用于加入更快的 OpenAlex polite pool)。未设置时,相关服务均以无凭据方式查询。
适用场景
- 在 Google Scholar 或 PubMed 中查找特定论文
- 将 DOI、PMID 或 arXiv ID 转换为格式规范的 BibTeX
- 提取引用的完整元数据(作者、标题、期刊、年份等)
- 校验已有引用的准确性
- 清理和格式化 BibTeX 文件
- 查找某领域高被引论文
- 核实引用信息与实际出版物是否一致
- 为稿件或学位论文构建参考文献列表
- 检查重复引用、确保引用格式一致
限制与注意事项
- 单一来源偏差:只用一个数据库是参考文献列表偏差的最常见原因,建议至少检索 OpenAlex 和 PubMed,再用 format_bibtex.py --rekey --deduplicate 合并。
- 元数据不可盲信:提取的信息需与原始来源抽查核对。
- 提取的元数据应视为不可信:作者、标题、期刊字符串来自出版商控制的记录,标题中若含 $(...)、反引号或引号,粘贴到命令中会变成 shell 语法。应将元数据作为子进程参数列表传递,而非拼接 shell 字符串;必须使用 shell 时,对每个替换值使用单引号,并将内嵌引号转义为 '''。citation key 在用于路径前需用 ^[A-Za-z0-9]+$ 校验。
- 常见问题还包括:DOI 错误、格式不一致、重复条目、缺少必填字段(volume、pages、DOI)、引用过时预印本、特殊字符导致 LaTeX 编译失败、提交前未校验、手工输入 BibTeX 等。
- 期刊参考文献数量数字为编辑经验规则,并非投稿硬性要求,未达标仅作警告。
相关技能
- citation-verification:核实稿件中每条参考文献真实存在且与元数据匹配,捕捉幻觉、损坏或不匹配的引用。
- bibtex-hygiene:在投稿前清理、去重并校验 BibTeX/BibLaTeX 参考文献。
- literature-review:通过 PubMed、arXiv、bioRxiv 和 Semantic Scholar(以及 parallel-cli 的网页搜索)执行系统性文献综述与筛选。