walterra

searxng-search

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.

walterra 34 3 Updated 4mo ago

Resources

4
GitHub

Install

npx skillscat add walterra/agent-tools/searxng-search

Install via the SkillsCat registry.

SKILL.md

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.

# Using Docker (recommended) - mount the included settings to enable JSON API
docker run -d -p 8080:8080 --name searxng \
  -v {baseDir}/searxng/settings.yml:/etc/searxng/settings.yml:ro \
  searxng/searxng

# Or see https://docs.searxng.org/admin/installation.html

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"                    # Basic search (5 results)
{baseDir}/scripts/search.js "query" -n 10              # More results
{baseDir}/scripts/search.js "query" --content          # Include page content as markdown
{baseDir}/scripts/search.js "query" -n 3 --content     # Combined

Examples

# Search for documentation
{baseDir}/scripts/search.js "typescript generics tutorial"

# Research with content extraction
{baseDir}/scripts/search.js "react server components" -n 5 --content

# Find API references
{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

# Extract documentation page
{baseDir}/scripts/content.js https://docs.python.org/3/tutorial/classes.html

# Extract blog post
{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