Настройка скилла Yandex Wordstat
Скилл поддерживает только Wordstat API в Yandex Cloud Search API v2: https://searchapi.api.cloud.yandex.net/v2/wordstat.
Доступны два способа авторизации сервисного аккаунта: IAM через авторизованный JSON-ключ или API-ключ (раздел «Альтернатива» ниже). В IAM-режиме скрипты сами получают, кешируют и обновляют токен. В режиме API-ключа JSON-ключ и получение IAM-токена не нужны.
Старый API api.wordstat.yandex.net/v1 не работает. Его OAuth-токен не подходит для Yandex Cloud Search API; инструкции получения и обновления старого токена больше не поддерживаются.
Переход со старого API
Удалите YANDEX_WORDSTAT_TOKEN и YANDEX_WORDSTAT_BACKEND из config/.env и настроек окружения. Для текущей оболочки выполните:
unset YANDEX_WORDSTAT_TOKEN YANDEX_WORDSTAT_BACKENDЗатем настройте доступ по инструкции ниже. Команды и аргументы скриптов анализа не меняются.
Настройка доступа через IAM
Все команды ниже выполняются из каталога скилла plugins/yandex-wordstat/skills/yandex-wordstat.
Шаг 1: Создайте каталог в Яндекс.Облаке
- Откройте консоль Yandex Cloud
- Зарегистрируйтесь (нужен Яндекс ID), если ещё нет аккаунта
- Создайте каталог или используйте существующий
- Скопируйте ID каталога (
b1g...) — он понадобится дальше
Шаг 2: Создайте сервисный аккаунт
- В консоли откройте ваш каталог
- Слева выберите Сервисные аккаунты (раздел IAM)
- Нажмите Создать сервисный аккаунт
- Имя:
wordstat-sa(или любое) - Нажмите Создать
Шаг 3: Назначьте роль
- Откройте созданный сервисный аккаунт
- Назначьте роль
search-api.webSearch.userна созданный каталог
Шаг 4: Создайте ключ авторизации
- В сервисном аккаунте → Авторизованные ключи → Создать
- Скачайте JSON-файл
- Переименуйте в
service_account_key.json - Положите в
config/(рядом с этим README)
Файл секретный — он уже в
.gitignore.
Шаг 5: Создайте config.json
cp config/config.example.json config/config.jsonОткройте config.json и подставьте ваш yandex_cloud_folder_id:
{
"yandex_cloud_folder_id": "b1g_ваш_id_каталога",
"auth": {
"service_account_key_file": "config/service_account_key.json",
"openssl_bin": "openssl"
}
}auth.service_account_key_file — путь к ключу. Относительные пути отсчитываются от корня скилла, не от config/. Можно указать абсолютный путь.
Если доступ уже настроен для скилла yandex-search-api, можно использовать тот же ключ сервисного аккаунта и каталог: схема config.json одинакова. Скопируйте файлы в config/ этого скилла или укажите абсолютный путь к существующему ключу.
Шаг 6: Проверьте
sh scripts/quota.shПри успешном запросе скрипт выведет Wordstat API: OK. Проверка обращается к API.
Dynamics: ограничения операторов
Метод dynamics (scripts/dynamics.sh) поддерживает все операторы поиска Wordstat только при детализации daily. При weekly и monthly доступен только оператор +.
Это ограничение на стороне Yandex Cloud Search API — задокументировано в официальной документации.
Скилл проверяет фразу перед отправкой: если вы запустите dynamics.sh --period weekly --phrase "юрист -бесплатно", скрипт завершится с понятной ошибкой до запроса.
| Фраза | period=daily | period=weekly/monthly |
|---|---|---|
юрист дтп |
✓ | ✓ |
юрист +по дтп |
✓ | ✓ (+ разрешён) |
юрист -бесплатно |
✓ | ✗ (минус-слово) |
"юрист дтп" |
✓ | ✗ (кавычки) |
(юрист|адвокат) дтп |
✓ | ✗ (группировка) |
!юрист |
✓ | ✗ (точная форма) |
санкт-петербург |
✓ | ✓ (внутрисловный дефис) |
б/у дымоход |
✓ | ✓ (слэш) |
Устранение ошибок
Wordstat API: Error / wordstat 401
- IAM: проверьте, что файл ключа содержит действующий авторизованный ключ сервисного аккаунта. Если ключ отозван или повреждён, создайте новый по основной инструкции.
- IAM: токен обновляется автоматически. Вручную получать OAuth-токен не нужно.
- API-ключ: проверьте значение
YANDEX_AI_API_KEY, срок действия, отсутствие отзыва и областьyc.search-api.execute. API-ключ не обновляется автоматически; при истечении или отзыве выпустите новый. Создавать JSON-ключ для этого режима не требуется.
Wordstat 403 Forbidden
- Роль
search-api.webSearch.userне назначена сервисному аккаунту, либо вы пытаетесь обратиться не к тому каталогу. - Проверьте
yandex_cloud_folder_idвconfig.json.
LibreSSL detected (macOS)
macOS по умолчанию использует LibreSSL, который не поддерживает PS256 для подписи JWT.
brew install openssl@3И в config.json:
{
"auth": {
"openssl_bin": "/opt/homebrew/bin/openssl"
}
}Узнать точный путь: brew --prefix openssl.
Неполная или неверная настройка config/config.json
yandex_cloud_folder_idпустой → заполните- Файл ключа не найден по пути из
auth.service_account_key_file→ проверьте, что файл есть и читается. Помните: относительные пути отсчитываются от корня скилла, а не отconfig/.
Дополнительно
Альтернатива: API-ключ сервисного аккаунта
Сервисный аккаунт и роль search-api.webSearch.user нужны и в этом режиме.
JSON с авторизованным ключом, подпись JWT и получение IAM-токена не требуются.
Откройте консоль Yandex Cloud, выберите каталог → Identity and Access Management → Сервисные аккаунты → нужный аккаунт → API-ключи.
Создайте API-ключ с областью действия
yc.search-api.execute. Укажите её явно, не полагайтесь на значения по умолчанию. Эквивалент через CLI:yc iam api-key create --service-account-name <имя> --scopes yc.search-api.executeСкопируйте
config/.env.exampleвconfig/.envи впишите ключ вYANDEX_AI_API_KEY. Задайте праваchmod 600 config/.env. Этот файл секретный; не добавляйте его в Git.В
config/config.jsonсохранитеyandex_cloud_folder_id, аauthзадайте как{"mode": "api_key"}.Запустите
sh scripts/quota.shдля проверки доступа.
auth.mode может быть iam или api_key. Поле можно не задавать: при наличии
auth.service_account_key_file используется IAM, даже если задан YANDEX_AI_API_KEY.
Без пути к авторизованному ключу, но с YANDEX_AI_API_KEY, выбирается API-ключ.
Существующую IAM-конфигурацию менять не нужно. Старый OAuth API не поддерживается.