SearXNG Search Skill
name: searxng
by clockworksquirrel · published 2026-03-22
$ claw add gh:clockworksquirrel/clockworksquirrel-searxng-local---
name: searxng
description: Search the web using a self-hosted SearXNG instance. Privacy-respecting metasearch that aggregates results from multiple engines.
metadata:
clawdbot:
config:
optionalEnv:
- SEARXNG_URL
---
# SearXNG Search Skill
Search the web using your self-hosted SearXNG instance. Privacy-respecting metasearch that aggregates results from Google, DuckDuckGo, Brave, Startpage, and 70+ other engines.
Prerequisites
SearXNG running locally or on a server. Quick Docker setup:
mkdir -p ~/Projects/searxng/searxng
cd ~/Projects/searxng
# Create docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8080/
restart: unless-stopped
EOF
# Create settings.yml with JSON API enabled
cat > searxng/settings.yml << 'EOF'
use_default_settings: true
server:
secret_key: "change-me-to-random-string"
bind_address: "0.0.0.0"
port: 8080
search:
safe_search: 0
autocomplete: "google"
default_lang: "en"
formats:
- html
- json
EOF
# Start SearXNG
docker compose up -dConfiguration
Set the SearXNG URL (defaults to http://localhost:8080):
export SEARXNG_URL="http://localhost:8080"Usage Examples
Basic Search
curl "http://localhost:8080/search?q=your+query&format=json" | jq '.results[:5]'Search with Categories
# General web search
curl "http://localhost:8080/search?q=query&categories=general&format=json"
# Images
curl "http://localhost:8080/search?q=query&categories=images&format=json"
# News
curl "http://localhost:8080/search?q=query&categories=news&format=json"
# Videos
curl "http://localhost:8080/search?q=query&categories=videos&format=json"
# IT/Tech documentation
curl "http://localhost:8080/search?q=query&categories=it&format=json"
# Science/Academic
curl "http://localhost:8080/search?q=query&categories=science&format=json"Search with Language/Region
curl "http://localhost:8080/search?q=query&language=en-US&format=json"
curl "http://localhost:8080/search?q=query&language=de-DE&format=json"Paginated Results
# Page 2 (results 11-20)
curl "http://localhost:8080/search?q=query&pageno=2&format=json"Response Format
Each result includes:
Shell Function
Add to your `.zshrc` or `.bashrc`:
searxng() {
local query="$*"
local url="${SEARXNG_URL:-http://localhost:8080}"
curl -s "${url}/search?q=$(echo "$query" | sed 's/ /+/g')&format=json" | \
jq -r '.results[:10][] | "[\(.score | floor)] \(.title)\n \(.url)\n \(.content // "No description")\n"'
}Usage: `searxng how to make sourdough bread`
Docker Management
# Start
cd ~/Projects/searxng && docker compose up -d
# Stop
docker compose down
# View logs
docker compose logs -f searxng
# Restart
docker compose restartTroubleshooting
**Container won't start:**
docker compose logs searxng**JSON format not working:**
Ensure `formats: [html, json]` is in your settings.yml
**No results:**
Some engines may be rate-limited. Check logs for errors.
Why SearXNG?
More tools from the same signal band
Order food/drinks (点餐) on an Android device paired as an OpenClaw node. Uses in-app menu and cart; add goods, view cart, submit order (demo, no real payment).
Sign plugins, rotate agent credentials without losing identity, and publicly attest to plugin behavior with verifiable claims and authenticated transfers.
The philosophical layer for AI agents. Maps behavior to Spinoza's 48 affects, calculates persistence scores, and generates geometric self-reports. Give your...