Traversing Citation Networks について
Traversing Citation Networksは、Semantic Scholar APIを使い、論文の参考文献を遡り、その論文を引用する文献を前方にたどる研究スキルです。クエリとの関連性で候補を絞り重複を除いてからキューに追加し、引用の拡大を抑えます。
主な機能
- 01参考文献と引用文献を双方向に追跡
- 02文脈、タイトル、意図による絞り込み
- 03スコアに基づく論文のキュー追加
- 04引用関係の記録と重複排除
- 05追跡深度の制限とレート制限への対応
活用シーン
- 01論文に関連する先行研究を探す
- 02特定の論文を引用する後続研究を調べる
- 03研究テーマに沿って論文群を広げる
- 04大規模な文献検索で引用の拡大を抑える
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kthorn/ research-superpower --skill traversing-citation-networksインストール後、Claude Code で/traversing-citation-networksを入力して読み込まれたか確認します。
詳細
引用ネットワークのたどり方
概要
Semantic Scholar API を使用して、引用を後方(参考文献)と前方(その論文を引用している論文)の両方へ、インテリジェントにたどります。
基本原則: ユーザーのクエリに関連する引用だけをたどります。たどる前にフィルタリングし、組み合わせ爆発を避けます。
使用するタイミング
次のような場合にこのスキルを使用します。
- 関連性の高い論文が見つかった場合(スコア ≥ 7)
- 関連研究を見つける必要がある場合
- ユーザーが「この論文を引用しているのはどの論文ですか?」と尋ねた場合
- トピックについて包括的に理解する場合
使用しない場合:
- 論文のスコアが 7 未満の場合(たどるほど関連性が高くありません)
- 論文がすでに 50 件に達している場合(まずユーザーに確認してください)
- 要旨から見て、引用がトピックから外れている場合
引用をたどる戦略
1. Semantic Scholar から論文 ID を取得する
DOI で検索:
curl "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example.2023?fields=paperId,title,year"
レスポンス:
{
"paperId": "abc123def456",
"title": "Paper Title",
"year": 2023
}
paperId を保存します - 引用・参考文献のクエリに必要です
2. 後方への探索(参考文献)
論文の参考文献を取得:
curl "https://api.semanticscholar.org/graph/v1/paper/abc123def456/references?fields=contexts,intents,title,year,abstract,externalIds&limit=100"
レスポンス形式:
{
"data": [
{
"citedPaper": {
"paperId": "xyz789",
"title": "Referenced Paper Title",
"year": 2020,
"abstract": "...",
"externalIds": {
"DOI": "10.5678/referenced.2020",
"PubMed": "87654321"
}
},
"contexts": [
"...as described in previous work [15]...",
"...we used the method from [15] to..."
],
"intents": ["methodology", "background"]
}
]
}
関連性をフィルタリング:
各参考文献について、次の点を確認します。
- 文脈のキーワード:引用の文脈にユーザーのクエリ語が含まれていますか?
- 例:ユーザーが「IC50 値」について尋ねている場合、「IC50」「活性」「効力」に言及する文脈を探します
- タイトルの一致:タイトルに関連キーワードが含まれていますか?
- 引用意図:意図が「方法論」または「結果」(より関連性が高い)ですか、それとも「背景」(関連性が低い)ですか?
スコアリング:
- 文脈のキーワードが一致:+3 点
- タイトルのキーワードが一致:+2 点
- 意図が方法論/結果:+2 点
- 新しい論文(5 年未満):+1 点
スコアが 5 以上の場合のみ、キューに追加します
3. 前方への探索(引用)
この論文を引用している論文を取得:
curl "https://api.semanticscholar.org/graph/v1/paper/abc123def456/citations?fields=title,year,abstract,externalIds&limit=100"
レスポンス形式:
{
"data": [
{
"citingPaper": {
"paperId": "def456ghi",
"title": "Newer Paper Citing This",
"year": 2024,
"abstract": "We extended the work of [original paper]...",
"externalIds": {
"DOI": "10.9012/citing.2024"
}
}
}
]
}
関連性をフィルタリング:
引用している各論文について、次の点を確認します。
- タイトルの一致:タイトルにキーワードが含まれていますか?
- 要旨の一致:要旨にユーザーのクエリ語が含まれていますか?
- 新しさ:新しい論文は知見を発展させていることが多いため、2 年未満の論文を優先します
- 被引用数:Semantic Scholar が提供している場合、被引用数の多い論文ほど関連性が高い可能性があります
スコアリング:
- タイトルのキーワードが一致:+3 点
- 要旨のキーワードが一致:+2 点
- 新しい論文(2 年未満):+2 点
- 比較的新しい論文(2~5 年):+1 点
スコアが 5 以上の場合のみ、キューに追加します
4. 重複排除
キューに追加する前に:
papers-reviewed.json を確認します。
doi = paper["externalIds"].get("DOI")
if doi in papers_reviewed:
skip # Already processed
else:
add to queue
重要: 引用をたどって評価した論文は、スコアにかかわらず、すべて papers-reviewed.json に追加してください。これにより、同じ論文を複数のソースから再処理するのを防ぎます。
引用関係を citations/citation-graph.json に記録します。
{
"10.1234/example.2023": {
"references": ["10.5678/ref1.2020", "10.5678/ref2.2021"],
"cited_by": ["10.9012/cite1.2024", "10.9012/cite2.2024"]
}
}
重要: 引用の追跡には citation-graph.json のみを使用してください。forward_citation_pmids.txt や citation_analysis.md のような独自ファイルは作成しないでください。調査結果はすべて SUMMARY.md に記載します。
5. キューを処理する
関連性のある引用を処理キューに追加します。
{
"doi": "10.5678/referenced.2020",
"title": "Referenced Paper",
"relevance_score": 7,
"source": "backward_from:10.1234/example.2023",
"context": "Method citation - describes IC50 measurement protocol"
}
次に:
evaluating-paper-relevanceスキルを使って評価します- 関連性がある場合はデータを抽出し、その引用もたどることを検討します
探索範囲の上限を適切に設定する
探索の爆発を避けるには:
- 最初の評価でスコアが 7 以上の論文のみをたどります
- 関連性フィルタリングでスコアが 5 以上の引用のみをたどります
- 探索の深さを 2 レベル(元の論文 → 参考文献 → 参考文献の参考文献)に制限します
- 論文の合計が 50 件に達するごとにユーザーに確認します
幅優先戦略:
- 現在の論文の参考文献と引用をすべて取得します
- フィルタリングしてスコアを付けます
- スコアの高い論文をキューに追加します
- キュー内の次の論文を処理します
- キューが空になるか上限に達するまで繰り返します
進捗の報告
探索中に報告します:
🔗 Analyzing citations for: "Original Paper Title"
→ Found 45 references, 12 look relevant
→ Found 23 citing papers, 8 look relevant
→ Adding 20 papers to queue
📄 [51/127] Following reference: "Method for measuring IC50"
Source: Referenced by original paper in Methods section
Abstract score: 7 → Fetching full text...
API のレート制限
Semantic Scholar の制限:
- 無料プラン:5 分あたり 100 リクエスト
- API キー使用時:5 分あたり 1000 リクエスト
効率よく利用するには:
- 1 回の呼び出しで複数のフィールドをリクエストします(
?fields=title,abstract,externalIds,year) - 1 回のリクエストでより多くの結果を取得するために
limit=100を使用します - レスポンスをキャッシュし、同じ論文を再取得しないようにします
レート制限に達した場合:
- 5 分待ちます
- ユーザーに「⏸️ Semantic Scholar API のレート制限に達しました。5 分間待機しています...」と報告します
- 制限を引き上げるために API キーの取得を検討します
他のスキルとの連携
引用をたどった後:
- キューに評価対象の新しい論文が N 件追加されています
- 各論文について、
evaluating-paper-relevanceスキルを使用します - 関連性がある場合は、SUMMARY.md に抽出します
- 関連性が非常に高い場合(≥9)は、その論文の引用もたどります
- 関係を追跡するため、citation-graph.json を更新します
クイックリファレンス
| タスク | API エンドポイント |
|---|---|
| DOI から論文を取得 | GET /graph/v1/paper/DOI:{doi}?fields=paperId,title |
| 参考文献を取得 | GET /graph/v1/paper/{paperId}/references?fields=contexts,title,abstract,externalIds |
| 引用を取得 | GET /graph/v1/paper/{paperId}/citations?fields=title,abstract,externalIds |
| 処理済みか確認 | papers-reviewed.json で DOI を検索 |
| 関連性をフィルタリング | 文脈/タイトル/意図/新しさに基づいてスコアを付ける |
関連性フィルタリングのチェックリスト
引用をキューに追加する前に:
- papers-reviewed.json にすでに記録されているか確認します(記録済みならスキップ)
- 文脈/タイトルのキーワードに基づいてスコアを付けます(≥ 5 が必要)
- 外部 ID(DOI または PMID)が存在することを確認します
- ソースの追跡情報("backward_from:DOI" または "forward_from:DOI")を追加します
- メタデータとともにキューに追加します
よくある間違い
評価した論文をすべて追跡しない: 関連性のある論文だけを papers-reviewed.json に追加する → 再評価を防ぐため、評価後にすべての論文を追加します 独自の分析ファイルを作成する: forward_citation_pmids.txt、CITATION_ANALYSIS.md などを作成する → citation-graph.json と SUMMARY.md のみを使用します すべての引用をたどる: 指数関数的に増加する → キューに追加する前にフィルタリングします 文脈を無視する: 引用が本筋と無関係な可能性があります → 文脈の文字列を読みます 重複を除外しない: 同じ論文を再処理する → 評価の前後に必ず papers-reviewed.json を確認します 深くたどりすぎる: 5 レベル以上たどる → 2 レベルまでに制限し、ユーザーに確認します 前方引用を見落とす: 参考文献だけを確認する → 後方と前方の両方を使用します レート制限を考慮しない: API にブロックされる → 遅延を追加し、429 エラーを処理します
ワークフローの例
1. User asks: "Find selectivity data for BTK inhibitors"
2. Search finds Paper A (score: 9, has great IC50 data)
3. Traverse citations for Paper A:
- References: 45 total, 12 relevant (mention "selectivity", "IC50")
- Citations: 23 total, 8 relevant (newer papers on BTK)
4. Add 20 papers to queue
5. Evaluate first queued paper (score: 8)
6. Extract data, traverse its citations (add 5 more)
7. Continue until queue empty or user says stop
次のステップ
引用をたどった後:
- キューに入った論文を
evaluating-paper-relevanceで処理します - 新しい知見を SUMMARY.md に追加します
- チェックポイント(50 件の論文または 5 分)に到達したか確認します
- チェックポイントに到達した場合:続行するか停止するかをユーザーに尋ねます