Skip to content

Commit a1c8697

Browse files
committed
docs: rewrite README with a value-first structure
Lead with what the server does (full API coverage via raw_request, writes gated by confirmWrite, money in account currency, autoPaginate, get_quota, retries и sandbox), trim the example prompts to non-trivial ones, shorten the campaign audit to a table + concise takeaways (incl. ad extensions), add Требования and Ограничения sections, and flag that the token grants full account access and is stored in plaintext.
1 parent c8ebea4 commit a1c8697

1 file changed

Lines changed: 65 additions & 48 deletions

File tree

README.md

Lines changed: 65 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,65 @@
44
[![CI](https://github.com/gistrec/mcp-yandex-direct/actions/workflows/ci.yml/badge.svg)](https://github.com/gistrec/mcp-yandex-direct/actions/workflows/ci.yml)
55
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
66

7-
MCP-сервер для **Yandex Direct API v5**. Управляйте контекстной рекламой прямо из Claude (и других MCP-клиентов): кампании, группы, объявления, ключевые фразы, ставки, корректировки, расширения и статистика — на естественном языке.
7+
MCP-сервер для **Yandex Direct API v5**: управляйте контекстной рекламой из Claude, Cursor, Codex и других AI-клиентов на естественном языке.
88

9-
Покрыт весь API v5: частые операции — через удобные инструменты, всё остальное — через универсальный `raw_request`.
9+
Ассистент сам собирает данные из статистики, ключей, ставок и расширений, находит закономерности и вносит правки — то, что в веб-кабинете Директа приходится делать вручную и по одному экрану.
10+
11+
## Что умеет
12+
13+
- **Полное покрытие API v5** — частые объекты как удобные инструменты, всё остальное — через универсальный `raw_request`.
14+
- **Запись только по подтверждению** — изменения ставок, бюджетов, минус-слов и статусов требуют явного `confirmWrite`.
15+
- **Деньги в валюте аккаунта** — бюджеты и ставки на вход и на выход в той же валюте, что и кабинет (например, в рублях), без ручного пересчёта микроединиц.
16+
- **`autoPaginate`** — проход всех страниц по курсору `LimitedBy`, без молчаливой обрезки на больших аккаунтах.
17+
- **`get_quota`** — остаток дневной квоты API в Units (потрачено / осталось / лимит).
18+
- **Устойчивость** — ретраи на лимитах и 5xx с бэкоффом плюс режим песочницы (`YANDEX_DIRECT_SANDBOX`) для безопасных тестов.
19+
20+
## Примеры запросов
21+
22+
Попросите ассистента на русском — например:
23+
24+
- «Какие ключевые фразы тратят бюджет, но не приносят кликов?»
25+
- «Подними ставки до 3 ₽ на фразы с CTR выше 15%»
26+
- «Найди id региона Москва и создай группу с таргетингом на Москву»
27+
- «Поставь корректировку −20% на мобильные в кампании 708589088»
28+
29+
## Пример: аудит кампании
30+
31+
> **Вы:** Проанализируй кампанию ClearTranscriptBot за последнюю неделю и предложи, что улучшить.
32+
33+
> **Claude** *(вызывает `get_statistics`, `list_keywords`, `get_callouts`, `get_sitelinks`)*:
34+
>
35+
> Кампания «EPK/Поиск — бот в Max и Telegram» за 7 дней:
36+
>
37+
> | Дата | Показы | Клики | CTR | Расход, ₽ | Ср. клик, ₽ |
38+
> |------|-------:|------:|----:|----------:|------------:|
39+
> | 08.06 | 544 | 90 | 16.5% | 782.50 | 8.69 |
40+
> | 09.06 | 456 | 70 | 15.4% | 528.93 | 7.56 |
41+
> | 10.06 | 206 | 39 | 18.9% | 254.48 | 6.53 |
42+
> | 11.06 | 198 | 36 | 18.2% | 205.87 | 5.72 |
43+
> | 12.06 | 275 | 37 | 13.5% | 178.95 | 4.84 |
44+
> | 13.06 | 332 | 45 | 13.6% | 214.62 | 4.77 |
45+
> | 14.06 | 419 | 82 | 19.6% | 481.55 | 5.87 |
46+
> | **Итого** | **2 430** | **399** | **16.4%** | **2 646.90** | **6.63** |
47+
>
48+
> **Что улучшить:**
49+
> 1. **Автотаргетинг забирает почти весь трафик.** Условие `---autotargeting` собирает основную долю показов и кликов, а ключи («расшифровка интервью», «транскрибация записи» …) получают по 1–22 показа и почти 0 кликов — стоит усилить ставки на фразы или точнее настроить автотаргетинг.
50+
> 2. **Ставки на минимуме (0.30 ₽), а CTR высокий (16–20%).** На поиске при таком CTR имеет смысл поднять ставки на топ-фразы — заберёте больше недорогих показов.
51+
> 3. **Объявление 17674525479 отстаёт** (CTR 2–10% против 17–20% у основного) — кандидат на переработку заголовка/текста или отключение.
52+
> 4. **Расширения в порядке** — 9 уточнений и 3 быстрые ссылки; можно добавить ещё пару быстрых ссылок (лимит — 8).
1053
1154
## Быстрая установка
1255

13-
**Claude Code** — одной командой:
56+
Разверните своего клиента:
57+
58+
<details>
59+
<summary><b>Claude Code</b></summary>
1460

1561
```bash
1662
claude mcp add yandex-direct -e YANDEX_DIRECT_TOKEN=ваш_токен -- npx -y mcp-yandex-direct
1763
```
1864

19-
Другие клиенты — добавьте сервер в конфиг (разверните свой):
65+
</details>
2066

2167
<details>
2268
<summary><b>Claude Desktop</b></summary>
@@ -100,59 +146,30 @@ YANDEX_DIRECT_TOKEN = "ваш_токен"
100146

101147
[**→ Получить токен**](https://oauth.yandex.ru/authorize?response_type=token&client_id=7659d6ec6b044aafa6b5e3a00e8e35bb)
102148

103-
Скопируйте токен в `YANDEX_DIRECT_TOKEN`. Токен персональный (привязан к вашему кабинету) и действует около года; при утере его можно получить заново по той же ссылке. Для агентских аккаунтов добавьте `YANDEX_DIRECT_LOGIN` — логин клиента.
149+
Скопируйте токен в `YANDEX_DIRECT_TOKEN`. Токен персональный (привязан к вашему кабинету) и действует около года; при утере его можно получить заново по той же ссылке.
104150

105-
## Примеры запросов
106-
107-
Просто пишите Claude на русском:
108-
109-
- «Покажи все кампании и их статус»
110-
- «Сколько я потратил за последние 7 дней? Разбей по дням»
111-
- «Какие ключевые фразы тратят бюджет, но не приносят кликов?»
112-
- «Добавь минус-слова "бесплатно" и "онлайн" в кампанию 708589088»
113-
- «Подними ставки до 3 ₽ на фразы с CTR выше 15%»
114-
- «Найди id региона Москва и создай группу с таргетингом на Москву»
115-
- «Поставь корректировку −20% на мобильные в кампании X»
116-
- «Покажи мои уточнения и быстрые ссылки»
117-
118-
## Пример: аудит кампании
119-
120-
> **Вы:** Проанализируй кампанию ClearTranscriptBot за последнюю неделю и предложи, что улучшить.
121-
122-
> **Claude** *(вызывает `get_statistics`, `list_keywords`, `get_bid_modifiers`, `get_callouts`)*:
123-
>
124-
> Кампания «EPK/Поиск — бот в Max и Telegram» за 7 дней:
125-
>
126-
> | Дата | Показы | Клики | CTR | Расход, ₽ | Ср. клик, ₽ |
127-
> |------|-------:|------:|----:|----------:|------------:|
128-
> | 08.06 | 544 | 90 | 16.5% | 782.50 | 8.69 |
129-
> | 09.06 | 456 | 70 | 15.4% | 528.93 | 7.56 |
130-
> | 10.06 | 206 | 39 | 18.9% | 254.48 | 6.53 |
131-
> | 11.06 | 198 | 36 | 18.2% | 205.87 | 5.72 |
132-
> | 12.06 | 275 | 37 | 13.5% | 178.95 | 4.84 |
133-
> | 13.06 | 332 | 45 | 13.6% | 214.62 | 4.77 |
134-
> | 14.06 | 419 | 82 | 19.6% | 481.55 | 5.87 |
135-
> | **Итого** | **2 430** | **399** | **16.4%** | **2 646.90** | **6.63** |
136-
>
137-
> **Что улучшить:**
138-
> 1. **Автотаргетинг забирает почти весь трафик.** Условие `---autotargeting` собирает основную долю показов и кликов, а ваши ключи («расшифровка интервью», «транскрибация записи» …) получают по 1–22 показа и почти 0 кликов. Стоит проверить, не каннибализирует ли автотаргетинг фразы, и либо усилить ставки на ключи, либо точнее настроить автотаргетинг.
139-
> 2. **Ставки на минимуме (0.30 ₽), а CTR высокий (16–20%).** На поиске при таком CTR имеет смысл протестировать повышение ставок на топ-фразы — заберёте больше недорогих показов.
140-
> 3. **Объявление 17674525479 отстаёт** (CTR 2–10% против 17–20% у основного). Кандидат на переработку заголовка/текста или отключение.
141-
> 4. **Возрастные корректировки 0–17 и 18–24 обнулены.** Если ваша ЦА — взрослые, всё ок; иначе проверьте, не режете ли платёжеспособную аудиторию.
142-
> 5. **Расширения настроены хорошо:** 9 уточнений + 3 быстрые ссылки. Можно добавить ещё пару быстрых ссылок (лимит — 8).
143-
>
144-
> Хотите, подниму ставки на топ-фразы и отключу слабое объявление? *(перед записью спрошу подтверждение)*
145-
146-
Все операции записи (изменение ставок, бюджетов, минус-слов, статусов) сервер выполняет только по вашему явному запросу.
151+
⚠️ Токен даёт **полный доступ** к рекламному кабинету (включая трату бюджета) и хранится **открытым текстом** в конфиге клиента — относитесь к нему как к паролю.
147152

148153
## Настройка
149154

150155
| Переменная | Обяз. | Описание |
151156
|---|---|---|
152157
| `YANDEX_DIRECT_TOKEN` | да | OAuth-токен Яндекс Директа. |
153158
| `YANDEX_DIRECT_LOGIN` | нет | Логин клиента (для агентских аккаунтов). |
159+
| `YANDEX_DIRECT_SANDBOX` | нет | `true` — работать в песочнице API. |
160+
161+
Полный список переменных (язык ответов, таймауты, повторы) и инструментов — в [docs/TOOLS.md](https://github.com/gistrec/mcp-yandex-direct/blob/main/docs/TOOLS.md).
162+
163+
## Требования
164+
165+
- Node.js 18+ (запускается через `npx`, отдельная установка не нужна).
166+
- OAuth-токен Яндекс Директа — см. [Получение токена](#получение-токена).
167+
168+
## Ограничения
154169

155-
Остальные переменные (язык ответов, таймауты, повторы, песочница) и полный список инструментов — в [документации](https://github.com/gistrec/mcp-yandex-direct/blob/main/docs/TOOLS.md).
170+
- `get_statistics` использует асинхронный сервис Reports: отчёт генерируется на стороне Яндекса (сервер опрашивает готовность) и имеет собственные лимиты на объём и число отчётов в сутки.
171+
- Токен живёт около года — потом нужно получить заново.
172+
- Для агентских аккаунтов укажите клиента через `YANDEX_DIRECT_LOGIN`.
156173

157174
## Документация
158175

0 commit comments

Comments
 (0)