mcpField
C
citation-verifier

citation-verifier

github.com/jkitchinドキュメント4187 回インストール3 日前に更新
リポジトリ

citation-verifier について

citation-verifier は、科学文書の引用を検証するスキルです。識別子を抽出して CrossRef や arXiv などの情報源と照合し、状態や修正案を報告します。

主な機能

  1. 014 種類の文書形式から引用を検出
  2. 02DOI、URL、arXiv ID などを識別
  3. 03識別子を信頼できる情報源で検証
  4. 04有効性と不確実性を報告
  5. 05無効な引用への修正案を提示

活用シーン

  1. 01AI 生成論文の引用を監査
  2. 02投稿前に DOI とリンクを確認
  3. 03文書内の切れた参照を発見
  4. 04対応形式の参考文献を点検

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jkitchin/knowhow --skill citation-verifier

インストール後、Claude Code で/citation-verifierを入力して読み込まれたか確認します。

詳細

引用検証ツール

科学文書内の引用を検出して検証し、架空の引用、リンク切れの引用、無効な参考文献を特定します。

目的

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、引用リンク
  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
  • 検証:https://api.crossref.org/works/{doi} の CrossRef API
論文の 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 patterns:
- https?://(?:dx\.)?doi\.org/(10\.\d{4,}/[^\s\])"'>]+)
- doi:\s*(10\.\d{4,}/[^\s\])"'>]+)
- (10\.\d{4,9}/[-._;()/:A-Z0-9]+)  (bare DOI)

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

PubMed patterns:
- PMID:\s*(\d+)
- pubmed\.ncbi\.nlm\.nih\.gov/(\d+)

URL patterns:
- https?://[^\s\])"'<>]+  (filter for academic domains)

ISBN patterns:
- 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 またはエラーの場合は、無効と判定します。
arXiv の検証
  1. URL を作成します:https://arxiv.org/abs/{arxiv_id}
  2. WebFetch を使用してページが存在することを確認します。
  3. タイトル、著者、要旨の抜粋を抽出します。
  4. 404 の場合は、無効と判定します。
PubMed の検証
  1. URL を作成します:https://pubmed.ncbi.nlm.nih.gov/{pmid}/
  2. WebFetch を使用して確認します。
  3. タイトル、著者、学術誌を抽出します。
  4. 404 の場合は、無効と判定します。
ISBN の検証
  1. URL を作成します:https://openlibrary.org/isbn/{isbn}.json
  2. WebFetch を使用して確認します。
  3. タイトル、著者、出版社を抽出します。
  4. 404 の場合は、無効と判定します。
URL の検証
  1. WebFetch を使用して URL にアクセスします
  2. HTTP 200 と学術コンテンツを示す情報を確認します
  3. ページ上で論文のタイトル、著者、DOI を探します
  4. アクセスできない場合、または学術的な内容でない場合は、SUSPICIOUS としてマークします
著者・年による検証(信頼度は最低)
  1. 次のクエリを使って WebSearch を実行します:"{author}" "{year}" paper
  2. 検索結果から一致する論文を探します
  3. 見つかった場合は、出典を添えて LIKELY VALID としてマークします
  4. 見つからない場合は、UNVERIFIED としてマークします
ステップ 4:レポートの生成

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

# Citation Verification Report

**Document:** [filename]
**Date:** [date]
**Total citations found:** [count]

## Summary
- Valid: [count]
- Invalid: [count]
- Suspicious: [count]
- Unverified: [count]

## Detailed Results

### Valid Citations
| ID | Type | Title | Source |
|----|------|-------|--------|
| 10.1038/xxx | DOI | Paper Title | CrossRef |

### Invalid Citations (HALLUCINATED)
| ID | Type | Error | Suggestion |
|----|------|-------|------------|
| 10.9999/fake | DOI | 404 Not Found | Remove or find correct DOI |

### Suspicious Citations
| ID | Type | Issue | Recommendation |
|----|------|-------|----------------|
| https://... | URL | Timeout | Verify manually |

### Unverified Citations
| Citation | Type | Notes |
|----------|------|-------|
| (Smith, 2023) | Author-year | No matching paper found via search |

検証ステータスの定義

  • VALID:識別子が実在する論文に解決され、メタデータが一致しています
  • INVALID:識別子が存在しないか、404 が返されます(幻覚の可能性があります)
  • SUSPICIOUS:完全に検証できませんでした。レート制限、ペイウォール、または一時的な利用不可が原因の可能性があります
  • UNVERIFIED:テキストベースの引用を確認できませんでした(慎重な対応)

ベストプラクティス

  1. 同様のリクエストをまとめる:API 呼び出しを最小限にするため、DOI のチェックをまとめます
  2. レート制限を守る:レート制限に達した場合は、リクエストの間に遅延を入れます
  3. 相互参照する:URL に DOI が含まれている場合は、DOI を直接検証します
  4. 文脈が重要です:引用がどこに登場するか(方法論と主張など)を記録します
  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 件見つかりました:DOI 8 件、URL 5 件、arXiv ID 2 件」
  4. 適切な API またはフェッチを使って各識別子を検証します
  5. 次の内容を示すレポートを作成します:
    • メタデータ付きの有効な引用 10 件
    • 404 エラーが発生し、幻覚の可能性があるとマークされた無効な引用 3 件
    • 手動確認が必要な、タイムアウトが発生した疑わしい引用 2 件
  6. 無効な引用を修正するための提案を提示します

制限事項

  • レート制限:CrossRef などの API では、リクエストがレート制限される場合があります
  • ペイウォールのあるコンテンツ:ペイウォールの背後にあるコンテンツ全体は検証できません
  • 新しい論文:ごく最近の論文は、まだインデックスに登録されていない場合があります
  • 著者・年による引用:追加の識別子がない場合は信頼度が低くなります
  • 英語以外の出典:英語以外の引用形式への対応は限定的です
  • 非公開または機関限定の URL:認証が必要なコンテンツにはアクセスできません

関連スキル

  • literature-review:体系的な文献検索を行うためのスキル
  • scientific-reviewer:科学文書の品質をレビューするためのスキル
  • scientific-writing:適切な引用を用いて文章を執筆するためのスキル

コメント