Перейти к основному содержимому

Duckduckgo Search

Бесплатный веб-поиск через DuckDuckGo — текст, новости, изображения, видео. API-ключ не требуется. Предпочтительно использовать CLI ddgs при его установке; используйте библиотеку Python DDGS только после проверки доступности ddgs в текущей среде выполнения.

Метаданные навыка​

ИсточникОпционально — установка: vibeos 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​

к сведению

Ниже приведено полное определение навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.

DuckDuckGo Search

Бесплатный веб-поиск с использованием DuckDuckGo. API-ключ не требуется.

Предпочтительный вариант, когда web_search недоступен или не подходит (например, если не задан FIRECRAWL_API_KEY). Также может использоваться как самостоятельный поисковый путь, если результаты DuckDuckGo нужны целенаправленно.

Логика обнаружения​

Проверьте, что фактически доступно, прежде чем выбирать подход:

# Проверка доступности CLI
command -v ddgs >/dev/null && echo "DDGS_CLI=installed" || echo "DDGS_CLI=missing"

Дерево решений:

  1. Если CLI ddgs установлен, предпочтительнее использовать terminal + ddgs
  2. Если CLI ddgs отсутствует, не предполагайте, что execute_code может импортировать ddgs
  3. Если пользователю нужен именно DuckDuckGo, сначала установите ddgs в соответствующей среде
  4. В противном случае используйте встроенные веб/браузерные инструменты

Важное замечание о среде выполнения:

  • Terminal и execute_code — это разные среды выполнения
  • Успешная установка в оболочке не гарантирует, что execute_code сможет импортировать ddgs
  • Никогда не предполагайте, что сторонние пакеты Python предустановлены внутри execute_code

Установка​

Устанавливайте ddgs только тогда, когда поиск DuckDuckGo действительно необходим и среда выполнения ещё не предоставляет его.

# Пакет Python + точка входа CLI
pip install ddgs

# Проверка CLI
ddgs --help

Если рабочий процесс зависит от импорта Python, убедитесь, что та же среда выполнения может импортировать ddgs, прежде чем использовать from ddgs import DDGS.

Метод 1: Поиск через CLI (предпочтительный)​

Используйте команду ddgs через terminal, если она существует. Это предпочтительный путь, поскольку он не предполагает, что в песочнице execute_code установлен пакет Python ddgs.

# Поиск текста
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

Флаги 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 всегда должен передаваться как именованный аргумент — позиционное использование вызывает ошибку во всех методах.

Поиск текста​

Лучше всего подходит для: общих исследований, компаний, документации.

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

Рабочий процесс: поиск с последующим извлечением​

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 foundCLI не установлен в среде оболочкиУстановите 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 как отдельные аспекты, чтобы задокументированный рабочий процесс соответствовал фактическому поведению среды выполнения.