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"
Дерево решений:
- Если CLI
ddgsустановлен, предпочтительнее использоватьterminal+ddgs - Если CLI
ddgsотсутствует, не предполагайте, чтоexecute_codeможет импортироватьddgs - Если пользователю нужен именно DuckDuckGo, сначала установите
ddgsв соответствующей среде - В противном случае используйте встроенные веб/браузерные инструменты
Важное замечание о среде выполнения:
- 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 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ничего не возвращает, возможно, сработало ограничение частоты. Подождите несколько секунд и повторите попытку.
Валидация
Проверенные примеры соответствуют семантике ddgs==9.11.2. Рекомендации навыка теперь рассматривают доступность CLI и возможность импорта Python как отдельные аспекты, чтобы задокументированный рабочий процесс соответствовал фактическому поведению среды выполнения.