Duckduckgo Search
Бесплатный веб-поиск через DuckDuckGo — текст, новости, изображения, видео. API-ключ не нужен. Предпочтительный способ — CLI ddgs, если установлен; Python-библиотека DDGS используется только после проверки доступности ddgs в текущей среде выполнения.
Метаданные навыка
| Источник | Опциональный (устанавливается по запросу) — установите командой hermes skills install official/research/duckduckgo-search |
| Путь | optional-skills/research/duckduckgo-search |
| Версия | 1.3.0 |
| Автор | gamedevCloudy |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | search, duckduckgo, web-search, free, fallback |
| Связанные навыки | arxiv |
Справочник: полный SKILL.md
Ниже приведено полное определение навыка, которое Hermes загружает при активации этого навыка. Именно это видит агент в качестве инструкций, когда навык активен.
DuckDuckGo Search
Бесплатный веб-поиск через DuckDuckGo. API-ключ не нужен.
Используйте этот навык, когда web_search недоступен или не подходит (например, если FIRECRAWL_API_KEY не задан). Можно также применять как самостоятельный путь поиска, когда нужны именно результаты DuckDuckGo.
Detection Flow
Перед выбором подхода проверьте, что реально доступно:
# Check CLI availability
command -v ddgs >/dev/null && echo "DDGS_CLI=installed" || echo "DDGS_CLI=missing"
Дерево решений:
- Если CLI
ddgsустановлен — предпочестьterminal+ddgs - Если CLI
ddgsотсутствует — не предполагать, чтоexecute_codeумеет импортироватьddgs - Если пользователь хочет именно DuckDuckGo — сначала установить
ddgsв нужной среде - Иначе — использовать встроенные веб- или браузерные инструменты
Важное замечание о средах выполнения:
- Terminal и
execute_code— это разные среды - Успешная установка в оболочке не гарантирует, что
execute_codeсможет импортироватьddgs - Не считайте сторонние Python-пакеты предустановленными в
execute_code
Installation
Устанавливайте ddgs только тогда, когда поиск через DuckDuckGo действительно нужен и среда его не предоставляет.
# Python package + CLI entrypoint
pip install ddgs
# Verify CLI
ddgs --help
Если рабочий процесс зависит от Python-импортов, перед использованием from ddgs import DDGS убедитесь, что именно та среда умеет импортировать ddgs.
Метод 1: поиск через CLI (предпочтительный)
Используйте команду ddgs через terminal, если она доступна. Предпочтительный путь — он не требует предположений о том, установлен ли пакет ddgs в песочнице execute_code.
# Text search
ddgs text -q "python async programming" -m 5
# News search
ddgs news -q "artificial intelligence" -m 5
# Image search
ddgs images -q "landscape photography" -m 10
# Video search
ddgs videos -q "python tutorial" -m 5
# With region filter
ddgs text -q "best restaurants" -m 5 -r us-en
# Recent results only (d=day, w=week, m=month, y=year)
ddgs text -q "latest AI news" -m 5 -t w
# JSON output for parsing
ddgs text -q "fastapi tutorial" -m 5 -o json
Флаги CLI
| Флаг | Описание | Пример |
|---|---|---|
-q | Запрос — обязательный | -q "search terms" |
-m | Макс. количество результатов | -m 5 |
-r | Регион | -r us-en |
-t | Ограничение по времени | -t w (неделя) |
-s | Безопасный поиск | -s off |
-o | Формат вывода | -o json |
Метод 2: Python API (только после проверки)
Класс DDGS в execute_code или другой Python-среде применяйте лишь убедившись, что ddgs там установлен. Не считайте, что execute_code по умолчанию включает сторонние пакеты.
Корректная формулировка:
- «Используйте
execute_codeсddgsпосле установки или проверки пакета при необходимости»
Не говорите:
- «
execute_codeвключаетddgs» - «Поиск DuckDuckGo работает в
execute_codeпо умолчанию»
Важно: max_results всегда передавайте как именованный аргумент — позиционное использование вызывает ошибку во всех методах.
Текстовый поиск
Подходит для: общих исследований, поиска по компаниям, документации.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.text("python async programming", max_results=5):
print(r["title"])
print(r["href"])
print(r.get("body", "")[:200])
print()
Возвращает: title, href, body
Поиск по новостям
Подходит для: текущих событий, срочных новостей, последних обновлений.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.news("AI regulation 2026", max_results=5):
print(r["date"], "-", r["title"])
print(r.get("source", ""), "|", r["url"])
print(r.get("body", "")[:200])
print()
Возвращает: date, title, body, url, image, source
Поиск изображений
Подходит для: визуальных ссылок, изображений продуктов, диаграмм.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.images("semiconductor chip", max_results=5):
print(r["title"])
print(r["image"])
print(r.get("thumbnail", ""))
print(r.get("source", ""))
print()
Возвращает: title, image, thumbnail, url, height, width, source
Поиск видео
Подходит для: туториалов, демонстраций, обучающих роликов.
from ddgs import DDGS
with DDGS() as ddgs:
for r in ddgs.videos("FastAPI tutorial", max_results=5):
print(r["title"])
print(r.get("content", ""))
print(r.get("duration", ""))
print(r.get("provider", ""))
print(r.get("published", ""))
print()
Возвращает: title, content, description, duration, provider, published, statistics, uploader
Краткий справочник
| Метод | Когда использовать | Ключевые поля |
|---|---|---|
text() | Общий поиск, компании | title, href, body |
news() | Актуальные события, обновления | date, title, source, body, url |
images() | Визуальные материалы, диаграммы | title, image, thumbnail, url |
videos() | Туториалы, демонстрации | title, content, duration, provider |
Workflow: поиск и извлечение
DuckDuckGo возвращает заголовки, URL и сниппеты — но не полное содержимое страниц. Чтобы получить полный текст, сначала выполните поиск, а затем извлеките нужный URL с помощью web_extract, браузерных инструментов или curl.
Пример с CLI:
ddgs text -q "fastapi deployment guide" -m 3 -o json
Пример на Python — только после проверки, что ddgs установлен в той среде:
from ddgs import DDGS
with DDGS() as ddgs:
results = list(ddgs.text("fastapi deployment guide", max_results=3))
for r in results:
print(r["title"], "->", r["href"])
Затем извлеките нужный URL с помощью web_extract или другого инструмента получения контента.
Ограничения
- Ограничение запросов: DuckDuckGo может замедлить ответы при большом количестве быстрых запросов. Добавьте небольшую паузу между поисками при необходимости.
- Нет извлечения контента:
ddgsвозвращает сниппеты, а не полное содержимое страниц. Для полного текста статьи или страницы используйтеweb_extract, браузерные инструменты или curl. - Качество результатов: В целом хорошее, но менее настраиваемое, чем поиск через Firecrawl.
- Доступность: DuckDuckGo может блокировать запросы с некоторых облачных IP-адресов. Если поиск возвращает пустые результаты, попробуйте другие ключевые слова или подождите несколько секунд.
- Непостоянство полей: Возвращаемые поля могут различаться между результатами или версиями
ddgs. Используйте.get()для необязательных полей, чтобы избежатьKeyError. - Разные среды выполнения: Успешная установка
ddgsв терминале не означает автоматически, чтоexecute_codeсможет его импортировать.
Устранение проблем
| Проблема | Вероятная причина | Что делать |
|---|---|---|
ddgs: command not found | CLI не установлен в оболочке | Установите ddgs или используйте встроенные веб- или браузерные инструменты |
ModuleNotFoundError: No module named 'ddgs' | Пакет не установлен в данной Python-среде | Не используйте Python DDGS в этой среде, пока она не подготовлена |
| Поиск не возвращает результаты | Временное ограничение запросов или неудачный запрос | Подождите несколько секунд, повторите попытку или скорректируйте запрос |
CLI работает, но импорт в execute_code падает | Terminal и execute_code — разные среды | Продолжайте использовать CLI или подготовьте Python-среду отдельно |
Распространённые ошибки
max_results— только именованный аргумент:ddgs.text("query", 5)вызовет ошибку. Правильно:ddgs.text("query", max_results=5).- Не считайте CLI существующим: перед использованием проверьте
command -v ddgs. - Не считайте
execute_codeспособным импортироватьddgs:from ddgs import DDGSможет завершиться сModuleNotFoundError, если эта среда не была подготовлена отдельно. - Имя пакета: пакет называется
ddgs(ранее —duckduckgo-search). Устанавливайте черезpip install ddgs. - Не путайте
-qи-m(CLI):-q— для запроса,-m— для максимального количества результатов. - Пустые результаты: если
ddgsничего не возвращает, скорее всего, сработало ограничение запросов. Подождите несколько секунд и повторите.
Validated With
Примеры проверены на семантике ddgs==9.11.2. Инструкции навыка разграничивают доступность CLI и доступность Python-импорта как независимые аспекты — задокументированный рабочий процесс соответствует реальному поведению среды выполнения.