OAuth для Вебмастера: ClientID ≠ access token
В yaga почти каждый «API не отвечает» начинается одинаково: в credentials лежат ClientID и Client secret, а access token так и не появился. Вебмастер ждёт токен вида y0_… — и точка.
Документация Яндекса и наш cli/yaga/README.md говорят одно и то же: ClientID + Client secret ≠ access token. Первый шаг — зарегистрировать приложение, второй — один раз обменять authorization code на token. yaga автоматизирует второй шаг командой yaga webmaster oauth.
Что лежит в credentials
Файл по умолчанию: ~/.config/yaga/credentials.env (путь можно переопределить через YAGA_CREDENTIALS). Спецификации ключей описаны в credentials.go. Для Вебмастера важны:
YANDEX_WEBMASTER_CLIENT_ID— идентификатор приложения (это не token).YANDEX_WEBMASTER_CLIENT_SECRET— нужен для exchange code → token.YANDEX_WEBMASTER_OAUTH_TOKEN— access token, которым реально ходят скрипты.YANDEX_WEBMASTER_REFRESH_TOKEN— пишется автоматически после успешного oauth exchange.
Список ключей и ссылок на UI:
yaga credentials
В TUI на вкладке Creds те же сущности: Enter вводит значение, o открывает URL консоли Яндекса.
Шаг 1. Приложение на oauth.yandex.ru
- Откройте oauth.yandex.ru → Мои приложения.
- Создайте приложение с правами, нужными Вебмастеру.
- Скопируйте ClientID и Client secret.
На этом этапе у вас ещё нет токена API. Есть только «дверь» и «ключ от двери» — но не пропуск внутрь.
Шаг 2. Сохранить ClientID/secret в yaga
yaga credentials set YANDEX_WEBMASTER_CLIENT_ID <id>
yaga credentials set YANDEX_WEBMASTER_CLIENT_SECRET <secret>
Значения попадают в credentials.env. Не коммитьте этот файл и не вставляйте secret в issue/чат.
Шаг 3. Один раз обменять code на token
yaga webmaster oauth
Brick webmaster вызывает скрипт yandex-webmaster-oauth.mjs. Обычно открывается браузер: вы логинитесь, подтверждаете доступ, получаете code, CLI обменивает его и записывает YANDEX_WEBMASTER_OAUTH_TOKEN (и refresh при наличии). Алиасы той же подкоманды в коде: login, auth.
Если после oauth в credentials всё ещё только ClientID/secret — обмен не завершился. Повторите oauth и смотрите вывод в Output / терминале.
Шаг 4. Проверка
yaga credentials
yaga webmaster status
status (алиас brick: wm) тянет снимок Вебмастер + Метрика через yandex-status.mjs. Если токен валиден и хост настроен — увидите данные, а не 401/403.
Открыть UI, связанный с ключом:
yaga credentials open YANDEX_WEBMASTER_OAUTH_TOKEN
Частые ловушки
- «Я уже вставил ClientID» — без oauth exchange API Вебмастера не заработает.
- Путаница с общим
YANDEX_OAUTH_TOKEN— в specs он связан с Метрикой; для Вебмастера целевой ключ —YANDEX_WEBMASTER_OAUTH_TOKEN. - Скриншот credentials.env — токен
y0_…= полный доступ к API. Считайте его паролем. - Права файла — yaga пишет credentials с режимом 0600; не ослабляйте права «для удобства».
Итог
Модель простая: приложение даёт ClientID/secret → yaga webmaster oauth один раз → дальше bricks ходят с access token. Дальше — SEO-чеклист и аккуратный recrawl без сжигания дневной квоты.
Шпаргалка команд
yaga credentials
yaga credentials set YANDEX_WEBMASTER_CLIENT_ID <id>
yaga credentials set YANDEX_WEBMASTER_CLIENT_SECRET <secret>
yaga webmaster oauth
yaga credentials open YANDEX_WEBMASTER_OAUTH_TOKEN
yaga webmaster status