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判断の流れ:
SEARXNG_URLが設定されていて実体が応答するなら、SearXNG を使いますSEARXNG_URLが未設定か、実体につながらないなら、ほかに使える検索ツールへ切り替えます- 利用者が 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 件ごとに次が返ります: title、url、content(抜粋)、engine、parsed_url、img_src、thumbnail、author、published_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:8888pip で入れることもできます:
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-timeかtimeout=を使ってください。 - 自分で立てるのがいちばん: 公開されている実体は落ちたり、回数を制限したり、はじいたりします。自分で立てた実体なら安定します。
実体の見つけ方
SEARXNG_URL が未設定のまま SearXNG について尋ねられたら、次のどちらかを手伝ってください:
- 公開されている SearXNG の実体を見つける(「public searxng instance」で検索します)
- Docker か pip で自分のものを用意する
公開されている実体の一覧はこちらにあります: https://searxng.org/