引用管理
概述
在研究與寫作過程中系統化地管理引用。此技能提供搜尋學術資料庫(Google Scholar、PubMed)、從多個來源(CrossRef、PubMed、arXiv)提取準確的元數據、驗證引用資訊,以及生成格式正確的 BibTeX 條目的工具與策略。
對於維持引用準確性、避免參考文獻錯誤以及確保可重複研究至關重要。此技能可與文獻回顧(literature-review)技能無縫整合,實現全面的研究工作流程。
何時使用此技能
在以下情況使用此技能:
- 在 Google Scholar 或 PubMed 上搜尋特定論文
- 將 DOI、PMID 或 arXiv ID 轉換為格式正確的 BibTeX
- 提取引用的完整元數據(作者、標題、期刊、年份等)
- 驗證現有引用的準確性
- 清理和格式化 BibTeX 檔案
- 在特定領域尋找高被引論文
- 驗證引用資訊是否與實際出版物相符
- 為手稿或論文建立參考文獻清單
- 檢查重複引用
- 確保引用格式的一致性
如果由這些引用構建的文件需要圖表,請使用 scientific-schematics 技能。
核心工作流程
引用管理遵循一個系統化的流程。以下每個階段顯示了標準指令;所有變體、選項和元數據來源的詳細資訊請參閱 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 驗證和比較
…
[翻譯省略]