День 13: Исследование рынка как у McKinsey с помощью ИИ

🎯 Профессиональная аналитика рынка за часы, а не недели!

Используйте ИИ-инструменты для глубокого анализа конкурентов, поиска ниш и прогнозирования трендов на уровне топ-консалтинговых компаний.

Тщательное исследование рынка – залог создания успешного продукта, точно попадающего в потребности клиентов. Консалтинговые компании вроде McKinsey тратят недели на сбор и анализ данных, но современные инструменты ИИ позволяют проделать эту работу в разы быстрее.

⚡ Скорость анализа

Часы вместо недельна полный анализ рынка и конкурентов

🔍 Глубина анализа

Уровень McKinseyбез штата аналитиков

💰 Экономия ресурсов

95% экономиина исследовательские расходы

Шаг 1. Анализ конкурентов с помощью ИИ

Получите полную картину конкурентов: кто они, что предлагают и в чем их сильные и слабые стороны.

1

Идентификация конкурентов

Запрос к ChatGPT: "Определи прямых и косвенных конкурентов на рынке [ваша отрасль/регион], проанализировав их продукты и услуги"

GPT-4 анализирует открытые источники и составляет список ключевых игроков

2

Сбор данных о конкурентах

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

Структурированные инсайты вместо горы несвязанных данных

3

Анализ цифрового присутствия

SimilarWeb: посещаемость сайтов, источники трафика, ключевые слова, вовлеченность аудитории конкурентов.

Бесплатное расширение для браузера дает базовую аналитику любого сайта

SWOT-анализ с ИИ

ChatGPT автоматически составляет таблицу SWOT-анализа конкурентов, выделяя сильные стороны, слабости, возможности и угрозы.

Strengths (Сильные стороны):
Преимущества конкурентов
Weaknesses (Слабости):
Уязвимые места для атаки

Шаг 2. Выявление незанятых ниш на рынке

Найдите зоны, которые остаются неохваченными или слабо обслуживаются текущими игроками.

🔍 Анализ слабых сторон конкурентов

Запрос к ИИ: "На основе отзывов перечисли, чем недовольны клиенты у конкурентов X, Y. Какие потребности пока не закрыты?"

Результат: ChatGPT находит закономерности и формулирует незакрытые потребности

💡 Brainstorm новых идей с ИИ

"Предложи идеи новых продуктов или услуг в сфере [ваша отрасль], которые удовлетворят потребности, не закрытые текущими игроками рынка"

Бонус: "Какие группы потребителей недослужены существующими компаниями?"

📊 Анализ поисковых запросов

Google Trends + Wordstat + ИИ-интерпретация: какие запросы растут, но не покрыты достаточным предложением.

Пример: Высокий интерес к "эко-упаковке для доставки еды", но ни один локальный сервис этим не занимается

Шаг 3. Анализ трендов и составление карты возможностей

Понимание динамики: какие тенденции набирают силу и куда движется отрасль.

Сбор информации о трендах

Perplexity AI:
"Latest market trends in [отрасль] 2025"
Bing Chat:
Мониторинг новостей и исследований
ChatGPT:
Анализ технологий и бизнес-моделей

Социальные тренды

Brandwatch:
Social listening с ИИ-анализом
Ручной сбор:
Комментарии + ChatGPT анализ
AI-инсайт:
Отечественные решения

Карта возможностей

Совместите результаты анализа конкурентов, ниш и трендов в единую карту возможностей. Ранжируйте идеи по эффорту и выгоде.

High Impact, Low Effort:
Low-hanging fruit (приоритет №1)
High Impact, High Effort:
Стратегические инвестиции

Инструменты для исследования рынка с ИИ

🤖

ChatGPT

Анализ текстов, генерация идей, составление отчетов

Универсальный ассистент
🔍

Perplexity AI

Поиск с ИИ и ссылками на источники

Идеально для фактов
📊

SimilarWeb

Анализ трафика и маркетинга конкурентов

Веб-аналитика
🧠

Claude

Обработка больших документов и PDF

Для длинных текстов
📈

Google Trends

Анализ поисковых трендов + ИИ-интерпретация

Поисковая аналитика
📝

Google Sheets + GPT

Автоматизация анализа в таблицах

Интеграция с GPT

📺 Анализ конкурентов с помощью нейросетей

ChatGPT + SimilarWeb: практический разбор

За 30 минут автор выявляет источники трафика конкурентов и их маркетинговые фишки с помощью связки ИИ-инструментов. Пошаговый алгоритм анализа.

🎯 Практическое задание

Задачи для выполнения:

1
Полный анализ 5 конкурентов

Используйте ChatGPT + SimilarWeb для создания SWOT-анализа ваших основных конкурентов. Выявите их сильные и слабые стороны.

🎯 Создайте сравнительную таблицу

2
Поиск 3 незанятых ниш

На основе анализа жалоб клиентов и поисковых трендов найдите 3 потенциальные ниши в вашей отрасли с помощью ИИ.

💡 Оцените размер каждой ниши

3
Карта возможностей на 2025 год

Создайте карту возможностей, объединив конкурентный анализ, ниши и тренды. Приоритизируйте с помощью ИИ.

📊 Используйте матрицу impact/effort

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

Профессиональное исследование рынка уровня McKinsey

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

🛠️ Практический инструмент: Шаблон исследования рынка

Пошаговый план создания автоматизированной системы анализа рынка с интеграцией GPT и Google Sheets

Google SheetsGPT APIАвтоматизация
✅ Общая подготовка
  • Определить цель исследования (например: вывод нового продукта, поиск точек роста).
  • Сформулировать ключевые вопросы к рынку (кто конкуренты, какие ниши пустуют, где наибольший потенциал).
  • Создать Google Sheet с отдельными вкладками:
    • Конкуренты
    • SWOT
    • Трафик/Источники
    • Gaps & Тренды
    • Impact/Effort Матрица

🏢 Анализ конкурентов

  • Составить список конкурентов (прямые, косвенные).
  • Настроить интеграцию GPT для автоматического сбора данных (описание продукта, ценность, аудитория).
  • Добавить в таблицу данные по трафику (SimilarWeb, Semrush, Яндекс.Метрика/Google Analytics при доступе).
  • Сформировать SWOT-анализ по каждому конкуренту (GPT помогает структурировать сильные и слабые стороны).
  • Автоматизировать сводку: GPT формирует краткие выводы о конкурентной среде.

🎯 Поиск ниш (Gaps + тренды)

  • Подготовить таблицу со столбцами: тренд/ниша, уровень спроса, конкуренция, новизна.
  • С помощью GPT сформировать список gap-идей (что упускают конкуренты).
  • Проверить спрос по трендам (Google Trends, Яндекс.Вордстат, Keyword Planner).
  • Задать GPT задачу: «Сопоставь тренды и ниши, оцени привлекательность».
  • Добавить фильтры в Google Sheet (по конкуренции, росту интереса).

🗺️ Карта возможностей (Impact/Effort)

  • Создать матрицу с осями:
    • Impact (влияние/потенциал роста).
    • Effort (затраты ресурсов).
  • Добавить в таблицу все найденные ниши и идеи.
  • С помощью GPT распределить их по квадрантам:
    • Quick Wins (высокий эффект, низкие усилия).
    • Major Projects (высокий эффект, большие усилия).
    • Fill-ins (низкий эффект, низкие усилия).
    • Time Wasters (низкий эффект, высокие усилия).
  • Автоматизировать визуализацию (Google Sheets диаграмма или подключение Data Studio/Looker).

🚀 Финализация

  • Проверить корректность интеграции GPT (быстрый запуск скрипта или через API).
  • Убедиться, что все таблицы имеют автообновление и сохранение истории версий.
  • Подготовить итоговый отчет (отдельная вкладка или экспорт в PDF).
  • Настроить совместный доступ (шаринг Google Sheets команде/клиенту).
План интеграции

Структура Google Sheets

Вкладки:

  • Конкуренты — список URL и сводки.
  • SWOT — авто-генерация SWOT по каждой компании.
  • Gaps&Trends — идеи ниш и трендов.
  • ImpactEffort — матрица возможностей.

Колонки Конкуренты:

A: URL, B: Название, C: Описание, D: Ценность (USP), E: Аудитория, F: Ключ. фичи, G: Модель монетизации, H: Каналы привлечения, I: Гео, J: Комментарии, K: Обновлено.

Выбор модели и API

Актуальный способ запроса — Responses API (POST /v1/responses). Он проще и поддерживает «структурированные ответы» в JSON-схеме.

OpenAI Cookbook • OpenAI Platform • OpenAI

Бюджетно и достаточно умно для такого проекта подойдёт gpt-4.1-mini (можно заменить на gpt-4.1, если нужен потолок качества).

OpenAI Platform

Вариант A (без кода): аддон «GPT for Sheets & Docs»

  • Установить аддон из Marketplace (Talarian). Google Workspace
  • Открыть таблицу → Extensions → GPT for Sheets and Docs → Launch.
  • Ввести OpenAI API-ключ и модель (например, gpt-4.1-mini).
  • В ячейках использовать формулы аддона (например, =GPT("Суммаризуй сайт " & A2 & " по схеме ...")).

Плюс: быстро стартовать. Минус: меньше контроля над схемой/JSON и обработкой HTML.

Вариант B (с кодом): Google Apps Script + OpenAI Responses API

1. Подготовка проекта
  • В Google Sheets: Extensions → Apps Script.
  • Project Settings → Script properties → добавить OPENAI_API_KEY (так безопаснее, чем хранить в коде).
  • В Code.gs вставить код ниже и сохранить.

Почему Responses API и «структурированные ответы»? Он нативно поддерживает response_format: json_schema, что заставляет модель возвращать валидный JSON по вашей схеме. OpenAI Platform • OpenAI

2. Код: базовый клиент OpenAI
/** === Конфиг === */
const OPENAI_URL = "https://api.openai.com/v1/responses";
const OPENAI_MODEL = "gpt-4.1-mini"; // можно "gpt-4.1" при необходимости качества

function getApiKey_() {
  const key = PropertiesService.getScriptProperties().getProperty("OPENAI_API_KEY");
  if (!key) throw new Error("Нет Script property OPENAI_API_KEY");
  return key;
}

/** Универсальный вызов Responses API с JSON-схемой */
function callOpenAIJson_(prompt, jsonSchemaObj, temperature) {
  const payload = {
    model: OPENAI_MODEL,
    input: [
      {
        role: "user",
        content: [
          { type: "input_text", text: prompt }
        ]
      }
    ],
    response_format: {
      type: "json_schema",
      json_schema: {
        name: "StructuredResult",
        schema: jsonSchemaObj,
        strict: true
      }
    },
    temperature: temperature ?? 0.4
  };

  const res = UrlFetchApp.fetch(OPENAI_URL, {
    method: "post",
    contentType: "application/json",
    headers: { Authorization: `Bearer ${getApiKey_()}` },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true
  });

  if (res.getResponseCode() >= 400) {
    throw new Error("OpenAI error: " + res.getContentText());
  }

  const json = JSON.parse(res.getContentText());
  // В Responses API текст лежит в output -> message -> content -> text
  const text = json && json.output && json.output[0] && json.output[0].content && json.output[0].content[0] ? json.output[0].content[0].text : null;
  if (!text) throw new Error("Не удалось извлечь текст из ответа OpenAI: " + res.getContentText());

  // Возвращает строку JSON, парсим в объект:
  try {
    return JSON.parse(text);
  } catch (e) {
    // Если модель вернула текст, но без чистого JSON (мало вероятно при json_schema) – пробуем поправить
    return JSON.parse(text.replace(/```json|```/g, "").trim());
  }
}

Форма запроса через input и пример извлечения результата соответствуют cookbook по Responses API. OpenAI Cookbook

3. Вытаскиваем текст с сайта конкурента и режем до лимита
/** Грубая очистка HTML -> текст */
function htmlToText_(html) {
  // Убираем скрипты/стили и теги
  html = html.replace(/<script[\s\S]*?<\/script>/gi, " ")
             .replace(/<style[\s\S]*?<\/style>/gi, " ")
             .replace(/<[^>]+>/g, " ")
             .replace(/&nbsp;|&amp;|&quot;|&lt;|&gt;|&#\d+;/g, " " );
  // Сжимаем пробелы
  return html.replace(/\s+/g, " ").trim();
}

function fetchPageText_(url, maxLen) {
  const res = UrlFetchApp.fetch(url, { muteHttpExceptions: true, followRedirects: true });
  if (res.getResponseCode() >= 400) throw new Error("Не удалось скачать: " + url);
  const txt = htmlToText_(res.getContentText());
  const lim = maxLen ?? 12000; // ограничим, чтобы не раздувать контекст
  return txt.length > lim ? txt.slice(0, lim) : txt;
}

Примечание: соблюдайте robots.txt и условия сайтов; объём ограничиваем, чтобы экономить токены.

4. Суммаризация конкурента в жёсткий JSON
/** Схема JSON для конкурента */
function competitorSchema_() {
  return {
    type: "object",
    properties: {
      name: { type: "string" },
      short_description: { type: "string" },
      value_proposition: { type: "string" },
      target_audience: { type: "string" },
      key_features: { type: "array", items: { type: "string" } },
      pricing_model: { type: "string" },
      acquisition_channels: { type: "array", items: { type: "string" } },
      geo_focus: { type: "string" },
      notes: { type: "string" }
    },
    required: ["name", "short_description", "value_proposition", "target_audience", "key_features"]
  };
}

/** Пользовательская функция в листе: =COMPETITOR(A2) */
function COMPETITOR(url) {
  if (!url) return [["", "", "", "", "", "", "", "", "", ""]];
  const pageText = fetchPageText_(url, 12000);

  const prompt = [
    "Ты — продуктовый аналитик. Извлеки факты о компании/продукте из текста ниже.",
    "Если данных нет — оставь поле пустым, не выдумывай.",
    "Верни строго JSON по схеме (без комментариев).",
    "",
    "Текст с сайта (обрезан):",
    pageText
  ].join("\n");

  const obj = callOpenAIJson_(prompt, competitorSchema_(), 0.2);

  // Возвращаем как массив по колонкам для заполнения строки в Google Sheets
  const out = [
    url,
    obj.name || "",
    obj.short_description || "",
    obj.value_proposition || "",
    obj.target_audience || "",
    (obj.key_features || []).join(", "),
    obj.pricing_model || "",
    (obj.acquisition_channels || []).join(", "),
    obj.geo_focus || "",
    obj.notes || ""
  ];

  return [out]; // двумерный массив — одна строка
}
5. SWOT по конкуренту (из сводки)
function swotSchema_() {
  return {
    type: "object",
    properties: {
      strengths: { type: "array", items: { type: "string" } },
      weaknesses: { type: "array", items: { type: "string" } },
      opportunities: { type: "array", items: { type: "string" } },
      threats: { type: "array", items: { type: "string" } }
    },
    required: ["strengths", "weaknesses", "opportunities", "threats"]
  };
}

/** =SWOT_SUMMARY(B2:J2) — передаём сводку по конкуренту как диапазон */
function SWOT_SUMMARY(range) {
  if (!range) return [["", "", "", ""]];
  const values = (Array.isArray(range) ? range : [[range]]);

  const headers = ["Название","Описание","Ценность","Аудитория","Фичи","Модель","Каналы","Гео","Заметки"];
  const flat = values[0]; // предполагаем одна строка
  const text = headers.map((h,i)=> `${h}: ${flat[i+1] || ""}`).join("\n");

  const prompt = [
    "Сделай лаконичный SWOT на основе краткой сводки конкурента ниже.",
    "Факты — только из текста. Верни строгий JSON (массивы строк).",
    "",
    text
  ].join("\n");

  const obj = callOpenAIJson_(prompt, swotSchema_(), 0.2);
  const join = arr => (arr||[]).join(" • ");

  return [[
    join(obj.strengths),
    join(obj.weaknesses),
    join(obj.opportunities),
    join(obj.threats)
  ]];
}
6. Поиск ниш: Gaps + тренды

Идея: на вход даём список конкурентов (фичи, аудитории, ценности) и просим GPT выдать кандидаты ниш с оценками.

function gapSchema_() {
  return {
    type: "array",
    items: {
      type: "object",
      properties: {
        idea: { type: "string" },
        who_for: { type: "string" },
        pain_point: { type: "string" },
        why_now: { type: "string" },
        competition_gap: { type: "string" },
        attractiveness_1to10: { type: "number" },
        confidence_note: { type: "string" }
      },
      required: ["idea","attractiveness_1to10"]
    }
  };
}

/** =GAPS(A2:J10; "рынок: рекламные автоматизации") */
function GAPS(competitorTableRange, contextNote) {
  const rows = competitorTableRange || [];
  const header = ["URL","Название","Описание","Ценность","Аудитория","Фичи","Модель","Каналы","Гео","Заметки"];
  const lines = rows.map(r => header.map((h,i)=> `${h}: ${r[i]||""}`).join(" | ")).join("\n");

  const prompt = [
    "На основе сведений о конкурентах сформируй список недообслуженных ниш (Gaps).",
    "Проверь дубли, обобщи фичи и ЦА. Верни массив объектов JSON по схеме.",
    contextNote ? `Контекст: ${contextNote}` : "",
    "",
    lines
  ].join("\n");

  const ideas = callOpenAIJson_(prompt, gapSchema_(), 0.3);
  // Разворачиваем массив в таблицу
  const headerOut = [["Идея","Для кого","Проблема","Почему сейчас","Gap vs конкуренты","Привлекательность (1-10)","Комментарий"]];
  const body = ideas.map(x => [
    x.idea||"", x.who_for||"", x.pain_point||"", x.why_now||"",
    x.competition_gap||"", x.attractiveness_1to10||"", x.confidence_note||""
  ]);
  return headerOut.concat(body);
}

При желании можно дополнить проверкой спроса (Google Trends, Keyword Planner) вручную, а в колонках добавить ссылки/оценки.

7. Матрица возможностей Impact/Effort

На вкладке ImpactEffort заведите колонки: A: Идея, B: Impact (1–10), C: Effort (1–10), D: Квадрант, E: Комментарий.

Формула для квадранта в D2:

=IFS(
  B2>=7  * (C2<=4), "Quick Wins",
  B2>=7  * (C2>4),  "Major Projects",
  B2<7   * (C2<=4), "Fill-ins",
  TRUE,             "Time Wasters"
)

Постройте пузырьковую/рассеяние-диаграмму (X=Effort, Y=Impact), добавьте условное форматирование по D.

Как этим пользоваться в таблице
  • В Конкуренты внесите URL в A2:A.
  • В B2 введите: =INDEX(COMPETITOR(A2),1,2) и протяните вправо до K. Или сразу: =COMPETITOR(A2) если строка выделена под этот массив.
  • На вкладке SWOT в A2:D2: =SWOT_SUMMARY(Конкуренты!B2:J2) и протяните вниз.
  • На вкладке Gaps&Trends вызовите: =GAPS(Конкуренты!A2:J20; "рынок: ваш контекст") — это выкатит список идей.
Альтернативы и дополнения

Официальный SDK для JS/TS (если захотите перенести логику в мини-бекенд): библиотека openai использует Responses API по умолчанию. GitHub

Веб-поиск прямо через Responses API как инструмент: можно включать hosted-tool web_search в массив tools, но в Google Apps Script это быстрее реализовать собственным UrlFetchApp + ваш промпт. OpenAI Cookbook • OpenAI Platform

Частые вопросы
  • Какая конечная точка и формат?
    POST https://api.openai.com/v1/responses, тело с model, input и при необходимости response_format: { type: "json_schema", ... }. OpenAI Cookbook • OpenAI Platform
  • Что делать, если JSON вдруг приедет в «json ... »?
    Это бывает в старых сценариях; в коде выше предусмотрена очистка на всякий случай. Структурированные ответы минимизируют проблему. OpenAI Community
  • Какую модель выбрать?
    Стартуйте с gpt-4.1-mini (дешево/быстро), для сложных разборов — gpt-4.1. OpenAI Platform