Use it when your goal in research and sources is clear and you can limit it to the data and actions it actually needs.
Searxng Search
Free keyless meta-search aggregating 70+ engines
What does it add to Hermes?
Free keyless meta-search aggregating 70+ engines
Searxng Search is a skill related to research and sources. It gives the agent a way to find external information and sources instead of relying only on model memory.
This plain-language explanation is based on the publisher description. The original text remains visible for verification.
Do not add it merely to experiment when Hermes already has a simpler path, or when you cannot review its source and permissions.
Best for users who want a repeatable way of working inside Hermes.
Ask for one recent fact with two sources, then open both links and verify dates and evidence.
Free keyless meta-search aggregating 70+ engines
This entry was indexed from Hermes Optional Skills. Our explanation interprets the type and domain without inventing a capability not present upstream.
The source is official or editorially reviewed, but you still need to review permissions and version compatibility.
Inspect, install, then test.
- 01Open the source
Match the publisher, license, and description to your need. Check the real update history.
- 02Review permissions and secrets
Never paste a secret value into this site. Use environment-variable names and grant the smallest scope.
- 03Copy setup only after review
The controls below copy text. They do not execute commands on your device.
- 04Test with a non-sensitive task
Inspect the visible tools, then exclude write or delete tools you do not need.
Review the command, then copy it.
hermes skills install searxng-searchHermes Belarabi does not execute this command. Installation happens on your device and remains subject to Hermes scanning and your review.
Exactly what Hermes loads when this skill runs.
Reproduced from the official documentation. Read it before enabling the skill: this text becomes the agent's instructions.
Free keyless meta-search aggregating 70+ engines.
Skill metadata
A lookup table. Do not read it all; find the row that applies to you.
| Source | Optional — install with hermes skills install official/research/searxng-search |
| Path | optional-skills/research/searxng-search |
| Version | 1.0.1 |
| Author | hermes-agent |
| License | MIT |
| Platforms | linux, macos |
| Tags | search, searxng, meta-search, self-hosted, free, fallback |
| Related skills | duckduckgo-search, domain-intel |
Reference: full SKILL.md
Settings you configure once. Change one at a time so you can see what each does. Set FIRECRAWL_API_KEY in your environment, not in the chat.
Free meta-search using SearXNG ↗ — a privacy-respecting, self-hosted search aggregator that queries 70+ search engines simultaneously.
No API key required when using a public instance. Can also be self-hosted for full control. Automatically appears as a fallback when the main web search toolset (FIRECRAWL_API_KEY) is not configured.
Configuration
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
SearXNG requires a SEARXNG_URL environment variable pointing to your SearXNG instance:
# Public instances (no setup required)
SEARXNG_URL=https://searxng.example.com
# Self-hosted SearXNG
SEARXNG_URL=http://localhost:8888If no instance is configured, this skill is unavailable and the agent falls back to other search options.
Detection Flow
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
Check what is actually available before choosing an approach:
# 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 200Decision tree:
- If
SEARXNG_URLis set and the instance responds, use SearXNG - If
SEARXNG_URLis unset or unreachable, fall back to other available search tools - If the user wants SearXNG specifically, help them set up an instance or find a public one
Method 1: CLI via curl (Preferred)
A lookup table. Do not read it all; find the row that applies to you.
Use curl via terminal to call the SearXNG JSON API. This avoids assuming any particular Python package is installed.
# 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"Common CLI Flags
| Flag | Description | Example |
|---|---|---|
q | Query string (URL-encoded) | q=python+async |
format | Output format: json, csv, rss | format=json |
engines | Comma-separated engine names | engines=google,bing,ddg |
limit | Max results per engine (default 10) | limit=5 |
categories | Filter by category | categories=news,science |
safesearch | 0=none, 1=moderate, 2=strict | safesearch=0 |
time_range | Filter: day, week, month, year | time_range=week |
Parsing JSON Results
# 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()
"Returns per result: title, url, content (snippet), engine, parsed_url, img_src, thumbnail, author, published_date
Method 2: Python API via `requests`
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
Use the SearXNG REST API directly from Python with the requests library:
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()Self-Hosting SearXNG
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
To run your own SearXNG instance:
# Using Docker
docker run -d -p 8888:8080 \
-v $(pwd)/searxng:/etc/searxng \
searxng/searxng:latest
# Then set
SEARXNG_URL=http://localhost:8888Or install via pip:
pip install searxng
# Edit /etc/searxng/settings.yml
searxng-runPublic SearXNG instances are available at:
https://searxng.example.com(replace with any public instance)
Workflow: Search then Extract
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
SearXNG returns titles, URLs, and snippets — not full page content. To get full page content, search first and then extract the most relevant URL with web_extract, browser tools, or 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_extractLimitations
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
- Instance availability: If the SearXNG instance is down or unreachable, search fails. Always check
SEARXNG_URLis set and the instance is reachable. - No content extraction: SearXNG returns snippets, not full page content. Use
web_extract, browser tools, orcurlfor full articles. - Rate limiting: Some public instances limit requests. Self-hosting avoids this.
- Engine coverage: Available engines depend on the SearXNG instance configuration. Some engines may be disabled.
- Results freshness: Meta-search aggregates external engines — result freshness depends on those engines.
Troubleshooting
A troubleshooting section. Find the symptom that matches yours rather than reading it end to end.
| Problem | Likely Cause | What To Do |
|---|---|---|
SEARXNG_URL not set | No instance configured | Use a public SearXNG instance or set up your own |
| Connection refused | Instance not running or wrong URL | Check the URL is correct and the instance is running |
| Empty results | Instance blocks the query | Try a different instance or self-host |
| Slow responses | Public instance under load | Self-host or use a less-loaded public instance |
json format not supported | Old SearXNG version | Try format=rss or upgrade SearXNG |
Pitfalls
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
- Always set
SEARXNG_URL: Without it, the skill cannot function. - URL-encode queries: Spaces and special characters must be URL-encoded in curl, or use
urllib.parse.quote()in Python. - Use
format=json: The default format may not be machine-readable. Always request JSON explicitly. - Set a timeout: Always use
--max-timeortimeout=to avoid hanging on unreachable instances. - Self-hosting is best: Public instances may go down, rate-limit, or block. A self-hosted instance is reliable.
Instance Discovery
Settings you configure once. Change one at a time so you can see what each does. Set SEARXNG_URL in your environment, not in the chat.
If SEARXNG_URL is not set and the user asks about SearXNG, help them either:
- Find a public SearXNG instance (search for "public searxng instance")
- Set up their own with Docker or pip
Public instances are listed at: https://searxng.org/