驗證參考文獻並找到相關論文
目標:對於每一筆參考文獻,判定其是否存在、資料是否正確、是否仍有效(未被撤回)、以及是否支持文中聲稱的論述;並提供閱讀與下載位置。預設使用使用者語言(預設為西班牙文,但會根據使用者輸入調整)。
參數
/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. 手動檢查可疑項目(此步驟不可省略)
此腳本僅是過濾器。切勿只因腳本找不到某筆文獻就將其宣告為虛假。 對於每個 ❌、🚩 和非平凡的 ⚠️:
- 使用 WebSearch 搜尋完整的標題(加上引號),以及「第一作者 + 年份 + 期刊名稱」。
- 考慮常見的偽陰性情況,這些不代表虛假引用:
- 書籍、章節、學位論文、早期會議論文(
@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):資料庫可能回傳另一個版本。
- 近期預印本尚未正式發表。
- 團體作者或非拉丁字元名稱。
- 書籍、章節、學位論文、早期會議論文(
- 對於「作者順序」的 ⚠️ 警告,請檢查鍵值(例如
Casassus2025)與文中\citet{}的引用是否將作品歸屬於非第一作者的人。這樣的情況確實需要修正。 - 對於 🚩 警告,請在官方撤回通知中確認,並告知使用者該引用出現在何處。
- 每筆參考文獻的最終判決:
- 真實且正確;
- 真實但資料需修正:提供修正後的 BibTeX 欄位;
- 已撤回:告知引用位置,並建議替代文獻或上下文;
- 無法驗證:已搜尋但無結果,請向使用者索取原始來源;
- 虛假:僅在有證據時才判定,例如 DOI 或卷期頁碼屬於另一篇論文,且不存在符合該標題的內容。
在報告開頭新增「人工驗證」章節,列出這些判決結果。
4. 驗證論述(profundo 模式)
需要 --tex 與 --contextos。上下文檔案包含每個被引用的參考文獻的摘要,以及 .tex 檔案中引用該文獻的句子(檔案:行號)。對於每個引用:
- 將句子的聲明與摘要進行比對。分類為支持、部分支持(例如論文在另一種情況下或更謹慎地呈現)、不支持或無法透過摘要驗證。
- 對於無法驗證與不支持的項目,在得出結論前,先開啟全文(arXiv 或報告中的 PDF),找到具體段落。引用論文中的章節或頁碼。
- 判斷論述本身,而非寫作風格。指出通用引用(例如「詳見……的綜述」)是可接受的。
- 將結果以表格形式寫入報告末尾:
檔案:行號 | 鍵值 | 判決 | 論文證據 | 建議。首先排序不支持的項目。
若引用數量眾多(超過約 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(有網路,使用包含陷阱引用的固定測試資料)。