文献検証と論文の特定
目的:各参考文献について、存在するか、データが正しいか、有効か(撤回されていないか)、本文の主張を裏付けているかを判断し、どこで読めるかを提供する。ユーザーの言語(デフォルトはスペイン語)で記述する。
引数
/verificar-bib <refs.bib | refs.txt | 原稿フォルダ> [profundo] [huecos] [parche]
profundo:さらに主張の検証(ステップ4)を行う。最も高コストな処理:ユーザーが要求した場合のみ実行し、自動では行わない。huecos:不足している参考文献を提案する(--huecos 20)。parche:修正された.bibを出力する(元のファイルは変更しない)。
1. 参考文献の取得
.bib:そのまま使用する。- テキストリスト(チャットに貼り付けたもの、PDFや論文の参考文献セクションから抽出したもの):スクラッチパッドに
.txtとして保存する。1行または1パラグラフにつき1つの参考文献。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経由)、bibがプレプリントを引用している場合の公開版、オープンアクセスリンクを追加する。判定結果:
- 🚩 撤回済み: 存在するが、撤回または取り下げられた。証拠として引用すべきではない。
- ✅ OK: タイトル、第一著者、年(±1、arXiv vs 公開版)、巻、ページが一致する。書籍は年が一致しなくてもよい(データベースが異なる版をインデックスしているため)。
- ⚠️ 不一致: 存在するが、年、巻、ページ、著者順、存在しないDOIまたは別の論文を指すDOI、あるいはその巻・ページに別のタイトルの論文が存在する(捏造引用の典型的パターンで、実際のジャーナルを再利用している)など、一部が一致しない。
- ❌ 未発見: どのデータベースにも存在しないため、偽の引用の可能性がある。最も類似した候補をヒントとして付記する。
レポートには、重複(同一論文が異なるキーで登録、または同一キーの重複)、.texとの照合(引用されているがエントリがないキーは[?]と表示、エントリはあるが一度も引用されていないもの)、不足している参考文献、注記(公開された訂正、既に公開されたプレプリント、書籍の版)が含まれる。
実行上の注意:
~/.cache/verificar-bibにキャッシュあり(30日間有効):.bibを編集後に再実行するとほぼ瞬時に完了する。--sin-cacheでキャッシュを無視する。- arXivへの照会は最大3秒に1回。約50件以上の参考文献がある場合は、バックグラウンドで実行する。
- レポートに「一部の照会に失敗しました」という警告がある場合、
❌は偽陰性の可能性がある:後で再実行する。 OPENALEX_API_KEYがない場合、OpenAlexはIPベースの1日あたりの小さな割り当てを提供する。ADS_API_TOKENはADSを有効にし、天文学分野では他のデータベースにない書籍、会議録、古い論文をカバーする。ユーザーがこれらのキーを持っている場合、自分でエクスポートしてもらう。ユーザーに代わってキーを作成したり、値を読み取ったりしてはならない。--strictは、❌、🚩、または不足キーがある場合に終了コード1を返す(最終提出前のチェックに有用)。
3. 疑わしい項目の手動レビュー(このステップは省略不可)
このスクリプトはフィルターツールである。スクリプトが見つけられなかったという理由だけで、引用が偽物であると宣言してはならない。 各❌、🚩、および⚠️(単純なもの以外)について:
- ウェブ検索で、タイトルを引用符で囲んで正確に検索し、「第一著者 + 年 + ジャーナル名」で検索する。
- 典型的な偽陰性(偽の引用ではない)を考慮する:
- 書籍、章、学位論文、古い会議録(
@book、@phdthesis、@inproceedings):インデックスが不正確か、再版の日付で登録されている。短いタイトル(Fluid Mechanics)は同名の別の著作と一致する可能性がある。 - ソフトウェアとデータ(
@misc、@software:FARGO3D、RADMC-3D、astropy…):ASCL、Zenodo、GitHubで確認し、ソフトウェアが引用を要求する出版物を確認する。 - DOIのない1990年以前の論文:OpenAlexになくてもADSにある場合がある。
- 同じタイトルの論文とその会議版(例:Shakura & Sunyaev 1973 in A&A および IAU Symp. 55):データベースが別のバージョンを返す可能性がある。
- 最近のプレプリントで、まだジャーナルに掲載されていないもの。
- 団体著者または非ラテン文字の名前。
- 書籍、章、学位論文、古い会議録(
- 「著者順」の
⚠️については、キー(Casassus2025)と本文の\citet{}が、第一著者でない人物に研究を帰属させていないか確認する。その場合は修正が必要。 🚩については、公式通知で撤回を確認し、ユーザーにどこで引用されているかを知らせる。- 各参考文献の最終判定:
- 実在かつ正しい
- 実在するがデータ修正が必要: 修正されたBibTeXフィールドを提供する
- 撤回済み: どこで引用されているかを示し、代替またはコンテキストを提案する
- 検証不能: 検索したが見つからなかった。ユーザーにソースを尋ねる
- 偽物: 証拠がある場合のみ、例:DOIまたは巻/ページが別の論文に属し、そのタイトルのものは何も存在しない
レポートの先頭に「手動レビュー」セクションを追加し、これらの判定を記載する。
4. 主張の検証(profundoモード)
--texおよび--contextosが必要。コンテキストファイルには、引用された各参考文献について、論文のアブストラクトと、それを引用する.texの各文(ファイル:行番号)が含まれる。各使用箇所について:
- 文の主張とアブストラクトを比較する。分類は 裏付けている、部分的に裏付けている(例:論文が別の条件で示している、またはより慎重な表現である)、裏付けていない、アブストラクトでは検証不可。
- 検証不可および裏付けていないについては、完全なテキスト(arXivまたはレポートのPDF)を開き、結論を出す前に具体的な箇所を探す。論文のセクションまたはページを引用する。
- 主張を判断し、スタイルは判断しない。「…のレビューを参照」のような一般的な引用は許容されるものとする。
- 結果を表にまとめ、
ファイル:行番号 | キー | 判定 | 論文のエビデンス | 提案としてレポートの末尾に追加する。裏付けていないを最初に並べる。
多数の引用(約60件以上)がある場合、ユーザーに全てをレビューするか、優先順位を付けるか(自身の結果を支えるもの、数値、直接比較)を尋ねる。
5. 不足している参考文献(huecos)
--huecos Nは、ユーザーの参考文献のうち少なくとも2つが引用しているが、ユーザー自身は引用していない論文をリストアップし、それらを引用している参考文献の数で順序付ける。すべてが適切とは限らない:研究テーマに関連性のあるものに絞り込み(タイトルを読み、必要に応じてアブストラクトも読む)、検討に値するもののみを、その理由とともに提示する。
6. 成果物の提出
- リンク(DOI · ADS · arXiv · PDF · ISBN)を含むMarkdownレポートと手動レビュー。ユーザーが共有する場合は、Artifactとして公開することを提案する。
- チャットでの要約:OKの数、データ修正が必要な数、撤回件数、偽の可能性がある件数とその理由、そしてprofundoモードでは裏付けられていない主張の数。
- 許可なくユーザーの
.bibを編集しない。--parcheは別のファイルを出力し、✅のエントリにdoi/eprintを追加し、頭字語を中括弧で保護し、--macros-aas(aas_macros.styまたはAASTeXが必要)ではジャーナル名を略称(\apj、\aap、\mnras…)に変換する。年、巻、ページは決して変更しない。これらの修正は提案として提示し、ユーザーが同意した場合のみ適用する。元のファイルを置き換える前にdiffを表示する。 - リンクは閲覧・ダウンロード用である。ユーザーが明示的に要求した場合を除き、PDFはダウンロードしない。 要求があった場合は、新しく空のフォルダに保存する。
注意点
plainnat/aasjournalsではタイトルが小文字に変換される。パッチは頭字語({PDS} 70、{ALMA}、{3D})を保護するが、固有名詞(Jupiter、Kepler)は保護しない:確認が必要。- BibTeXパーサーは最小限:
@stringや#による連結は解決しない。.bibでこれらが使用されている場合は警告する。 - ADSのリンクは、自動化されたブラウザに人間による確認を求める。これらはユーザー用であり、Claudeが開くためのものではない。
- テスト:
--selftest(オフライン)およびtests/regresion.py(オンライン、トリック引用を含むフィクスチャを使用)。