mcpField
S
searxng-search

searxng-search

github.com/ypares生産性30830 回インストール1 日前に更新
リポジトリ

searxng-search について

SearXNG Searchは、ローカルのSearXNGメタ検索環境と検索用コマンド例を提供します。ウェブ、コード、リポジトリ、パッケージをカテゴリ別にJSONで検索したいユーザー向けで、補助スクリプトがコンテナの起動と設定を担います。

主な機能

  1. 01ローカルSearXNGの起動と停止
  2. 02検索結果のJSON出力
  3. 03ウェブ、コード、リポジトリの検索
  4. 04カテゴリ別のパッケージ検索
  5. 05結果数の指定とカテゴリの併用

活用シーン

  1. 01ローカル環境からのウェブ検索
  2. 02Cargoやnpmパッケージの検索
  3. 03コードリポジトリやIT情報の特定
  4. 04構造化された検索結果の取得と絞り込み

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ypares/agent-skills --skill searxng-search

インストール後、Claude Code で/searxng-searchを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
references/
agent-usage.md
category-guide.md
package-engine-status.md
pypi-direct-search.md
scripts/
searx
start-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

コメント