Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计提醒

searxng-search-skillsearchxng 搜索技巧

Agent Skill

searxng-search-skill 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

14,511

周安装

587

GitHub Stars

公开资料未说明

下载量

4,555
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:searxng-search-skill(searchxng 搜索技巧)
来源仓库:https://github.com/elmaslouhymouaad/searxng-search-skill
安装命令:
openclaw skills install searxng-search-skill
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install searxng-search-skill

简介

使用具有重试、超时、类别、时间和引擎特定过滤器的本地或远程 SearXNG 实例执行以隐私为中心的元搜索。

SKILL.md

SearXNG Advanced Search Skill

---
name: searxng-skill
description: Advanced Python library for SearXNG metasearch with retry logic, timeout handling, and comprehensive search patterns.
homepage: https://github.com/yourusername/searxng-skill
metadata: {"clawdbot":{"emoji":"🔍","requires":{"python":">=3.8","packages":["requests","urllib3","python-dotenv"]},"install":[{"id":"pip","kind":"pip","package":"searxng-skill","label":"Install searxng-skill (pip)"},{"id":"local","kind":"local","command":"pip install -e .","label":"Install from source"}]}}
---

# searxng-skill

Use `searxng-skill` for privacy-focused metasearch with local/remote SearXNG instances. Supports retry logic, timeout handling, and advanced search patterns.

## Setup (once)

**Environment variables (recommended)**

Create .env file

cat > .env << EOF SEARXNG_URL=http://localhost:8080 SEARXNG_TIMEOUT=10 SEARXNG_MAX_RETRIES=3 SEARXNG_RETRY_DELAY=1.0 SEARXNG_BACKOFF_FACTOR=2.0 SEARXNG_VERIFY_SSL=true SEARXNG_LANGUAGE=en EOF


**Or configuration file**

Create config.json

cat > config.json << EOF { "instance_url": "http://localhost:8080", "default_timeout": 10, "max_retries": 3, "retry_delay": 1.0, "backoff_factor": 2.0, "verify_ssl": true, "default_language": "en" } EOF


**Initialize in code**

from searxng_skill import SearXNGSkill, SearXNGConfig

From environment

config = SearXNGConfig.from_env() skill = SearXNGSkill(config=config)

From file

config = SearXNGConfig.from_file("config.json") skill = SearXNGSkill(config=config)

Direct

skill = SearXNGSkill(instance_url="http://localhost:8080")


## Common Commands

**Basic search**

from searxng_skill import SearXNGSkill

skill = SearXNGSkill(instance_url="http://localhost:8080") results = skill.search("Python programming")

Access results

for result in results["results"][:10]: print(f"{result['title']} - {result['url']}")


**Category search**

from searxng_skill import SearchCategory

Single category

results = skill.search("AI", categories=[SearchCategory.NEWS])

Multiple categories

results = skill.search( "climate change", categories=[SearchCategory.NEWS, SearchCategory.SCIENCE] )


**Time-filtered search**

from searxng_skill import TimeRange

Recent news (last 24 hours)

news = skill.news_search("AI breakthrough", time_range=TimeRange.DAY)

Last week

results = skill.search("Python", time_range=TimeRange.WEEK)


**Image search**

from searxng_skill import SafeSearch

images = skill.image_search( "nature photography", safesearch=SafeSearch.STRICT )

for img in images[:10]: print(f"{img['title']}: {img.get('img_src', 'N/A')}")


**Video search**

videos = skill.video_search("Python tutorial")

for video in videos[:5]: print(f"{video['title']} ({video.get('duration', 'N/A')})")


**Advanced search with operators**

results = skill.advanced_search( query="machine learning", exact_phrase="deep learning", exclude_words=["tutorial", "beginner"], site="github.com", filetype="pdf" )


**Engine-specific search**

results = skill.search( "quantum computing", engines=["google", "duckduckgo", "wikipedia"] )


**Structured search**

response = skill.search_structured("artificial intelligence")

print(f"Query: {response.query}") print(f"Total: {response.number_of_results}")

for result in response.results[:5]: print(f"{result.title} [{result.engine}]") print(f" {result.url}") print(f" Score: {result.score}\ ")


**Autocomplete**

suggestions = skill.autocomplete("artificial int")

['artificial intelligence', 'artificial intelligence news', ...]


**Multi-category search**

categorized = skill.multi_category_search( "climate change", categories=[ SearchCategory.GENERAL, SearchCategory.NEWS, SearchCategory.SCIENCE ] )

for category, results in categorized.items(): print(f"{category}: {len(results)} results")


**Parallel searches**

queries = ["Python", "JavaScript", "Go", "Rust"] results = skill.parallel_search(queries, categories=[SearchCategory.IT])

for query, result_data in results.items(): print(f"{query}: {len(result_data.get('results', []))} results")


**Paginated search**

Get multiple pages

all_results = [] for page in range(1, 4): results = skill.search("AI", page=page) all_results.extend(results["results"])

print(f"Total results: {len(all_results)}")


**Health check**

if skill.health_check(): print("✓ SearXNG instance is healthy") else: print("✗ Instance unavailable")


**Get engine info**

engines = skill.get_engines_info()

for engine in engines[:10]: print(f"{engine.name} - {', '.join(engine.categories)}") print(f" Enabled: {engine.enabled}")


**Export results**

from searxng_skill.utils import export_results_json, export_results_csv

results = skill.search("machine learning")

Export to JSON

export_results_json(results, "results.json")

Export to CSV

export_results_csv(results["results"], "results.csv")


## Quick Reference

**Search Categories**

SearchCategory.GENERAL # General web search SearchCategory.IMAGES # Image search SearchCategory.VIDEOS # Video search SearchCategory.NEWS # News articles SearchCategory.MAP # Maps SearchCategory.MUSIC # Music SearchCategory.IT # IT/Tech SearchCategory.SCIENCE # Scientific papers SearchCategory.FILES # File search SearchCategory.SOCIAL_MEDIA # Social media


**Time Ranges**

TimeRange.DAY # Last 24 hours TimeRange.WEEK # Last 7 days TimeRange.MONTH # Last 30 days TimeRange.YEAR # Last year TimeRange.ALL # All time


**Safe Search Levels**

SafeSearch.NONE # No filtering (0) SafeSearch.MODERATE # Moderate filtering (1) SafeSearch.STRICT # Strict filtering (2)


## Notes

**Environment variable shortcuts**
- Set `SEARXNG_URL=http://localhost:8080` to avoid repeating instance URL
- Set `SEARXNG_LANGUAGE=en` for default language
- Set `SEARXNG_MAX_RETRIES=5` for custom retry behavior

**For scripting**
- Use `format=OutputFormat.JSON` for structured output (default)
- Set `verify_ssl=False` for local development only
- Implement rate limiting with `time.sleep()` between requests
- Use `health_check()` before batch operations

**Performance tips**
- Reuse `SearXNGSkill` instance for multiple searches
- Use `parallel_search()` for independent queries
- Cache results with `functools.lru_cache` for repeated queries
- Set appropriate timeouts: fast queries (5s), complex queries (30s)

**Retry behavior**
- Automatic retry with exponential backoff on timeout/connection errors
- Default: 3 retries, 1s initial delay, 2x backoff factor
- Customize: `max_retries`, `retry_delay`, `backoff_factor`
- No retry on HTTP 4xx/5xx errors

**Error handling**

from searxng_skill.exceptions import TimeoutException, ConnectionException

try: results = skill.search("query", timeout=5) except TimeoutException: print("Request timed out - try increasing timeout") except ConnectionException: print("Cannot connect to instance - check URL and network")


**Fallback instance**

try: skill = SearXNGSkill(instance_url="http://localhost:8080") results = skill.search("query") except ConnectionException: # Fallback to public instance skill = SearXNGSkill(instance_url="https://searx.be") results = skill.search("query")


**Local instance setup**

Docker

docker run -d -p 8080:8080 searxng/searxng

Verify

curl http://localhost:8080/healthz


**Confirm before operations**
- Always validate query is not empty: `if query.strip(): ...`
- Check results exist: `if "results" in results: ...`
- Validate URLs before requests: `validate_url(url)`

## Advanced Usage

**Custom retry strategy**

from searxng_skill.retry import RetryStrategy

strategy = RetryStrategy( max_retries=5, initial_delay=2.0, backoff_factor=1.5, max_delay=60.0, jitter=True )

skill = SearXNGSkill( instance_url="http://localhost:8080", max_retries=5, retry_delay=2.0, backoff_factor=1.5 )


**Batch processing**

import time

queries = ["Python", "Java", "Go", "Rust"]

for query in queries: results = skill.search(query) print(f"{query}: {len(results['results'])} results") time.sleep(1) # Rate limiting


**Result deduplication**

from searxng_skill.utils import deduplicate_results

results = skill.search("AI") unique = deduplicate_results(results["results"], key="url")


**Merge multiple searches**

from searxng_skill.utils import merge_search_results

r1 = skill.search("Python", engines=["google"]) r2 = skill.search("Python", engines=["duckduckgo"])

merged = merge_search_results([r1, r2])


**Logging**

import logging

logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__)

logger.info("Searching for: Python") results = skill.search("Python") logger.info(f"Found {len(results['results'])} results")


## API Methods

| Method | Purpose | Returns |
|--------|---------|---------|
| `search()` | Basic search | `Dict[str, Any]` |
| `search_structured()` | Structured search | `SearchResponse` |
| `autocomplete()` | Get suggestions | `List[str]` |
| `image_search()` | Image-specific | `List[Dict]` |
| `news_search()` | News-specific | `List[Dict]` |
| `video_search()` | Video-specific | `List[Dict]` |
| `advanced_search()` | With operators | `Dict[str, Any]` |
| `multi_category_search()` | Multiple categories | `Dict[str, List]` |
| `parallel_search()` | Multiple queries | `Dict[str, Dict]` |
| `health_check()` | Instance status | `bool` |
| `get_engines_info()` | Engine details | `List[EngineInfo]` |

## Troubleshooting

**Connection refused**

Check instance is running

curl http://localhost:8080/healthz

Or in Python

if not skill.health_check(): print("Instance is down")


**SSL errors (local development)**

skill = SearXNGSkill( instance_url="http://localhost:8080", verify_ssl=False # Only for local dev! )


**Timeout issues**

Increase timeout

skill = SearXNGSkill( instance_url="http://localhost:8080", default_timeout=30 )

Or per-request

results = skill.search("query", timeout=30)


**No results**

Check enabled engines

engines = skill.get_engines_info() enabled = [e for e in engines if e.enabled] print(f"Enabled: {len(enabled)} engines")

Try specific engines

results = skill.search("query", engines=["duckduckgo"])

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

74.01%
按下载量换算3,371

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills