关于 searxng-search
SearXNG Search 提供本地 SearXNG 元搜索环境及命令行查询示例,可搜索网页、代码、仓库和软件包来源。它面向需要按类别获取 JSON 结果的用户,并通过辅助脚本启动和配置容器。
主要功能
- 01启动和停止本地 SearXNG
- 02以 JSON 返回搜索结果
- 03搜索网页、代码和仓库
- 04按类别搜索软件包来源
- 05限制结果数量并组合类别
适用场景
- 01在本地环境中搜索网页
- 02查找 Cargo 或 npm 软件包
- 03定位代码仓库和 IT 资源
- 04获取并筛选结构化搜索结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ ypares/ agent-skills --skill searxng-search安装后在 Claude Code 中输入/searxng-search确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/agent-usage.mdcategory-guide.mdpackage-engine-status.mdpypi-direct-search.mdscripts/searxstart-searxng详细介绍
SearXNG 搜索
SearXNG 是一款尊重隐私的元搜索引擎,可在本地运行。它会汇总多个搜索引擎和软件包仓库的结果,并返回简洁的 JSON 输出。
快速开始
启动 SearXNG:
start-searxng --detach
此操作将:
- 自动检测 podman 或 docker
- 创建启用了 JSON 输出的最简配置
- 在
http://localhost:8888启动 SearXNG - 等待服务就绪
停止 SearXNG:
podman stop searxng # or: docker stop searxng
自定义端口:
start-searxng --port 9999 --detach
快速参考
| 任务 | 命令 | 类别 |
|---|---|---|
| 常规网页搜索 | curl "http://localhost:8888/search?q=<query>&format=json" | general |
| 搜索 Cargo/crates.io | curl "http://localhost:8888/search?q=<crate>&format=json&categories=cargo" | cargo |
| 搜索 npm 软件包 | curl "http://localhost:8888/search?q=<pkg>&format=json&categories=packages" | packages |
| 搜索代码仓库 | curl "http://localhost:8888/search?q=<query>&format=json&categories=repos" | repos |
| 搜索 IT 资源 | curl "http://localhost:8888/search?q=<query>&format=json&categories=it" | it |
| 限制结果数量 | 在 URL 中添加 &limit=N | - |
| 多个类别 | &categories=cat1,cat2 | - |
可用类别
运行以下命令以查看所有类别:
curl -s "http://localhost:8888/config" | jq '.categories'
值得关注的类别:
- general:常规网页搜索(默认)
- cargo:来自 crates.io 的 Rust crate
- packages:多仓库(npm、rubygems、haskell/hoogle、hex、packagist、metacpan、pub.dev、pkg.go.dev、docker hub、alpine 等)
- it:IT/技术资源(包括 GitHub、Docker Hub、crates.io)
- repos:代码仓库
- code:代码搜索
- scientific publications:学术论文
- news、videos、images、books 等
有关全面的软件包搜索测试结果,请参阅 package-engine-status.md。
JSON 响应结构
{
"query": "search term",
"number_of_results": 0,
"results": [
{
"url": "https://example.com",
"title": "Result Title",
"content": "Snippet of content...",
"publishedDate": "2025-01-01T00:00:00",
"engine": "duckduckgo",
"engines": ["duckduckgo", "startpage"],
"score": 3.0,
"category": "general"
}
],
"answers": [], // Direct answers/infoboxes
"suggestions": [], // Search suggestions
"corrections": [], // Query corrections
"infoboxes": [], // Knowledge panels
"unresponsive_engines": []
}
常见用法模式
1. 软件包仓库搜索
Cargo/Rust crate:
curl -s "http://localhost:8888/search?q=tokio&format=json&categories=cargo" | \
jq '.results[] | {title, url, content}'
npm 软件包:
curl -s "http://localhost:8888/search?q=express&format=json&categories=packages" | \
jq '.results[] | select(.engines[] == "npm") | {title, url, content}'
PyPI 软件包(变通方法,见下文):
# PyPI engine is enabled but not returning results in current SearXNG config
# Use direct API or qypi CLI instead (see PyPI Workaround section)
2. 带筛选条件的网页搜索
IT/技术搜索:
curl -s "http://localhost:8888/search?q=rust+async&format=json&categories=it" | \
jq '.results[0:5] | .[] | {title, url, engines}'
GitHub 仓库:
curl -s "http://localhost:8888/search?q=machine+learning&format=json&categories=repos" | \
jq '.results[] | select(.engines[] == "github") | {title, url}'
3. 提取特定信息
获取排名前 3 的结果:
curl -s "http://localhost:8888/search?q=rust+ownership&format=json" | \
jq '.results[0:3] | .[] | {title, url, content}'
查看哪些引擎返回了结果:
curl -s "http://localhost:8888/search?q=python&format=json" | \
jq '.results[0].engines'
获取答案框/信息框:
curl -s "http://localhost:8888/search?q=rust+language&format=json" | \
jq '.infoboxes, .answers'
PyPI 变通方法
由于 PyPI 在 SearXNG 中未返回结果(尽管已启用),请使用以下替代方案:
选项 1:PyPI JSON API
# Search (limited to simple package name matching)
curl -s "https://pypi.org/pypi/<package>/json" | jq '.info | {name, summary, version, home_page}'
# Example:
curl -s "https://pypi.org/pypi/requests/json" | jq '.info.summary'
选项 2:qypi CLI 工具
# Install
uvx qypi search pandas --json
# Get package info
uvx qypi info requests --json
# List releases
uvx qypi releases flask --json
更多详情请参阅 references/pypi-direct-search.md。
与 Nushell 集成
创建一个辅助函数:
def searx [
query: string,
--category (-c): string = "general",
--limit (-l): int = 10
] {
http get $"http://localhost:8888/search?q=($query | url encode)&format=json&categories=($category)"
| get results
| first $limit
| select title url content engines
}
用法:
searx "tokio async" --category cargo --limit 5
searx "flask tutorial" --category general
调试
检查 SearXNG 配置:
curl -s "http://localhost:8888/config" | jq '.engines[] | select(.name == "pypi")'
检查引擎错误:
curl -s "http://localhost:8888/search?q=test&format=json" | jq '.unresponsive_engines'
测试指定引擎:
curl -s "http://localhost:8888/search?q=flask&format=json&engines=pypi" | jq .
已知问题
- PyPI 引擎已启用但无法正常工作:使用直接 API 或 qypi CLI 作为变通方案
- Cargo 类别有时会返回空结果:尝试使用
categories=packages或categories=it,它们也包含 crates.io - 速率限制:如果短时间内请求过多,SearXNG 可能会进行速率限制
配置
使用辅助脚本(推荐)
start-searxng 脚本会自动创建最简配置:
start-searxng --help
默认配置包括:
use_default_settings: true(继承 SearXNG 的所有默认设置)- 已启用 JSON 格式
- 已禁用速率限制(供本地使用)
- 密钥(请在生产环境中更改!)
使用自己的配置
start-searxng --config /path/to/your/config/dir
你的配置目录中应包含 settings.yml。
手动启动容器
# Create config
mkdir -p /tmp/searxng-config
cat > /tmp/searxng-config/settings.yml << 'EOF'
use_default_settings: true
search:
formats:
- html
- json
server:
secret_key: "change-me-in-production"
bind_address: "0.0.0.0"
port: 8080
EOF
# Start with podman
podman run --rm -d --name searxng \
-p 8888:8080 \
-v /tmp/searxng-config:/etc/searxng:Z \
docker.io/searxng/searxng:latest
# Or with docker
docker run --rm -d --name searxng \
-p 8888:8080 \
-v /tmp/searxng-config:/etc/searxng \
docker.io/searxng/searxng:latest
查看日志
podman logs searxng # or: docker logs searxng
高级配置
有关所有选项,请参阅 SearXNG Settings Documentation。
在默认设置中添加 JSON 输出的最简配置:
use_default_settings: true
search:
formats:
- html
- json
评论
支持 Markdown