mcpField
F
find-literature

find-literature

github.com/allenai生産性4297 回インストール1 日前に更新
リポジトリ

find-literature について

クエリに関連する学術論文を検索するスキルで、研究や文献調査のワークフローに向いています。単発の高速検索に加え、反復的な絞り込みと会話状態の保持に対応する対話型エージェントを利用できます。

主な機能

  1. 01関連度順の論文一覧
  2. 02スコア、要約、本文抜粋
  3. 03対話によるクエリの調整
  4. 04スレッド履歴を使った複数ターン検索
  5. 05Semantic Scholarの論文・引用検索

活用シーン

  1. 01研究テーマの論文を探索
  2. 02複数ターンで検索条件を絞り込む
  3. 03論文の詳細や引用を取得

インストール

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

$npx skills add https://github.com/allenai/asta-plugins --skill find-literature

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

詳細

文献を検索する

クエリに関連する学術文献を検索します。検索結果には、関連度スコア、要約、根拠となる抜粋とともに、関連度順に並んだ論文のリストが表示されます。

高度な検索のため、クエリは長く複雑なものでもかまいません。検索を実行する前に、ユーザーに質問してトピックを明確にし、クエリを絞り込むことができます。

find と interactive の選択

利用できるエントリーポイントは2つあります。どちらも同じ検索パイプライン(基準の抽出、候補の検索、再ランキング)を実行します。大きな違いはパイプラインの前後の処理であり、適切な選択は単一のクエリの複雑さよりも、主にセッション全体の目的によって決まります。

  • asta literature interactive — 文献を中心とするセッションでのデフォルトです。セッションの最初のやり取りが文献検索や文献探索に関する場合、またはセッション全体が文献に焦点を当てている場合に使用します。Asta の論文検索エージェントをすべて実行します。複雑なクエリや複数の観点を含むクエリに対する計画能力が高く(分解、反復的な検索戦略)、推論と結果検証のループを備えているため、最初の結果が基準を満たさない場合に検索を再実行したり、絞り込んだりできます。また、thread_id を使って会話状態を維持するため、後続の操作で以前の結果を活用できます。たとえば、絞り込み(「2023年以降のレビューに絞る」)、集約(「掲載媒体ごとにグループ化する」)、関連情報の追跡(「3番目の論文の引用を詳しく調べる」)、反復的な絞り込みなどが可能です。

  • asta literature find — エージェントのループを伴わない、1回限りの試行です。主に、文献検索がデータ分析、コード生成、より広範なリサーチワークフローなど、ほかの複数ステップからなるフローの一部であり、同じフローで互いに関連しない検索を複数回実行する可能性がある場合に使用します。その場合、毎回エージェントのループ全体を実行するほどの価値はないでしょう。品質は低くなりますが、大幅に高速です。単一のクエリが「単純そう」という理由だけで find を選ばないでください。セッションが文献を中心とする場合は、interactive を優先してください。

会話の継続 — 推奨パターン(--thread-dir): 複数ターンにわたる検索セッションでは、.asta/literature/threads/<YYYY-MM-DD>-<slug>/ という名前のディレクトリ(ほかのエージェントで使われている規則に合わせて、日付を先頭に付けたスラッグ)を選び、毎回指定してください。CLI が会話を自動で再開し、ターンごとに .NNN のインデックスサフィックスが付いたアーティファクトを1つ書き込みます。また、ターンの順序、クエリ、説明、論文数、thread_id を記録する DIR/index.json を維持します。ターンごとに意味のある -o のベース名を指定してください。ターンのインデックスは CLI が挿入します。

# Turn 1 — picks a thread dir; CLI creates DIR/index.json and DIR/transformer-survey.001.json
asta literature interactive "transformer architecture survey" \
  --thread-dir .asta/literature/threads/2026-05-04-transformer-architectures \
  -o transformer-survey.json

# Turn 2 — same dir; thread_id auto-resumes from index.json.
# Writes DIR/narrow-2023.002.json and appends a turn entry to DIR/index.json.
asta literature interactive "narrow to 2023+ long-context surveys" \
  --thread-dir .asta/literature/threads/2026-05-04-transformer-architectures \
  -o narrow-2023.json

トピックが大きく変わる場合は、新しい --thread-dir を選んで会話を新しく開始してください。会話の内容を読み返すのは簡単です。jq で DIR/index.json のターン一覧を確認し、次に turns[].file が参照するターンごとの JSON ファイルを開きます。

--thread-dir を指定しない場合、実行は過去の会話を引き継がない1回限りのターンになります。単発の検索にはこちらを使用してください。複数ターンにわたるセッションでは、必ず --thread-dir を指定してください。

find との出力差分:interactive の JSON には thread_id と narrative(エージェントの最終応答テキスト)が追加されます。現在は論文ごとの citationContexts や publicationDate は設定されません。これらが必要な場合は、find または asta papers コマンドを使用してください。

利用可能なツール

論文検索ツール

包括的な検索では、バックグラウンドで実行してください(30~60秒):

# Save to a temporary file with explicit -o parameter (required)
Bash(command="asta literature find 'query' -o /tmp/literature-search-result.json --timeout 300", run_in_background=true)

検索の完了後、ファイルを .asta/documents/literature/find/ に移動してインデックスを作成します:

# Create directory if it doesn't exist
mkdir -p .asta/documents/literature/find

# Move the result file to the documents directory
mv /tmp/literature-search-result.json .asta/documents/literature/find/

# Index the file using asta-documents
Bash(command="asta documents add file://.asta/documents/literature/find/literature-search-result.json --name='Literature Search: <query>' --summary='Search results for: <query>'")

jq で結果を確認します:

jq '[.results | sort_by(-.relevanceScore) | .[0:10][] | {title, year, venue, corpusId, score: .relevanceScore, summary: .relevanceJudgement.relevanceSummary}]' <filename>

関連度の高い論文をすべて確認し、それぞれから関連度の基準、抜粋、引用コンテキストを抽出します。

Semantic Scholar CLI(高速な絞り込み検索)
# Get paper details
asta papers get ARXIV:2005.14165

# Search papers
asta papers search "transformers" --year 2023- --limit 20

# Get citations
asta papers citations ARXIV:2005.14165

# Author search
asta papers author search "Geoffrey Hinton"
asta papers author papers <author_id>

推奨フィールド:--fields title,abstract,year,authors,venue,citationCount

JSON 構造

出力は、次の構造を持つ LiteratureSearchResult です。

トップレベル:

  • query:string - 検索クエリ
  • results:Paper オブジェクトの配列

results[] 内の各論文:

  • corpusId:int - Semantic Scholar のコーパス ID
  • title:string - 論文のタイトル
  • abstract:string | null - 論文の要約
  • year:int | null - 出版年
  • authors:{name: string, id: string} の配列
  • venue:string | null - 掲載先
  • url:string | null - Semantic Scholar の URL
  • citationCount:int | null - 被引用数
  • relevanceScore:float - 0~1(数値が高いほど検索クエリとの関連性が高い)
  • relevanceJudgement:次の内容を含むオブジェクト:
    • relevance:int - 全体的な関連性スコア
    • relevanceSummary:string - 関連性に関する AI の説明
    • relevanceCriteriaJudgements:概念ごとの判定の配列。各判定には次の内容が含まれます:
      • name:string - 概念名
      • relevance:int - この概念に対する関連性
      • relevantSnippets:裏付けとなるテキスト抜粋の配列
  • snippets:論文本文からのテキスト抜粋の配列(オープンアクセスの場合):
    • text:string - 抜粋テキスト
    • sectionTitle:string - セクション名
  • citationContexts:引用コンテキストの配列:
    • text:string - 他の論文がこの研究をどのように引用しているか
    • sourceCorpusId:int - 引用元論文のコーパス ID

アクセス方法の例:

# Top 10 papers by relevance
jq '[.results | sort_by(-.relevanceScore) | .[0:10][] | {title, year, score: .relevanceScore}]' <filename>

# Papers with relevance summary
jq '.results[] | {title, summary: .relevanceJudgement.relevanceSummary}' <filename>

# Extract snippets from a specific paper
jq '.results[] | select(.corpusId == 123456) | .snippets[].text' <filename>

検索結果の使用

検索が完了すると、結果は Literature Report スキルで使用できます。

コメント