На этой странице
Бесплатный веб-поиск через DuckDuckGo — текст, новости, изображения, видео. Не требуется API-ключ. Предпочитайте CLI ddgs, если он установлен; используйте Python-библиотеку DDGS только после проверки, что ddgs доступен в текущей среде выполнения.
Метаданные навыка¶
| Источник | Опционально — установка: hermes skills install official/research/duckduckgo-search |
| Путь | optional-skills/research/duckduckgo-search |
| Версия | 1.3.0 |
| Автор | gamedevCloudy |
| Лицензия | MIT |
| Теги | search, duckduckgo, web-search, free, fallback |
| Связанные навыки | arxiv |
Справочник: полный SKILL.md¶
info Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Именно эти инструкции видит агент, когда навык активен.
DuckDuckGo Search¶
Бесплатный веб-поиск с использованием DuckDuckGo. Не требуется API-ключ.
Предпочтителен, когда web_search недоступен или непригоден (например, если не задан FIRECRAWL_API_KEY). Также может использоваться как самостоятельный путь поиска, когда нужны именно результаты DuckDuckGo.
Порядок обнаружения¶
Проверьте, что реально доступно, прежде чем выбирать подход:
[code] # Проверить доступность CLI command -v ddgs >/dev/null && echo "DDGS_CLI=installed" || echo "DDGS_CLI=missing"
[/code]
Дерево решений:
- Если CLI
ddgsустановлен, предпочестьterminal+ddgs - Если CLI
ddgsотсутствует, не предполагать, чтоexecute_codeможет импортироватьddgs - Если пользователю нужен именно DuckDuckGo, сначала установить
ddgsв соответствующей среде - В противном случае использовать встроенные веб/браузерные инструменты
Важное замечание о средах выполнения:
Terminalиexecute_code— это разные среды выполнения- Успешная установка в shell не гарантирует, что
execute_codeсможет импортироватьddgs - Никогда не предполагайте, что сторонние Python-пакеты предустановлены внутри
execute_code
Установка¶
Устанавливайте ddgs только тогда, когда поиск DuckDuckGo действительно нужен и среда выполнения ещё не предоставляет его.
[code] # Python-пакет + точка входа CLI pip install ddgs
# Проверить CLI
ddgs --help
[/code]
Если рабочий процесс зависит от Python-импортов, сначала убедитесь, что эта же среда выполнения может импортировать ddgs, прежде чем использовать from ddgs import DDGS.
Метод 1: CLI-поиск (предпочтительный)¶
Используйте команду ddgs через terminal, если она существует. Это предпочтительный путь, поскольку он не предполагает, что в песочнице execute_code установлен Python-пакет ddgs.
[code] # Поиск текста ddgs text -q "python async programming" -m 5
# Поиск новостей
ddgs news -q "artificial intelligence" -m 5
# Поиск изображений
ddgs images -q "landscape photography" -m 10
# Поиск видео
ddgs videos -q "python tutorial" -m 5
# С фильтром по региону
ddgs text -q "best restaurants" -m 5 -r us-en
# Только недавние результаты (d=день, w=неделя, m=месяц, y=год)
ddgs text -q "latest AI news" -m 5 -t w
# JSON-вывод для парсинга
ddgs text -q "fastapi tutorial" -m 5 -o json
[/code]
Флаги CLI¶
| Флаг | Описание | Пример |
|---|---|---|
-q |
Запрос — обязательный | -q "поисковый запрос" |
-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 всегда должен передаваться как именованный аргумент — позиционное использование вызывает ошибку во всех методах.
Поиск текста¶
Лучше всего подходит для: общих исследований, компаний, документации.
[code] 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()
[/code]
Возвращает: title, href, body
Поиск новостей¶
Лучше всего подходит для: текущих событий, срочных новостей, последних обновлений.
[code] 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()
[/code]
Возвращает: date, title, body, url, image, source
Поиск изображений¶
Лучше всего подходит для: визуальных материалов, изображений продуктов, диаграмм.
[code] 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()
[/code]
Возвращает: title, image, thumbnail, url, height, width, source
Поиск видео¶
Лучше всего подходит для: обучающих материалов, демонстраций, объяснений.
[code] 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()
[/code]
Возвращает: 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 |
Процесс: поиск с последующим извлечением¶
DuckDuckGo возвращает заголовки, URL и сниппеты — не полное содержимое страниц. Чтобы получить полное содержимое, сначала выполните поиск, затем извлеките наиболее релевантный URL с помощью web_extract, браузерных инструментов или curl.
Пример через CLI:
[code] ddgs text -q "fastapi deployment guide" -m 3 -o json
[/code]
Пример на Python, только после проверки, что ddgs установлен в этой среде:
[code] 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"])
[/code]
Затем извлеките лучший URL с помощью web_extract или другого инструмента получения содержимого.
Ограничения¶
- Ограничение частоты запросов: DuckDuckGo может начать ограничивать после множества быстрых запросов. При необходимости добавляйте небольшую задержку между поисками.
- Нет извлечения содержимого:
ddgsвозвращает сниппеты, а не полное содержимое страниц. Используйтеweb_extract, браузерные инструменты или curl для полной статьи/страницы. - Качество результатов: В целом хорошее, но менее настраиваемое, чем поиск Firecrawl.
- Доступность: DuckDuckGo может блокировать запросы с некоторых облачных IP-адресов. Если поиск возвращает пустые результаты, попробуйте другие ключевые слова или подождите несколько секунд.
- Вариативность полей: Возвращаемые поля могут различаться в зависимости от результатов или версии
ddgs. Используйте.get()для опциональных полей, чтобы избежатьKeyError. - Разные среды выполнения: Успешная установка
ddgsв терминале не означает автоматически, чтоexecute_codeможет его импортировать.
Устранение неполадок¶
| Проблема | Вероятная причина | Что делать |
|---|---|---|
ddgs: command not found |
CLI не установлен в окружении shell | Установите 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ничего не возвращает, возможно, сработало ограничение частоты. Подождите несколько секунд и повторите.
Проверено с¶
Проверенные примеры на семантике ddgs==9.11.2. Теперь руководство разделяет доступность CLI и Python-импорта как разные аспекты, чтобы документированный процесс соответствовал реальному поведению среды выполнения.
- Метаданные навыка
- Справочник: полный SKILL.md
- Порядок обнаружения
- Установка
- Метод 1: CLI-поиск (предпочтительный)
- Флаги CLI
- Метод 2: Python API (только после проверки)
- Поиск текста
- Поиск новостей
- Поиск изображений
- Поиск видео
- Краткая справка
- Процесс: поиск с последующим извлечением
- Ограничения
- Устранение неполадок
- Подводные камни
- Проверено с