🦞

ラズパイで育てる!自分だけのAI【ツール編】① Brave Searchでウェブ検索を追加

に公開

はじめに

🎯 この記事の対象読者

  • 基礎編 ① 〜 ⑤ を完了し、Discord から Gemini と会話できている方
  • pass によるクレデンシャル管理を導入済みの方
  • AI Bot に最新情報を調べさせたい方

前提環境:

項目 確認済み内容
OpenClaw Discord Bot が正常に応答している
pass pass show discord/openclaw が値を返す
pass pass show gemini/openclaw が値を返す

基礎編では OpenClaw を Raspberry Pi 上で動かして Discord から AI と会話できる環境を構築しました。

ただ、LLM だけでは学習カットオフ以降の情報を知ることができません。「今日のニュースは?」「最近の○○はどうなった?」と聞いても、古い情報や「わかりません」という回答が返ってくるだけです。

この記事では Brave Search API を導入して、Bot がリアルタイムでウェブ検索できるようにします。


Brave Search API とは

Brave Search は独自インデックスを持つプライバシー重視の検索エンジンです。API を使うと、Google や Bing に依存せず検索結果を取得できます。

OpenClaw は Brave Search をネイティブツールとして内蔵しています。web_search ツールが有効になると、AI が自律的に「調べる」という行動をとれるようになります。

料金感:

プラン 料金 月次クレジット
Search $5 / 1,000 クエリ $5 分(約 1,000 クエリ)

個人利用なら月次クレジット内に収まることが多いです。クレジットカードの登録は必要ですが、超過しなければ請求は発生しません。


ステップ 1: Brave Search API キーを取得する

  1. https://brave.com/search/api/ にアクセス
  2. 「Get started for Free」 をクリックしてアカウントを作成
  3. ダッシュボードで 「New API Key」 を生成
  4. 生成されたキー(BSA... で始まる文字列)をコピーしておく

ステップ 2: API キーを pass に保存する

基礎編と同じ方針で、API キーはファイルに書かず pass で管理します。

ssh pi@pi01
pass insert brave/openclaw

Enter password for brave/openclaw: と表示されたら、コピーしておいた API キーを貼り付けて Enter。

# 確認
pass show brave/openclaw
# BSA... と表示されれば OK

ステップ 3: start-openclaw.sh を更新する

起動スクリプトが pass から API キーを読み出して環境変数にセットするよう、1 行追加します。

nano ~/projects/openclaw/start-openclaw.sh

既存の export GEMINI_API_KEY=... の行の直後に追記:

export BRAVE_API_KEY=$(pass show brave/openclaw)

完成後のスクリプトのエクスポート部分はこのようになります:

export DISCORD_BOT_TOKEN=$(pass show discord/openclaw)
export GEMINI_API_KEY=$(pass show gemini/openclaw)
export BRAVE_API_KEY=$(pass show brave/openclaw)   # ← 追加

ステップ 4: docker-compose.override.yml を更新する

コンテナに環境変数を渡すため、docker-compose.override.yml にも追記します。

cat ~/projects/openclaw/docker-compose.override.yml

現在の内容を確認してから、BRAVE_API_KEYopenclaw-gatewayopenclaw-cli の両方に追加します。

services:
  openclaw-gateway:
    environment:
      - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}
      - GEMINI_API_KEY=${GEMINI_API_KEY}
      - BRAVE_API_KEY=${BRAVE_API_KEY}      # ← 追加
      - TZ=Asia/Tokyo
  openclaw-cli:
    environment:
      - DISCORD_BOT_TOKEN=${DISCORD_BOT_TOKEN}
      - GEMINI_API_KEY=${GEMINI_API_KEY}
      - BRAVE_API_KEY=${BRAVE_API_KEY}      # ← 追加
      - TZ=Asia/Tokyo

ステップ 5: openclaw.json を更新する

~/.openclaw/openclaw.jsontools.web.search セクションを追加して、Brave Search を有効化します。

# バックアップ
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak

# tools.web.search を追加(python3 でパース・書き込み)
python3 - <<'EOF'
import json, pathlib

p = pathlib.Path.home() / ".openclaw/openclaw.json"
cfg = json.loads(p.read_text())

cfg.setdefault("tools", {}).setdefault("web", {})["search"] = {
    "enabled": True,
    "provider": "brave"
}

p.write_text(json.dumps(cfg, ensure_ascii=False, indent=2))
print("Done:", p)
EOF

Done: /home/pi/.openclaw/openclaw.json と表示されれば成功です。

設定内容の確認:

python3 -c "
import json, pathlib
cfg = json.loads((pathlib.Path.home() / '.openclaw/openclaw.json').read_text())
print(json.dumps(cfg.get('tools', {}), indent=2, ensure_ascii=False))
"
{
  "web": {
    "search": {
      "enabled": true,
      "provider": "brave"
    }
  }
}

ステップ 6: 再起動して動作確認

# コンテナを停止
docker compose -f ~/projects/openclaw/docker-compose.yml \
               -f ~/projects/openclaw/docker-compose.override.yml down

# 起動(pass から API キーが export される)
bash ~/projects/openclaw/start-openclaw.sh

コンテナに API キーが渡っているか確認:

docker compose -f ~/projects/openclaw/docker-compose.yml \
               -f ~/projects/openclaw/docker-compose.override.yml \
               exec openclaw-gateway env | grep BRAVE
# BRAVE_API_KEY=BSA... と表示されれば OK

動作確認 — Discord から検索してみる

Discord で Bot が入っているチャンネルにメッセージを送ります。

あなた: 今日の主要ニュースを教えて
応答例
Bot: 本日の主要ニュースをお伝えします。

【検索結果より】
1. ○○○○… (source: example.com)
2. ○○○○… (source: example.com)
...

上記は Brave Search によるリアルタイム検索結果です。

検索結果を含む返答が返ってくれば成功です。


セキュリティチェックリスト

  • pass show brave/openclaw が値を返す
  • ~/.openclaw/openclaw.json に API キーが平文で含まれていない
    grep -i "brave" ~/.openclaw/openclaw.json
    # "provider": "brave" のみ表示されること(キー文字列が出たら要対応)
    
  • コンテナに環境変数が渡っている
    docker compose exec openclaw-gateway env | grep BRAVE
    
  • Discord から検索クエリを投げて結果が返る

トラブルシューティング

検索結果が返ってこない(ツールが使われない)

AI がツールを呼ぶかどうかはモデルが判断します。明示的に検索を促すと動きやすいです:

「ウェブで調べて」「検索して」「最新情報を」

BRAVE_API_KEY がコンテナに渡っていない

start-openclaw.shexport が実行されているか確認:

bash -x ~/projects/openclaw/start-openclaw.sh 2>&1 | grep BRAVE

docker-compose.override.ymlBRAVE_API_KEY の行があるかも確認してください。

API キーのエラーが出る

pass show brave/openclaw の値が正しいか確認。取得し直した場合は pass edit brave/openclaw で更新できます。


おわりに

これで OpenClaw がリアルタイムのウェブ検索を使えるようになりました。

  • API キーは pass で管理 → ファイルに平文保存しない
  • docker-compose.override.yml で環境変数注入 → 設定ファイルにキーを書かない

この 2 つの原則は基礎編からの一貫した方針です。ツールや自動化機能を追加するときも同じパターンで安全に運用できます。

次回のツール編②では Playwright を使ったブラウザ操作の有効化を解説します。


ツール編:

📚 シリーズ全記事の目次はこちら

Discussion