exa-search について
exa-searchは、広範なウェブ検索とページ内容の抽出を行うスキルです。学術データベース以外も調べたい研究者などに向けて、カテゴリ、ドメイン、日付による絞り込みを提供します。
主な機能
- 01幅広いウェブ検索
- 02要点・本文・要約の抽出
- 03カテゴリ・ドメイン・日付での絞り込み
- 04指定URLに類似するページの検索
- 05既知のURLからのコンテンツ取得
活用シーン
- 01ニュース、ドキュメント、企業サイトの検索
- 02学術データベース以外での論文検索
- 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と組み合わせます