searxng-search について
SearXNG Searchは、ローカルのSearXNGメタ検索環境と検索用コマンド例を提供します。ウェブ、コード、リポジトリ、パッケージをカテゴリ別にJSONで検索したいユーザー向けで、補助スクリプトがコンテナの起動と設定を担います。
主な機能
- 01ローカルSearXNGの起動と停止
- 02検索結果のJSON出力
- 03ウェブ、コード、リポジトリの検索
- 04カテゴリ別のパッケージ検索
- 05結果数の指定とカテゴリの併用
活用シーン
- 01ローカル環境からのウェブ検索
- 02Cargoやnpmパッケージの検索
- 03コードリポジトリやIT情報の特定
- 04構造化された検索結果の取得と絞り込み
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ypares/ agent-skills --skill searxng-searchインストール後、Claude Code で/searxng-searchを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/agent-usage.mdcategory-guide.mdpackage-engine-status.mdpypi-direct-search.mdscripts/searxstart-searxng詳細
SearXNG 検索
SearXNG は、ローカルで実行できるプライバシーに配慮したメタ検索エンジンです。複数の検索エンジンやパッケージリポジトリから結果を集約し、クリーンな JSON 出力を返します。
クイックスタート
SearXNG を起動:
start-searxng --detach
これにより、以下が実行されます:
- podman または docker を自動検出
- JSON 出力を有効にした最小限の設定を作成
http://localhost:8888で SearXNG を起動- 準備が整うまで待機
SearXNG を停止:
podman stop searxng # or: docker stop searxng
カスタムポート:
start-searxng --port 9999 --detach
クイックリファレンス
| タスク | コマンド | カテゴリ |
|---|---|---|
| 一般的なウェブ検索 | curl "http://localhost:8888/search?q=<query>&format=json" | general |
| Cargo/crates.io を検索 | curl "http://localhost:8888/search?q=<crate>&format=json&categories=cargo" | cargo |
| npm パッケージを検索 | curl "http://localhost:8888/search?q=<pkg>&format=json&categories=packages" | packages |
| コードリポジトリを検索 | curl "http://localhost:8888/search?q=<query>&format=json&categories=repos" | repos |
| IT リソースを検索 | curl "http://localhost:8888/search?q=<query>&format=json&categories=it" | it |
| 結果を制限 | URL に &limit=N を追加 | - |
| 複数カテゴリ | &categories=cat1,cat2 | - |
利用可能なカテゴリ
すべてのカテゴリを表示するには、以下を実行します:
curl -s "http://localhost:8888/config" | jq '.categories'
主なカテゴリ:
- general: 一般的なウェブ検索(デフォルト)
- cargo: crates.io の Rust crates
- packages: マルチリポジトリ(npm、rubygems、haskell/hoogle、hex、packagist、metacpan、pub.dev、pkg.go.dev、docker hub、alpine など)
- it: IT/技術リソース(GitHub、Docker Hub、crates.io を含む)
- repos: コードリポジトリ
- code: コード検索
- scientific publications: 学術論文
- news、videos、images、books など
パッケージ検索のテスト結果の詳細については、package-engine-status.md を参照してください。
JSON レスポンスの構造
{
"query": "search term",
"number_of_results": 0,
"results": [
{
"url": "https://example.com",
"title": "Result Title",
"content": "Snippet of content...",
"publishedDate": "2025-01-01T00:00:00",
"engine": "duckduckgo",
"engines": ["duckduckgo", "startpage"],
"score": 3.0,
"category": "general"
}
],
"answers": [], // Direct answers/infoboxes
"suggestions": [], // Search suggestions
"corrections": [], // Query corrections
"infoboxes": [], // Knowledge panels
"unresponsive_engines": []
}
一般的な使用パターン
1. パッケージリポジトリの検索
Cargo/Rust crates:
curl -s "http://localhost:8888/search?q=tokio&format=json&categories=cargo" | \
jq '.results[] | {title, url, content}'
npm パッケージ:
curl -s "http://localhost:8888/search?q=express&format=json&categories=packages" | \
jq '.results[] | select(.engines[] == "npm") | {title, url, content}'
PyPI パッケージ(回避策 - 以下を参照):
# PyPI engine is enabled but not returning results in current SearXNG config
# Use direct API or qypi CLI instead (see PyPI Workaround section)
2. フィルタリングを伴うウェブ検索
IT/技術検索:
curl -s "http://localhost:8888/search?q=rust+async&format=json&categories=it" | \
jq '.results[0:5] | .[] | {title, url, engines}'
GitHub リポジトリ:
curl -s "http://localhost:8888/search?q=machine+learning&format=json&categories=repos" | \
jq '.results[] | select(.engines[] == "github") | {title, url}'
3. 特定の情報の抽出
上位 3 件の結果を取得:
curl -s "http://localhost:8888/search?q=rust+ownership&format=json" | \
jq '.results[0:3] | .[] | {title, url, content}'
どのエンジンが結果を返したかを確認:
curl -s "http://localhost:8888/search?q=python&format=json" | \
jq '.results[0].engines'
アンサーボックス/インフォボックスを取得:
curl -s "http://localhost:8888/search?q=rust+language&format=json" | \
jq '.infoboxes, .answers'
PyPI の回避策
PyPI は(有効になっているにもかかわらず)SearXNG で結果を返さないため、以下の代替手段を使用してください:
オプション 1: PyPI JSON API を直接利用
# Search (limited to simple package name matching)
curl -s "https://pypi.org/pypi/<package>/json" | jq '.info | {name, summary, version, home_page}'
# Example:
curl -s "https://pypi.org/pypi/requests/json" | jq '.info.summary'
オプション 2: qypi CLI ツール
# Install
uvx qypi search pandas --json
# Get package info
uvx qypi info requests --json
# List releases
uvx qypi releases flask --json
詳細については、references/pypi-direct-search.md を参照してください。
Nushell との統合
ヘルパー関数を作成します:
def searx [
query: string,
--category (-c): string = "general",
--limit (-l): int = 10
] {
http get $"http://localhost:8888/search?q=($query | url encode)&format=json&categories=($category)"
| get results
| first $limit
| select title url content engines
}
使用法:
searx "tokio async" --category cargo --limit 5
searx "flask tutorial" --category general
デバッグ
SearXNG の設定を確認:
curl -s "http://localhost:8888/config" | jq '.engines[] | select(.name == "pypi")'
エンジンのエラーを確認:
curl -s "http://localhost:8888/search?q=test&format=json" | jq '.unresponsive_engines'
特定のエンジンをテスト:
curl -s "http://localhost:8888/search?q=flask&format=json&engines=pypi" | jq .
既知の問題
- PyPI エンジンは有効になっているが動作しない: 回避策として直接 API または qypi CLI を使用してください
- Cargo カテゴリが空の結果を返すことがある:
categories=packagesまたはcategories=itを試してください。これらにも crates.io が含まれています - レート制限: 短時間にリクエストが多すぎると、SearXNG がレート制限を行う場合があります
設定
ヘルパースクリプトの使用(推奨)
start-searxng スクリプトは、最小限の設定を自動的に作成します:
start-searxng --help
デフォルトの設定には以下が含まれます:
use_default_settings: true(SearXNG のすべてのデフォルトを継承)- JSON 形式が有効
- レート制限が無効(ローカル用途)
- シークレットキー(本番環境では変更してください!)
独自の設定の使用
start-searxng --config /path/to/your/config/dir
設定ディレクトリには settings.yml が含まれている必要があります。
手動でのコンテナ起動
# Create config
mkdir -p /tmp/searxng-config
cat > /tmp/searxng-config/settings.yml << 'EOF'
use_default_settings: true
search:
formats:
- html
- json
server:
secret_key: "change-me-in-production"
bind_address: "0.0.0.0"
port: 8080
EOF
# Start with podman
podman run --rm -d --name searxng \
-p 8888:8080 \
-v /tmp/searxng-config:/etc/searxng:Z \
docker.io/searxng/searxng:latest
# Or with docker
docker run --rm -d --name searxng \
-p 8888:8080 \
-v /tmp/searxng-config:/etc/searxng \
docker.io/searxng/searxng:latest
ログの確認
podman logs searxng # or: docker logs searxng
高度な設定
すべてのオプションについては、SearXNG 設定ドキュメント を参照してください。
デフォルトに JSON 出力を追加するための最小限の設定:
use_default_settings: true
search:
formats:
- html
- json