Библиотека · Маркетинг, продажи и аналитика на AI

Продуктовая аналитика с AI — PostHog, Mixpanel и умные инсайты без дата-аналитика

Строитель55 минОбновлено: октябрь 2026
69 из 105 в библиотеке

Модуль: 20. Analytics & Market Intelligence | Время: ~25 мин теории + 30 мин практики


Суть урока

🎨 Образ: Аналитика без AI — это читать толстую книгу в тёмной комнате. Данные есть, но что важно — непонятно. PostHog + Claude — это когда кто-то включает свет и говорит: "Смотри, вот здесь 40% пользователей уходят, и вот почему". На старте не обязательно нанимать дата-аналитика. Нужен правильный инструмент и Claude, который умеет читать цифры и говорить по-человечески.

В этом уроке ты настроишь автоматическую аналитическую систему: PostHog собирает данные, Claude их анализирует, и каждый понедельник утром в Telegram приходит отчёт — что работает, что нет, и что делать дальше.


Ключевые концепции

  • PostHog — open-source аналитика с сессионными записями, feature flags, API и MCP-сервером для Claude
  • Mixpanel — мощные воронки и когортный анализ, есть AI-функции (состав смотри на сайте)
  • Plausible — privacy-first аналитика, идеальна для старта без лишней сложности
  • DAU/MAU, Retention, Funnel — три метрики которые реально говорят о здоровье продукта
  • Churn prediction — Claude анализирует паттерны поведения и предсказывает кто уйдёт
  • Session replay + AI — Claude читает записи сессий и находит боли пользователей без просмотра каждого видео
  • A/B тестирование через feature flags — PostHog управляет экспериментами, Claude интерпретирует результаты
  • Автоматический еженедельный отчёт — Python скрипт + Claude API + Telegram = аналитика на автопилоте

Теория

Зачем продуктовая аналитика предпринимателю в 2026

Большинство соло-предпринимателей работают вслепую. Они смотрят на количество регистраций и думают, что у них всё хорошо. Но настоящие вопросы другие: сколько зарегистрировавшихся вернулись через неделю? На каком шаге онбординга уходит половина пользователей? Какая фича используется каждый день, а какую никто не трогает?

Раньше ответы на эти вопросы требовали дата-аналитика. Теперь многое можно получить от правильно настроенного Claude, но выводы всё равно проверяй: модель может ошибиться.

🎨 Образ: Представь, что твой продукт — это ресторан. Google Analytics — это счётчик на входной двери: сколько людей зашло. А продуктовая аналитика — это скрытые камеры + система наблюдения: ты видишь, кто взял меню, кто долго смотрел на цены, кто заказал и ушёл счастливым, а кто попросил счёт после первого блюда. Claude смотрит на все эти записи и говорит: "Слушай, у тебя проблема с третьим блюдом — 60% столиков его не доедают."

PostHog: open-source аналитика с мозгом

PostHog — это швейцарский нож продуктовой аналитики. Open-source, можно поставить на свой сервер или использовать их облако. У каждого продукта есть бесплатный месячный лимит (актуальные лимиты для событий аналитики и записей сессий — на странице тарифов PostHog). В самом PostHog есть и встроенный AI-помощник (PostHog AI), который отвечает на вопросы по данным.

Что умеет PostHog:

  • Трекинг событий (клики, переходы, действия пользователей)
  • Сессионные записи — буквально видеозаписи что делал пользователь
  • Feature flags — включай/выключай функции для разных групп
  • Воронки — где пользователи уходят из процесса
  • Когорты — группы пользователей по поведению
  • Эксперименты (A/B тесты)
  • PostHog MCP — прямая интеграция с Claude Code

PostHog MCP для Claude Code позволяет Claude напрямую запрашивать данные из твоего PostHog, строить запросы на HogQL (их язык запросов) и анализировать результаты без copy-paste. Сейчас это удалённый MCP-сервер PostHog (адрес https://mcp.posthog.com/mcp, регион данных определяется при входе в аккаунт). Подключение к Claude Code:

bash
claude mcp add --transport http posthog https://mcp.posthog.com/mcp

Как авторизоваться, зависит от версии: следуй инструкции PostHog для Claude Code (документация MCP PostHog). Старые примеры с пакетом @posthog/mcp-server и ключом в конфиге могут не работать.

После этого в Claude Code можно спросить: "Покажи мне топ-5 событий за последнюю неделю" — и Claude сам запросит данные.

Mixpanel: воронки и когорты на профессиональном уровне

Mixpanel специализируется на поведенческой аналитике. Если PostHog — это универсальный инструмент, то Mixpanel — специалист по вопросу "почему пользователи делают X".

Сильные стороны Mixpanel:

  • Воронки с breakdown по сегментам (платящие vs бесплатные, мобайл vs веб)
  • Когортный retention — видишь, пользователи каких недель удерживаются лучше
  • Impact report — как запуск фичи повлиял на ключевые метрики
  • Встроенные AI-функции для вопросов к данным (состав и названия смотри на сайте Mixpanel)
  • Flows — визуализация путей пользователей в интерфейсе

Mixpanel API для автоматизации:

python
import requests

def get_mixpanel_funnel(project_id, funnel_id, api_secret):
    url = f"https://mixpanel.com/api/2.0/funnels"
    params = {
        "funnel_id": funnel_id,
        "from_date": "2026-09-01",   # пример: подставь свои даты
        "to_date": "2026-09-30",
    }
    response = requests.get(
        url,
        params=params,
        auth=(api_secret, "")
    )
    return response.json()

У Mixpanel есть бесплатный уровень с лимитом событий; условия и лимиты меняются, смотри на сайте. Для вызовов API нужны данные проекта и ключ сервисного аккаунта: актуальный способ авторизации смотри в справочнике API.

Plausible: старт без перегрузки

Для самого начала, когда продукт только запущен и данных мало, Plausible Analytics — идеальный выбор. Простая установка (один скрипт), privacy-first: работает без cookie, поэтому в типичной настройке не нужен cookie-баннер. Сервис платный (есть пробный период), тарифы на сайте.

Plausible хорош для трафиковой аналитики (откуда приходят, что читают), но для продуктовой аналитики внутри приложения лучше PostHog или Mixpanel.

🎨 Образ: Plausible — это спидометр на приборной панели. PostHog — это полная диагностика в сервисном центре. Для начала спидометр достаточен. Когда машина едет странно — едешь на диагностику.

Ключевые метрики: что реально важно

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

DAU/MAU (Daily/Monthly Active Users) Процент DAU/MAU показывает "липкость" продукта. Нормальное значение сильно зависит от типа продукта: мессенджер используют каждый день, бухгалтерский сервис — раз в месяц. Сравнивай себя с собой во времени и с похожими продуктами. Если процент близок к нулю — люди не возвращаются, это проблема.

Retention по когортам Классический retention report: из пользователей зарегистрировавшихся на неделе X, сколько вернулись через 1 неделю, 2 недели, 4 недели. Главное — смотреть, выравнивается ли кривая: если часть пользователей остаётся стабильно, это хороший знак.

Funnel conversion Сколько % пользователей проходят путь от регистрации до активного использования. На онбординге обычно теряется заметная часть людей. Найти где — задача воронки.

Feature adoption Какие фичи используются регулярно, какие никто не трогает после первого раза.

Предсказание оттока (churn prediction) с Claude

Это одна из самых ценных вещей которую Claude может сделать с твоими данными. Вместо того чтобы реагировать когда пользователь уже ушёл — предсказать кто уйдёт через неделю и вмешаться.

python
import anthropic
import json

def predict_churn(users_activity_data: list[dict]) -> dict:
    """
    users_activity_data — список словарей с активностью каждого пользователя:
    [{"user_id": "u123", "last_login_days_ago": 8, "sessions_last_30d": 2,
      "feature_usage": {"core": 5, "advanced": 0}, "plan": "free"}]
    """
    client = anthropic.Anthropic()

    prompt = f"""
Ты аналитик продукта. Вот данные об активности {len(users_activity_data)} пользователей за последние 30 дней:

{json.dumps(users_activity_data, ensure_ascii=False, indent=2)}

Проанализируй паттерны и:
1. Выдели HIGH RISK пользователей (вероятно уйдут в ближайшие 2 недели)
2. Объясни признаки по которым определил риск
3. Предложи конкретное действие для каждой risk-группы (email, звонок, in-app уведомление)

Ответь в формате JSON:
{{
  "high_risk": [список user_id],
  "medium_risk": [список user_id],
  "risk_signals": "объяснение",
  "actions": {{"high_risk": "действие", "medium_risk": "действие"}}
}}
"""

    message = client.messages.create(
        model="claude-sonnet-5-5",   # актуальные модели: страница «Актуальное сейчас»
        max_tokens=1024,
        messages=[{"role": "user", "content": prompt}]
    )

    return json.loads("".join(b.text for b in message.content if b.type == "text"))

A/B тестирование: feature flags + Claude-интерпретатор

PostHog feature flags позволяют показывать разные версии интерфейса разным пользователям. Claude помогает интерпретировать результаты без статистических знаний.

Сценарий: ты тестируешь два варианта кнопки оплаты. PostHog показывает: Вариант A — 4.2% конверсии, Вариант B — 5.1% конверсии. Статистически значимо? Сколько нужно подождать? Claude отвечает на эти вопросы.

python
def interpret_ab_test(test_data: dict) -> str:
    client = anthropic.Anthropic()

    message = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=512,
        messages=[{
            "role": "user",
            "content": f"""
Проанализируй результаты A/B теста:
{json.dumps(test_data, ensure_ascii=False)}

Ответь:
1. Какой вариант победил и насколько уверенно?
2. Статистически значимый ли результат (выборка {test_data.get('total_users', 'N/A')} пользователей)?
3. Рекомендуй: раскатывать победителя или ждать больше данных?
Ответ на русском, кратко — 3-4 предложения.
"""
        }]
    )

    return "".join(b.text for b in message.content if b.type == "text")

Session replay + Claude: найти боли без просмотра видео

PostHog записывает сессии пользователей. При 1000 пользователей в день — это 1000 видео. Никто не будет их смотреть. Но Claude может читать метаданные сессий и выдавать паттерны.

Метаданные сессии включают: клики, rage clicks (бешеные клики когда что-то не работает), dead clicks (клики на некликабельные элементы), время на странице, элементы с которыми взаимодействовали.

python
def analyze_session_patterns(sessions_metadata: list[dict]) -> str:
    rage_clicks = [s for s in sessions_metadata if s.get("rage_clicks", 0) > 2]
    high_exit_pages = {}

    for session in sessions_metadata:
        exit_page = session.get("exit_page", "")
        high_exit_pages[exit_page] = high_exit_pages.get(exit_page, 0) + 1

    analysis_data = {
        "total_sessions": len(sessions_metadata),
        "frustration_sessions": len(rage_clicks),
        "top_exit_pages": sorted(
            high_exit_pages.items(), key=lambda x: x[1], reverse=True
        )[:5],
        "avg_session_duration_minutes": sum(
            s.get("duration_seconds", 0) for s in sessions_metadata
        ) / len(sessions_metadata) / 60
    }

    client = anthropic.Anthropic()
    message = client.messages.create(
        model="claude-sonnet-5-5",
        max_tokens=800,
        messages=[{
            "role": "user",
            "content": f"""
Данные о сессиях пользователей:
{json.dumps(analysis_data, ensure_ascii=False, indent=2)}

Найди главные точки боли пользователей. Что нужно исправить в первую очередь?
Ответ: три конкретные проблемы с предложениями по исправлению.
"""
        }]
    )

    return "".join(b.text for b in message.content if b.type == "text")

Еженедельный автоматический отчёт

Это главный инструмент который ты настроишь в практике. Python скрипт запускается каждый понедельник, забирает данные из PostHog за прошлую неделю (запросами на HogQL), отдаёт Claude, получает человеческий отчёт, отправляет в Telegram.

python
import os
import json
import anthropic
import requests
from datetime import datetime, timedelta
from dotenv import load_dotenv

load_dotenv()

# Ключи берём из .env, а не пишем в коде
POSTHOG_PERSONAL_API_KEY = os.getenv("POSTHOG_PERSONAL_API_KEY")  # персональный ключ (phx_...) для чтения данных
POSTHOG_PROJECT_ID = os.getenv("POSTHOG_PROJECT_ID")
POSTHOG_HOST = os.getenv("POSTHOG_HOST", "https://us.posthog.com")  # для Европы: https://eu.posthog.com
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
TELEGRAM_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")

def run_hogql(query: str) -> list:
    """Выполняет запрос на HogQL (язык запросов PostHog) через API."""
    response = requests.post(
        f"{POSTHOG_HOST}/api/projects/{POSTHOG_PROJECT_ID}/query/",
        headers={"Authorization": f"Bearer {POSTHOG_PERSONAL_API_KEY}"},
        json={"query": {"kind": "HogQLQuery", "query": query}, "name": "weekly report"},
    )
    return response.json().get("results", []) if response.ok else []

def fetch_posthog_insights() -> dict:
    """Забираем ключевые метрики за прошлую неделю"""
    end_date = datetime.now()
    start_date = end_date - timedelta(days=7)

    # Просмотры страниц по дням
    pageviews_by_day = run_hogql(
        "select toDate(timestamp) as day, count() from events "
        "where event = '$pageview' and timestamp >= now() - interval 7 day "
        "group by day order by day"
    )

    # Активные пользователи за неделю
    active_users = run_hogql(
        "select count(distinct person_id) from events "
        "where timestamp >= now() - interval 7 day"
    )

    # Новые регистрации
    signups = run_hogql(
        "select count() from events "
        "where event = 'signed_up' and timestamp >= now() - interval 7 day"
    )

    return {
        "period": f"{start_date.strftime('%d.%m')} — {end_date.strftime('%d.%m.%Y')}",
        "pageviews_by_day": pageviews_by_day,
        "active_users": active_users,
        "signups": signups,
    }

def generate_weekly_report(insights: dict) -> str:
    """Claude генерирует человеческий отчёт"""
    client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)

    message = client.messages.create(
        model="claude-sonnet-5-5",   # актуальные модели: страница «Актуальное сейчас»
        max_tokens=1500,
        messages=[{
            "role": "user",
            "content": f"""
Ты аналитик продукта. Вот данные за неделю {insights['period']}:

{json.dumps(insights, ensure_ascii=False, indent=2, default=str)}

Напиши еженедельный отчёт для основателя стартапа. Структура:
📊 НЕДЕЛЯ {insights['period']}

🟢 Что хорошо (2-3 пункта)
🔴 На что обратить внимание (1-2 пункта)
🎯 Приоритет на эту неделю (1 конкретное действие)

Тон: дружелюбный, конкретный, без воды. Пиши по-русски.
Если данных мало, так и скажи, не выдумывай причины.
"""
        }]
    )

    return "".join(b.text for b in message.content if b.type == "text")

def send_to_telegram(text: str):
    """Отправляем отчёт в Telegram"""
    requests.post(
        f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
        json={
            "chat_id": TELEGRAM_CHAT_ID,
            "text": text,
        }
    )

def run_weekly_report():
    print("Собираем данные из PostHog...")
    insights = fetch_posthog_insights()

    print("Claude анализирует...")
    report = generate_weekly_report(insights)

    print("Отправляем в Telegram...")
    send_to_telegram(report)
    print("Готово!")

if __name__ == "__main__":
    run_weekly_report()

Этот скрипт запускается через cron каждый понедельник в 9:00:

Напиши в чат
0 9 * * 1 cd /path/to/project && python weekly_report.py

Практика

Задача: настроить автоматическую аналитическую систему за 5 шагов.

Шаг 1: Установить PostHog (15 мин)

  1. Зайди на posthog.com и создай аккаунт (есть бесплатный уровень)
  2. Создай проект и получи два ключа. Project API Key (начинается на phc_) нужен для отправки событий из продукта. Для чтения данных скриптами нужен отдельный персональный ключ (начинается на phx_: в настройках аккаунта, раздел Personal API keys) и ID проекта
  3. Добавь трекинг в свой продукт (точный код и адрес api_host для твоего региона бери из подсказки в PostHog):

Для веб-приложения (HTML):

html
<script>
  !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){...}
  posthog.init('phc_ваш_ключ', {api_host: 'https://us.i.posthog.com'})   // для Европы: https://eu.i.posthog.com
</script>

Для Python бэкенда:

bash
pip install posthog
python
from posthog import Posthog

posthog = Posthog('phc_ваш_ключ', host='https://us.i.posthog.com')
# Именованные аргументы работают в разных версиях библиотеки
posthog.capture(event='signed_up', distinct_id='user_123', properties={'plan': 'free', 'source': 'google'})
  1. Проверь что события приходят — зайди в PostHog → Activity → Live Events

Шаг 2: Настроить ключевые воронки (10 мин)

В PostHog → Funnels → New Funnel:

  • Шаг 1: signed_up (регистрация)
  • Шаг 2: onboarding_completed (завершил онбординг)
  • Шаг 3: first_core_action (сделал первое ключевое действие)
  • Шаг 4: payment_completed (оплатил)

Сохрани воронку. Это твоя главная метрика здоровья продукта.

Шаг 3: Создать Python скрипт для недельного отчёта (20 мин)

bash
mkdir analytics_bot
cd analytics_bot
pip install anthropic requests python-dotenv

Создай файл .env (и добавь его в .gitignore):

Код
POSTHOG_PERSONAL_API_KEY=phx_ваш_персональный_ключ
POSTHOG_PROJECT_ID=ваш_id_проекта
POSTHOG_HOST=https://us.posthog.com
ANTHROPIC_API_KEY=sk-ant-ваш_ключ
TELEGRAM_BOT_TOKEN=ваш_токен
TELEGRAM_CHAT_ID=ваш_chat_id

Скопируй код weekly_report.py из теории выше. Запусти:

bash
python weekly_report.py

Проверь что отчёт пришёл в Telegram.

Шаг 4: Настроить churn prediction (15 мин)

Добавь в проект скрипт churn_detector.py:

python
from dotenv import load_dotenv
import os
import anthropic
import requests
import json

load_dotenv()

POSTHOG_HOST = os.getenv("POSTHOG_HOST", "https://us.posthog.com")

def get_at_risk_users():
    """Получаем пользователей не заходивших 7+ дней (упрощённо: фильтр и поля сверь с документацией PostHog)"""
    headers = {"Authorization": f"Bearer {os.getenv('POSTHOG_PERSONAL_API_KEY')}"}

    # Упрощённый запрос — пользователи с низкой активностью
    response = requests.get(
        f"{POSTHOG_HOST}/api/projects/{os.getenv('POSTHOG_PROJECT_ID')}/persons/",
        headers=headers,
        params={"properties": '[{"key":"$last_seen","value":"-7d","operator":"is_before_date"}]'}
    )

    if not response.ok:
        return []

    persons = response.json().get("results", [])
    # В модель отправляем только внутренние ID и счётчики, без имён и email
    return [
        {
            "user_id": p.get("distinct_ids", ["unknown"])[0],
            "last_seen": p.get("properties", {}).get("$last_seen"),
            "total_sessions": p.get("properties", {}).get("$session_count", 0),
        }
        for p in persons[:50]  # Берём первые 50
    ]

def run_churn_check():
    users = get_at_risk_users()
    if not users:
        print("Нет пользователей в зоне риска")
        return

    client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
    message = client.messages.create(
        model="claude-haiku-4-5",  # Haiku достаточно для этой задачи (проверь, что модель ещё доступна в API)
        max_tokens=500,
        messages=[{
            "role": "user",
            "content": f"""
Вот пользователи которые давно не заходили ({len(users)} человек):
{json.dumps(users[:10], ensure_ascii=False)}

Что им написать чтобы вернуть? Одно короткое письмо (3-4 предложения) для реактивации.
"""
        }]
    )

    print("Рекомендованный текст для реактивации:")
    print("".join(b.text for b in message.content if b.type == "text"))
    print(f"\nПользователей в зоне риска: {len(users)}")

if __name__ == "__main__":
    run_churn_check()

Шаг 5: Настроить автозапуск (5 мин)

bash
# Открыть crontab
crontab -e

# Добавить строки:
# Понедельник 9:00 — недельный отчёт
0 9 * * 1 cd /path/to/analytics_bot && python weekly_report.py

# Пятница 17:00 — проверка оттока
0 17 * * 5 cd /path/to/analytics_bot && python churn_detector.py >> churn_log.txt

Проверка результата: через неделю у тебя в Telegram должен появиться первый автоматический отчёт. Если данных пока мало — это нормально, система работает и накапливает историю.


Инструменты и ресурсы

Инструмент Цена Для чего
PostHog Бесплатный месячный лимит у каждого продукта (актуальные лимиты — на странице тарифов PostHog) Основная продуктовая аналитика, session replay, flags
Mixpanel Есть бесплатный уровень, условия на сайте Воронки, когорты, когда нужна глубокая поведенческая аналитика
Plausible Платно, есть пробный период, тарифы на сайте Privacy-first трафиковая аналитика, старт проекта
Amplitude Есть бесплатный уровень, условия на сайте Альтернатива Mixpanel, сильный retention analysis
PostHog MCP Входит в PostHog Прямые запросы из Claude Code в PostHog
Claude Haiku Оплата по токенам Рутинные аналитические задачи
Claude Sonnet Оплата по токенам Сложный анализ, churn prediction

Актуальные цены и версии: Актуальное сейчас.

Полезные ссылки:


Ключевые выводы

"Данные без интерпретации — это шум. Claude превращает шум в решения."

"Автоматический еженедельный отчёт в Telegram стоит копейки на токены и экономит часы ручной сводки. Но цифры в нём перепроверяй: модель пересказывает данные, а не заменяет аналитика."

"Лучший момент настроить аналитику — до запуска. Второй лучший момент — прямо сейчас."


Следующий урок

→ Анализ ниш и трендов — Exploding Topics, Google Trends API и охота на возможности

Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс