---
name: yandex-direct
description: "Управление кампаниями Яндекс Директа: создание, оптимизация, статистика, ключевые слова, минус-слова, поисковые запросы."
---

# Яндекс Директ — управление рекламными кампаниями

Workflow-гайд для управления кампаниями через MCP-сервер `yandex-direct`.

**MCP-сервер:** `yandex-direct` — включает Яндекс Директ (~100 инструментов), Яндекс Метрику (11 `metrika_*`), Wordstat (5 `wordstat_*`) и задачи (3). Всего ~119 инструментов на эндпоинте.

**Правила API:** всегда сверяйся с `METRIKA-ADS-RULES.md` — атрибуция, бюджеты, стратегии, UTM.

---

## Справочник ключевых инструментов

### Кампании и структура

| Инструмент | Описание |
|---|---|
| `get_campaigns` | Список кампаний (всегда `states: ["ON"]`, `field_names` для экономии) |
| `add_campaign` | Создать кампанию (стратегия, счётчики, бюджет, цели) |
| `update_campaign` | Изменить настройки (бюджет, стратегия, минус-фразы) |
| `manage_campaigns` | Остановить / возобновить / архивировать |
| `get_adgroups` | Группы объявлений с таргетингом и UTM |
| `add_adgroup` | Создать группу (ключевые, автотаргетинг, регионы) |
| `update_adgroup` | Изменить группу (tracking_params = UTM!) |
| `get_ads` | Объявления со всеми полями |
| `add_ad` | Создать объявление (заголовки, текст, ссылки) |
| `add_ads` | Batch: несколько TEXT_AD за один вызов |

### Ключевые слова и таргетинг

| Инструмент | Описание |
|---|---|
| `get_keywords` | Ключевые фразы со ставками и статусами |
| `add_keywords` | Добавить фразы в группу (до 1000) |
| `manage_keywords` | Остановить / возобновить / удалить фразы |
| `get_autotargeting` | Автотаргетинги с категориями |
| `update_autotargeting` | Изменить категории (целевые + узкие = ON, остальные = OFF) |
| `deduplicate_keywords` | Проверить каннибализацию между группами |

### Статистика и аналитика

| Инструмент | Описание |
|---|---|
| `get_campaign_stats` | Расход, клики, показы, конверсии (attribution: LYDC!) |
| `get_search_queries` | Поисковые запросы пользователей (attribution: LYDC!) |
| `get_adgroup_stats` | Статистика по группам |
| `get_ad_stats` | Статистика по объявлениям (A/B-тест) |
| `get_criteria_stats` | Статистика по ключевым фразам |

### Вспомогательные

| Инструмент | Описание |
|---|---|
| `sitelinks` | Быстрые ссылки (get / add / delete) |
| `ad_extensions` | Уточнения (get / add / delete) |
| `get_geo_regions` | Поиск регионов для гео-таргетинга |
| `add_tasks` | Создать задачи мониторинга после изменений |

---

## Workflow 1: Создание кампании

### Чеклист

1. **Проверить дубли:**
   ```
   get_campaigns(states: ["ON"], field_names: ["Id", "Name"])
   ```
   Убедиться, что аналогичная кампания не существует.

2. **Создать кампанию:**
   ```
   add_campaign(
     name: "Название — Аудитория",
     search_strategy: "WB_MAXIMUM_CONVERSION_RATE",
     network_strategy: "SERVING_OFF",
     goal_id: <из PROJECTS.md>,
     counter_ids: [<из PROJECTS.md>],
     daily_budget_amount: <бюджет в РУБЛЯХ, НЕДЕЛЬНЫЙ>,
     daily_budget_mode: "STANDARD"
   )
   ```
   - Стратегия: всегда `WB_MAXIMUM_CONVERSION_RATE` на старте
   - Бюджет: НЕДЕЛЬНЫЙ, указывать в РУБЛЯХ (число). НЕ умножать на 1 000 000!
   - Сеть: `SERVING_OFF` (только поиск)
   - GEO-кампании: добавить `settings: [{"option": "ENABLE_AREA_OF_INTEREST_TARGETING", "value": false}]`

3. **Создать группу объявлений:**
   ```
   add_adgroup(
     campaign_id: <id>,
     name: "Группа — тематика",
     region_ids: [<регионы>],
     keywords: ["фраза 1", "фраза 2"],
     autotargeting_categories: [
       {category: "EXACT", value: true},        // целевые — ON
       {category: "ALTERNATIVE", value: true},   // узкие — ON
       {category: "BROADER", value: false},      // широкие — OFF
       {category: "ACCESSORY", value: false},    // сопутствующие — OFF
       {category: "COMPETITOR", value: false}     // альтернативные — OFF
     ]
   )
   ```

4. **Добавить UTM-метки:**
   ```
   update_adgroup(
     adgroup_id: <id>,
     tracking_params: "utm_source=yandex&utm_medium=cpc&utm_campaign={slug}&utm_content={ad_id}&utm_term={keyword}"
   )
   ```

5. **Создать объявление:**
   ```
   add_ad(
     adgroup_id: <id>,
     ad_type: "TEXT_AD",
     title: "Заголовок до 56 символов",
     title2: "Второй заголовок до 30 символов",
     text: "Текст объявления до 81 символа",
     href: "https://example.com/landing",
     sitelink_set_id: <id быстрых ссылок>,
     ad_extension_ids: [<id уточнений>]
   )
   ```

   **Лимиты символов:**
   | Поле | Макс. символов |
   |------|---------------|
   | title (заголовок 1) | 56 |
   | title2 (заголовок 2) | 30 |
   | text (текст) | 81 |
   | Быстрая ссылка: текст | 30 |
   | Быстрая ссылка: описание | 60 |
   | Уточнение | 25 |

6. **Создать файл кампании:** `campaigns/<utm_slug>.md` по шаблону `campaigns/template.md`.

7. **Создать задачу мониторинга:**
   ```
   add_tasks([{
     title: "Проверить статистику кампании <имя>",
     due_date: "<через 7 дней>",
     campaign_id: <id>
   }])
   ```

---

## Workflow 2: Проверка здоровья кампании

### Шаги

1. **Статистика Директа:**
   ```
   get_campaign_stats(
     campaign_id: <id>,
     date_from: "<7 дней назад>",
     date_to: "<вчера>",
     attribution: "LYDC"
   )
   ```
   Получить: расход, клики, показы, CTR, конверсии.

2. **Данные Метрики:**
   ```
   metrika_get_direct_report(
     counter_id: <из PROJECTS.md>,
     date1: "<7 дней назад>",
     date2: "<вчера>",
     utm_campaign: "<slug кампании>"
   )
   ```
   Получить: визиты, отказы, глубина просмотра, время на сайте.

3. **Расчёт CPA:**
   ```
   CPA = расход / конверсии
   ```

4. **Оценка здоровья** (пороги из `PROJECTS.md`):

   | Статус | Условие | Действие |
   |--------|---------|----------|
   | GOOD | CPA в пределах нормы | Продолжать, масштабировать |
   | ATTENTION | CPA выше нормы, но не критично | Проверить поисковые запросы, минус-слова |
   | CRITICAL | CPA сильно выше нормы | Срочно: минус-слова, пересмотр ключевых, проверка лендинга |

5. **Обновить файл кампании** `campaigns/<utm>.md` — добавить строку в таблицу результатов.

---

## Workflow 3: Оптимизация (поисковые запросы)

### Шаги

1. **Получить поисковые запросы:**
   ```
   get_search_queries(
     campaign_ids: [<id>],
     date_from: "<30 дней назад>",
     date_to: "<вчера>",
     attribution: "LYDC"
   )
   ```

2. **Анализ запросов:**
   - Запросы с расходом, но 0 конверсий — кандидаты в минус-слова
   - Запросы с конверсиями, но не в ключевых — добавить как ключевые
   - Информационные запросы («что такое», «отзывы», «как») — в минус-слова

3. **Проверить каннибализацию:**
   ```
   deduplicate_keywords(keywords: ["фраза 1", "фраза 2", ...])
   ```

4. **Применить изменения:**
   - Минус-слова — на уровне кампании или группы
   - Новые ключевые — `add_keywords` в соответствующую группу
   - Юридическая проверка текстов — `LEGAL.md`

**Важно:** не менять стратегию, цель или бюджет >30% без подтверждения пользователя. Лучше в чт-пт (см. `METRIKA-ADS-RULES.md`).

---

## Workflow 4: Масштабирование

### Увеличение бюджета

- Не более **+30% за раз** — резкое увеличение сбрасывает обучение стратегии
- Увеличивать после стабильных 2+ недель с хорошим CPA
- Лучше в чт-пт

### Переход на AVERAGE_CPA

**Условие:** 10+ конверсий в неделю стабильно (2-3 недели подряд).

```
update_campaign(
  campaign_id: <id>,
  search_strategy: "AVERAGE_CPA",
  average_cpa: <целевой CPA в рублях>,
  goal_id: <тот же>,
  daily_budget_amount: <тот же>
)
```

**НЕ ставь AVERAGE_CPA на кампанию с < 10 конверсий/нед** — это контрпродуктивно.

### A/B-тест объявлений

1. Создать второе объявление в группе через `add_ad`
2. Подождать 2-3 недели
3. Сравнить через `get_ad_stats` — CTR, конверсии
4. Оставить победителя, остановить проигравшего

**Согласование:** добавление нового объявления влияет на обучение — только с подтверждением пользователя.

---

## Кросс-ссылки

| Задача | Скилл |
|--------|-------|
| Аналитика кампании (визиты, отказы, CPA) | `yandex-metrika` |
| Исследование спроса, новые ключевые | `demand-research` |
| Позиции в выдаче, конкуренты | `serp-monitor` |
| Юридическая проверка текстов | `LEGAL.md` |
| Бизнес-правила, CPA-пороги, счётчик | `PROJECTS.md` |
| Подробные правила API | `METRIKA-ADS-RULES.md` |
