Webツール

OpenClawには2つの軽量Webツールが組み込まれています:

  • web_search — Brave Search API、GoogleSearch接地付きGemini、Grok、Kimi、またはPerplexity Search APIを使ったWeb検索。
  • web_fetch — HTTP取得+読みやすい形式への変換(HTML → markdown/text)。

これらはブラウザ自動化ではありません。JS多用のサイトやログインが必要な場合はBrowserツールを使用してください。

仕組み

  • web_searchは設定されたプロバイダーを呼び出し、結果を返します。
  • 結果はクエリごとに15分間キャッシュされます(設定可能)。
  • web_fetchはプレーンなHTTP GETで読みやすいコンテンツを抽出します(HTML → markdown/text)。JavaScriptは実行しません
  • web_fetchはデフォルトで有効です(明示的に無効化しない限り)。

プロバイダー固有の詳細はBrave Search設定Perplexity Search設定を参照してください。

検索プロバイダーの選択

プロバイダー結果の形式プロバイダー固有のフィルター備考APIキー
Brave Search APIスニペット付き構造化結果countrylanguageui_lang、timeBrave llm-contextモードに対応BRAVE_API_KEY
GeminiAI合成回答+引用Google Search接地を使用GEMINI_API_KEY
GrokAI合成回答+引用xAI Web接地レスポンスを使用XAI_API_KEY
KimiAI合成回答+引用Moonshot Web検索を使用KIMI_API_KEY / MOONSHOT_API_KEY
Perplexity Search APIスニペット付き構造化結果countrylanguage、time、domain_filterコンテンツ抽出制御に対応。OpenRouterはSonar互換パスを使用PERPLEXITY_API_KEY / OPENROUTER_API_KEY

自動検出

上の表はアルファベット順です。providerが明示的に設定されていない場合、ランタイム自動検出は以下の順序でプロバイダーをチェックします:

  1. BraveBRAVE_API_KEY環境変数またはtools.web.search.apiKey設定
  2. GeminiGEMINI_API_KEY環境変数またはtools.web.search.gemini.apiKey設定
  3. GrokXAI_API_KEY環境変数またはtools.web.search.grok.apiKey設定
  4. KimiKIMI_API_KEY / MOONSHOT_API_KEY環境変数またはtools.web.search.kimi.apiKey設定
  5. PerplexityPERPLEXITY_API_KEYOPENROUTER_API_KEY、またはtools.web.search.perplexity.apiKey設定

キーが見つからない場合、Braveにフォールバックします(設定を促すキー不足エラーが表示されます)。

ランタイムSecretRefの動作:

  • WebツールのSecretRefはGateway起動/リロード時にアトミックに解決されます。
  • 自動検出モードでは、選択されたプロバイダーキーのみ解決。未選択のプロバイダーSecretRefは選択されるまで非アクティブ。
  • 選択されたプロバイダーSecretRefが未解決で、プロバイダー環境変数フォールバックもない場合、起動/リロードはフェイルファスト。

Web検索の設定

openclaw configure --section webでAPIキーの設定とプロバイダーの選択ができます。

  1. brave.com/search/apiでBrave Search APIアカウントを作成
  2. ダッシュボードでSearchプランを選択し、APIキーを生成
  3. openclaw configure --section webでキーを設定に保存するか、環境変数にBRAVE_API_KEYを設定

Braveの各プランには月額$5の無料クレジット(更新あり)が含まれます。Searchプランは1,000リクエストにつき$5なので、クレジットで月1,000クエリをカバーできます。予想外の課金を避けるために、Braveダッシュボードで使用量制限を設定してください。現在のプランと価格はBrave APIポータルを参照。

  1. perplexity.ai/settings/apiでPerplexityアカウントを作成
  2. ダッシュボードでAPIキーを生成
  3. openclaw configure --section webでキーを設定に保存するか、環境変数にPERPLEXITY_API_KEYを設定

レガシーのSonar/OpenRouter互換には、代わりにOPENROUTER_API_KEYを設定するか、tools.web.search.perplexity.apiKeysk-or-...キーを設定。tools.web.search.perplexity.baseUrlmodelの設定でもPerplexityはchat-completions互換パスに切り替わります。

詳細はPerplexity Search APIドキュメントを参照。

キーの保存場所

設定経由: openclaw configure --section webを実行。キーはプロバイダー固有の設定パスに保存されます:

  • Brave: tools.web.search.apiKey
  • Gemini: tools.web.search.gemini.apiKey
  • Grok: tools.web.search.grok.apiKey
  • Kimi: tools.web.search.kimi.apiKey
  • Perplexity: tools.web.search.perplexity.apiKey

上記すべてのフィールドはSecretRefオブジェクトにも対応しています。

環境変数経由: Gatewayプロセス環境にプロバイダー環境変数を設定:

  • Brave: BRAVE_API_KEY
  • Gemini: GEMINI_API_KEY
  • Grok: XAI_API_KEY
  • Kimi: KIMI_API_KEYまたはMOONSHOT_API_KEY
  • Perplexity: PERPLEXITY_API_KEYまたはOPENROUTER_API_KEY

Gatewayインストールの場合、~/.openclaw/.env(またはサービス環境)に設定。環境変数を参照。

設定例

Brave Search:

{
  tools: {
    web: {
      search: {
        enabled: true,
        provider: "brave",
        apiKey: "YOUR_BRAVE_API_KEY", // optional if BRAVE_API_KEY is set // pragma: allowlist secret
      },
    },
  },
}

Brave LLM Contextモード:

{
  tools: {
    web: {
      search: {
        enabled: true,
        provider: "brave",
        apiKey: "YOUR_BRAVE_API_KEY", // optional if BRAVE_API_KEY is set // pragma: allowlist secret
        brave: {
          mode: "llm-context",
        },
      },
    },
  },
}

llm-contextは標準のBraveスニペットの代わりに、グラウンディング用の抽出ページチャンクを返します。 このモードでもcountrylanguage / search_langは動作しますが、ui_langfreshnessdate_afterdate_beforeは拒否されます。

Perplexity Search:

{
  tools: {
    web: {
      search: {
        enabled: true,
        provider: "perplexity",
        perplexity: {
          apiKey: "pplx-...", // optional if PERPLEXITY_API_KEY is set
        },
      },
    },
  },
}

Perplexity via OpenRouter / Sonar互換:

{
  tools: {
    web: {
      search: {
        enabled: true,
        provider: "perplexity",
        perplexity: {
          apiKey: "<openrouter-api-key>", // optional if OPENROUTER_API_KEY is set
          baseUrl: "https://openrouter.ai/api/v1",
          model: "perplexity/sonar-pro",
        },
      },
    },
  },
}

Geminiの使用(Google Search接地)

Geminiモデルは組み込みのGoogle Search接地に対応しており、引用付きのライブGoogle Search結果に裏付けられたAI合成回答を返します。

Gemini APIキーの取得

  1. Google AI Studioにアクセス
  2. APIキーを作成
  3. Gateway環境にGEMINI_API_KEYを設定するか、tools.web.search.gemini.apiKeyを設定

Gemini検索の設定

{
  tools: {
    web: {
      search: {
        provider: "gemini",
        gemini: {
          // APIキー(GEMINI_API_KEYが設定されている場合はオプション)
          apiKey: "AIza...",
          // モデル(デフォルトは"gemini-2.5-flash")
          model: "gemini-2.5-flash",
        },
      },
    },
  },
}

環境変数の代替: Gateway環境にGEMINI_API_KEYを設定。 Gatewayインストールの場合、~/.openclaw/.envに記述。

注意事項

  • Gemini接地からの引用URLは、Googleのリダイレクト URLから直接URLに自動解決されます。
  • リダイレクト解決はSSRFガードパス(HEAD+リダイレクトチェック+http/httpsバリデーション)を使用してから最終引用URLを返します。
  • リダイレクト解決は厳格なSSRFデフォルトを使用するため、プライベート/内部ターゲットへのリダイレクトはブロックされます。
  • デフォルトモデル(gemini-2.5-flash)は高速でコスト効率が良いです。 接地に対応するGeminiモデルであれば使用可能。

設定されたプロバイダーでWeb検索を実行します。

要件

  • tools.web.search.enabledfalseでないこと(デフォルト: 有効)
  • 選択したプロバイダーのAPIキー:
    • Brave: BRAVE_API_KEYまたはtools.web.search.apiKey
    • Gemini: GEMINI_API_KEYまたはtools.web.search.gemini.apiKey
    • Grok: XAI_API_KEYまたはtools.web.search.grok.apiKey
    • Kimi: KIMI_API_KEYMOONSHOT_API_KEY、またはtools.web.search.kimi.apiKey
    • Perplexity: PERPLEXITY_API_KEYOPENROUTER_API_KEY、またはtools.web.search.perplexity.apiKey
  • 上記すべてのプロバイダーキーフィールドはSecretRefオブジェクトに対応。

設定

{
  tools: {
    web: {
      search: {
        enabled: true,
        apiKey: "BRAVE_API_KEY_HERE", // optional if BRAVE_API_KEY is set
        maxResults: 5,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
      },
    },
  },
}

ツールパラメータ

特に記載がない限り、すべてのパラメータはBraveおよびネイティブPerplexity Search APIで動作します。

PerplexityのOpenRouter / Sonar互換パスはqueryfreshnessのみ対応。 tools.web.search.perplexity.baseUrl / modelを設定するか、OPENROUTER_API_KEYを使用するか、sk-or-...キーを設定している場合、Search API専用フィルターは明示的なエラーを返します。

パラメータ説明
query検索クエリ(必須)
count返す結果数(1-10、デフォルト: 5)
country2文字のISO国コード(例: “US”、“DE”)
languageISO 639-1言語コード(例: “en”、“de”)
freshness時間フィルター: dayweekmonth、またはyear
date_afterこの日付以降の結果(YYYY-MM-DD)
date_beforeこの日付以前の結果(YYYY-MM-DD)
ui_langUI言語コード(Braveのみ)
domain_filterドメイン許可/拒否リスト配列(Perplexityのみ)
max_tokens合計コンテンツバジェット、デフォルト25000(Perplexityのみ)
max_tokens_per_pageページごとのトークン制限、デフォルト2048(Perplexityのみ)

例:

// ドイツ向け検索
await web_search({
  query: "TV online schauen",
  country: "DE",
  language: "de",
});

// 直近の結果(過去1週間)
await web_search({
  query: "TMBG interview",
  freshness: "week",
});

// 日付範囲検索
await web_search({
  query: "AI developments",
  date_after: "2024-01-01",
  date_before: "2024-06-30",
});

// ドメインフィルタリング(Perplexityのみ)
await web_search({
  query: "climate research",
  domain_filter: ["nature.com", "science.org", ".edu"],
});

// ドメイン除外(Perplexityのみ)
await web_search({
  query: "product reviews",
  domain_filter: ["-reddit.com", "-pinterest.com"],
});

// より多くのコンテンツ抽出(Perplexityのみ)
await web_search({
  query: "detailed AI research",
  max_tokens: 50000,
  max_tokens_per_page: 4096,
});

Brave llm-contextモードが有効な場合、ui_langfreshnessdate_afterdate_beforeは非対応。これらのフィルターにはBrave webモードを使用してください。

web_fetch

URLからコンテンツを取得し、読みやすい形式に抽出します。

web_fetchの要件

  • tools.web.fetch.enabledfalseでないこと(デフォルト: 有効)
  • オプションのFirecrawlフォールバック: tools.web.fetch.firecrawl.apiKeyまたはFIRECRAWL_API_KEYを設定。
  • tools.web.fetch.firecrawl.apiKeyはSecretRefオブジェクトに対応。

web_fetchの設定

{
  tools: {
    web: {
      fetch: {
        enabled: true,
        maxChars: 50000,
        maxCharsCap: 50000,
        maxResponseBytes: 2000000,
        timeoutSeconds: 30,
        cacheTtlMinutes: 15,
        maxRedirects: 3,
        userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 14_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
        readability: true,
        firecrawl: {
          enabled: true,
          apiKey: "FIRECRAWL_API_KEY_HERE", // optional if FIRECRAWL_API_KEY is set
          baseUrl: "https://api.firecrawl.dev",
          onlyMainContent: true,
          maxAgeMs: 86400000, // ms (1 day)
          timeoutSeconds: 60,
        },
      },
    },
  },
}

web_fetchのツールパラメータ

  • url(必須、http/httpsのみ)
  • extractModemarkdown | text
  • maxChars(長いページの切り詰め)

注意事項:

  • web_fetchはまずReadability(メインコンテンツ抽出)を使い、次にFirecrawl(設定されている場合)を使用。両方が失敗した場合、ツールはエラーを返します。
  • Firecrawlリクエストはボット回避モードを使用し、デフォルトで結果をキャッシュします。
  • FirecrawlのSecretRefはFirecrawlがアクティブ(tools.web.fetch.enabled !== falseかつtools.web.fetch.firecrawl.enabled !== false)な場合のみ解決。
  • Firecrawlがアクティブでそのecreftが未解決、FIRECRAWL_API_KEYフォールバックもない場合、起動/リロードはフェイルファスト。
  • web_fetchはデフォルトでChromeライクなUser-AgentとAccept-Languageを送信。必要に応じてuserAgentをオーバーライド。
  • web_fetchはプライベート/内部ホスト名をブロックし、リダイレクトを再チェック(maxRedirectsで制限)。
  • maxCharstools.web.fetch.maxCharsCapで上限設定。
  • web_fetchはパース前にダウンロードしたレスポンスボディサイズをtools.web.fetch.maxResponseBytesで制限。超過したレスポンスは切り詰められ、警告が含まれます。
  • web_fetchはベストエフォートの抽出です。一部のサイトにはbrowserツールが必要。
  • キーの設定とサービス詳細はFirecrawlを参照。
  • レスポンスはキャッシュされます(デフォルト15分)。繰り返しの取得を削減。
  • ツールプロファイル/許可リストを使用する場合、web_search/web_fetchまたはgroup:webを追加してください。
  • APIキーが不足している場合、web_searchはドキュメントリンク付きの短い設定ヒントを返します。