Agent-almanac validate-references
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/ja/skills/validate-references" ~/.claude/skills/pjt222-agent-almanac-validate-references-2d2a94 && rm -rf "$T"
i18n/ja/skills/validate-references/SKILL.md参考文献の検証
BibTeX参考文献データベースの正確性と完全性を系統的に検証する。エントリタイプ別の必須フィールドチェック、DOI解決によるメタデータの照合、ジャーナル名の正規化と一貫性確認、著者名のフォーマット検証、およびURL・リンクの有効性確認を含む。
使用タイミング
- 原稿投稿前に参考文献リストの正確性を最終確認する場合
- 共同研究者から受け取った
ファイルの品質を評価する場合.bib - 既存データベースの系統的な品質改善を行う場合
- DOIを使用してBibTeXメタデータの正確性を検証する場合
- ジャーナル名の略語を標準化する場合
入力
- 必須: BibTeXデータベースファイル(
).bib - 必須: 検証レベル(基本:フィールドの完全性のみ、標準:メタデータ照合を含む、包括的:すべてのチェック)
- 任意: ターゲットジャーナルのスタイル要件
- 任意: ジャーナル略語データベース(MEDLINE、ISO 4)
- 任意: 検証対象のフィールドリスト
手順
ステップ1: 構造検証
BibTeXファイルの構造的な整合性を検証する:
- パースチェック: ファイルが正常にパースされることを確認する。構文エラー(括弧の不一致、欠落したカンマ、不正なエスケープシーケンス)を検出する。
- エントリタイプの検証: 各エントリのタイプ(
、@article
、@book
など)が有効なBibTeXエントリタイプであることを確認する。@inproceedings - 必須フィールドの確認: エントリタイプごとの必須フィールドを確認する:
| エントリタイプ | 必須フィールド |
|---|---|
| author, title, journal, year, volume |
| author/editor, title, publisher, year |
| author, title, booktitle, year |
| author, title, booktitle, publisher, year |
| author, title, school, year |
| author, title, institution, year |
| author, title, year(推奨) |
- フィールド値の検証: 空のフィールド、プレースホルダーテキスト(「TODO」「TBD」など)、明らかな誤り(year = "0000"など)を検出する。
期待結果: すべてのエントリが正常にパースされ、必須フィールドの充足状況がレポートされる。
失敗時: パースエラーがある場合は、エラーメッセージの行番号を元に問題箇所を特定する。一般的な原因は、BibTeXフィールド値内のエスケープされていない特殊文字。
ステップ2: メタデータの照合
DOI解決を使用してエントリのメタデータを外部ソースと照合する:
- DOIの存在確認: 各エントリに
フィールドが存在するか確認する。DOIが欠落しているエントリを記録する。doi - DOIの解決: 存在するDOIをCrossref APIまたはDOI.org APIで解決し、返されたメタデータとBibTeXエントリを比較する。
- タイトルの照合: DOIから取得したタイトルとBibTeXのタイトルを比較する。大文字小文字の違いやHTMLエンティティの差異を正規化して比較する。
- 著者の照合: DOIメタデータの著者リストとBibTeXの著者を比較する。著者数、姓の一致を確認する。
- 年・巻・ページの照合: 出版年、巻号、ページ範囲がDOIメタデータと一致するか確認する。
- 不一致の記録: 各不一致について、BibTeXの値、DOIメタデータの値、重大度(高:年やタイトルの不一致、中:ページの不一致、低:大文字小文字の違い)を記録する。
期待結果: DOIを持つすべてのエントリについてメタデータの照合が完了し、不一致がレポートされる。
失敗時: DOIが解決されない場合は、DOI文字列のフォーマットを確認する(先頭の
https://doi.org/を除去してから解決する)。APIレート制限に達した場合は、バッチ間に遅延を入れる。
ステップ3: ジャーナル名の検証
ジャーナル名の正確性と一貫性を検証する:
- 一貫性チェック: 同一ジャーナルが異なる名前で記載されていないか確認する(例:「J. Am. Chem. Soc.」と「Journal of the American Chemical Society」の混在)。
- 略語の検証: ジャーナル略語がISO 4またはMEDLINE/PubMed標準に準拠しているか確認する。
- 正規化: ジャーナル名を標準形式に正規化する。スタイル要件に応じて、完全名または略語に統一する。
- ISSNの照合: 可能であればISSNを使用してジャーナルの同一性を検証する。
- スペルの確認: ジャーナル名のスペルミスを検出する(既知のジャーナル名データベースとの照合)。
期待結果: ジャーナル名が一貫した形式で記載され、標準略語に準拠している。
失敗時: ジャーナルが標準データベースに見つからない場合は、新しいジャーナルまたは名称変更の可能性がある。ジャーナルのウェブサイトで正式名称を確認する。
ステップ4: 著者名の検証
著者名のフォーマットと一貫性を検証する:
- フォーマットの確認: BibTeXの標準フォーマット(
またはLast, First
)に従っているか確認する。First Last - 一貫性チェック: 同一著者が異なるフォーマットで記載されていないか確認する(例:「Smith, J.」と「Smith, John」と「J. Smith」)。
- 特殊文字: 著者名の特殊文字(アクセント、ウムラウト、中国語・日本語文字)が正しくエンコードされているか確認する。
- 「and」区切り: 複数著者が正しく「and」で区切られているか確認する(カンマのみでの区切りはBibTeXエラーの原因となる)。
- 組織著者: 組織名が著者として記載されている場合、二重括弧
で囲まれているか確認する。{{Organization Name}}
期待結果: すべての著者名が一貫したフォーマットで記載され、BibTeX構文に準拠している。
失敗時: 著者名のフォーマットが不明な場合は、DOIメタデータまたはPubMedから正確な著者名を取得して照合する。
ステップ5: リンクとアクセシビリティの検証
URLとDOIリンクの有効性を確認する:
- URLの有効性:
フィールドのURLにHTTPリクエストを送信し、200レスポンスが返ることを確認する。リダイレクト(301、302)は記録するが許容する。url - DOIリンク: DOIが
で解決されることを確認する。https://doi.org/{doi} - アーカイブリンク:
、eprint
フィールド(arXiv等)が正しいフォーマットであることを確認する。archiveprefix - リンク切れの記録: 404や接続タイムアウトが返るURLを記録し、代替リンク(Wayback Machine、著者ページ)の提案を行う。
- アクセス日:
フィールドが存在する場合、妥当な日付であることを確認する。urldate
期待結果: すべてのURLとDOIリンクが有効であり、リンク切れが特定される。
失敗時: リンク切れが多数ある場合は、DOIリンクを優先的に使用する(DOIは永続的識別子であり、URLよりも安定している)。一時的なサーバーエラーの場合は、時間をおいて再試行する。
バリデーション
- すべてのエントリが正常にパースされる
- 各エントリタイプの必須フィールドが充足されている
- DOI解決によるメタデータ照合が完了している
- 重大な不一致(タイトル、年)が解決されている
- ジャーナル名が一貫した形式(完全名または略語)で統一されている
- 著者名のフォーマットが一貫している
- URL/DOIリンクの有効性が確認されている
- 検証レポートが生成されている
よくある落とし穴
- DOIメタデータを盲信する: Crossrefのメタデータも完全ではない。特にページ番号やボリューム番号が不正確な場合がある。BibTeXの値が明らかに正しい場合は、DOIメタデータの不正確さとして記録する。
- 大文字小文字の過度な比較: BibTeXのタイトルフィールドでは
で囲むことで大文字を保護する。DOIメタデータとの比較時は大文字小文字を正規化してから比較すること。{} - APIレート制限の無視: 大量のDOIを一度に解決しようとするとブロックされる。1秒あたりの最大リクエスト数を守ること(Crossref APIでは丁寧なプール使用のためメールアドレスを提供)。
- ジャーナル略語の過信: 略語データベースは完全ではなく、特に新しいジャーナルや名称変更されたジャーナルでは不正確な場合がある。
- 検証結果の自動修正: 検出された問題をすべて自動修正しないこと。特にDOIメタデータとの不一致は、手動確認が必要な場合がある。
関連スキル
-- 検証対象のBibTeXデータベースの管理manage-bibliography
-- 検証済みデータベースを使用した引用のフォーマットformat-citations