skills/searxng/SKILL.md
Privacy-respecting web search powered by a local SearXNG instance. Use when searching the web, looking up information, researching topics, or needing quick answers. Supports multiple categories including general, images, videos, news, and more. Aggregates results from 70+ search engines without tracking.
npx skillsauth add stvlynn/skills searxngInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Privacy-respecting web search powered by a local SearXNG metasearch engine.
This skill provides fast, private web search by running a local SearXNG instance. It aggregates results from 70+ search engines without tracking or profiling.
If you already have SearXNG running, skip to Configuration.
~/service/searxng)mkdir -p ~/service/searxng/config ~/service/searxng/data
cd ~/service/searxng
docker-compose.ymlversion: '3.8'
services:
searxng:
image: docker.io/searxng/searxng:latest
container_name: searxng
restart: unless-stopped
ports:
- "8888:8080"
volumes:
- "./config:/etc/searxng:rw"
- "./data:/var/cache/searxng:rw"
environment:
- SEARXNG_BASE_URL=http://localhost:8888/
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
config/settings.ymluse_default_settings: true
server:
secret_key: "CHANGE_ME_TO_A_RANDOM_STRING" # ← 必须修改!
limiter: false # 本地使用可关闭限流
image_proxy: true
port: 8080
bind_address: "0.0.0.0"
search:
safe_search: 0
autocomplete: "google"
default_lang: "en"
formats:
- html
- json # ← 必须启用 JSON,脚本依赖此格式
ui:
default_theme: simple
theme_args:
simple_style: auto
重要:
secret_key必须替换为一个随机字符串。可以用以下命令生成:openssl rand -hex 32
cd ~/service/searxng
docker compose up -d
# 检查容器运行状态
docker compose ps
# 测试 Web 界面
curl -s http://localhost:8888/ | grep -o "searxng" && echo "OK"
# 测试 JSON API(脚本依赖此接口)
curl -s -X POST http://localhost:8888/search \
-d 'q=test&format=json&categories=general' \
-H 'Content-Type: application/x-www-form-urlencoded' | python3 -m json.tool | head -5
| 问题 | 解决方法 |
|------|----------|
| 端口 8888 被占用 | 修改 docker-compose.yml 中的端口映射,如 "9999:8080" |
| JSON API 返回 HTML | 确认 settings.yml 的 search.formats 包含 json |
| 容器启动后立即退出 | docker compose logs 查看错误,通常是 secret_key 未设置 |
| 搜索无结果 | 部分引擎有区域限制,检查网络环境或换用其他引擎 |
如果将 SearXNG 暴露到公网,建议启用 limiter + Valkey:
# docker-compose.yml 追加
valkey:
image: docker.io/valkey/valkey:8-alpine
container_name: valkey
restart: unless-stopped
command: valkey-server --save 30 1 --loglevel warning
volumes:
- "./valkey-data:/data"
# settings.yml 修改
server:
limiter: true
valkey:
url: valkey://valkey:6379/0
http://localhost:8888SEARXNG_URL=http://localhost:8888 # SearXNG instance URL
SEARXNG_TIMEOUT=10 # Request timeout in seconds
SEARXNG_MAX_RESULTS=10 # Maximum results to return
python3 scripts/search.py -q "your search query"
# Image search
python3 scripts/search.py -q "cute cats" -c images
# Video search
python3 scripts/search.py -q "tutorial" -c videos
# News search
python3 scripts/search.py -q "AI news" -c news
# Files (PDF, docs, etc.)
python3 scripts/search.py -q "research paper" -c files
# Limit results
python3 scripts/search.py -q "python" -l 5
# Specific language
python3 scripts/search.py -q "中文" --language zh
# Safe search level (0-2)
python3 scripts/search.py -q "family" --safe-search 1
# JSON output
python3 scripts/search.py -q "AI" --json
# Quiet mode (just URLs)
python3 scripts/search.py -q "news" --quiet
| Category | Description |
|----------|-------------|
| general (default) | General web search |
| images | Image search |
| videos | Video search |
| news | News articles |
| files | Documents (PDF, etc.) |
| map | Map results |
| music | Music/Audio |
| social_media | Social media |
| it | IT/Computing |
| science | Scientific papers |
| shopping | Products |
| economic | Business/Finance |
| entertainment | Entertainment |
| repositories | Code repositories |
Use when:
Don't use when:
🔍 Search: "your query"
📂 Category: general
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Title
🌐 https://example.com
📝 Description...
⚙️ Source: engine-name
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Found 5 results in 0.32s
{
"query": "search term",
"category": "general",
"results": [
{
"title": "Result Title",
"url": "https://example.com",
"description": "Result description",
"engine": "google"
}
],
"count": 5,
"time_seconds": 0.32
}
# Check status
bash manage.sh status
# Start / Stop / Restart
bash manage.sh start
bash manage.sh stop
bash manage.sh restart
# View logs
bash manage.sh logs
tools
小红书搜索、发布、获取帖子详情。使用本地 MCP 服务器访问小红书内容,需要先登录。适用于搜索旅游攻略、美食推荐、获取帖子详情等场景。
tools
Manage Telegram sticker packs via tsticker CLI. Init, push, sync, download, and trace sticker packs. Use when user wants to create/update Telegram sticker packs, push stickers to Telegram, sync packs, or manage sticker collections. Integrates with create-sticker for end-to-end sticker generation → publish workflow.
tools
Reuse local Youtu-Tip GUI capabilities through a safe adapter CLI so OpenClaw/Codex-style agents can inspect desktop GUI state and perform guarded single-step actions on macOS.
development
Use this skill whenever the user wants iOS-style scroll fades, gradient masks, scroll-edge overlays, or top/bottom indicators on a scrollable list, dropdown, sidebar, modal, chat log, or panel. It implements a reusable wrapper-based scroll fade mask pattern across React, Vue, Svelte, and vanilla JavaScript, and it is also the right skill when the user says the fade masks broke scrolling, do not show, or do not match the background.