ラズパイで育てる!自分だけの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 キーを取得する
- https://brave.com/search/api/ にアクセス
- 「Get started for Free」 をクリックしてアカウントを作成
- ダッシュボードで 「New API Key」 を生成
- 生成されたキー(
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_KEY を openclaw-gateway と openclaw-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.json に tools.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.sh で export が実行されているか確認:
bash -x ~/projects/openclaw/start-openclaw.sh 2>&1 | grep BRAVE
docker-compose.override.yml に BRAVE_API_KEY の行があるかも確認してください。
API キーのエラーが出る
pass show brave/openclaw の値が正しいか確認。取得し直した場合は pass edit brave/openclaw で更新できます。
おわりに
これで OpenClaw がリアルタイムのウェブ検索を使えるようになりました。
-
API キーは
passで管理 → ファイルに平文保存しない -
docker-compose.override.ymlで環境変数注入 → 設定ファイルにキーを書かない
この 2 つの原則は基礎編からの一貫した方針です。ツールや自動化機能を追加するときも同じパターンで安全に運用できます。
次回のツール編②では Playwright を使ったブラウザ操作の有効化を解説します。
ツール編:
- ① Brave Searchでウェブ検索を追加(本記事)
- ② Playwrightでブラウザ操作を有効化
Discussion