Hermes Agent Wiki 非公式・日本語wiki
この skill をそのまま使う: GitHub で原文を見る

英語原文・frontmatter 込みで、Hermes が読み込む実体そのままです(このページの本文は日本語版)。

Searxng Search

目次

70 以上の検索エンジンをまとめて引く、鍵の要らない無料の検索です。

skill の情報

提供元 追加の skill です。hermes skills install official/research/searxng-search で入れられます
パス optional-skills/research/searxng-search
バージョン 1.0.1
作者 hermes-agent
ライセンス MIT
対応プラットフォーム linux, macos
タグ search, searxng, meta-search, self-hosted, free, fallback
関連 skill duckduckgo-search, domain-intel

参考: SKILL.md 全文

SearXNG Search

SearXNG を使った無料のまとめ検索です。プライバシーを守る作りで、自分で立てて動かすこともでき、70 以上の検索エンジンへ同時に問い合わせます。

公開されている実体を使うなら API キーは要りません。すべてを自分の管理下に置きたいなら、自分で立てることもできます。ウェブ検索の主なツール一式(FIRECRAWL_API_KEY)が設定されていないときは、代わりの選択肢として自動的に現れます。

設定

SearXNG を使うには、自分の SearXNG の実体を指す SEARXNG_URL の環境変数が必要です:

# Public instances (no setup required)
SEARXNG_URL=https://searxng.example.com

# Self-hosted SearXNG
SEARXNG_URL=http://localhost:8888

実体が設定されていない場合、この skill は使えず、エージェントはほかの検索手段に切り替えます。

使えるかどうかの確かめ方

やり方を決める前に、実際に何が使えるのかを確かめてください:

# Check if SEARXNG_URL is set and the instance is reachable
curl -s --max-time 5 "${SEARXNG_URL}/search?q=test&format=json" | head -c 200

判断の流れ:

  1. SEARXNG_URL が設定されていて実体が応答するなら、SearXNG を使います
  2. SEARXNG_URL が未設定か、実体につながらないなら、ほかに使える検索ツールへ切り替えます
  3. 利用者が SearXNG そのものを求めているなら、実体を立てる手伝いをするか、公開されているものを探します

方法 1: curl を使う(おすすめ)

terminal から curl を使って、SearXNG の JSON API を呼びます。こうすれば、特定の Python パッケージが入っている前提を置かずに済みます。

# Text search (JSON output)
curl -s --max-time 10 \
  "${SEARXNG_URL}/search?q=python+async+programming&format=json&engines=google,bing&limit=10"

# With Safesearch off
curl -s --max-time 10 \
  "${SEARXNG_URL}/search?q=example&format=json&safesearch=0"

# Specific categories (general, news, science, etc.)
curl -s --max-time 10 \
  "${SEARXNG_URL}/search?q=AI+news&format=json&categories=news"

よく使うフラグ

フラグ 説明
q 検索語(URL エンコードします) q=python+async
format 出力の形式: json, csv, rss format=json
engines 検索エンジン名をカンマ区切りで engines=google,bing,ddg
limit 各エンジンあたりの最大件数(既定は 10) limit=5
categories 分野で絞る categories=news,science
safesearch 0=なし、1=ほどほど、2=厳しめ safesearch=0
time_range 期間で絞る: day, week, month, year time_range=week

JSON の結果を読み取る

# Extract titles and URLs from JSON
curl -s --max-time 10 "${SEARXNG_URL}/search?q=fastapi&format=json&limit=5" \
  | python3 -c "

data = json.load(sys.stdin)
for r in data.get('results', []):
    print(r.get('title',''))
    print(r.get('url',''))
    print(r.get('content','')[:200])
    print()
"

1 件ごとに次が返ります: titleurlcontent(抜粋)、engineparsed_urlimg_srcthumbnailauthorpublished_date

方法 2: requests を使った Python からの呼び出し

requests ライブラリを使って、Python から SearXNG の REST API を直接呼びます:


base_url = os.environ.get("SEARXNG_URL", "")
if not base_url:
    raise RuntimeError("SEARXNG_URL is not set")

query = "fastapi deployment guide"
params = {
    "q": query,
    "format": "json",
    "limit": 5,
    "engines": "google,bing",
}

resp = requests.get(f"{base_url}/search", params=params, timeout=10)
resp.raise_for_status()
data = resp.json()

for r in data.get("results", []):
    print(r["title"])
    print(r["url"])
    print(r.get("content", "")[:200])
    print()

SearXNG を自分で立てる

自分の SearXNG を動かすには:

# Using Docker
docker run -d -p 8888:8080 \
  -v $(pwd)/searxng:/etc/searxng \
  searxng/searxng:latest

# Then set
SEARXNG_URL=http://localhost:8888

pip で入れることもできます:

pip install searxng
# Edit /etc/searxng/settings.yml
searxng-run

公開されている SearXNG の実体はこちらです:

  • https://searxng.example.com(公開されているものに置き換えてください)

進め方: 検索してから本文を取り出す

SearXNG が返すのは見出し・URL・抜粋であって、ページの全文ではありません。全文がほしいときは、まず検索し、いちばん関係のある URL を web_extract、ブラウザのツール、curl のいずれかで取り出してください。

# Search for relevant pages
curl -s "${SEARXNG_URL}/search?q=fastapi+deployment&format=json&limit=3"
# Output: list of results with titles and URLs

# Then extract the best URL with web_extract

できないこと

  • 実体が使えるかどうか: SearXNG の実体が落ちていたりつながらなかったりすると、検索は失敗します。SEARXNG_URL が設定されていて、実体につながることを必ず確かめてください。
  • 本文は取れません: SearXNG が返すのは抜粋であって、ページの全文ではありません。記事の全文には web_extract、ブラウザのツール、curl を使ってください。
  • 回数の制限: 公開されている実体には回数制限があることがあります。自分で立てればこれを避けられます。
  • 使えるエンジンの範囲: どのエンジンを使えるかは、その SearXNG の設定次第です。無効にされているエンジンもあります。
  • 結果の新しさ: まとめ検索は外部のエンジンを束ねているので、結果の新しさはそれらのエンジン次第です。

困ったとき

症状 考えられる原因 どうするか
SEARXNG_URL が未設定 実体が設定されていません 公開されている SearXNG を使うか、自分で立ててください
接続を拒まれる 実体が動いていないか、URL が違います URL が正しいか、実体が動いているかを確かめてください
結果が空 実体がその検索語をはじいています 別の実体を試すか、自分で立ててください
応答が遅い 公開されている実体が混んでいます 自分で立てるか、混んでいない実体を使ってください
json 形式が使えない SearXNG の版が古いです format=rss を試すか、SearXNG を更新してください

つまずきやすいところ

  • SEARXNG_URL を必ず設定する: これがないと、この skill は動きません。
  • 検索語を URL エンコードする: curl では空白や記号を URL エンコードするか、Python なら urllib.parse.quote() を使ってください。
  • format=json を使う: 既定の形式は機械で読めないことがあります。JSON をはっきり指定してください。
  • 待ち時間を決める: つながらない実体で止まったままにならないよう、必ず --max-timetimeout= を使ってください。
  • 自分で立てるのがいちばん: 公開されている実体は落ちたり、回数を制限したり、はじいたりします。自分で立てた実体なら安定します。

実体の見つけ方

SEARXNG_URL が未設定のまま SearXNG について尋ねられたら、次のどちらかを手伝ってください:

  1. 公開されている SearXNG の実体を見つける(「public searxng instance」で検索します)
  2. Docker か pip で自分のものを用意する

公開されている実体の一覧はこちらにあります: https://searxng.org/