Поисковик SearXNG

Запускайте бесплатный поиск без ключей через экземпляр SearXNG — самостоятельно размещаемый агрегатор, уважающий приватность и одновременно запрашивающий данные у более чем 70 поисковых систем.

Hermes Средний Скопировали: 0
1 ресурс

Что понадобится

  • Для использования публичного экземпляра не требуется 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 между ветками двух агентов в качестве беспристрастной третьей стороны: нейтральный арбитр, который принимает обе версии изменений и указанные намерения, после чего формирует итоговый результат слияния, не перезаписывая ни одну из сторон.

Hermes Средний
Автоматизация Разработка

Автономное управление проектами с помощью подагентов

Координация проектов автономно: главный агент делегирует работу подагентам-менеджерам проектов, которые отслеживают задачи в общем файле STATE.yaml, обновляют его по мере выполнения, параллельно берутся за неблокируемые задачи и сохраняют всё состояние задач в файлах с контролем версий.

OpenClaw Средний
Образ жизни Продуктивность

Quantified-Self Life OS

Hermes Life OS сохраняет структурированные наблюдения по выбранным пользователем категориям здоровья, привычек, целей и расходов, а затем обеспечивает возможность получения кратких отчётов, ежедневных сводок, размышлений, обзоров, чата и, при необходимости, обучения.

Hermes Средний

>Ещё на этом уровне: Средний