Интеграции 26.06.2026 1 просмотров

n8n + Яндекс.Директ API: автоматизация рекламных кампаний

#n8n #яндекс директ #api #автоматизация рекламы #контекстная реклама
n8n + Яндекс.Директ API: автоматизация рекламных кампаний
Как подключить n8n к Яндекс.Директ API: OAuth-токен, выгрузка статистики в Google Sheets, автоматическое управление ставками и алерты при росте расходов. Три готовых воркфлоу.

Что такое Яндекс.Директ API и зачем его автоматизировать

Яндекс.Директ API — это программный интерфейс, который позволяет управлять рекламными кампаниями без входа в веб-интерфейс: создавать объявления, менять ставки, получать статистику и отчёты. Через API делается всё то же, что и вручную, но в сотни раз быстрее и без участия человека.

Если вы ведёте контекстную рекламу для нескольких клиентов или управляете большим количеством кампаний — ручная работа занимает часы ежедневно. Интеграция Яндекс.Директ с n8n через REST API решает это: воркфлоу сам выгружает статистику, обновляет ставки по правилам и отправляет отчёты в Google Sheets или Telegram.

n8n Яндекс Директ — связка, которую используют перфоманс-маркетологи и агентства. Автоматизация Яндекс Директ через n8n позволяет вместо ежедневной ручной работы один раз настроить воркфлоу. В этой статье — пошаговая настройка автоматизации рекламных кампаний через Яндекс Директ API: получение токена, первые запросы и три готовых сценария. Интеграция Яндекс Директ с n8n не требует программирования — только HTTP Request node.

Получение OAuth-токена для Яндекс.Директ API

Яндекс.Директ API использует OAuth 2.0. Вам нужен долгосрочный токен — он действует пока вы его не отзовёте.

Шаг 1: создайте приложение в Яндекс.OAuth

  1. Перейдите на oauth.yandex.ru → «Зарегистрировать новое приложение».
  2. Название: «n8n автоматизация» (любое).
  3. Права доступа — выберите Яндекс.Директ → API доступ.
  4. Callback URI: укажите https://oauth.yandex.ru/verification_code.
  5. Сохраните — получите Client ID и Client Secret.

Шаг 2: получите код авторизации

Откройте в браузере (подставьте свой Client ID):

https://oauth.yandex.ru/authorize?response_type=code&client_id=ВАШ_CLIENT_ID

Разрешите доступ — браузер вернёт URL с параметром ?code=XXXXX. Скопируйте этот код.

Шаг 3: обменяйте код на токен

Сделайте POST-запрос (можно через Postman или curl):

curl -X POST https://oauth.yandex.ru/token \
  -d "grant_type=authorization_code" \
  -d "code=ВАШ_КОД" \
  -d "client_id=ВАШ_CLIENT_ID" \
  -d "client_secret=ВАШ_CLIENT_SECRET"

В ответе получите access_token — это и есть ваш OAuth-токен. Сохраните его в n8n Credentials.

Подключение Яндекс.Директ к n8n

Яндекс.Директ API не имеет готового node в n8n, но для этого идеально подходит HTTP Request node. Базовые параметры для всех запросов:

  • URL API v5: https://api.direct.yandex.com/json/v5/
  • Method: POST (Яндекс.Директ API v5 работает только через POST)
  • Header: Authorization: Bearer ВАШ_ТОКЕН
  • Header: Content-Type: application/json; charset=utf-8
  • Header: Accept-Language: ru

Настройка Credentials в n8n

Чтобы не вводить токен в каждый HTTP Request node, сохраните его в Credentials:

  1. В n8n → Settings → Credentials → Add Credential.
  2. Тип: Header Auth.
  3. Name: «Яндекс.Директ OAuth».
  4. Header Name: Authorization, Header Value: Bearer ВАШ_ТОКЕН.

Теперь во всех HTTP Request нодах просто выбирайте эти credentials.

Сценарий 1: ежедневная выгрузка статистики в Google Sheets

Самый востребованный кейс автоматизация Яндекс.Директ через n8n — ежедневный отчёт о расходах и кликах без входа в интерфейс. Воркфлоу: каждое утро в 9:00 n8n запрашивает статистику за вчера и записывает в таблицу.

Структура воркфлоу

  1. Schedule Trigger — каждый день в 09:00
  2. Code Node — формирует даты (вчера)
  3. HTTP Request — запрос к reports API
  4. Code Node — парсит TSV-ответ
  5. Google Sheets — записывает строки
  6. Telegram — уведомление «Отчёт готов»

Запрос статистики через Reports API

Яндекс.Директ API v5 для отчётов работает асинхронно. В HTTP Request node укажите:

URL: https://api.direct.yandex.com/json/v5/reports

Body (JSON):
{
  "params": {
    "SelectionCriteria": {
      "DateFrom": "{{ $json.yesterday }}",
      "DateTo": "{{ $json.yesterday }}"
    },
    "FieldNames": [
      "Date",
      "CampaignName",
      "Impressions",
      "Clicks",
      "Ctr",
      "Cost"
    ],
    "ReportName": "daily-{{ $json.yesterday }}",
    "ReportType": "CAMPAIGN_PERFORMANCE_REPORT",
    "DateRangeType": "CUSTOM_DATE",
    "Format": "TSV",
    "IncludeVAT": "YES",
    "IncludeDiscount": "NO"
  }
}

Добавьте дополнительный заголовок: processingMode: offline — это ускорит генерацию отчёта.

Ответ придёт в формате TSV (tab-separated). Разберите его в Code Node:

const tsv = $input.first().binary?.data
  ? Buffer.from($input.first().binary.data, 'base64').toString('utf-8')
  : $input.first().json.body;

const lines = tsv.split('\n').filter(l => l.trim());
const headers = lines[0].split('\t');
const rows = lines.slice(2, -1); // пропускаем заголовок и итоги

return rows.map(row => {
  const cells = row.split('\t');
  const obj = {};
  headers.forEach((h, i) => obj[h] = cells[i]);
  return { json: obj };
});

Сценарий 2: автоматическое управление ставками по правилам

Второй популярный кейс — управление рекламой через API Яндекс.Директ на основе правил. Например: если CTR объявления ниже 2% за неделю — снижаем ставку на 20%. Если CR выше 5% — повышаем на 15%.

Получение списка кампаний

HTTP Request node, метод POST, URL: https://api.direct.yandex.com/json/v5/campaigns

{
  "method": "get",
  "params": {
    "SelectionCriteria": {
      "States": ["ON"]
    },
    "FieldNames": ["Id", "Name", "Status", "State", "Statistics"]
  }
}

Получение ставок по группам объявлений

URL: https://api.direct.yandex.com/json/v5/adgroups

{
  "method": "get",
  "params": {
    "SelectionCriteria": {
      "CampaignIds": [{{ $json.Id }}]
    },
    "FieldNames": ["Id", "Name", "CampaignId", "Status"]
  }
}

Обновление ставок через bids API

После расчёта новой ставки в Code Node отправьте обновление:

URL: https://api.direct.yandex.com/json/v5/bids

{
  "method": "set",
  "params": {
    "Bids": [
      {
        "KeywordId": {{ $json.KeywordId }},
        "Bid": {{ $json.newBid }}
      }
    ]
  }
}

Ставка задаётся в микрорублях: 1 рубль = 1 000 000 микрорублей. В Code Node умножайте:

const bidRubles = 15.50;
const bidMicro = Math.round(bidRubles * 1000000);

Сценарий 3: уведомление о резком росте расходов

Один из самых полезных воркфлоу для защиты бюджета — мониторинг рекламных кампаний через n8n. Если расходы за час выросли на 50% по сравнению со вчерашним аналогичным часом — получите алерт в Telegram и можете вручную остановить кампанию.

Логика воркфлоу

  1. Schedule Trigger — каждый час
  2. HTTP Request — статистика за текущий час (DateRangeType: TODAY)
  3. HTTP Request — статистика за тот же час вчера
  4. Code Node — сравнивает расходы
  5. IF Node — рост > 50%?
  6. Telegram — алерт с деталями и ссылкой на кампанию
// Code Node: сравнение
const today = $('Статистика сегодня').first().json.Cost / 1000000;
const yesterday = $('Статистика вчера').first().json.Cost / 1000000;
const growth = ((today - yesterday) / yesterday * 100).toFixed(1);

return [{ json: {
  today: today.toFixed(2),
  yesterday: yesterday.toFixed(2),
  growth,
  alert: growth > 50
}}];

Работа с несколькими аккаунтами (агентский доступ)

Если вы рекламное агентство и ведёте клиентов через агентский кабинет, добавьте заголовок Client-Login к каждому запросу:

Client-Login: логин-клиента-яндекс

В n8n удобно хранить список клиентов в Google Sheets и итерировать по ним через Loop Over Items node. Один воркфлоу собирает отчёты по всем клиентам и раскладывает их по отдельным листам таблицы.

Ограничения API и как их учитывать в n8n

Яндекс.Директ API имеет лимиты, которые важно учитывать при автоматизации рекламы:

  • Баллы (Units): каждый аккаунт получает 30 000 баллов в сутки. Сложные запросы стоят дороже.
  • Rate limit: не более 5 запросов в секунду.
  • Асинхронные отчёты: Reports API может отвечать кодом 202 («готовится»). Нужен повторный запрос через несколько секунд.

Для обработки асинхронности в n8n используйте Wait node (ждать 30 секунд) + Loop для повторных попыток. Добавьте IF node: если статус 200 — парсить ответ, если 202 — повторить цикл.

// Проверка статуса ответа Reports API
const status = $input.first().json.statusCode || 200;
if (status === 202) {
  return [{ json: { ready: false, retryAfter: 30 } }];
}
return [{ json: { ready: true } }];

Автоматическая остановка кампании по бюджету

Ещё один практичный сценарий — остановить кампанию, если дневной бюджет почти исчерпан. Используйте метод suspend в campaigns API:

URL: https://api.direct.yandex.com/json/v5/campaigns

{
  "method": "suspend",
  "params": {
    "SelectionCriteria": {
      "Ids": [{{ $json.campaignId }}]
    }
  }
}

Для возобновления используйте метод resume. Типичный воркфлоу: в 18:00 проверить расходы → если израсходовано больше 90% дневного бюджета → остановить → в 00:00 возобновить все кампании.

Типичные ошибки при работе с Яндекс.Директ API

ОшибкаПричинаРешение
52 Authorization failure Токен истёк или неверный Обновите OAuth-токен
53 Insufficient privileges Нет прав на операцию Проверьте права приложения в oauth.yandex.ru
506 Units limit exceeded Превышен суточный лимит баллов Оптимизируйте запросы, используйте офлайн-отчёты
Статус 202 вместо данных Отчёт ещё формируется Добавьте Wait node и повторный запрос

Итог: что можно автоматизировать в Яндекс.Директ через n8n

Интеграция n8n Яндекс.Директ даёт полный контроль над рекламными кампаниями без ручного труда. Вот что реально автоматизировать прямо сейчас:

  • Ежедневные и недельные отчёты о расходах — в Google Sheets и Telegram
  • Автоматическое управление ставками по правилам (CTR, конверсия, бюджет)
  • Мониторинг и алерты при аномалиях расходов
  • Остановка кампаний при превышении бюджета
  • Массовое создание объявлений из Excel или Google Sheets
  • Синхронизация статистики с CRM (AmoCRM, Bitrix24)

Начните с простого — ежедневного отчёта в Telegram. Автоматизация рекламных кампаний в Яндекс.Директ через n8n настраивается за час, а экономия времени начинается с первого же дня.

Часто задаваемые вопросы

Как подключить Яндекс.Директ к n8n?

Получите OAuth-токен через oauth.yandex.ru, создайте приложение с правами на Директ API, затем в n8n используйте HTTP Request node с заголовком Authorization: Bearer ВАШ_ТОКЕН. Базовый URL API v5: https://api.direct.yandex.com/json/v5/.

Можно ли автоматически менять ставки в Яндекс.Директ через API?

Да, через bids API (метод set). Ставка задаётся в микрорублях (1 руб = 1 000 000 мкр). В n8n можно настроить воркфлоу, который по расписанию анализирует CTR и конверсию и автоматически корректирует ставки по правилам.

Почему Яндекс.Директ API возвращает код 202?

Код 202 означает, что отчёт ещё формируется (асинхронный режим). Нужно подождать 30–60 секунд и повторить запрос. В n8n добавьте Wait node + цикл с IF условием: если статус 200 — данные готовы, если 202 — повторить.

Как получить статистику по всем клиентам агентства через n8n?

Добавьте заголовок Client-Login с логином нужного клиента к каждому запросу. Список клиентов можно хранить в Google Sheets и итерировать через Loop Over Items node — воркфлоу соберёт отчёты по всем аккаунтам за один запуск.

Сколько баллов (Units) стоит запрос к Яндекс.Директ API?

Каждый аккаунт получает 30 000 баллов в сутки. Стоимость запроса зависит от операции: простые методы (get кампаний) — 1–10 Units, офлайн-отчёты — от 1 Unit. Для агентских аккаунтов лимит выше. Следите за остатком через метод getAvailableAmount.