· 11 мин · Практикум Yaga

OAuth для Вебмастера: ClientID ≠ access token

В yaga почти каждый «API не отвечает» начинается одинаково: в credentials лежат ClientID и Client secret, а access token так и не появился. Вебмастер ждёт токен вида y0_… — и точка.

OAuth Webmaster credentials

Документация Яндекса и наш 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

  1. Откройте oauth.yandex.ru → Мои приложения.
  2. Создайте приложение с правами, нужными Вебмастеру.
  3. Скопируйте 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

bash · yaga

Не официальная программа Яндекса — внутренний практикум Bober AI Systems по фактам из cli/yaga.