July 19

Как подключить Wordstat к ChatGPT

Суть

Коннектим Wordstat к ChatGPT
Для этого используем сайт коннектор - mcp-kv.ru

Сначала двигайтесь по инструкции - https://mcp-kv.ru/docs/wordstat-mcp-setup
Когда закончите — возвращайтесь сюда.


Что не работает после официальной настройки

MCP KV предлагает пять инструментов:

wordstat_get_user_info
wordstat_get_regions_tree
wordstat_get_top_requests
wordstat_get_dynamics
wordstat_get_regions

В нашей конфигурации стабильно работают только три.

wordstat_get_user_info

Работает.

Используется как диагностический запрос: проверяет API Key, Folder ID и доступность Yandex Search API.

Частотность этот метод не возвращает.


wordstat_get_top_requests

Работает.

Возвращает:

  • общую частотность исходной фразы;
  • популярные вложенные запросы;
  • связанные запросы.

Официальный метод GetTop получает данные за последние 30 дней. Основное значение исходной фразы находится в поле totalCount. Yandex AI Studio


wordstat_get_dynamics

Работает только после исправления OpenAPI-схемы.

В исходной конфигурации даты были необязательными. Из-за этого MCP KV мог подставлять неподходящую дату начала периода.

Для месячной динамики Яндекс возвращал:

The from field value should be the first day of the month

Для недельной:

The from field value should be Monday

Поэтому в рабочей схеме fromDate и toDate обязательны, а GPT получает чёткое правило:

  • месяц начинается с первого числа;
  • неделя начинается с понедельника;
  • даты передаются в RFC3339.

Официальный GetDynamics принимает фразу, период, даты, список регионов и устройства. Yandex AI Studio


wordstat_get_regions_tree

Не используем.

Инструмент возвращает полное дерево регионов Яндекса. Ответ оказывается слишком большим для GPT Actions и завершается ошибкой:

ResponseTooLargeError

Просьба «найди только Москву» не помогает: сначала MCP KV передаёт в ChatGPT полное дерево и только после получения ответа модель могла бы его отфильтровать.


wordstat_get_regions

Не используем.

Даже после исправления входных параметров backend MCP KV возвращал:

Yandex Search API ошибка 404

Это не проблема API Key, Folder ID или роли: с теми же учётными данными успешно работают GetTop и GetDynamics.

Официальный Wordstat действительно предоставляет отдельный метод распределения по регионам, но текущая реализация этого вызова в MCP KV у нас не заработала. Yandex AI Studio

Исправить backend стороннего сервиса через OpenAPI JSON невозможно.


Какие инструменты оставить в MCP KV

Откройте кабинет MCP KV и перейдите в раздел выбора GPT Actions.

Оставьте галочки только у:

wordstat_get_user_info
wordstat_get_top_requests
wordstat_get_dynamics

Снимите галочки:

wordstat_get_regions_tree
wordstat_get_regions

Нажмите:

Сохранить выбор

Создание кастомного GPT

Откройте редактор собственных GPT в ChatGPT.

Название

WordStat

Описание

Получает точную частотность и динамику поисковых фраз из Яндекс Wordstat по известным ID регионов и формирует таблицы для анализа спроса.

Возможности

Оставьте включённым:

Интерпретатор кода и анализ данных

Он пригодится для работы с Excel и CSV.

Отключите:

  • поиск в интернете;
  • генерацию изображений;
  • холст.

Частотность должна поступать только из Wordstat, а не оцениваться по материалам из интернета.

Модель

Для обычных запросов достаточно доступной модели Instant с включённым автоматическим переходом в Thinking.

Работа с Actions поддерживается только моделями, доступными для пользовательских действий; Pro-режим для них не используется. OpenAI Help Center


Настройка действия GPT

Откройте:

Действия → Создать новое действие

OpenAI позволяет вставить OpenAPI-схему непосредственно в редактор или импортировать её по URL. В нашем случае после первоначального подключения схему нужно вставить вручную, иначе URL MCP KV снова загрузит исходную версию. OpenAI Help Center

Аутентификация

Нажмите шестерёнку и укажите:

Тип аутентификации: API-ключ
Тип авторизации: Пользовательский
Имя пользовательского заголовка: X-API-Key

В поле API-ключа вставьте персональный ключ GPT Actions из кабинета MCP KV.

Не вставляйте сюда Yandex Cloud API Key.

Получается две разные пары доступов:

Yandex Cloud API Key
MCP KV → Yandex Wordstat
MCP KV GPT Actions API Key
ChatGPT → MCP KV

Рабочая OpenAPI-схема

Полностью удалите автоматически импортированный JSON и вставьте этот:

{
  "openapi": "3.1.0",
  "info": {
    "title": "WordStat через MCP KV",
    "description": "Получение частотности и динамики поисковых запросов через Yandex Cloud Search API Wordstat.",
    "version": "3.0.0"
  },
  "servers": [
    {
      "url": "https://mcp-kv.ru",
      "description": "MCP KV production server"
    }
  ],
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/api/gpt-actions/wordstat_get_user_info": {
      "post": {
        "operationId": "wordstat_get_user_info",
        "summary": "Проверить подключение Wordstat",
        "description": "Проверяет доступность Yandex Cloud Search API, наличие API Key и Folder ID. Не возвращает частотность поисковых фраз.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Результат проверки подключения",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "success",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/gpt-actions/wordstat_get_top_requests": {
      "post": {
        "operationId": "wordstat_get_top_requests",
        "summary": "Получить частотность и топ запросов",
        "description": "Получает общую частотность одной исходной фразы за последние 30 дней, а также дополнительные и связанные запросы. Для списка фраз необходимо выполнять отдельный вызов для каждой фразы.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "phrase": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400,
                    "description": "Одна исходная поисковая фраза. Несколько фраз нельзя объединять в одно значение."
                  },
                  "numPhrases": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 2000,
                    "default": 1,
                    "description": "Количество дополнительных запросов в ответе. Для получения только частотности исходной фразы использовать 1."
                  },
                  "regions": {
                    "type": "array",
                    "maxItems": 100,
                    "description": "Массив известных ID регионов Wordstat. Например, 213 — Москва, 225 — Россия.",
                    "items": {
                      "type": "string",
                      "pattern": "^[0-9]+quot;
                    }
                  },
                  "devices": {
                    "type": "array",
                    "maxItems": 3,
                    "default": [
                      "DEVICE_ALL"
                    ],
                    "description": "Типы устройств. Если пользователь не указал устройства, использовать DEVICE_ALL.",
                    "items": {
                      "type": "string",
                      "enum": [
                        "DEVICE_ALL",
                        "DEVICE_DESKTOP",
                        "DEVICE_PHONE",
                        "DEVICE_TABLET"
                      ]
                    }
                  }
                },
                "required": [
                  "phrase"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Частотность исходной фразы и топ запросов",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "success",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/gpt-actions/wordstat_get_dynamics": {
      "post": {
        "operationId": "wordstat_get_dynamics",
        "summary": "Получить динамику частотности",
        "description": "Получает изменение частотности одной поисковой фразы по дням, неделям или месяцам. Даты необходимо передавать явно и выравнивать по границам выбранного периода.",
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "phrase": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 400,
                    "description": "Одна поисковая фраза."
                  },
                  "period": {
                    "type": "string",
                    "description": "Период агрегации.",
                    "enum": [
                      "PERIOD_DAILY",
                      "PERIOD_WEEKLY",
                      "PERIOD_MONTHLY"
                    ]
                  },
                  "fromDate": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Начало периода в RFC3339. Для PERIOD_WEEKLY дата должна быть понедельником. Для PERIOD_MONTHLY — первым числом месяца. Пример: 2026-01-01T00:00:00Z."
                  },
                  "toDate": {
                    "type": "string",
                    "format": "date-time",
                    "description": "Конец периода в RFC3339. Для PERIOD_WEEKLY дата должна быть воскресеньем. Для PERIOD_MONTHLY — последним днём месяца. Пример: 2026-06-30T23:59:59Z."
                  },
                  "regions": {
                    "type": "array",
                    "maxItems": 100,
                    "description": "Массив известных ID регионов Wordstat.",
                    "items": {
                      "type": "string",
                      "pattern": "^[0-9]+quot;
                    }
                  },
                  "devices": {
                    "type": "array",
                    "maxItems": 3,
                    "default": [
                      "DEVICE_ALL"
                    ],
                    "description": "Типы устройств. Если пользователь не указал устройства, использовать DEVICE_ALL.",
                    "items": {
                      "type": "string",
                      "enum": [
                        "DEVICE_ALL",
                        "DEVICE_DESKTOP",
                        "DEVICE_PHONE",
                        "DEVICE_TABLET"
                      ]
                    }
                  }
                },
                "required": [
                  "phrase",
                  "period",
                  "fromDate",
                  "toDate"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Динамика частотности",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "success": {
                      "type": "boolean"
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "success",
                    "message"
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {},
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Персональный API-ключ GPT Actions из кабинета mcp-kv.ru."
      }
    }
  }
}

Не нажимайте после этого:

Импортировать из URL-адреса

Иначе MCP KV повторно загрузит исходную схему и перезапишет исправления.

Политика конфиденциальности

Укажите:

https://mcp-kv.ru/privacy

Системный промпт GPT

Вставьте следующий текст в поле «Инструкции»:

Ты — специализированный клиент официального Yandex Cloud Search API Wordstat.

ДОСТУПНЫЕ ИНСТРУМЕНТЫ

- wordstat_get_user_info — проверка подключения.
- wordstat_get_top_requests — текущая частотность и топ запросов за последние 30 дней.
- wordstat_get_dynamics — динамика частотности по дням, неделям или месяцам.

Других инструментов Wordstat нет. Не пытайся вызывать дерево регионов или распределение по регионам.

ОБЯЗАТЕЛЬНЫЕ ПРАВИЛА

1. Любую частотность получай только через подключённые инструменты Wordstat.
2. Никогда не придумывай, не оценивай и не округляй частотность.
3. Если инструмент не был вызван или вернул ошибку, напиши «нет данных» и кратко укажи техническую причину.
4. Не заменяй данные Wordstat информацией из интернета или своими знаниями.
5. Сохраняй исходное написание, порядок строк и повторяющиеся фразы пользователя.
6. Не добавляй операторы Wordstat, если пользователь явно этого не попросил.

ТЕКУЩАЯ ЧАСТОТНОСТЬ

7. Для текущей частотности используй wordstat_get_top_requests.
8. Одна исходная фраза всегда передаётся одним отдельным вызовом.
9. По умолчанию используй numPhrases: 1.
10. Если пользователь попросил топ запросов или связанные запросы, увеличь numPhrases до указанного количества.
11. Основной частотностью исходной фразы считай значение «всего показов» из ответа сервиса.
12. Не суммируй дополнительные и связанные запросы.
13. Не заменяй исходную фразу первым похожим запросом из списка.
14. Дополнительные и связанные запросы не показывай без отдельной просьбы пользователя.

СПИСКИ ФРАЗ

15. Если пользователь передал несколько фраз, выполни отдельный вызов wordstat_get_top_requests для каждой фразы.
16. Обрабатывай фразы последовательно, в исходном порядке.
17. После завершения одного вызова автоматически переходи к следующей фразе.
18. Не останавливайся после первой успешно обработанной фразы.
19. Не объединяй несколько фраз в одно поле phrase.
20. После завершения всех вызовов объедини результаты в одну таблицу.
21. Если платформа прервала длинную последовательность, сообщи количество обработанных строк и продолжи с первой необработанной строки после команды пользователя «Продолжай».

РАБОТА С РЕГИОНАМИ

22. Инструменты принимают только известные числовые ID регионов.
23. Известные ID:
- Москва — 213.
- Россия — 225.
24. Если пользователь передал ID числом, используй его напрямую.
25. Если пользователь указал несколько ID, передай их одним массивом regions во все вызовы задания.
26. Не выполняй отдельные вызовы для каждого региона и не складывай частотности вручную.
27. Если пользователь назвал регион, ID которого отсутствует в инструкции, попроси указать его ID.
28. Не придумывай ID региона.
29. Если регион не указан, уточни его перед вызовом Wordstat.
30. Не используй автоматически Россию или Москву без указания пользователя.

ДИНАМИКА ЧАСТОТНОСТИ

31. Для динамики используй wordstat_get_dynamics.
32. Допустимые значения period:
- PERIOD_DAILY
- PERIOD_WEEKLY
- PERIOD_MONTHLY
33. Всегда передавай fromDate и toDate.
34. Даты передавай в формате RFC3339:
YYYY-MM-DDT00:00:00Z

35. Для PERIOD_MONTHLY:
- fromDate должен быть первым числом первого месяца;
- toDate должен быть последним днём последнего месяца;
- используй полные календарные месяцы.

36. Для PERIOD_WEEKLY:
- fromDate должен быть понедельником;
- toDate должен быть воскресеньем;
- используй полные календарные недели.

37. Для PERIOD_DAILY используй точные календарные даты.

38. Если пользователь просит «последние N полных месяцев»:
- не включай текущий незавершённый месяц;
- начни с первого числа самого раннего месяца;
- закончи последним днём предыдущего месяца.

39. Если пользователь просит «последние N полных недель»:
- не включай текущую незавершённую неделю;
- начни с понедельника самой ранней недели;
- закончи воскресеньем последней полной недели.

40. Для месячной и недельной динамики не добавляй операторы Wordstat, кроме явно указанного пользователем оператора +.

ПРОВЕРКА ПОДКЛЮЧЕНИЯ

41. wordstat_get_user_info вызывай только для проверки:
- доступности Yandex Cloud Search API;
- наличия API Key;
- наличия Folder ID;
- общего состояния подключения.
42. Этот инструмент не возвращает частотность.

ЗАГРУЖЕННЫЕ ТАБЛИЦЫ

43. Если пользователь загрузил Excel или CSV:
- возьми поисковые фразы из указанного пользователем столбца;
- если столбец не указан, используй первый столбец;
- сохрани порядок строк и повторяющиеся значения;
- вызови wordstat_get_top_requests отдельно для каждой непустой фразы;
- добавь колонку «Частота запроса»;
- для ошибок и пустых строк поставь «—»;
- не изменяй остальные колонки.

ФОРМАТ ОТВЕТА

44. Для списка фраз по умолчанию возвращай таблицу:

Поисковый запрос | Частота запроса

45. Под таблицей кратко укажи:
- Регион;
- ID региона или список ID;
- Метод: Wordstat GetTop;
- Период: последние 30 дней.

46. Для динамики возвращай таблицу:

Период | Показы | Доля

47. Отвечай по-русски и кратко.
48. Не показывай технический JSON, отладочные данные и связанные запросы, если пользователь их не запросил.

Кнопки начала обсуждения

Добавьте три подсказки.

Частотность списка

Проверь частотность списка запросов по Москве, ID 213, и верни таблицу

Динамика

Покажи динамику поискового запроса за последние 6 полных месяцев по Москве

Диагностика

Проверь подключение к Yandex Wordstat и кратко покажи результат

Сохранение

Нажмите:

Обновить

Не закрывайте редактор без сохранения.


Контрольные тесты

1. Проверка подключения

Вызови только wordstat_get_user_info.
Не используй другие инструменты.
Кратко покажи статус подключения.

Ожидаемый результат:

Подключение работает.
API Key установлен.
Folder ID установлен.

2. Проверка одной фразы

Вызови только wordstat_get_top_requests.

Фраза: массаж спины
Количество результатов: 1
Регион: 213

Покажи только исходную фразу и её общую частотность.

3. Проверка списка фраз

Проверь частотность запросов:

массаж шеи
массаж спины
массаж ног

Регион: Москва, ID 213.

Для каждой фразы выполни отдельный вызов wordstat_get_top_requests.
Сохрани исходный порядок и верни одну таблицу.

Ожидаемый формат:

Поисковый запрос | Частота запроса
массаж шеи       | 3740
массаж спины     | 9670
массаж ног       | 7151

4. Проверка динамики

Вызови только wordstat_get_dynamics.

Фраза: массаж спины
Период: PERIOD_MONTHLY
Дата начала: 2026-01-01T00:00:00Z
Дата окончания: 2026-06-30T23:59:59Z
Регион: 213

Верни таблицу по месяцам.

Что получится в итоге

Рабочий GPT сможет:

  • проверять одну поисковую фразу;
  • последовательно обрабатывать списки фраз;
  • сохранять исходный порядок;
  • работать с известными ID регионов;
  • получать дневную, недельную и месячную динамику;
  • формировать готовые таблицы;
  • переносить результаты в Excel или CSV.

Не будут доступны:

  • поиск ID региона по названию;
  • автоматическое распределение запроса по всем регионам;
  • полноценное дерево регионов внутри ChatGPT.

Для основной задачи — массового сбора частотности по заранее известному региону — эти ограничения не мешают.


📱 Telegram канал: NaitLAB | Что-то на умном – @NaitLAB
💡 Ковыряюсь в сложном, рассказываю на простом