mcpField
E
exa-search

exa-search

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

exa-search について

exa-searchは、広範なウェブ検索とページ内容の抽出を行うスキルです。学術データベース以外も調べたい研究者などに向けて、カテゴリ、ドメイン、日付による絞り込みを提供します。

主な機能

  1. 01幅広いウェブ検索
  2. 02要点・本文・要約の抽出
  3. 03カテゴリ・ドメイン・日付での絞り込み
  4. 04指定URLに類似するページの検索
  5. 05既知のURLからのコンテンツ取得

活用シーン

  1. 01ニュース、ドキュメント、企業サイトの検索
  2. 02学術データベース以外での論文検索
  3. 03選択したページの全文取得

インストール

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

$npx skills add https://github.com/wanshuiyin/auto-claude-code-research-in-sleep --skill exa-search

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

詳細

Exa AI によるウェブ検索

検索クエリ:$ARGUMENTS

役割と位置付け

Exa は、コンテンツ抽出機能を内蔵した幅広いウェブ検索の情報源です。

スキル最適な用途
/arxivプレプリントの直接検索と PDF のダウンロード
/semantic-scholar出版済み論文(IEEE、ACM、Springer)と引用数
/deepxiv段階的な読解:検索、概要、セクションマップ、セクションごとの読解
/exa-search幅広いウェブ検索:ブログ、ドキュメント、ニュース、企業、研究論文 — コンテンツ抽出機能付き

学術データベース以外の検索結果が必要な場合や、検索結果とともにコンテンツ(ハイライト、全文、要約)を抽出したい場合は Exa を使用してください。

定数

  • EXA_FETCHER — 正式名称は exa_search.py です。次の仕様に従って解決されます。 shared-references/integration-contract.md §2 (ポリシー D1 — スタンドアロンの /exa-search には文書化されたフォールバックがないため、 ヘルパーを解決できない場合は明示的なエラーで終了します)。
  • MAX_RESULTS = 10 — 返す結果のデフォルト件数です。

オーバーライド(引数に追加):

  • /exa-search "RAG pipelines" — max: 5 — 上位 5 件の結果
  • /exa-search "diffusion models" — category: research paper — 研究論文のみ
  • /exa-search "startup funding" — category: news, start date: 2025-01-01 — 最近のニュース
  • /exa-search "transformer" — content: text, max chars: 8000 — 全文モード
  • /exa-search "transformer" — content: summary — LLM が生成した要約
  • /exa-search "transformer" — domains: arxiv.org,huggingface.co — ドメインで絞り込み
  • /exa-search "https://arxiv.org/abs/2301.07041" — similar — 類似ページを検索

セットアップ

Exa には exa-py SDK と API キーが必要です。

pip install exa-py

API キーを設定します。

export EXA_API_KEY=your-key-here

exa.ai からキーを取得してください。

ワークフロー

ステップ 1:引数を解析する

$ARGUMENTS を解析して、以下を取得します。

  • query:検索クエリ(必須)、または URL(find-similar モードの場合)
  • similar:指定されている場合は、検索の代わりに find-similar モードを使用します
  • max:MAX_RESULTS を上書きします
  • category:research paper、news、company、personal site、financial report、people
  • content:highlights(デフォルト)、text、summary、none
  • max chars:コンテンツ抽出の最大文字数
  • type:検索タイプ — auto(デフォルト)、neural、fast、instant
  • domains:含めるドメイン(カンマ区切り)
  • exclude domains:除外するドメイン(カンマ区切り)
  • include text:検索結果に含まれている必要がある語句
  • exclude text:検索結果から除外する語句
  • start date:ISO 8601 形式の日付 — この日付より後の結果のみ
  • end date:ISO 8601 形式の日付 — この日付より前の結果のみ
  • location:ISO 国コード(2 文字)
ステップ 2:スクリプトを特定する

正式な厳格安全チェーンを使用して $EXA_FETCHER を解決します( shared-references/integration-contract.md §2 を参照)。 ポリシー D1 のカスケード:Exa にはネイティブのインラインフォールバックがありません (取得には exa-py SDK と API キーが必要で、これらは フェッチャーにあります)。そのため、ヘルパーを解決できない場合、SKILL は 主要な出力を生成できません — 明示的な対処方法を示して失敗します。

cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
    ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
fi
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
    ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
fi
EXA_FETCHER=".aris/tools/exa_search.py"
[ -f "$EXA_FETCHER" ] || EXA_FETCHER="tools/exa_search.py"
[ -f "$EXA_FETCHER" ] || { [ -n "${ARIS_REPO:-}" ] && EXA_FETCHER="$ARIS_REPO/tools/exa_search.py"; }
[ -f "$EXA_FETCHER" ] || {
  echo "ERROR: exa_search.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
  echo "       Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2
  echo "       Also ensure 'exa-py' is installed: pip install exa-py" >&2
  exit 1
}
ステップ 3:検索を実行する

標準検索:

python3 "$EXA_FETCHER" search "QUERY" --max 10 --content highlights

フィルターを使用する場合:

python3 "$EXA_FETCHER" search "QUERY" --max 10 \
  --category "research paper" \
  --start-date 2025-01-01 \
  --content text --max-chars 8000

類似ページを検索する場合:

python3 "$EXA_FETCHER" find-similar "URL" --max 5 --content highlights

既知の URL のコンテンツを取得する場合:

python3 "$EXA_FETCHER" get-contents "URL1" "URL2" --content text
ステップ 4:結果を提示する

結果を構造化された表にまとめます。

| # | Title | Authors | Venue/Publisher | URL | Date | Key Content |
|---|-------|---------|-----------------|-----|------|-------------|

各結果について:

  • タイトルと URL を表示します
  • 公開日があれば表示します
  • コンテンツモードに応じて、ハイライト、テキストの抜粋、または要約を表示します
  • 特に関連性の高い結果に印を付けます
  • category: "research paper" に該当する結果のみ — 著者も記録します (Exa の author/authors フィールドから取得するか、フォールバックとして 結果のスニペットから解析します)。また、掲載先/出版社も記録します(publisher、 source、または論文をホストしているドメインから取得します)。これらはステップ 6 の Wiki フックで必要です。該当する結果について、いずれかの情報を取得できない場合は、 その結果の Wiki への取り込みをスキップし、注記を記録してください。
ステップ 5:追加の検索を提案する

結果を提示した後、次のことを提案します:

  • 掘り下げる:「これらの結果の全文を取得できます」
  • 類似項目を探す:「任意の結果に似たページを探せます」
  • 絞り込む:「ドメイン/日付/テキストのフィルターを指定して再検索できます」
ステップ 6:リサーチ Wiki を更新する(有効な場合。対象は研究論文の検索結果のみ)

research-wiki/ が存在し、かつ検索結果に category: "research paper" が含まれる場合は必須です。それ以外の場合は何もせずにスキップします。 一般的なウェブ検索結果(ブログ記事、ドキュメント、ニュース)は取り込みません。Wiki の対象は研究論文のみです。

条件を満たす場合は、 shared-references/wiki-helper-resolution.md の正規の手順に従って $WIKI_SCRIPT を解決します (バリエーション B — 警告してスキップ)。各研究論文の検索結果について、URL から arXiv ID(arxiv.org/abs/<id>)を取得できるか試します。取得できる場合は --arxiv-id を使用します。取得できない場合は、手動でメタデータを指定します。

if [ -d research-wiki/ ] and query category was "research paper":
    cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
    ARIS_REPO="${ARIS_REPO:-$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null)}"
    if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
      ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
    fi
    WIKI_SCRIPT=".aris/tools/research_wiki.py"
    [ -f "$WIKI_SCRIPT" ] || WIKI_SCRIPT="tools/research_wiki.py"
    [ -f "$WIKI_SCRIPT" ] || { [ -n "${ARIS_REPO:-}" ] && WIKI_SCRIPT="$ARIS_REPO/tools/research_wiki.py"; }
    [ -f "$WIKI_SCRIPT" ] || {
      echo "WARN: research_wiki.py not found; exa-search results delivered, wiki ingest skipped. Fix: bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or cp <ARIS-repo>/tools/research_wiki.py tools/." >&2
      WIKI_SCRIPT=""
    }
    [ -n "$WIKI_SCRIPT" ] && for each research-paper hit in results:
        if URL matches arxiv.org/abs/<id>:
            python3 "$WIKI_SCRIPT" ingest_paper research-wiki/ \
                --arxiv-id "<id>"
        else:
            python3 "$WIKI_SCRIPT" ingest_paper research-wiki/ \
                --title "<title>" --authors "<authors joined by , >" \
                --year <year> --venue "<venue or publisher>"

ヘルパーがスラッグ/重複チェック/ページ/インデックス/ログを処理します。papers/<slug>.md を手書きしないでください。詳細は shared-references/integration-contract.md を参照してください。

主なルール

  • 検索前に、EXA_API_KEY が設定されていることを必ず確認します
  • 速度とコンテキストのバランスを取るため、コンテンツモードはデフォルトで highlights にします
  • ユーザーが明らかに学術的なコンテンツを探している場合は、category: "research paper" を使用します
  • ユーザーがページの全コンテンツを必要としている場合は、text コンテンツモードを使用します
  • 網羅的な文献調査のために、/arxiv または /semantic-scholar と組み合わせます

コメント