Community程式設計與開發github.com

ccanunez/verificar-bib

驗證參考文獻(.bib 檔案、論文/論文的參考列表或其引用的 LaTeX 專案)是否真實存在、正確有效,並檢查是否有虛假或幻覺產生的引用。

verificar-bib 是什麼?

此技能「ccanunez/verificar-bib」專為需要嚴格驗證參考文獻的研究人員、學生和工程師設計。它支援多種輸入格式:直接上傳 `.bib` 檔案、貼上純文字參考列表、或是掃描整個 LaTeX 專案結構。技能會自動調用 OpenAlex、Crossref、arXiv、OpenLibrary 和 NASA ADS 等多個學術資料庫,檢查每筆文獻的 DOI、arXiv ID、標題、作者、年份、卷期頁碼等核心資訊,並標記出可能已撤回的論文、重複引用、資料錯誤以及虛假引用(幻覺)。 使用方式非常直觀:在支援的 AI 代理(如 Claude Code、Cursor 等)中,執行 `/verificar-bib <refs.bib | refs.txt | 文稿資料夾>` 即可。技能會產生一份詳細的 Markdown 報告,列出 ✅(正確)、⚠️(不吻合)、❌(未找到)和 🚩(已撤回)等狀態,並提供修正建議(例如補上正確的 DOI 或 arXiv ID)。進階選項包括 `profundo`(深入比對引用文句是否真正支持論述)、`huecos`(建議應補充但未引用的相關文獻)以及 `parche`(產生修正後的 `.bib` 檔案而不更動原始檔案)。特別注意,❌ 狀態不必然等於虛假引用,尤其是書籍、舊文獻或軟體類引用,可能只是資料庫索引不全,因此技能強烈建議對 ❌ 和 ⚠️ 的結果進行人工二次驗證。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ccanunez/verificar-bib/tree/HEAD

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

驗證參考文獻並找到相關論文

目標:對於每一筆參考文獻,判定其是否存在、資料是否正確、是否仍有效(未被撤回)、以及是否支持文中聲稱的論述;並提供閱讀與下載位置。預設使用使用者語言(預設為西班牙文,但會根據使用者輸入調整)。

參數

/verificar-bib <refs.bib | refs.txt | 文稿資料夾> [profundo] [huecos] [parche]

  • profundo:額外進行論述驗證(步驟 4)。這是最耗費資源的步驟:應先詢問使用者,未經同意不得啟用。
  • huecos:建議遺漏的參考文獻(例如 --huecos 20)。
  • parche:產生一個修正過的 .bib 檔案,不更動原始檔案。

1. 取得參考文獻

  • .bib:直接使用該檔案。
  • 純文字列表(貼在對話中、從 PDF 中擷取、或從論文的 References 章節複製):將其儲存至暫存區作為 .txt 檔案,每行或每個段落一筆參考文獻。若來源是 PDF,僅擷取參考文獻章節。
  • LaTeX 專案:找到 .bib 檔案(透過 \bibliography{…} 或 \addbibresource{…} 宣告),並使用 --tex 傳送專案資料夾路徑。此腳本會比對 \cite(支援 natbib 和 biblatex)中的鍵值與 .bib 條目,並擷取每個引用附近的句子。

2. 執行驗證程式

python3 -I ~/.claude/skills/verificar-bib/scripts/verificar_bib.py <refs> --out <scratchpad>/informe_bib.md --json <scratchpad>/informe_bib.json [--tex <carpeta>] [--contextos <scratchpad>/contextos.md] [--huecos 20] [--parche <scratchpad>/refs.corregido.bib] [--macros-aas]

對每筆參考文獻,依序查詢:DOI(若無任何資料庫擁有,則查詢 doi.org 解析器)、arXiv ID、OpenAlex 中的標題、OpenLibrary(書籍)、ADS(若設定 ADS_API_TOKEN)、年份+卷期+頁碼、Crossref 書目與 arXiv。找到的論文會加上撤回與勘誤資訊(Retraction Watch,透過 OpenAlex 與 Crossref),若參考文獻引用的是預印本,則加上已出版版本,以及開放取用連結。判決結果:

  • 🚩 RETRACTADA(已撤回):論文存在但已被撤回或撤銷。不應做為證據引用。
  • ✅ OK:標題、第一作者、年份(±1 年,考慮 arXiv 與出版版的差異)、卷期與頁碼一致。書籍不要求年份完全相符,因為資料庫可能索引不同版本。
  • ⚠️ DISCREPANCIA(不吻合):論文存在,但某些資料不符:年份、卷期、頁碼、作者順序、DOI 不存在或指向另一篇論文,或該卷期/頁碼上已有另一篇不同標題的論文(這是虛構引用的典型模式,將虛構內容套用在真實期刊上)。
  • ❌ NO ENCONTRADA(未找到):所有資料庫都找不到此筆文獻,因此可能是虛假引用。會附上最相似的候選論文作為線索。

報告中會包含重複(同一篇論文有兩個不同的鍵值,或同一個鍵值出現多次)、與 .tex 檔案的比對結果(被引用但無對應條目的鍵值,會顯示為 [?],以及未被引用的條目)、遺漏的參考文獻,以及備註(已發表的勘誤、預印本已正式出版、書籍版本等)。

執行注意事項:

  • 有快取機制,位於 ~/.cache/verificar-bib(保留 30 天):編輯 .bib 後重新執行幾乎即時完成。使用 --sin-cache 可忽略快取。
  • arXiv 查詢頻率限制為每 3 秒一次。若參考文獻超過約 50 筆,請在背景執行。
  • 若報告中出現「部分查詢失敗」的警告,❌ 的結果可能為偽陰性:請稍後重試。
  • 若未設定 OPENALEX_API_KEY,OpenAlex 會根據 IP 提供每日小型配額。ADS_API_TOKEN 會啟用 ADS,在天文學領域中,ADS 收錄了其他資料庫沒有的書籍、會議論文與早期論文。如果使用者擁有這些金鑰,請讓他們自行匯入,切勿為使用者建立金鑰或讀取其值。
  • --strict 參數會在出現 ❌、🚩 或遺漏鍵值時以退出碼 1 結束(適用於最終提交前的檢查)。

3. 手動檢查可疑項目(此步驟不可省略)

此腳本僅是過濾器。切勿只因腳本找不到某筆文獻就將其宣告為虛假。 對於每個 ❌、🚩 和非平凡的 ⚠️:

  1. 使用 WebSearch 搜尋完整的標題(加上引號),以及「第一作者 + 年份 + 期刊名稱」。
  2. 考慮常見的偽陰性情況,這些不代表虛假引用:
    • 書籍、章節、學位論文、早期會議論文(@book、@phdthesis、@inproceedings):資料庫索引不完整,或使用重印的日期。簡短標題(例如 Fluid Mechanics)可能與同名不同作品混淆。
    • 軟體與資料(@misc、@software:FARGO3D、RADMC-3D、astropy…):請在 ASCL、Zenodo 或 GitHub 上驗證,並確認軟體要求引用的出版物。
    • 1990 年之前的論文沒有 DOI:這些論文在 OpenAlex 上可能找不到,但 ADS 有收錄。
    • 同一篇論文同時有期刊版與會議版(例如 Shakura & Sunyaev 1973 在 A&A 與 IAU Symp. 55):資料庫可能回傳另一個版本。
    • 近期預印本尚未正式發表。
    • 團體作者或非拉丁字元名稱。
  3. 對於「作者順序」的 ⚠️ 警告,請檢查鍵值(例如 Casassus2025)與文中 \citet{} 的引用是否將作品歸屬於非第一作者的人。這樣的情況確實需要修正。
  4. 對於 🚩 警告,請在官方撤回通知中確認,並告知使用者該引用出現在何處。
  5. 每筆參考文獻的最終判決:
    • 真實且正確;
    • 真實但資料需修正:提供修正後的 BibTeX 欄位;
    • 已撤回:告知引用位置,並建議替代文獻或上下文;
    • 無法驗證:已搜尋但無結果,請向使用者索取原始來源;
    • 虛假:僅在有證據時才判定,例如 DOI 或卷期頁碼屬於另一篇論文,且不存在符合該標題的內容。

在報告開頭新增「人工驗證」章節,列出這些判決結果。

4. 驗證論述(profundo 模式)

需要 --tex 與 --contextos。上下文檔案包含每個被引用的參考文獻的摘要,以及 .tex 檔案中引用該文獻的句子(檔案:行號)。對於每個引用:

  1. 將句子的聲明與摘要進行比對。分類為支持、部分支持(例如論文在另一種情況下或更謹慎地呈現)、不支持或無法透過摘要驗證。
  2. 對於無法驗證與不支持的項目,在得出結論前,先開啟全文(arXiv 或報告中的 PDF),找到具體段落。引用論文中的章節或頁碼。
  3. 判斷論述本身,而非寫作風格。指出通用引用(例如「詳見……的綜述」)是可接受的。
  4. 將結果以表格形式寫入報告末尾:檔案:行號 | 鍵值 | 判決 | 論文證據 | 建議。首先排序不支持的項目。

若引用數量眾多(超過約 60 筆),請詢問使用者是否要全部檢查或優先處理:那些支持自有結果、數值與直接比較的引用。

5. 遺漏的參考文獻(huecos)

--huecos N 會列出使用者自己的參考文獻中至少兩篇共同引用的論文,但使用者本身並未引用。排序依據是被使用者參考文獻引用的次數。並非所有結果都適用:請根據與工作主題的相關性進行過濾(閱讀標題,必要時閱讀摘要),並僅呈現那些值得考慮的文獻,並附上一行說明原因。

6. 交付成果

  • Markdown 格式的報告,包含連結(DOI · ADS · arXiv · PDF · ISBN)與人工驗證結果。若使用者要分享報告,可提供將其發布為 Artifact 的選項。
  • 在對話中提供摘要:多少 ✅、多少需要修正資料、多少已撤回、多少可能為虛假及其原因;在 deep 模式下,有多少論述未獲得支持。
  • 未經許可不得編輯使用者的 .bib 檔案。 --parche 會寫入一個單獨的檔案,僅對 ✅ 的條目新增 doi/eprint,使用大括號保護縮寫,並在使用 --macros-aas 時縮寫期刊名稱(\apj、\aap、\mnras…;需要 aas_macros.sty 或 AASTeX)。絕不更改年份、卷期或頁碼。這些修正會先提出,僅在使用者同意後才套用。在取代原始檔案前,顯示 diff。
  • 連結僅供閱讀與下載。除非使用者明確要求,否則不要下載 PDF。若使用者要求,請將其儲存至一個新的空資料夾。

注意事項

  • 使用 plainnat/aasjournals 時,標題會轉為小寫。修正腳本會保護縮寫(例如 {PDS} 70、{ALMA}、{3D}),但不會保護專有名稱(例如 Jupiter、Kepler):請務必檢查。
  • BibTeX 解析器功能有限:不支援 @string 或使用 # 的字串串接。若 .bib 使用了這些功能,請提出警告。
  • ADS 的連結會對自動化瀏覽器顯示人機驗證。這些連結是給使用者使用的,不要讓 Claude 開啟它們。
  • 測試:--selftest(無網路)與 tests/regresion.py(有網路,使用包含陷阱引用的固定測試資料)。

相關技能