artwist-polyakov/polyakov-claude-skills/yandex-search-api
Claude Code and agent skill by artwist-polyakov/polyakov-claude-skills
- community
Checking that the SKILL.md file is still in the repository.
Поиск в Яндексе через Yandex Cloud Search API v2 с содержательными выдержками найденных страниц (smart snippets) — материал для ответа, а не только ссылки. Синхронный и асинхронный режимы, кэш результатов. Triggers: yandex search api, поиск в яндексе, выдача яндекса, serp яндекс, парсинг выдачи, smart snippets, смарт-сниппеты, инфоконтексты, выдержки страниц, найди в яндексе, что пишут в рунете.
Install
npx vskill@latest install artwist-polyakov/polyakov-claude-skills/yandex-search-apiSKILL.md
yandex-search-api
Parse Yandex SERP via Yandex Cloud Search API v2 (sync + async).
Инфоконтексты (Smart Snippets)
Search API отдаёт не только ссылку и сниппет в пару предложений, а фрагмент найденной страницы примерно на 500 токенов — релевантный запросу и с цитатами из документа. Информации уже достаточно, чтобы ответить, а обрабатывать страницу самому не нужно.
Это то, ради чего скилл ставят в агента: одного запроса хватает на ответ, а не только на список ссылок.
Включено по умолчанию, отдельного скрипта не нужно:
Тексты в ответ не печатаются — они уходят в cache/results/<hash>.md, а в stdout приходит индекс по строке на документ. Дальше читай пак файлом: целиком, если нужен весь материал, или грепом, если нужен один источник. Повторный поиск той же фразы ради текста, который уже лежит в паке, — потраченные деньги.
Три ограничения, которые меняют выбор команды:
- Только синхронный режим.
web_search_async.shинфоконтекстов не вернёт. - Только `SEARCH_TYPE_RU`. С другим типом поиска скилл выполнит запрос, но
без инфоконтекстов, и скажет об этом.
- Не больше 20 документов. Попросить больше нельзя: при
--resultsвыше 20
API отдаёт не 20, а вдвое меньше — по той же цене. Скилл клампит сам.
- Дороже. 1 500 ₽ за 1000 запросов против 488 ₽ у обычного синхронного.
Когда нужны только позиции и домены — --no-snippets (или search.smart_snippets.enabled: false в конфиге).
Подробности, формат ответа, отладка и разбор ошибок: references/SMART_SNIPPETS.md.
Config
Для работы нужен сервисный аккаунт Яндекс.Облака с ролью search-api.webSearch.user. Поддерживаются IAM через авторизованный JSON-ключ и API-ключ сервисного аккаунта. Пошаговая настройка обоих вариантов: config/README.md.
Существующие IAM-конфигурации работают без изменений. Для API-ключа задайте auth.mode: "api_key" в config.json и YANDEX_AI_API_KEY в config/.env.
Workflow
STOP! Before any search:
- Определи регион:
- Если пользователь указал город/регион — найди ID автоматически:
``bash bash scripts/search_region.sh --name "Казань" ``
- Если регион не понятен из контекста — СПРОСИ и ЖДИ ответа:
``` "Для какого региона искать?
- Вся Россия (по умолчанию)
- Москва
- Конкретный город (какой?)"
``` НЕ ПРОДОЛЖАЙ пока пользователь не ответит!
- Полученное название →
search_region.sh --name "..."→ получаешь ID - Для неоднозначных случаев (Москва город vs область) — уточни у пользователя
- Режим поиска берётся из
config.json→search.mode(по умолчаниюsync).
Не спрашивай — используй то, что в конфиге. Исключение: если нужны инфоконтексты, режим всегда sync, а тип поиска — SEARCH_TYPE_RU; в асинхронном API и в других поисковых базах их нет.
- Verify config: убедись, что заданы
yandex_cloud_folder_id,
соответствующий credential (поле auth.mode необязательно). Не печатай ключ или токен.
- Run search с полученным region ID
- Present results: со snippets — прочитай пак
cache/results/<hash>.md
и отвечай по нему, ссылаясь на источники; без snippets — позиция, заголовок, URL, сниппет
Scripts
iam_token_get.sh
Generate or validate IAM token from Service Account key. Needed only when auth.mode is iam.
Token is cached in cache/iam_token.json and auto-refreshed when expired.
web_search_sync.sh
Synchronous search — one query at a time, immediate results. Единственный режим, который умеет smart snippets.
| Param | Required | Default | Values | |
|---|---|---|---|---|
--query, -q | yes* | - | Search text | |
--file, -f | yes* | - | File with queries (one per line) | |
--region-id, -r | no | from config (225) | Region ID | |
--results, -n | no | 20 со snippets, иначе из конфига (10) | Со snippets клампится до 20; без них 1-100 | |
--page, -p | no | 0 | Page number | |
--search-type | no | SEARCH_TYPE_RU | SEARCH_TYPE_RU / SEARCH_TYPE_TR / SEARCH_TYPE_COM / SEARCH_TYPE_KK / SEARCH_TYPE_BE / SEARCH_TYPE_UZ | |
--family-mode | no | FAMILY_MODE_MODERATE | FAMILY_MODE_NONE / FAMILY_MODE_MODERATE / FAMILY_MODE_STRICT | |
--snippets | no | вкл | Просить выдержки со страниц | |
--no-snippets | no | - | Только ссылки и короткие сниппеты |
\* Either --query or --file is required.
Results saved to cache/results/<hash>.md (пак с выдержками), cache/results/<hash>.json (parsed) и cache/results/<hash>.raw — исходное тело ответа: JSON с инфоконтекстами, XML без них.
web_search_async.sh
Asynchronous batch search — submit many queries, poll for results.
| Param | Required | Default | Values | |
|---|---|---|---|---|
--file, -f | yes | - | File with queries | |
--region-id, -r | no | from config (225) | Region ID | |
--poll-interval | no | 10 | Poll interval (minutes) | |
--max-wait | no | 120 | Max wait before timeout (minutes) | |
--resume | no | - | Continue polling pending ops |
Async workflow:
- Script submits all queries as async operations
- Polls every
poll_intervalminutes for completion - Downloads and parses results as they complete
- If
max_waitexceeded: prints summary + resume command - On restart with
--resume: continues fromcache/ops/, no duplicates
NOTE for agent: Async execution can take minutes to hours. The script handles polling automatically. If it times out, re-run with --resume to continue.
Инфоконтексты в асинхронном режиме недоступны — вернутся только ссылки и короткие сниппеты. Нужны фрагменты страниц — web_search_sync.sh --file. Зато async в ~16 раз дешевле синхронного и в ~50 раз дешевле инфоконтекстов.
regions_tree.sh
Show common region IDs.
search_region.sh
Find region ID by name.
Output Format
Each search result contains:
position— rank in SERPtitle— page titleurl— page URLsnippet— text snippet (up to 300 chars)domain— site domainextract— инфоконтекст: фрагмент страницы; пустая строка, если его нет
Results cached in cache/results/:
<hash>.md— пак: заголовок, URL и инфоконтекст по каждому документу<hash>.raw— исходное тело ответа: XML для обычной выдачи, JSON для
инфоконтекстов (формат выбирает сервер)
<hash>.json— parsed JSON array, единый формат для обоих случаев
<hash> — первые 12 символов md5 от текста запроса.
Не печатай инфоконтексты в stdout. 20 документов по ~500 токенов не помещаются в буфер вывода песочницы, и скрипт упадёт молча. Скрипты печатают индекс, тексты читаются из пака через Read/grep.
Tests
Офлайн-тесты: ни сети, ни сервисного аккаунта.
Проверяют сборку тела запроса, разбор обоих форматов ответа (XML и JSON), отрисовку пака и разбор флагов CLI. Тело запроса можно посмотреть и вручную, ничего не оплачивая:
Popular Region IDs
| Region | ID | |
|---|---|---|
| Россия | 225 | |
| Москва | 213 | |
| Москва и область | 1 | |
| Санкт-Петербург | 2 | |
| Екатеринбург | 54 | |
| Новосибирск | 65 | |
| Казань | 43 |
Run bash scripts/regions_tree.sh for full list.
Pricing
Тарификация — за один запрос. Цены за 1000 запросов, с НДС:
| Тип запроса | ₽ | |
|---|---|---|
| Дневные синхронные | 488 | |
| Ночные синхронные (00:00–07:59 UTC+3) | 366 | |
| Дневные отложенные (async) | 30,5 | |
| Запросы инфоконтекста поиска в регионе RU | 1 500 |
Инфоконтексты дороже обычного синхронного запроса примерно втрое. Если нужны только позиции по большому списку запросов — async или --no-snippets.
Актуальный прайс: https://aistudio.yandex.ru/docs/ru/search-api/pricing
Example Session
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/yandex-search-api/skills/yandex-search-api/SKILL.md
Popularity
- 7-day trend score
- 0
Refreshed 19 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/artwist-polyakov/polyakov-claude-skills/yandex-search-api)