web-search-plus について
web-search-plusは、OpenClawエージェント向けの複数プロバイダー対応検索スキルです。検索意図に応じてSerper、Tavily、Exaを使い分け、障害時には別のプロバイダーへ切り替えます。
主な機能
- 01検索意図に応じたプロバイダー選択
- 02Serper、Tavily、Exaに対応
- 03障害時の自動フォールバック
- 04対話式セットアップウィザード
- 05プロバイダー別の検索オプション
活用シーン
- 01商品の価格や仕様、地域の店舗を調べる
- 02複雑な質問を調査し、ページ内容を取得する
- 03類似サイト、企業、研究論文を見つける
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sundial-org/ awesome-openclaw-skills --skill web-search-plusインストール後、Claude Code で/web-search-plusを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CHANGELOG.mdconfig.example.jsonpackage.jsonREADME.mdtest-auto-routing.shscripts/search.pysetup.py詳細
Web Search Plus
インテリジェントな自動ルーティングを備えた複数プロバイダー対応のウェブ検索:Serper(Google)、Tavily(リサーチ)、Exa(ニューラル)。
v2.3.0 の新機能:対話型セットアップウィザード!python3 scripts/setup.py を実行して、設定をガイドに沿って進められます。
v2.2.5 の新機能:エラー時の自動フォールバック — あるプロバイダーでエラー(レート制限、タイムアウトなど)が発生すると、優先順位に従って次のプロバイダーを自動的に試します!
🚀 初回実行(セットアップウィザード)
web-search-plus を初めて使う場合は、対話型セットアップウィザードで設定を進められます。
python3 scripts/setup.py
ウィザードでは、次の手順を行います。
- 各プロバイダーについて説明 — 得意分野、無料プランの上限、登録リンクを確認できます
- 有効にするプロバイダーを選択 — 1つ、2つ、または3つすべてを使用できます
- API キーを収集 — キーはローカルの
config.jsonに保存されます(gitignore 対象) - デフォルトを設定 — デフォルトのプロバイダー、自動ルーティング、結果数を設定します
各プロバイダーの得意分野
| プロバイダー | 得意分野 | 無料プラン |
|---|---|---|
| Serper | Google の検索結果、ショッピング、価格、地域のビジネス、ニュース | 月 2,500 件 |
| Tavily | リサーチに関する質問、解説、学術情報、ページ全体のコンテンツ | 月 1,000 件 |
| Exa | セマンティック検索、「X に似たもの」、スタートアップの発見、論文 | 月 1,000 件 |
いつでも再設定可能
python3 scripts/setup.py --reset
🔑 API キーの設定(手動)
v2.2.0 の新機能:スクリプトがスキルディレクトリ内の .env から API キーを自動的に読み込みます!
クイックセットアップ
オプション A:.env ファイル(推奨)
# /path/to/skills/web-search-plus/.env
export SERPER_API_KEY="your-key" # https://serper.dev
export TAVILY_API_KEY="your-key" # https://tavily.com
export EXA_API_KEY="your-key" # https://exa.ai
オプション B:config.json(v2.2.1 の新機能)
# Copy the example config
cp config.example.json config.json
次に、キーを追加します。
{
"serper": { "api_key": "your-serper-key" },
"tavily": { "api_key": "your-tavily-key" },
"exa": { "api_key": "your-exa-key" }
}
⚠️ config.json は gitignore 対象です — キーは安全に保管されます!
実行するだけで、キーが自動的に読み込まれます。
python3 scripts/search.py -q "your query"
# No need for 'source .env' anymore! ✨
優先順位: config.json > .env > 環境変数
無料の API キーを取得
| プロバイダー | 無料プラン | 登録 |
|---|---|---|
| Serper | 月 2,500 件のクエリ | https://serper.dev |
| Tavily | 月 1,000 件のクエリ | https://tavily.com |
| Exa | 月 1,000 件のクエリ | https://exa.ai |
⚠️ OpenClaw のコア設定を変更しないでください
Tavily、Serper、Exa は OpenClaw のコアプロバイダーではありません。
❌ ~/.openclaw/openclaw.json に追加しないでください:
"tools": { "web": { "search": { "provider": "tavily" }}} // WRONG!
✅ このスキルのスクリプトを使用してください — キーは .env から自動的に読み込まれます
OpenClaw のコア機能でウェブ検索プロバイダーとして標準サポートされているのは brave のみです。このスキルは独自のスクリプトを通じて、Serper、Tavily、Exa を追加の選択肢として提供します。
🧠 インテリジェントな自動ルーティング
プロバイダーを選ぶ必要はありません。検索するだけです!このスキルは複数のシグナルを分析して、クエリの意図を理解します。
# These queries are intelligently routed with confidence scoring:
python3 scripts/search.py -q "how much does iPhone 16 cost" # → Serper (68% MEDIUM)
python3 scripts/search.py -q "how does quantum entanglement work" # → Tavily (86% HIGH)
python3 scripts/search.py -q "startups similar to Notion" # → Exa (76% HIGH)
python3 scripts/search.py -q "MacBook Pro M3 specs review" # → Serper (70% HIGH)
python3 scripts/search.py -q "explain pros and cons of React" # → Tavily (85% HIGH)
python3 scripts/search.py -q "companies like stripe.com" # → Exa (100% HIGH)
動作の仕組み
ルーティングエンジンは複数のシグナルを分析します。
🛒 ショッピングの意図 → Serper
| シグナルの種類 | 例 | 重み |
|---|---|---|
| 価格のパターン | "how much", "price of", "cost of" | 高 |
| 購入の意図 | "buy", "purchase", "order", "where to buy" | 高 |
| お買い得情報のシグナル | "deal", "discount", "cheap", "best price" | 中 |
| 商品+ブランド | "iPhone 16"、"Sony headphones" +仕様/レビュー | 高 |
| 地域のビジネス | "near me", "restaurants", "hotels" | 高 |
📚 リサーチの意図 → Tavily
| シグナルの種類 | 例 | 重み |
|---|---|---|
| 解説 | "how does", "why does", "explain", "what is" | 高 |
| 分析 | "compare", "pros and cons", "difference between" | 高 |
| 学習 | "tutorial", "guide", "understand", "learn" | 中 |
| 詳細さ | "in-depth", "comprehensive", "detailed" | 中 |
| 複雑なクエリ | 長文の複数節から成る質問 | ボーナス |
🔍 発見の意図 → Exa
| シグナルの種類 | 例 | 重み |
|---|---|---|
| 類似性 | "similar to", "alternatives to", "competitors" | 非常に高 |
| 企業の発見 | "companies like", "startups doing", "who else" | 高 |
| URL の検出 | URL またはドメイン(stripe.com) | 非常に高 |
| 学術情報 | "arxiv", "research papers", "github projects" | 高 |
| 資金調達 | "Series A", "YC", "funded startup" | 高 |
信頼度スコア
すべてのルーティング判断には信頼度が含まれます。
| 信頼度 | レベル | 意味 |
|---|---|---|
| 70-100% | HIGH | シグナルが強く一致しており、非常に信頼できます |
| 40-69% | MEDIUM | 良好な一致で、問題なく動作するはずです |
| 0-39% | LOW | クエリが曖昧なため、フォールバックを使用します |
ルーティング判断をデバッグする
分析の全文を確認します。
python3 scripts/search.py --explain-routing -q "how much does iPhone 16 Pro cost"
出力:
{
"query": "how much does iPhone 16 Pro cost",
"routing_decision": {
"provider": "serper",
"confidence": 0.68,
"confidence_level": "medium",
"reason": "moderate_confidence_match"
},
"scores": {"serper": 7.0, "tavily": 0.0, "exa": 0.0},
"top_signals": [
{"matched": "how much", "weight": 4.0},
{"matched": "brand + product detected", "weight": 3.0}
],
"query_analysis": {
"word_count": 7,
"is_complex": false,
"has_url": null,
"recency_focused": false
}
}
🔍 このスキルと組み込みの Brave Search の使い分け
組み込みの Brave Search を使用する場合:
- ✅ 一般的なウェブ検索(ニュース、情報、質問)
- ✅ プライバシーが重要な場合
- ✅ 特定の要件がない、すばやい検索
web-search-plus を使用する場合:
→ Serper(Google の検索結果):
- 🛍️ 製品の仕様、価格、ショッピング - 「iPhone 16 と Samsung S24 を比較」
- 📍 地域のビジネス、場所 - 「ベルリンでおすすめのピザ」
- 🎯 「Google で検索」 - Google の検索結果を明示的に希望する場合
- 📰 ショッピング/画像/ニュース -
--type shopping/images/news - 🏆 ナレッジグラフ - 価格や評価などの構造化された情報
→ Tavily(AI に最適化された調査):
- 📚 調査に関する質問 - 「量子コンピューティングの仕組みは?」
- 🔬 深掘り調査 - 複雑な複数パートの質問
- 📄 ページ全体のコンテンツ - スニペットだけではない内容(
--raw-content) - 🎓 学術調査 - 統合された回答
- 🔒 ドメインフィルタリング - 信頼できるソースには
--include-domains
→ Exa(ニューラルセマンティック検索):
- 🔗 類似ページ - 「OpenAI.com のようなサイト」(
--similar-url) - 🏢 企業の検索 - 「Anthropic のような AI 企業」
- 📝 研究論文 -
--category "research paper" - 💻 GitHub プロジェクト -
--category github - 📅 日付指定 -
--start-date/--end-date
プロバイダーの比較
| 機能 | Serper | Tavily | Exa |
|---|---|---|---|
| 速度 | ⚡⚡⚡ | ⚡⚡ | ⚡⚡ |
| 事実の正確性 | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| セマンティックな理解 | ⭐ | ⭐⭐ | ⭐⭐⭐ |
| 調査の品質 | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
| ページ全体のコンテンツ | ✗ | ✓ | ✓ |
| ショッピング/地域検索 | ✓ | ✗ | ✗ |
| 類似ページ | ✗ | ✗ | ✓ |
| ナレッジグラフ | ✓ | ✗ | ✗ |
使用例
自動ルーティング(推奨)
python3 scripts/search.py -q "iPhone 16 Pro Max price" # → Serper
python3 scripts/search.py -q "how does HTTPS encryption work" # → Tavily
python3 scripts/search.py -q "startups similar to Notion" # → Exa
プロバイダーを明示的に指定
python3 scripts/search.py -p serper -q "weather Berlin" --type weather
python3 scripts/search.py -p tavily -q "quantum computing" --depth advanced
python3 scripts/search.py -p exa --similar-url "https://stripe.com" --category company
設定
config.json
{
"auto_routing": {
"enabled": true,
"fallback_provider": "serper",
"confidence_threshold": 0.3,
"disabled_providers": []
},
"serper": {"country": "us", "language": "en"},
"tavily": {"depth": "advanced"},
"exa": {"type": "neural"}
}
出力形式
{
"provider": "serper",
"query": "iPhone 16 price",
"results": [{"title": "...", "url": "...", "snippet": "...", "score": 0.95}],
"answer": "Synthesized answer...",
"routing": {
"auto_routed": true,
"provider": "serper",
"confidence": 0.78,
"confidence_level": "high",
"reason": "high_confidence_match",
"top_signals": [{"matched": "price", "weight": 3.0}]
}
}
よくある質問
一般
Q: 自動ルーティングでは、どのプロバイダーを使うかどのように判断しますか?
複数のシグナルを分析し、価格のパターン、説明を示すフレーズ、類似性を示すキーワード、URL、製品とブランドの組み合わせ、クエリの複雑さに基づいて各プロバイダーをスコアリングします。最も高いスコアのプロバイダーが選ばれます。判断の内訳を確認するには、
--explain-routingを使用してください。
Q: 間違ったプロバイダーが選ばれた場合はどうすればよいですか?
-p serper/tavily/exaで上書きしてください。異なるプロバイダーが選ばれた理由を確認するには、--explain-routingを確認してください。
Q: 「信頼度が低い」とはどういう意味ですか?
クエリが曖昧です(例:「Tesla」は車、株式、企業のいずれを指す場合もあります)。Serper にフォールバックします。結果は異なる場合があります。
Q: プロバイダーを無効にできますか?
はい!config.json で次のように設定します:
"disabled_providers": ["exa"]
API キー
Q: どの API キーが必要ですか?
最低でもキーが 1 つ必要です。Serper だけ、Tavily だけ、または 3 つすべてを使用できます。キーがないプロバイダーはスキップされます。
Q: API キーはどこで取得できますか?
- Serper:https://serper.dev(無料クエリ 2,500 回、クレジットカード不要)
- Tavily:https://tavily.com(無料検索 月 1,000 回)
- Exa:https://exa.ai(無料検索 月 1,000 回)
Q: API キーはどのように設定しますか?
次の 2 つの方法があります(どちらも自動で読み込まれます):
オプション A:.env ファイル
export SERPER_API_KEY="your-key"オプション B:config.json(v2.2.1+)
{ "serper": { "api_key": "your-key" } }
ルーティングの詳細
Q: どのプロバイダーが検索を処理したか、どうすればわかりますか?
JSON 出力の
routing.provider、またはチャットの応答に表示される[🔍 Searched with: Provider]を確認してください。
Q: 調査の質問で Serper が選ばれることがあるのはなぜですか?
クエリにブランドや製品を示す語句(例:「Tesla FSD の仕組み」)が含まれている場合、調査の意図よりもショッピングの意図が優先されることがあります。
-p tavilyで上書きしてください。
Q: 信頼度のしきい値はいくつですか?
デフォルトは 0.3(30%)です。これを下回ると信頼度が低いと判断され、フォールバックが使用されます。config.json で調整できます。
トラブルシューティング
Q: 「No API key found」エラーが発生します
- スキルのフォルダーに
.envがあり、export VAR=value形式で記述されていることを確認してください- v2.2.0 以降、スキルの
.envからキーが自動的に読み込まれます- または、システム環境に設定してください:
export SERPER_API_KEY="..."
Q: 結果が空です
- API キーが有効であることを確認してください
-pを指定して別のプロバイダーを試してください- クエリによっては結果がありません(非常にニッチなトピックなど)
Q: レート制限に達しました
v2.2.5 の新機能:自動フォールバック!あるプロバイダーがレート制限に達すると、スクリプトは優先順位(serper → tavily → exa)に従って、次のプロバイダーを自動的に試します。フォールバック情報は stderr に表示され、応答には
routing.fallback_used: trueが含まれます。プロバイダーの制限:Serper は無料枠が合計 2,500 回、Tavily は月間無料枠が 1,000 回、Exa は月間無料枠が 1,000 回です。
OpenClaw ユーザー向け
Q: チャットでこれを使うにはどうすればよいですか?
そのまま質問してください!OpenClaw が検索の意図を自動検出します。または、「web-search-plus で検索して……」のように明示的に指定してください。
Q: 組み込みの Brave Search に置き換わりますか?
いいえ、相互に補完するものです。簡単な検索には Brave を、調査/ショッピング/発見には web-search-plus を使ってください。
Q: どのプロバイダーが使われたか確認できますか?
はい!SOUL.md に帰属情報を含められます:[🔍 Searched with: Serper/Tavily/Exa]