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

引用検証ツール

科学文書内の引用を検出・検証し、幻覚や破損、無効な参照を特定します。

引用検証ツール とは?

このスキルは、AIが生成したコンテンツなどに含まれる引用識別子を体系的に抽出し、CrossRef APIやarXiv、PubMed、Open Libraryなどの信頼できる情報源と照合して検証します。対応する文書形式はMarkdown、LaTeX/BibTeX、Org-mode、プレーンテキストで、DOI、arXiv ID、PubMed ID、ISBN、学術URL、著者-年形式の引用を検出できます。検証結果は「有効」「無効(幻覚の可能性)」「疑わしい」「未検証」の4段階で報告され、無効な引用には修正提案が付与されます。APIのレート制限やペイウォール、新規論文の未インデックスなどの制限はありますが、科学的文書の信頼性を高めるための強力なツールです。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jkitchin/skillz/tree/main/skills/citation-verifier

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

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

ドキュメント

引用検証ツール は何をしますか?

科学文書内の引用を検出・検証し、幻覚、破損、または無効な参照を特定します。

目的

AIが生成したコンテンツには、もっともらしく見えるが実際には存在しない引用が含まれることがあります。このスキルは、文書からすべての引用識別子を体系的に抽出し、信頼できる情報源に対してそれぞれを検証し、検証ステータスと無効な引用を修正するための提案を含む詳細なレポートを生成します。

使用タイミング

このスキルは以下の場合に呼び出す必要があります:

  • ユーザーが文書の「引用を検証する」または「参考文献を確認する」と依頼した場合
  • ユーザーがAI生成コンテンツ内の幻覚引用を疑っている場合
  • ユーザーが論文のDOI、URL、その他の識別子を検証したい場合
  • ユーザーが文書のリンク切れや偽の参照を監査したい場合
  • ユーザーが「引用検証」「参考文献チェック」「DOI検証」に言及した場合

対応文書形式

  1. Markdown (.md): インラインリンク [text](url)、参照リンク [text][ref]、ベアURL、DOI
  2. LaTeX/BibTeX (.tex, .bib): \cite{}、@article{}、DOIフィールド、URLフィールド
  3. Org-mode (.org): [[url][text]] リンク、#+BIBLIOGRAPHY、citeリンク
  4. プレーンテキスト (.txt): ベアURL、DOI、arXiv ID、著者-年パターン

検出される引用識別子

DOI(デジタルオブジェクト識別子)

  • パターン: 10.\d{4,}/[^\s]+ または doi.org/10.\d{4,}/[^\s]+
  • 例: 10.1038/nature12373、https://doi.org/10.1126/science.abc1234
  • 検証: CrossRef API https://api.crossref.org/works/{doi}

論文URL

  • パターン: 既知の出版社やリポジトリへのリンク
  • ドメイン: nature.com、science.org、sciencedirect.com、springer.com、wiley.com、acs.org、rsc.org、pnas.org、cell.com、plos.org、mdpi.com、frontiersin.org、academic.oup.com、tandfonline.com
  • 検証: HTTP HEAD/GETリクエスト、200ステータスと論文メタデータを確認

arXiv ID

  • パターン: arXiv:\d{4}\.\d{4,5}(v\d+)? または arxiv.org/abs/\d{4}\.\d{4,5}
  • 例: arXiv:2301.07041、https://arxiv.org/abs/2301.07041v2
  • 検証: arXiv APIまたは直接URLチェック

PubMed ID (PMID)

  • パターン: PMID:\s*\d+ または pubmed.ncbi.nlm.nih.gov/\d+
  • 例: PMID: 12345678
  • 検証: PubMed URL https://pubmed.ncbi.nlm.nih.gov/{pmid}/

ISBN

  • パターン: ISBN[:\s]*[\d-]{10,17} (ISBN-10またはISBN-13)
  • 例: ISBN: 978-0-13-468599-1
  • 検証: Open Library API https://openlibrary.org/isbn/{isbn}.json

著者-年引用

  • パターン: ([A-Z][a-z]+(?:\s+(?:et\s+al\.?|and|&)\s+[A-Z][a-z]+)?,\s*\d{4})
  • 例: (Smith et al., 2023)、(Johnson and Lee, 2022)
  • 検証: 一致する論文をWebSearchで検索(信頼度低)

検証手順

ステップ1: 文書の読み取りと解析

Readツールを使用して文書を読み込みます。パターンマッチングですべての引用識別子を抽出します:

DOIパターン:
- https?://(?:dx\.)?doi\.org/(10\.\d{4,}/[^\s\])"'>]+)
- doi:\s*(10\.\d{4,}/[^\s\])”'>]+)
- (10\.\d{4,9}/[-._;()/:A-Z0-9]+)  (ベアDOI)

arXivパターン:
- arXiv:(\d{4}\.\d{4,5}(?:v\d+)?)
- arxiv\.org/abs/(\d{4}\.\d{4,5}(?:v\d+)?)

PubMedパターン:
- PMID:\s*(\d+)
- pubmed\.ncbi\.nlm\.nih\.gov/(\d+)

URLパターン:
- https?://[^\s\])”'<>]+  (学術ドメインでフィルタリング)

ISBNパターン:
- ISBN[:\s-]*((?:\d[-\s]?){9}[\dXx]|(?:\d[-\s]?){13})

ステップ2: 重複排除と分類

タイプごとに分類された一意の識別子のリストを作成します:

  • DOI
  • arXiv ID
  • PubMed ID
  • ISBN
  • URL(学術)
  • 著者-年引用(テキストベース)

ステップ3: 各識別子の検証

各識別子に対して、信頼性の高い順に検証を実行します:

DOI検証

  1. CrossRef API URLを構築: https://api.crossref.org/works/{doi}
  2. WebFetchでAPIを確認
  3. 成功した場合: タイトル、著者、ジャーナル、年を抽出
  4. 404エラーの場合: INVALIDとマーク

arXiv検証

  1. URLを構築: https://arxiv.org/abs/{arxiv_id}
  2. WebFetchでページが存在することを確認
  3. 抽出: タイトル、著者、要約の抜粋
  4. 404の場合: INVALIDとマーク

PubMed検証

  1. URLを構築: https://pubmed.ncbi.nlm.nih.gov/{pmid}/
  2. WebFetchで確認
  3. 抽出: タイトル、著者、ジャーナル
  4. 404の場合: INVALIDとマーク

ISBN検証

  1. URLを構築: https://openlibrary.org/isbn/{isbn}.json
  2. WebFetchで確認
  3. 抽出: タイトル、著者、出版社
  4. 404の場合: INVALIDとマーク

URL検証

  1. WebFetchでURLにアクセス
  2. HTTP 200と学術コンテンツの指標を確認
  3. ページ上の論文タイトル、著者、DOIを検出
  4. アクセス不能または非学術の場合: SUSPICIOUSとマーク

著者-年検証(最低信頼度)

  1. WebSearchでクエリ: "{著者}" "{年}" paper
  2. 結果内で一致する論文を検索
  3. 見つかった場合: LIKELY VALID with source とマーク
  4. 見つからなかった場合: UNVERIFIED とマーク

ステップ4: レポート生成

構造化された検証レポートを生成します:

# 引用検証レポート

**文書:** [ファイル名]
**日付:** [日付]
**検出された引用の総数:** [件数]

## サマリー
- 有効: [件数]
- 無効: [件数]
- 疑わしい: [件数]
- 未検証: [件数]

## 詳細結果

### 有効な引用
| ID | タイプ | タイトル | ソース |
|----|------|-------|--------|
| 10.1038/xxx | DOI | Paper Title | CrossRef |

### 無効な引用(幻覚)
| ID | タイプ | エラー | 提案 |
|----|------|-------|------------|
| 10.9999/fake | DOI | 404 Not Found | 削除するか正しいDOIを見つける |

### 疑わしい引用
| ID | タイプ | 問題 | 推奨事項 |
|----|------|-------|----------------|
| https://... | URL | タイムアウト | 手動で確認 |

### 未検証の引用
| 引用 | タイプ | 備考 |
|----------|------|-------|
| (Smith, 2023) | 著者-年 | 検索で一致する論文が見つかりませんでした |

検証ステータスの定義

  • 有効: 識別子が実際の論文と一致し、メタデータが一致
  • 無効: 識別子が存在しない、または404を返す(幻覚の可能性)
  • 疑わしい: 完全に検証できなかった。レート制限、ペイウォール、または一時的に利用不可の可能性
  • 未検証: テキストベースの引用で確認できなかった(保守的アプローチ)

ベストプラクティス

  1. 類似リクエストをまとめる: DOIチェックをグループ化し、API呼び出しを最小限に抑える
  2. レート制限を尊重する: レート制限に達した場合はリクエスト間に遅延を追加
  3. 相互参照: URLにDOIが含まれている場合は、DOIを直接検証
  4. コンテキストを考慮: 引用が出現する場所(手法 vs. 主張)に注意
  5. 不確実性を報告: 「確認済みの無効」と「検証できなかった」を常に区別

無効な引用に対する出力提案

無効な引用ごとに、実行可能な提案を提供します:

  • 間違ったDOI形式: 「DOIが不正な形式です。誤字や余分な文字がないか確認してください。」
  • 存在しないDOI: 「論文が見つかりません。幻覚の可能性があります。実際の論文タイトルを検索してください。」
  • リンク切れのURL: 「URLが404を返します。Google Scholarで論文タイトルを検索してみてください。」
  • 疑わしいジャーナル: 「出版社が認識されていません。これが正当なソースであることを確認してください。」
  • 著者-年が見つからない: 「検証できませんでした。確認のためにDOIまたはURLを追加してください。」

検証セッションの例

ユーザーリクエスト: 「my-paper.mdの引用を検証してください」

期待される動作:

  1. my-paper.mdを読み込む
  2. すべてのDOI、URL、arXiv IDなどを抽出
  3. レポート:「15件の引用を検出:8件のDOI、5件のURL、2件のarXiv ID」
  4. 適切なAPI/フェッチを使用して各識別子を検証
  5. 以下の内容を示すレポートを生成:
    • メタデータ付きの有効な引用10件
    • 幻覚の可能性があるものとしてマークされた無効な引用3件(404エラー)
    • 手動確認が必要な疑わしい引用2件(タイムアウト)
  6. 無効な引用を修正するための提案を提供

制限事項

  • レート制限: CrossRefやその他のAPIはリクエストを制限する可能性があります
  • ペイウォール付きコンテンツ: ペイウォールの背後にある完全なコンテンツは検証できません
  • 新しい論文: 非常に最近の論文はまだインデックスされていない可能性があります
  • 著者-年引用: 追加の識別子がないと信頼度が低い
  • 非英語ソース: 非英語の引用形式のサポートは限定的です
  • プライベート/機関URL: 認証が必要なコンテンツにはアクセスできません

関連スキル

  • literature-review: 体系的な文献検索を実施するため
  • scientific-reviewer: 科学文書の品質をレビューするため
  • scientific-writing: 適切な引用を含む文章を作成するため

関連スキル