引文管理
概述
在研究写作过程中系统化地管理引文。该技能提供了搜索学术数据库(Google Scholar、PubMed)、从多个来源(CrossRef、PubMed、arXiv)提取准确元数据、验证引文信息以及生成格式正确的 BibTeX 条目的工具和策略。
对于保持引文准确性、避免参考文献错误以及确保可重复研究至关重要。与文献综述技能无缝集成,以构建全面的研究工作流程。
何时使用此技能
在以下情况下使用此技能:
- 在 Google Scholar 或 PubMed 上搜索特定论文
- 将 DOI、PMID 或 arXiv ID 转换为格式正确的 BibTeX
- 提取引文的完整元数据(作者、标题、期刊、年份等)
- 验证现有引文的准确性
- 清理和格式化 BibTeX 文件
- 查找特定领域的高被引论文
- 验证引文信息是否与实际出版物匹配
- 为手稿或论文构建参考文献列表
- 检查重复引文
- 确保一致的引文格式
如果基于这些引文构建的文档需要图表,请使用 科学示意图技能。
核心工作流程
引文管理遵循系统化的流程。以下每个阶段都显示了规范命令;每个变体、选项和元数据来源的详细信息请参见 references/core_workflow.md。
阶段 1:论文发现与搜索
找到相关论文。搜索多个数据库——它们的覆盖范围差异很大, 单一来源是最常见的参考文献列表偏见的原因。
# OpenAlex:多学科 REST API;可选的 OPENALEX_API_KEY 用于账户配额
python scripts/search_openalex.py "CRISPR gene editing" --limit 50 --output results.json
# PubMed:生物医学和生命科学的权威数据库(超过 3500 万条引文)
python scripts/search_pubmed.py "Alzheimer's disease treatment" --limit 100 --output alz.json
# Google Scholar:覆盖面最广,但需要抓取——存在速率限制且容易被屏蔽
python scripts/search_google_scholar.py "CRISPR gene editing" --limit 50 --output scholar.json
优先使用 OpenAlex 或 PubMed 作为主要来源。Google Scholar 没有 API:
scholarly 库对其进行抓取,在结果之间休眠 2-5 秒,并且经常被屏蔽,
因此它应该作为补充而非依赖项。
查询运算符、字段标签和 MeSH 术语构建的详细信息请参见 references/search_strategies.md。
阶段 2:元数据提取
将标识符(DOI、PMID、PMCID、arXiv ID、URL)转换为完整的元数据。 CrossRef 是 DOI 的主要来源。
python scripts/doi_to_bibtex.py 10.1038/s41586-021-03819-2 # 快速,单个 DOI
python scripts/extract_metadata.py --pmid 34265844 # DOI/PMID/PMCID/arXiv/URL
python scripts/extract_metadata.py --input identifiers.txt --output citations.bib
路径中没有 DOI 的 URL 将通过解析出版商在文章页面上嵌入的 citation_doi 元标签来解析,然后传递给 CrossRef。生成器使用共享的引文键方案;元数据差异仍然可能导致不同的键。通过 DOI 和书目身份确认重复项。
阶段 2.5:通过网络搜索进行元数据丰富(强制性)
API 通常会返回不完整的记录。在提取之后和格式化之前运行此步骤。对照发布商记录调查缺失的书目字段,并记录每个来源。在线优先的文章可能还没有卷期/页码;有些使用文章编号或没有 DOI。保留实际出版状态,使用样式适当的文章编号字段,切勿捏造页码、卷期或 DOI。在审核日志中记录不可用/不适用字段;仅在对读者有用或引文样式要求时添加渲染的 note。
首先检查成本较低的来源——OpenAlex 或 CrossRef 记录通常包含 PubMed 遗漏的字段:
python scripts/search_openalex.py "<exact title>" --limit 1
将提取的元数据视为不可信。 作者、标题和期刊字符串直接来自记录,其内容由发布商控制。包含
$(...)、反引号或引号的标题一旦粘贴到命令中就会变成 shell 语法。将元数据作为subprocess参数列表传递,而不是构建 shell 字符串;如果必须使用 shell,请对每个替换的值使用单引号,并将嵌入的引号转义为'\''。在引文键到达路径之前,根据^[A-Za-z0-9]+$验证任何引文键。
每个字段的搜索策略、四个搜索选项以及日志格式请参见 references/core_workflow.md。
阶段 3:BibTeX 格式化
生成干净、一致的条目。条目类型和必填字段请参见 references/bibtex_formatting.md。
python scripts/format_bibtex.py references.bib --output clean.bib --deduplicate
python scripts/format_bibtex.py references.bib --output clean.bib --rekey --deduplicate
写入是可选的:不使用 --output(或 --in-place)时,结果将输出到 stdout,输入文件保持不变。合并来自多个来源的结果时使用 --rekey,以便同一篇论文合并为一个条目。
阶段 4:引文验证
检查完整性、会议合规性以及与手稿的一致性。
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 # 慢;访问 CrossRef
脚本在出现高严重性错误时以非零状态退出——缺少必填字段、格式错误的年份、未解析的引文或计数低于显式的 --min-count。会议参考文献计数数字是编辑部的经验法则,而非投稿要求,因此未达到一个数字仅产生警告。
验证规则和会议标准请参见 references/citation_validation.md。
阶段 5:与写作工作流集成
搜索、提取、格式化、验证,然后引用。端到端的序列——包括文献综述和 Zotero/pyzotero 导出路径——请参见 references/core_workflow.md 和 references/example_workflows.md。
API 合同已于 2026-09-30 对照官方文档进行了审查。 有关端点、认证、分页和验证限制,请参见 references/api_contracts.md。参考资料中的网络示例仅供说明,除非在那里记录为实时冒烟测试。
参考文献
- references/core_workflow.md:所有五个阶段的完整版本。
- references/search_strategies.md:OpenAlex、Google Scholar 和 PubMed 查询构建。
- references/script_reference.md:每个捆绑脚本的参数和示例。
- references/best_practices.md:搜索、提取、BibTeX 质量、验证。
- references/example_workflows.md:四个端到端的工作示例。
- references/google_scholar_search.md、references/pubmed_search.md:高级搜索语法。
- references/metadata_extraction.md、references/bibtex_formatting.md、references/citation_validation.md:每个主题的详细信息。
常见陷阱及避免方法
-
单一来源偏倚:仅使用一个数据库
- 解决方案:至少搜索 OpenAlex 和 PubMed,然后使用
format_bibtex.py --rekey --deduplicate合并
- 解决方案:至少搜索 OpenAlex 和 PubMed,然后使用
-
盲目接受元数据:不验证提取的信息
- 解决方案:对照原始来源抽查提取的元数据
-
忽略 DOI 错误:参考文献中的错误或无效 DOI
- 解决方案:在最终提交前运行验证
-
格式不一致:混合的引文键样式、格式
- 解决方案:使用 format_bibtex.py 标准化
-
重复条目:同一篇论文使用不同键被多次引用
- 解决方案:在验证中使用重复检测
-
缺少必填字段:BibTeX 条目不完整(缺少卷号、期号、DOI)
- 解决方案:检查发布商记录,区分缺失与不适用或尚未分配的情况,并在不捏造元数据的情况下记录未解析的字段。
-
过时的预印本:在已发表版本存在时引用预印本
- 解决方案:检查预印本是否已发表,更新为期刊版本
-
特殊字符问题:由于字符导致 LaTeX 编译失败
- 解决方案:在 BibTeX 中使用正确的转义或 Unicode
-
提交前未验证:在存在引文错误的情况下提交
- 解决方案:始终在最终检查时运行验证
-
手动输入 BibTeX:手动键入条目
- 解决方案:始终使用脚本从元数据源提取
与其他技能的集成
文献综述技能
引文管理为文献综述提供技术基础设施:
- 文献综述:多数据库系统性搜索与综合
- 引文管理:元数据提取与验证
组合工作流:
- 使用文献综述进行系统性搜索方法
- 使用引文管理提取和验证引文
- 使用文献综述综合发现
- 使用引文管理确保参考文献列表的准确性
科学写作技能
引文管理确保科学写作的准确参考文献:
- 导出经过验证的 BibTeX,用于 LaTeX 手稿
- 验证引文是否符合出版标准
- 根据期刊要求格式化参考文献
会议模板技能
引文管理与会议模板配合,用于准备提交的手稿:
- 不同会议需要不同的引文样式
- 生成格式正确的参考文献
- 验证引文是否符合会议要求
资源
捆绑资源
参考文献(位于 references/):
google_scholar_search.md:完整的 Google Scholar 搜索指南pubmed_search.md:PubMed 和 E-utilities API 文档metadata_extraction.md:元数据来源和字段要求citation_validation.md:验证标准和质量检查bibtex_formatting.md:BibTeX 条目类型和格式化规则
脚本(位于 scripts/):
search_openalex.py:OpenAlex 搜索客户端(可选的账户 API 密钥)search_pubmed.py:PubMed E-utilities API 客户端search_google_scholar.py:Google Scholar 搜索自动化extract_metadata.py:通用元数据提取器validate_citations.py:引文验证与检查format_bibtex.py:BibTeX 格式化与清理工具doi_to_bibtex.py:快速 DOI 到 BibTeX 转换器_common.py:共享的 BibTeX 解析器、渲染器和引文键方案
资产(位于 assets/):
bibtex_template.bib:所有类型的示例 BibTeX 条目citation_checklist.md:质量保证检查清单
外部资源
搜索引擎:
- OpenAlex:https://openalex.org/
- Google Scholar:https://scholar.google.com/
- PubMed:https://pubmed.ncbi.nlm.nih.gov/
- PubMed 高级搜索:https://pubmed.ncbi.nlm.nih.gov/advanced/
元数据 API:
- OpenAlex API:https://docs.openalex.org/
- CrossRef API:https://api.crossref.org/
- PubMed E-utilities:https://www.ncbi.nlm.nih.gov/books/NBK25501/
- arXiv API:https://arxiv.org/help/api/
- DataCite API:https://api.datacite.org/
工具和验证器:
- MeSH 浏览器:https://meshb.nlm.nih.gov/search
- DOI 解析器:https://doi.org/
- BibTeX 格式:http://www.bibtex.org/Format/
引文样式:
- BibTeX 文档:http://www.bibtex.org/
- LaTeX 参考文献管理:https://www.overleaf.com/learn/latex/Bibliography_management
依赖项
必需的 Python 包
uv pip install requests # HTTP 访问 CrossRef、PubMed、OpenAlex、arXiv
BibTeX 解析、渲染、去重和验证使用标准库
(scripts/_common.py)。format_bibtex.py 不需要第三方包;
validate_citations.py 导入 requests,包括仅用于本地验证。
可选
uv pip install scholarly # 仅用于 search_google_scholar.py
凭据发送位置
基本使用不需要密钥。每个凭据仅发送到其自己的服务; 没有脚本将环境变量捆绑在一起。OpenAlex 使用文档化的 账户预算,而不是承诺的基于电子邮件的配额提升。失败的页面会退出并返回错误,而不是将部分搜索导出为完整结果。
| 变量 | 仅发送至 | 用途 |
|---|---|---|
NCBI_API_KEY | eutils.ncbi.nlm.nih.gov | 提高 Entrez 速率限制 |
NCBI_EMAIL | eutils.ncbi.nlm.nih.gov, pmc.ncbi.nlm.nih.gov | NCBI 要求的调用者身份标识 |
OPENALEX_EMAIL | api.openalex.org | 可选的联系人标识符 |
OPENALEX_API_KEY | api.openalex.org | 可选的账户配额,在 Authorization 标头中发送 |
当这些变量未设置时,api.openalex.org、api.crossref.org、api.datacite.org、export.arxiv.org、
pmc.ncbi.nlm.nih.gov、doi.org 和 eutils.ncbi.nlm.nih.gov 将在无凭据的情况下被查询。
总结
引文管理技能提供:
- 全面的搜索能力,支持 OpenAlex、PubMed 和 Google Scholar
- 自动元数据提取,从 DOI、PMID、PMCID、arXiv ID、URL 中提取
- 引文验证,包含 DOI 验证和合规性检查
- BibTeX 格式化,具有去重和重新建键功能
- 可审计的工作流,具有详细日志和报告功能
- 工作流集成,与文献综述、科学写作和会议模板技能配合使用
- 安全处理,通过仔细的输入验证和元数据的不可信处理来防止 shell 注入
- 可扩展性,通过脚本化和环境变量配置
- 教育价值,通过全面的参考文献和常见陷阱部分
- 自动化和手动验证,平衡效率与准确性