| name | searxng-search |
| description | Web search and content extraction via SearXNG metasearch engine. Use when you need to search the web, look up documentation, research APIs, find current information, or extract content from URLs. No API keys required, no rate limits, privacy-preserving. |
| metadata | {"version":"0.0.1","author":"walterra","repository":"https://github.com/walterra/agent-tools"} |
SearXNG Search
Local web search using SearXNG metasearch engine. No external API keys required.
Prerequisites
- SearXNG instance running locally (default:
http://localhost:8080) or accessible via network
- Node.js 18+ installed
Quick SearXNG Setup
The JSON API must be enabled in SearXNG settings (it's disabled by default).
This skill includes a pre-configured settings.yml that enables it.
docker run -d -p 8080:8080 --name searxng \
-v {baseDir}/searxng/settings.yml:/etc/searxng/settings.yml:ro \
searxng/searxng
Note: The default SearXNG image only enables HTML format. Without the
custom settings, the JSON API will return HTTP 403 Forbidden.
Setup
Before first use, install dependencies:
cd {baseDir} && npm install
Environment
The skill auto-detects whether it's running locally or in Docker:
| Environment | Default URL | How detected |
|---|
| Local | http://localhost:8080 | No /.dockerenv file |
| Docker | http://searxng:8080 | /.dockerenv exists |
Override with SEARXNG_URL environment variable if needed.
Search
{baseDir}/scripts/search.js "query"
{baseDir}/scripts/search.js "query" -n 10
{baseDir}/scripts/search.js "query" --content
{baseDir}/scripts/search.js "query" -n 3 --content
Examples
{baseDir}/scripts/search.js "typescript generics tutorial"
{baseDir}/scripts/search.js "react server components" -n 5 --content
{baseDir}/scripts/search.js "site:docs.github.com REST API" -n 3
Extract Page Content
Fetch a URL and extract readable content as markdown:
{baseDir}/scripts/content.js https://example.com/article
Examples
{baseDir}/scripts/content.js https://docs.python.org/3/tutorial/classes.html
{baseDir}/scripts/content.js https://blog.example.com/some-article
Output Format
Search Results
--- Result 1 ---
Title: Page Title
Link: https://example.com/page
Snippet: Description from search results
Content: (if --content flag used)
Markdown content extracted from the page...
--- Result 2 ---
...
Content Extraction
Title: Article Title
URL: https://example.com/article
--- Content ---
Markdown content of the page...
Advantages
- ✅ No API keys required
- ✅ No rate limits
- ✅ Privacy-preserving (local instance)
- ✅ Aggregates results from multiple search engines
- ✅ Fast and reliable
- ✅ Works locally and in Docker containers
When to Use
- Searching for documentation or API references
- Looking up facts or current information
- Researching libraries, frameworks, or tools
- Fetching content from specific URLs
- Any task requiring web search without external dependencies
Troubleshooting
Connection refused
SearXNG is not running. Start it with:
docker run -d -p 8080:8080 --name searxng \
-v {baseDir}/searxng/settings.yml:/etc/searxng/settings.yml:ro \
searxng/searxng
HTTP 403 Forbidden
The JSON API is not enabled. The default SearXNG only allows HTML format.
Ensure you mount the included settings.yml when starting the container:
docker stop searxng && docker rm searxng
docker run -d -p 8080:8080 --name searxng \
-v {baseDir}/searxng/settings.yml:/etc/searxng/settings.yml:ro \
searxng/searxng
Custom SearXNG URL
Set the environment variable:
export SEARXNG_URL=http://your-searxng-host:8080