OpenClaw 検索プロバイダー選定ガイド (Brave/Gemini/Grok/Tavily/SerpAPI など)
難易度: 中級 | 所要時間: 20 分 | 学習の成果: 実際の利用シーンに基づいて、OpenClaw に最適な検索プロバイダーを選択する方法を習得する
対象読者
- OpenClaw の基礎セットアップを完了し、本格的に検索機能を導入したい開発者
- 10 個のプロバイダーを前に、どれを選べばよいか迷っているエンジニア
- 特定のシナリオ(RAG / 評判分析 / EC トラッキングなど)で検索動作を深くカスタマイズしたい方
コア依存関係
- OpenClaw(最新バージョン)
- Node.js 18+
- 少なくとも 1 つの検索プロバイダーの API Key
プロジェクト構造
openclaw/
├── config.yaml # すべてのプロバイダー設定はここ
└── .env # API Key を保存(リポジトリにはコミットしない)
1. OpenClaw 検索機能の概要
OpenClaw の Agentic Loop において、検索ツールは「リアルタイム感知レイヤー」の役割を果たします。エージェントが自身の学習データだけでは不十分だと判断した際、能動的に検索ツールを呼び出して情報を補完し、次の行動を決定します。
ユーザーの質問
↓
エージェントの思考:最新の情報が必要か?
↓ はい
検索プロバイダーを呼び出し → 結果を取得
↓
情報を統合 → 回答を生成
[!TIP]
検索プロバイダーがない場合、OpenClaw はモデルの学習データのみに依存するため、「最新バージョンは何か」「ニュース」といった質問に対して誤った情報を生成(ハルシネーション)する可能性があります。検索の設定は、エージェントを真に「生きた」ものにするための第一歩です。
現在、OpenClaw は 10 個の検索プロバイダーをサポートしており、大きく 2 つのカテゴリに分けられます:
| タイプ | プロバイダー | 特徴 | 無料枠 | 開始価格 |
|---|---|---|---|---|
| 公式 | Perplexity | 構造化された結果、時間/ドメインフィルタ | なし | $1/M tokens |
| 公式 | Brave Search | プライバシー優先、地域検索 | ~1,000回/月 | $5/1k |
| 公式 | Gemini | Google エコシステム、自動 Grounding | 無料枠が豊富 | prompt ごとに課金 |
| 公式 | Grok | Web + X(Twitter) のダブル検索 | なし | $10/1k ツール呼び出し |
| 公式 | Kimi | 256K 超長文コンテキスト | なし | $0.60/M tokens |
| サードパーティ | Tavily | LLM 最適化、構造化出力 | 1,000回/月 | 従量課金 |
| サードパーティ | Serper.dev | 最速かつ最安の Google SERP | 登録時に 2,500回付与 | $0.30/1k |
| サードパーティ | SerpAPI | マルチエンジン対応、スクリーンショット可 | 250回/月 | $7.50/1k |
| サードパーティ | Exa | セマンティック・ニューラル検索 | 無料トライアル | 従量課金 |
| サードパーティ | DataForSEO | エンタープライズ級、10種以上のエンジン | $1 試用金 | $0.60/1k |
2. 選定のコア基準
プロバイダーを選ぶ前に、以下の 4 つの基準を確認してください:
| 基準 | 重要な問い | 決定への影響 |
|---|---|---|
| 鮮度 | どの程度新しい結果が必要か?(リアルタイム / 週内 / 月内) | ニュース系ならリアルタイムインデックス必須 |
| 品質 | 生のリンク集が必要か、それとも要約された結果か? | AI Agent の場合は要約型を優先 |
| コスト | 月間の平均呼び出し回数の予測は? | 高頻度なシナリオではコスト削減の余地が大きい |
| 機能 | ドメインホワイトリスト / 地理位置情報のシミュレーションは必要か? | バーティカルな(垂直型)シナリオでは機能差が重要 |
3. 10 大シナリオ別選定ガイド
シナリオ 1:コード QA エージェント
ニーズ: ユーザーが「このエラーの直し方は?」「このライブラリの最新 API は?」と質問。答えは主に GitHub、Stack Overflow、公式ドキュメントにある。
推奨: Perplexity + searchDomainFilter
Perplexity の sonar モデルは技術的な内容の理解に優れています。ドメインホワイトリストを追加することで、信頼できる技術サイトのみから結果を取得し、低品質なブログによるノイズを防げます。
tools:
web:
search:
enabled: true
provider: perplexity
maxResults: 5
perplexity:
apiKey:
source: env
provider: default
id: PERPLEXITY_API_KEY
model: sonar # 軽量・高速で十分
searchRecencyFilter: month # 1ヶ月以内の内容で古いドキュメントを除外
searchDomainFilter:
- "github.com"
- "stackoverflow.com"
- "docs.python.org"
- "developer.mozilla.org"
- "pkg.go.dev"
効果: エージェントの回答ソースがすべて信頼できる技術サイトになり、信頼性が大幅に向上します。
シナリオ 2:ニュース要約ボット
ニーズ: 毎朝、指定分野(AI / テクノロジー / 金融)の最新ニュースをまとめる。速報性が最優先。
推奨: Serper.dev, type: news
Serper は専用の News エンドポイントを持ち、Google News のリアルタイム結果を直接取得します。レスポンスは 1–2 秒と速く、価格は全プロバイダーの中で最低水準です。
tools:
web:
search:
enabled: true
provider: serper
maxResults: 10
cacheTtlMinutes: 30 # ニュースを30分キャッシュ。同時間帯の重複呼び出しを防止
serper:
apiKey:
source: env
provider: default
id: SERPER_API_KEY
type: news # ニュースエンドポイントに切り替え
num: 10 # 1回につき10件取得
[!TIP]
ニュースシナリオでcacheTtlMinutesを 30 に設定するのは合理的です。同じニュース群は 30 分以内では大きく変わらないため、重複呼び出しは避けるべきです。
シナリオ 3:学術リサーチエージェント
ニーズ: 研究者のために論文を検索し、特定の研究方向の最新の進展を分析する。キーワード一致だけでなく、文脈(セマンティック)を理解する必要がある。
推奨: Exa, セマンティック検索 + ドメインフィルタ
Exa は embedding(ベクトル)ベースのインデックスを使用しているため、「量子コンピューティングの暗号学への応用」といった意味的なクエリを理解でき、キーワードの単なる一致に依存しません。
tools:
web:
search:
enabled: true
provider: exa
maxResults: 8
exa:
apiKey:
source: env
provider: default
id: EXA_API_KEY
endpoint: auto # 速度と品質を自動バランス
includeDomains:
- "arxiv.org"
- "semanticscholar.org"
- "pubmed.ncbi.nlm.nih.gov"
- "nature.com"
- "science.org"
startPublishedDate: "2024-01-01" # 2024年以降の論文のみ
キーワード検索との比較: 同じクエリでも、Exa は意味的に関連しているがタイトルにキーワードが含まれていない論文を見つけることができ、再現率(Recall)が明らかに高くなります。
シナリオ 4:X/Twitter 評判分析
ニーズ: 特定のブランド、製品、トピックに関する X へのリアルタイムな投稿を追跡する。通常の Web 検索では X の内容はなかなか取得できない。
推奨: Grok, x_search を有効化
これは Grok 独自の能力です。他のプロバイダーでは不可能な X プラットフォームの内容を直接検索できます。
tools:
web:
search:
enabled: true
provider: grok
grok:
apiKey:
source: env
provider: default
id: XAI_API_KEY
model: grok-4-1-fast # エージェント検索に最適化されたモデル
inlineCitations: true
tools:
- type: x_search
fromDate: "2025-01-01" # 指定日以降の投稿のみ
allowedXHandles: # オプション:特定の公式アカウントのみ追跡
- "sama"
- "karpathy"
- "ylecun"
- type: web_search # 同時にWeb検索も行い、背景情報を補足
enableImageUnderstanding: true
[!WARNING]
web_searchとx_searchは各 $10/1000 回の呼び出しとなります。高頻度なモニタリングではcacheTtlMinutesを設定するか、アプリケーション層で重複排除を行い、短時間での頻繁なトリガーを避けてください。
シナリオ 5:EC 価格トラッキング
ニーズ: Google Shopping 上の競合他社の価格変動を監視する、またはユーザーのために商品の最安値を調べる。
推奨: SerpAPI, engine: google_shopping
SerpAPI は、Google Shopping データの構造化出力において最も完成度が高いプロバイダーであり、価格、店舗、評価などのフィールドを取得可能です。
tools:
web:
search:
enabled: true
provider: serpapi
maxResults: 20
cacheTtlMinutes: 60 # 価格データは1時間キャッシュ
serpapi:
apiKey:
source: env
provider: default
id: SERPAPI_API_KEY
engine: google_shopping # Shoppingエンジンに切り替え
gl: us # 米国市場
hl: en
# 指定した地理的な位置をシミュレート
location: "New York, New York, United States"
返却データ例(SerpAPI 構造化出力):
{
"shopping_results": [
{
"title": "Product Name",
"price": "$29.99",
"source": "Amazon",
"rating": 4.5,
"reviews": 1234,
"link": "https://..."
}
]
}
シナリオ 6:SEO コンテンツ生成
ニーズ: キーワードの SERP 構造(タイトル、抜粋、競合記事)を大量に分析し、コンテンツチームのトピック戦略策定を支援する。
推奨: DataForSEO, mode: normal
DataForSEO の normal モードはキュー方式(約 5 分で返却)で、価格は 1 回わずか $0.0006 とリアルタイムモードより 3 分の 1 以下です。SEO 分析にリアルタイム性は不要なため、コストを大幅に抑えられます。
tools:
web:
search:
enabled: true
provider: dataforseo
maxResults: 10
cacheTtlMinutes: 1440 # SEOデータは変化が遅いため24時間キャッシュ
dataforseo:
login:
source: env
provider: default
id: DATAFORSEO_LOGIN
password:
source: env
provider: default
id: DATAFORSEO_PASSWORD
engine: google
mode: normal # キューモード:$0.0006/回(liveは$0.002/回)
locationCode: 2392 # 2392 = 日本;2840 = 米国;2826 = 英国
languageCode: ja
[!TIP]
DataForSEO はlocationCode(数値コード)で地域を指定します。よく使われるコードは、日本2392、米国2840、英国2826です。公式地域リストで全リストを確認できます。
シナリオ 7:社内ナレッジ検索
ニーズ: 社内 Wiki や技術ドキュメントサイトがあり、エージェントにこれら信頼できるソースを優先させ、無関係な外部サイトをブロックさせたい。
推奨: Brave Search + Goggles
Brave の Goggles 機能を使用すると、独自の検索ランキングルールを作成できます。社内ドキュメントサイトの重みを最大化し、競合他社サイトの重みを下げたりブロックしたりすることが可能です。
tools:
web:
search:
enabled: true
provider: brave
maxResults: 8
brave:
apiKey:
source: env
provider: default
id: BRAVE_API_KEY
# Goggles URL: search.brave.com/goggles で作成・公開後に取得
goggles_id: "https://raw.githubusercontent.com/your-org/goggles/main/internal-docs.goggle"
freshness: pm # 1ヶ月以内の内容を検索
Goggles 設定例(.goggle ファイルの内容):
# 社内ドキュメントの優先度を最高にする
$boost=10,site=docs.yourcompany.com
$boost=10,site=wiki.yourcompany.com
# 競合サイトのランクを下げる
$downrank=5,site=competitor.com
# 低品質なコンテンツファームをブロック
$discard,site=spamsite.example
シナリオ 8:多言語市場調査
ニーズ: グローバル市場分析を行い、異なる国・言語環境での検索結果をシミュレートして、各市場のローカルな競合状況を把握したい。
推奨: SerpAPI, location + hl + gl の柔軟な設定
SerpAPI は詳細な地理位置情報のシミュレーションをサポートしており、指定した都市のユーザーとして検索を発行できます。
tools:
web:
search:
enabled: true
provider: serpapi
serpapi:
apiKey:
source: env
provider: default
id: SERPAPI_API_KEY
engine: google
# 例:東京のユーザーをシミュレート
location: "Tokyo, Tokyo, Japan"
hl: ja # インターフェース言語:日本語
gl: jp # 地域:日本
マルチ市場設定の考え方: 異なるエージェントタスクに動的に location / hl / gl パラメータを渡すことで、一つのプロバイダーでグローバル市場をカバーできます:
| 市場 | location | hl | gl |
|---|---|---|---|
| 日本 | Tokyo, Tokyo, Japan | ja | jp |
| 米国 | New York, New York, United States | en | us |
| 英国 | London, England, United Kingdom | en | gb |
| ドイツ | Berlin, Berlin, Germany | de | de |
シナリオ 9:高頻度・低コストのバッチ処理
ニーズ: エージェントが頻繁に検索を実行する必要がある(例:数分おきにキーワード群を監視)。コストが最大の懸念。
推奨: Serper.dev の大量プラン + 積極的なキャッシュ戦略
Serper は大量購入で 1k 回あたり $0.30 まで下がります。適切なキャッシュ設定と組み合わせることで、業界最低水準のコストを実現できます。
tools:
web:
search:
enabled: true
provider: serper
maxResults: 5 # 必要最小限に留める
timeoutSeconds: 15 # 長時間待たずにタイムアウトさせる
cacheTtlMinutes: 120 # 2時間のキャッシュ。同じクエリの重複を徹底排除
serper:
apiKey:
source: env
provider: default
id: SERPER_API_KEY
type: search
num: 5
コスト比較(月間 10,000 回の検索):
| プロバイダー | 単価 | 月間コスト |
|---|---|---|
| SerpAPI | $7.50/1k | $75 |
| Perplexity sonar-pro | $6/M tokens (約 $3/1k回) | $30 |
| Serper.dev | $0.30/1k | $3 |
| Tavily basic | 約 $0.004/回 | $40 |
2 時間のキャッシュを併用することで、実際の有効な呼び出し回数は元の 30%–50% 程度になり、実質的なコストはさらに下がります。
シナリオ 10:予算 $0 からスタート
ニーズ: 個人プロジェクトや初期検証段階で、お金をかけずに検索機能を実用化したい。
戦略: 3 つの無料枠を使い回す
| プロバイダー | 無料枠 | 合計 |
|---|---|---|
| Brave Search | ~1,000回/月 | |
| Tavily | 1,000回/月 | |
| SerpAPI | 250回/月 | |
| 合計 | ~2,250回/月 |
設定の考え方としては、3 つのプロバイダーの API Key をすべて設定しておき、現在のシナリオに最適なものを OpenClaw のデフォルトプロバイダーに指定。無料枠を使い切りそうになったら手動または自動で切り替えます。
tools:
web:
search:
enabled: true
provider: tavily # 主力:月間1000回無料
maxResults: 5
cacheTtlMinutes: 60 # キャッシュを活用して無料枠を最大化
tavily:
apiKey:
source: env
provider: default
id: TAVILY_API_KEY
searchDepth: basic # advanced(2クレジット)ではなくbasic(1クレジット)を使用
maxResults: 5
includeAnswer: true
枠を使い切りそうな時は、provider: brave に 1 行書き換えるだけで他の設定を変えずに Brave へ切り替えられます。
[!TIP]
Tavily は Dashboard でリアルタイムに使用量を確認できます。使用量アラートを設定し、制限に達する前に切り替えることで、検索機能の中断を回避できます。
4. シナリオ → プロバイダー早見表
| シナリオ | 推奨プロバイダー | キーとなる設定 | 月間目安(1k回) |
|---|---|---|---|
| コード QA エージェント | Perplexity | searchDomainFilter, model: sonar | ~$1 |
| ニュース要約ボット | Serper.dev | type: news, cacheTtlMinutes: 30 | $0.30–$1 |
| 学術リサーチエージェント | Exa | includeDomains, endpoint: auto | 従量課金 |
| X/Twitter 評判分析 | Grok | x_search, allowedXHandles | $10/1k 呼び出し |
| EC 価格トラッキング | SerpAPI | engine: google_shopping, gl | $7.50 |
| SEO コンテンツ生成 | DataForSEO | mode: normal, locationCode | $0.60 |
| 社内ナレッジ検索 | Brave + Goggles | goggles_id | $5/1k |
| 多言語市場調査 | SerpAPI | location, hl, gl | $7.50 |
| 高頻度低コストバッチ | Serper.dev | cacheTtlMinutes: 120 | $0.30–$1 |
| 予算 $0 自作環境 | Tavily / Brave | searchDepth: basic, キャッシュ | $0 |
5. 応用:マルチプロバイダー・フォールバック戦略
本番環境では、メインのプロバイダーが故障したり制限に達したりした際に自動的に切り替わる、バックアップ戦略の設定を推奨します。
tools:
web:
search:
enabled: true
provider: perplexity # メイン
maxResults: 5
timeoutSeconds: 20 # 20秒タイムアウト後にフォールバック発動
perplexity:
apiKey:
source: env
provider: default
id: PERPLEXITY_API_KEY
model: sonar
# バックアップ・プロバイダー(メイン使用不可時に自動切り替え)
fallback:
provider: serper
serper:
apiKey:
source: env
provider: default
id: SERPER_API_KEY
type: search
num: 5
フォールバックが発動する主なケース:
- メインが 429(レート制限)を返した
- メインのレスポンスがタイムアウトした(
timeoutSeconds) - メインが 5xx エラー(サーバー障害)を返した
6. よくあるトラブルシューティング
Q1: プロバイダーを設定したが、エージェントが検索を実行しない
原因: エージェントのプロンプトに検索ツールの使用を促す指示がないか、モデルが「ネット接続は不要」と判断している。
解決: システムプロンプトに明確な指示を加えます。例:
最新の情報が不明な場合は、能動的に検索ツールを使用してリアルタイムデータを取得してください。学習データに基づいた推測は避けてください。
Q2: Perplexity の searchDomainFilter が効かない
原因: ドメインの形式が間違っている。https:// 接頭辞は不要です。
解決:
# 誤り
searchDomainFilter:
- "https://github.com"
# 正解
searchDomainFilter:
- "github.com"
Q3: DataForSEO の normal モードで結果がなかなか返ってこない
原因: normal モードはキュー処理であり、平均 3〜5 分かかります。これは正常な動作です。
解決: リアルタイムな結果が必要な場合は mode: live に切り替えてください(コストは約 3 倍)。大量の SEO 分析であれば待つ価値は十分にあるため、normal を推奨します。
Q4: 予算の無料枠を使い切ってエージェントがエラーになる
原因: フォールバックが設定されておらず、単一のプロバイダーの枠が尽きた際にリクエストが失敗している。
解決: セクション 5 のように fallback を設定するか、各社のダッシュボードでアラートを設定して事前に切り替えてください。
7. さらにその先へ
- クエリタイプに応じたスマートルーティング: コード関連は Perplexity、ニュースは Serper、学術内容は Exa へと、エージェントのプロンプトで誘導する
- 検索結果の二次処理: Firecrawl と組み合わせて、検索結果のスニペットだけでなくページ全文をスクレイピングする
- 品質評価: 同一クエリに対して異なるプロバイダーの結果を比較し、特定のシナリオにおける最適解を見出す
参考資料: