Get the FREE Ultimate OpenClaw Setup Guide →
n

Searxng Web Search

Scanned

@noblepayne

npx machina-cli add skill @noblepayne/searxng-local-search --openclaw
Files (1)
SKILL.md
3.6 KB

SearXNG Web Search

Search the web using a self-hosted SearXNG instance. This skill provides access to web search results through the SearXNG JSON API, with built-in rate limiting, error handling, and result formatting.

When to Use

Use this skill when you need to:

  • Find current information or recent news
  • Research topics beyond your knowledge cutoff
  • Look up documentation or technical references
  • Verify facts or check current status
  • Find URLs or resources on specific topics
  • Search for code examples or solutions

Configuration

Set the SEARXNG_URL environment variable to your SearXNG instance:

export SEARXNG_URL="http://localhost:8888"

Or use the default (http://localhost:8888) if not set.

Usage

Execute the search script with your query:

bb scripts/search.clj "your search query"

Advanced Options

Pass additional parameters as JSON:

bb scripts/search.clj "your query" '{"category": "news", "time_range": "day", "num_results": 10}'

Available options:

  • category - Filter by category: general, news, images, videos, it, science
  • time_range - Time filter: day, week, month, year
  • language - Language code (default: en)
  • num_results - Number of results to return (default: 5)

Output Format

The script returns formatted search results as text:

Search Results for "your query"
Found 42 total results

1. Result Title [Score: 1.85]
   URL: https://example.com/page
   Description snippet from the page...
   Engines: google, bing

2. Another Result [Score: 1.62]
   ...

Error Handling

The script handles common errors gracefully:

  • Network timeouts (30s timeout)
  • SearXNG unavailable (clear error message)
  • Invalid queries (error details)
  • Rate limiting (429 responses)
  • Empty results (informative message)

Rate Limiting

The script implements basic rate limiting:

  • Minimum 1 second between requests
  • Uses filesystem-based state (.searxng-last-request)
  • Prevents accidental spam

Examples

Basic Search

bb scripts/search.clj "NixOS configuration"

News Search

bb scripts/search.clj "AI developments" '{"category": "news", "time_range": "week"}'

Technical Search

bb scripts/search.clj "babashka http client" '{"category": "it", "num_results": 3}'

Recent Results Only

bb scripts/search.clj "product launch" '{"time_range": "day"}'

Troubleshooting

"SEARXNG_URL not set"

  • Set the environment variable: export SEARXNG_URL="http://localhost:8888"

Connection timeout

  • Check that SearXNG is running: curl $SEARXNG_URL/search?q=test&format=json
  • Verify firewall settings
  • Check service status: systemctl status searx

Empty results

  • Try a broader query
  • Remove filters and try again
  • Check SearXNG logs: journalctl -u searx -n 50

Rate limit errors

  • Wait a few seconds between searches
  • The script enforces minimum 1s delay automatically

Implementation Notes

The search script (scripts/search.clj) uses:

  • babashka.http-client for HTTP requests
  • Clojure's cheshire.core for JSON parsing
  • Filesystem-based rate limiting
  • 30-second timeout with proper error messages
  • Result scoring and sorting for best results first

For detailed API documentation, see references/api-guide.md.

Source

git clone https://clawhub.ai/noblepayne/searxng-local-searchView on GitHub

Overview

SearXNG Web Search queries a self-hosted SearXNG API to return ranked results with titles, URLs, and content snippets. It’s ideal for current information, research topics, documentation lookup, and fact-checking beyond your knowledge cutoff.

How This Skill Works

The skill sends your query to SEARXNG_URL via the JSON API, then handles HTTP requests with babashka.http-client, applies built-in rate limiting, and formats the results with scores, titles, URLs, and snippets for easy scanning.

When to Use It

  • Find current information or recent news
  • Research topics beyond your knowledge cutoff
  • Look up documentation or technical references
  • Verify facts or check current status
  • Find URLs or resources on specific topics

Quick Start

  1. Step 1: Set the SearXNG URL: export SEARXNG_URL="http://localhost:8888"
  2. Step 2: Run a query: bb scripts/search.clj "your search query"
  3. Step 3: Optional: pass filters as JSON like: bb scripts/search.clj "your query" '{"category": "news", "time_range": "week"}'

Best Practices

  • Set SEARXNG_URL correctly in your environment
  • Use category, time_range, and language filters to narrow results
  • Tune num_results to balance breadth and speed
  • Rely on the description snippets to judge relevance
  • Respect rate limits (minimum 1s between requests, tracked by a local state file)

Example Use Cases

  • NixOS configuration search (basic)
  • AI developments — news search with category: news and time_range: week
  • babashka http client — IT category, num_results: 3
  • product launch — time_range: day
  • Look up library documentation (general documentation search)

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers