--- sidebar_position: 10 title: SearXNGでローカル検索APIを構築する description: プライバシー重視のメタ検索エンジンSearXNGをセルフホストして、無料で検索APIを手に入れる方法 hide_table_of_contents: false displayed_sidebar: null --- # SearXNGでローカル検索APIを構築する ローカルでClaude CodeやLLMエージェントを動かすとき、Web検索機能が欲しくなることがある。Brave APIやGoogle Custom Search APIは有料だったり、レート制限があったりする。 **SearXNG**をセルフホストすれば、**完全無料**で検索APIが手に入る。 ## SearXNGとは? SearXNGは**プライバシー重視のメタ検索エンジン**(オープンソース)。 ``` ユーザー → SearXNG → Google/Bing/DuckDuckGo等 ↓ 結果を集約してJSON返却 ``` 複数の検索エンジンに代理でクエリを投げて、結果をまとめて返す。 ### 特徴 | ポイント | 説明 | |----------|------| | **APIキー不要** | スクレイピング方式なので無料 | | **JSON API** | `format=json` で検索結果をJSON取得 | | **複数エンジン集約** | Google, Bing, DuckDuckGoなどを同時検索 | | **セルフホスト** | 自分のサーバーで完全コントロール | ## セットアップ ### 前提条件 - Docker環境(LXC、VM、物理サーバー等) - ポート8080が空いている ### ワンライナーでセットアップ ```bash curl -fsSL https://gitea.swallow.wjg.jp/swallow/searxng-setup/raw/branch/main/setup.sh | sudo bash ``` :::tip 手動セットアップ プライベートリポジトリなので、以下の手順でも可能です。 ::: ### 手動セットアップ ```bash # 必要なパッケージ sudo apt-get update sudo apt-get install -y docker.io curl # ディレクトリ作成 sudo mkdir -p /opt/searxng/searxng cd /opt/searxng # docker-compose.yml作成 sudo tee docker-compose.yml << 'EOF' version: '3.8' services: searxng: image: searxng/searxng:latest container_name: searxng restart: unless-stopped ports: - "8080:8080" volumes: - ./searxng:/etc/searxng:rw environment: - SEARXNG_BASE_URL=http://localhost:8080 EOF # 設定ファイル作成 sudo tee searxng/settings.yml << 'EOF' use_default_settings: true general: instance_name: "SearXNG Local" search: safe_search: 0 autocomplete: "duckduckgo" default_lang: "ja-JP" formats: - html - json server: limiter: false image_proxy: true ui: default_theme: simple default_locale: "ja" EOF # 起動 sudo docker compose up -d ``` ## 使い方 ### Web UI ブラウザで `http://localhost:8080` にアクセス。 ### JSON API ```bash # 基本的な検索 curl "http://localhost:8080/search?q=検索ワード&format=json" # 言語指定 curl "http://localhost:8080/search?q=test&format=json&language=ja-JP" # カテゴリ指定 curl "http://localhost:8080/search?q=test&format=json&categories=general" ``` ### レスポンス例 ```json { "results": [ { "title": "Example Title", "url": "https://example.com", "content": "Description...", "engine": "google", "engines": ["google", "bing"], "score": 4.0 } ] } ``` ## Claude Code連携 ローカルのClaude CodeからSearXNGを検索ツールとして使う。 ### Pythonで使う ```python import requests def search(query: str, num_results: int = 5) -> list: """SearXNGで検索""" response = requests.get( "http://localhost:8080/search", params={"q": query, "format": "json"} ) return response.json()["results"][:num_results] # 使用例 results = search("Python async await") for r in results: print(f"- {r['title']}: {r['url']}") ``` ### MCP Toolとして ```json { "tools": [ { "name": "web_search", "description": "Search the web using SearXNG", "inputSchema": { "type": "object", "properties": { "query": {"type": "string"} }, "required": ["query"] } } ] } ``` ## 有効な検索エンジン デフォルトで以下が有効: - **Google** - Web検索 - **Bing** - Web検索 - **DuckDuckGo** - プライバシー重視 - **Brave** - 広告なし - **Wikipedia** - 百科事典 - **GitHub** - コード検索 `settings.yml` でエンジンの有効/無効を切り替え可能。 ## トラブルシューティング ### 検索結果が少ない 一部のエンジンがIPブロックされている可能性。`settings.yml` で別のエンジンを有効化。 ### 起動しない ```bash # ログ確認 docker logs searxng # 再起動 cd /opt/searxng && docker compose restart ``` ### アップデート ```bash cd /opt/searxng docker compose pull docker compose up -d ``` ## Brave API との比較 | | SearXNG | Brave API | |---|---------|-----------| | 料金 | 無料 | 有料 | | セットアップ | 必要 | 不要 | | レート制限 | なし | あり | | 安定性 | 自己責任 | 高い | | エンジン | 複数集約 | Braveのみ | **おすすめ構成:** - 通常 → Brave API(安定) - フォールバック → SearXNG - ローカル開発 → SearXNG一本 ## まとめ SearXNGをセルフホストすれば: - ✅ 完全無料で検索API - ✅ レート制限なし - ✅ 複数エンジンの結果を集約 - ✅ ローカルLLM/エージェントと連携 ローカルでClaude Codeを動かすなら、一つ立てておくと便利! ## 参考リンク - [SearXNG公式ドキュメント](https://docs.searxng.org/) - [SearXNG GitHub](https://github.com/searxng/searxng) - [Docker Hub - searxng/searxng](https://hub.docker.com/r/searxng/searxng) --- *この記事は2026年2月時点の情報です。*