Поисковик SearXNG
Запускайте бесплатный поиск без ключей через экземпляр SearXNG — самостоятельно размещаемый агрегатор, уважающий приватность и одновременно запрашивающий данные у более чем 70 поисковых систем.
Что понадобится
- Для использования публичного экземпляра не требуется API-ключ, а также можно самостоятельно разместить SearXNG для полного контроля. Этот скилл автоматически выступает в качестве запасного варианта, если основной набор инструментов веб-поиска (
FIRECRAWL_API_KEY) не настроен. - Для работы SearXNG необходима переменная окружения
SEARXNG_URL, указывающая на ваш экземпляр SearXNG. - Запросы поиска формируются из параметров:
q(строка запроса, закодированная в формате URL, напримерq=python+async),format(формат вывода:json,csv,rss, напримерformat=json),engines(названия поисковых систем через запятую, напримерengines=google,bing,ddg),limit(максимальное число результатов от каждой системы, по умолчанию 10, напримерlimit=5),categories(фильтрация по категориям, напримерcategories=news,science),safesearch(режим безопасного поиска: 0=отключён, 1=умеренный, 2=строгий, напримерsafesearch=0) иtime_range(диапазон времени:day,week,month,year, напримерtime_range=week). - Параметр
SEARXNG_URLобязателен; без него скилл не сможет функционировать.
Как применить
Этот скилл работает под Linux и macOS, предназначен для поиска, мета-поиска и самостоятельного размещения, а также выступает запасным вариантом для веб-инструментария.
Публичные экземпляры SearXNG доступны, если вы не хотите заниматься самостоятельным размещением.
Доступность экземпляра: если экземпляр SearXNG недоступен или не отвечает, поиск не удастся; всегда проверяйте, установлен ли параметр SEARXNG_URL и доступен ли экземпляр.
Отсутствие извлечения контента: SearXNG возвращает лишь фрагменты текста, а не полное содержимое страниц; для получения полных статей используйте web_extract, инструменты браузера или curl.
Ограничения по частоте запросов: некоторые публичные экземпляры ограничивают количество запросов; самостоятельное размещение позволяет избежать этого.
Охват поисковых систем: доступные системы зависят от настроек экземпляра SearXNG, и некоторые из них могут быть отключены.
Актуальность результатов: мета-поиск агрегирует данные из внешних систем, поэтому актуальность результатов зависит от этих систем.
Для устранения неполадок: если параметр SEARXNG_URL не установлен, значит экземпляр не настроен; воспользуйтесь публичным экземпляром SearXNG или настройте свой собственный. Если соединение отклонено, значит экземпляр не запущен или указан неверный URL — проверьте оба варианта. При пустых результатах экземпляр блокирует запрос — попробуйте другой экземпляр или самостоятельно его разместите. Если ответы поступают медленно, значит публичный экземпляр перегружен — самостоятельно разместите его или выберите менее загруженный вариант. Если формат json не поддерживается, версия SearXNG устарела — попробуйте использовать format=rss или обновите SearXNG.
Самостоятельное размещение — лучший вариант: публичные экземпляры могут быть недоступны, иметь ограничения по частоте запросов или блокировать их, тогда как самостоятельно размещённый экземпляр будет надёжным.
Если параметр SEARXNG_URL не установлен, а пользователь задаёт вопрос о SearXNG, помогите ему либо найти публичный экземпляр SearXNG, либо настроить собственный с помощью Docker или pip; список публичных экземпляров доступен на сайте SearXNG.
Настроить собственный экземпляр можно с помощью Docker или pip.
Список публичных экземпляров доступен на веб-сайте SearXNG.
Установите переменную окружения SEARXNG_URL в адрес публичного экземпляра (настройка не требуется) или в адрес вашего собственного экземпляра SearXNG.
Укажите SEARXNG_URL на ваш экземпляр SearXNG, как показано в примере конфигурации.
# Public instances (no setup required)
SEARXNG_URL=https://searxng.example.com
# Self-hosted SearXNG
SEARXNG_URL=http://localhost:8888
Если экземпляр не настроен, данный скилл недоступен, и агент переключится на другие варианты поиска.
Перед выбором подхода выполните проверку, чтобы определить, что на самом деле доступно.
Проверьте, что на самом деле доступно, прежде чем выбирать подход.
# Check if SEARXNG_URL is set and the instance is reachable
curl -s --max-time 5 "${SEARXNG_URL}/search?q=test&format=json" | head -c 200
Если SEARXNG_URL установлена и экземпляр отвечает, используйте SearXNG; если она не установлена или экземпляр недоступен, перейдите к другим доступным инструментам поиска.
Когда SEARXNG_URL не установлена или экземпляр недоступен, перейдите к другим доступным инструментам поиска.
Предпочтительный способ — вызов JSON API SearXNG из командной строки, как показано, включая текстовые запросы, настройки безопасного поиска и фильтры по категориям.
Используйте curl через terminal для вызова JSON API SearXNG; это позволяет избежать предположений о том, что установлен какой-то конкретный пакет Python.
# Text search (JSON output)
curl -s --max-time 10 \
"${SEARXNG_URL}/search?q=python+async+programming&format=json&engines=google,bing&limit=10"
# With Safesearch off
curl -s --max-time 10 \
"${SEARXNG_URL}/search?q=example&format=json&safesearch=0"
# Specific categories (general, news, science, etc.)
curl -s --max-time 10 \
"${SEARXNG_URL}/search?q=AI+news&format=json&categories=news"
Разберите результаты в формате JSON, чтобы извлечь поля каждого результата.
# Extract titles and URLs from JSON
curl -s --max-time 10 "${SEARXNG_URL}/search?q=fastapi&format=json&limit=5" \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
for r in data.get('results', []):
print(r.get('title',''))
print(r.get('url',''))
print(r.get('content','')[:200])
print()
"
В качестве альтернативы можно вызвать REST API SearXNG из Python с использованием библиотеки requests.
Используйте REST API SearXNG напрямую из Python с помощью библиотеки requests, как показано.
import os, requests, urllib.parse
base_url = os.environ.get("SEARXNG_URL", "")
if not base_url:
raise RuntimeError("SEARXNG_URL is not set")
query = "fastapi deployment guide"
params = {
"q": query,
"format": "json",
"limit": 5,
"engines": "google,bing",
}
resp = requests.get(f"{base_url}/search", params=params, timeout=10)
resp.raise_for_status()
data = resp.json()
for r in data.get("results", []):
print(r["title"])
print(r["url"])
print(r.get("content", "")[:200])
print()
Запустите SearXNG на собственном сервере с помощью указанной команды Docker, затем укажите SEARXNG_URL на локальный экземпляр.
# Using Docker
docker run -d -p 8888:8080 \
-v $(pwd)/searxng:/etc/searxng \
searxng/searxng:latest
# Then set
SEARXNG_URL=http://localhost:8888
В качестве альтернативы установите SearXNG через pip, отредактируйте его файл настроек и запустите его, как показано.
pip install searxng
# Edit /etc/searxng/settings.yml
searxng-run
Следуйте рабочему процессу «сначала поиск, затем извлечение»: сначала выполните поиск, а затем извлеките полное содержимое наиболее релевантного URL.
SearXNG возвращает заголовки, URL и фрагменты текста — но не полное содержимое страницы. Чтобы получить полное содержимое страницы, сначала выполните поиск, а затем извлеките наиболее релевантный URL с помощью web_extract, инструментов браузера или curl.
# Search for relevant pages
curl -s "${SEARXNG_URL}/search?q=fastapi+deployment&format=json&limit=3"
# Output: list of results with titles and URLs
# Then extract the best URL with web_extract
Всегда устанавливайте SEARXNG_URL; без неё скилл не сможет функционировать.
Кодируйте запросы в формате URL: пробелы и специальные символы должны быть закодированы в curl, либо используйте urllib.parse.quote() в Python.
Используйте format=json: стандартный формат может быть непригоден для машинного чтения, поэтому всегда явно запрашивайте JSON.
Установите тайм-аут: всегда используйте --max-time или timeout=, чтобы избежать зависания при работе с недоступными экземплярами.
Источник: nousresearch/hermes-agent и участники проекта. Лицензия: MIT.
Copyright (c) 2025 Nous Research
Перевод и редакционная адаптация: ClawCases.
>Ресурсы
>Похожие юзкейсы
Арбитр разрешения конфликтов слияния агентов
Разрешает конфликт слияния Git между ветками двух агентов в качестве беспристрастной третьей стороны: нейтральный арбитр, который принимает обе версии изменений и указанные намерения, после чего формирует итоговый результат слияния, не перезаписывая ни одну из сторон.
Автономное управление проектами с помощью подагентов
Координация проектов автономно: главный агент делегирует работу подагентам-менеджерам проектов, которые отслеживают задачи в общем файле STATE.yaml, обновляют его по мере выполнения, параллельно берутся за неблокируемые задачи и сохраняют всё состояние задач в файлах с контролем версий.
Quantified-Self Life OS
Hermes Life OS сохраняет структурированные наблюдения по выбранным пользователем категориям здоровья, привычек, целей и расходов, а затем обеспечивает возможность получения кратких отчётов, ежедневных сводок, размышлений, обзоров, чата и, при необходимости, обучения.