Communityコーディング&開発github.com

ccanunez/verificar-bib

文献情報(.bibファイル、論文/学位論文の参考文献リスト、またはそれを引用するLaTeXプロジェクト)をOpenAlex、Crossref、arXiv、OpenLibrary、NASA ADSに対して検証し、偽造・捏造引用(ハルシネーション)、撤回論文、誤データ(年・巻・ページ・DOI・著者順)、重複、\(\cite\)キー欠落、公開済みプレプリントを検出します。各論文が本文の主張を実際に裏付けているか確認し、不足文献を提案し、修正済み.bib(DOI・eプリント追加)を出力します。

verificar-bib とは?

このスキルは、学術文献の信頼性を自動検証する強力なAIエージェントツールです。ユーザーが提供する参考文献(.bibファイル、テキストリスト、LaTeXプロジェクト)を、OpenAlex、Crossref、arXiv、OpenLibrary、NASA ADSなどの複数のデータベースと照合し、各エントリが実在するか、書誌情報(年、巻、ページ、DOI、著者順)が正しいか、撤回されていないかを判定します。さらに、捏造された引用(幻覚引用)や重複、キー不足を報告します。`profundo`モードでは、各引用が本文の主張を実際に裏付けているか、引用文と論文のアブストラクトを比較して検証します。`parche`モードでは、元のファイルを変更せずに、DOIやeプリントを追加した修正.bibファイルを生成します。このツールは、学術論文の執筆・校正・査読プロセスにおいて、参考文献の品質保証と学術的誠実性の向上に大きく貢献します。Claude Codeをはじめ、シェルコマンドを実行できるAIエージェントプラットフォームで利用可能です。

対応✓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に質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

文献検証と論文の特定

目的:各参考文献について、存在するか、データが正しいか、有効か(撤回されていないか)、本文の主張を裏付けているかを判断し、どこで読めるかを提供する。ユーザーの言語(デフォルトはスペイン語)で記述する。

引数

/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. 疑わしい項目の手動レビュー(このステップは省略不可)

このスクリプトはフィルターツールである。スクリプトが見つけられなかったという理由だけで、引用が偽物であると宣言してはならない。 各❌、🚩、および⚠️(単純なもの以外)について:

  1. ウェブ検索で、タイトルを引用符で囲んで正確に検索し、「第一著者 + 年 + ジャーナル名」で検索する。
  2. 典型的な偽陰性(偽の引用ではない)を考慮する:
    • 書籍、章、学位論文、古い会議録(@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):データベースが別のバージョンを返す可能性がある。
    • 最近のプレプリントで、まだジャーナルに掲載されていないもの。
    • 団体著者または非ラテン文字の名前。
  3. 「著者順」の⚠️については、キー(Casassus2025)と本文の\citet{}が、第一著者でない人物に研究を帰属させていないか確認する。その場合は修正が必要。
  4. 🚩については、公式通知で撤回を確認し、ユーザーにどこで引用されているかを知らせる。
  5. 各参考文献の最終判定:
    • 実在かつ正しい
    • 実在するがデータ修正が必要: 修正されたBibTeXフィールドを提供する
    • 撤回済み: どこで引用されているかを示し、代替またはコンテキストを提案する
    • 検証不能: 検索したが見つからなかった。ユーザーにソースを尋ねる
    • 偽物: 証拠がある場合のみ、例:DOIまたは巻/ページが別の論文に属し、そのタイトルのものは何も存在しない

レポートの先頭に「手動レビュー」セクションを追加し、これらの判定を記載する。

4. 主張の検証(profundoモード)

--texおよび--contextosが必要。コンテキストファイルには、引用された各参考文献について、論文のアブストラクトと、それを引用する.texの各文(ファイル:行番号)が含まれる。各使用箇所について:

  1. 文の主張とアブストラクトを比較する。分類は 裏付けている、部分的に裏付けている(例:論文が別の条件で示している、またはより慎重な表現である)、裏付けていない、アブストラクトでは検証不可。
  2. 検証不可および裏付けていないについては、完全なテキスト(arXivまたはレポートのPDF)を開き、結論を出す前に具体的な箇所を探す。論文のセクションまたはページを引用する。
  3. 主張を判断し、スタイルは判断しない。「…のレビューを参照」のような一般的な引用は許容されるものとする。
  4. 結果を表にまとめ、ファイル:行番号 | キー | 判定 | 論文のエビデンス | 提案としてレポートの末尾に追加する。裏付けていないを最初に並べる。

多数の引用(約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(オンライン、トリック引用を含むフィクスチャを使用)。

関連スキル