agentsclimarketplace

Cp analytics

Skill imMeeto/midi-skills/skills/cp-analytics

Разбирает статистику одной площадки: где взять данные (ВКонтакте — XLS/CSV и stats.get, Дзен — XLS, YouTube — Advanced mode с лимитом 500 строк, TikTok — XLSX/CSV, Instagram и Telegram — только руками), какие поля брать, как нормировать на охват, считать медиану, ловить выбросы двумя ступенями (2×–10× медианы разбирается как контент, свыше 10× сначала объясняется дистрибуцией) и раскладывать единицы по квадрантам «охват × вовлечённость». Отдаёт таблицу метрик и 3–5 находок, у каждой гипотеза и способ проверки. Работает и на неполных данных: сокращает процедуру и говорит, что выгрузить, чтобы её достроить. Держит режим малых чисел и календарь разрывов данных, поэтому не принимает смену определения метрики за провал контента. Триггеры — «разбери статистику», «почему упали охваты», «что сработало», «посмотри цифры за месяц», «проанализируй канал». Use when the user wants analysis of one platform's stats or asks why reach dropped.From its SKILL.md

Install
npx -y skills add imMeeto/midi-skills --skill cp-analytics

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

31.9 KB, as published. Nobody here has run it

cp-analytics · Разбор статистики одной площадки

Задача — превратить выгрузку в 3–5 находок, каждая из которых проверяема. Не пересказ цифр, не «охваты выросли на 12%», не отчёт ради отчёта.

Когда не этот скилл

  • Нужно свести несколько площадок в один отчёт → cp-analytics-cross. Там живёт словарь несовместимости метрик, здесь — одна площадка и её собственная динамика.
  • Нужно оценить упаковку, позиционирование, воронку аккаунта, а не цифры → cp-audit.
  • Нужно оценить сценарий до съёмки → cp-video-score.
  • Нужно решить, что публиковать дальше → cp-content-plan.

Контекст

Читай из context/: 02-metrics.md целиком (что даёт каждая площадка, формулы, детекция аутлаеров, окна валидации), 07-evidence.md §4–§7 (порог, режим малых чисел, календарь разрывов), 01-platforms.md §6 и §8 (аудитория площадок, что сломало старые ориентиры). Профиль бренда — brands/<slug>/: assets.md (площадки и их роль), brand.md (стадия), audience.md (на какой аватар работал контент). Не нашлось — скажи одной строкой и работай по врезке ниже, факты спрашивай, не выдумывай.

Врезка констант

Где данные и в каком виде.

ПлощадкаВыгрузкаЧто брать
ВКонтактеесть нативно: «Выгрузить статистику», XLS и CSV, с выбором диапазона и групп метрик. API stats.get — по днямday, views, visitors, reach, reach_subscribers, subscribed, unsubscribed, разбивки по полу, возрасту, гео. В «Охвате» раздельно: полный, виральный, охват подписчиков, рекламный. Клипы — просмотры, уникальные зрители, среднее время досмотра
ДзенXLS из Студиипоказы, открытия, дочитывания, подписки, комментарии, лайки, репосты, время просмотра; для статей CTR в ленте и тепловая карта, для видео VTR и график глубины; источники переходов
YouTubeAdvanced mode. Лимит 500 строк на отчёт, до 50 сохранённых отчётов, удаляются через 60 дней. Больше 500 строк — только Reporting APIпросмотры, engaged views, среднее время просмотра, средний процент просмотра, показы и CTR показов, источники трафика, доля подписчиков
TikTokкнопка выгрузки в Business Hub, XLSX или CSV, встроенного репортинга нет — отчёт собирается руками. Органика и платное в один отчёт не сводятся. История — до годапросмотры, лайки, комментарии, репосты, время просмотра, completion rate, демография
Instagramнативного CSV нет. Обходные пути: архив аккаунта (JSON), Meta Business Suite, Graph API. Метрика подписчиков через Insights API — от 100 подписчиковпросмотры, охват, вовлечённые аккаунты, посещения профиля, подписки, сохранения, репосты; Reels — время просмотра и среднее время просмотра
Telegramвыгрузки нет ни в каком виде. Ввод руками или скриншоты графиков. Официального порога нет: доступ определяется серверным конфигом и возвращается флагом can_view_stats, практически наблюдаемый порог — более 50 подписчиков (уровень C), официальным числом не называтьпросмотры на пост, репосты на пост, реакции на пост, источники просмотров, источники новых подписчиков, активные часы, доля с включёнными уведомлениями
RuTubeсчитать, что выгрузки нет, пока не проверено вручную. График удержания с 26.02.2026 — только для видео после 01.07.2025 (вертикальные после 01.11.2025), от 100 просмотров, от 3 минут, только в вебесредняя длительность просмотра, точки отвала, пересматриваемые фрагменты

Подписки на уровне публикации есть не везде. Дзен отдаёт подписки в метриках публикации — там строка «подписки / охват» считается. ВКонтакте отдаёт subscribed и unsubscribed по дням, а не по единице контента: на уровне публикации метрика недоступна в принципе, строка снимается, а не оценивается по дню. Telegram даёт источники новых подписчиков по каналу, не по посту. Прежде чем считать эту строку, проверь, отдаёт ли площадка метрику по публикации; не отдаёт — строка не выводится, и это идёт в «чего мы не знаем».

Календарь разрывов данных. Падение на этих датах не является провалом контента:

ДатаЧто произошло
31.03.2025YouTube: просмотр Shorts при каждом старте и реплее, старая метрика → engaged views
21.04.2025Instagram: упразднены impressions и plays, введена единая Views
06.06.2025Instagram: история видеопросмотров профиля доступна только с этой даты
01.07.2025RuTube: детальная статистика только для видео после этой даты
30.03.2026ВКонтакте: автоматическая чистка подписчиков — падение может быть артефактом
27.04.2026Дзен: на карточках «Открытия» вместо «Дочитываний»; открытия включают автопросмотры при прокрутке

Глубина истории Дзена: подписчики с 25.01.2022, события с 21.06.2021, время просмотра с 01.08.2023. Сравнение год к году на части площадок физически невозможно — говори это прямо, а не считай приблизительно.

Метод.

  • Нормировать на охват, не на подписчиков. Подписчики — накопленное число, охват — то, что реально случилось с этой единицей.
  • Считать медиану, не среднее: распределение скошено, одна вирусная единица ломает среднее.
  • Порог = собственная медиана за последние 20–30 единиц. Внешний бенчмарк нормой не является никогда.
  • Аутлаер — две ступени, не одна корзина. Пороги 2× и 10× — ориентиры уровня C, не норма; на своей выборке уточняются.
    • Ступень 1, от 2× до ~10× медианы — контентный выброс. Разбирается по признакам содержания: тема, аватар, тип хука, формат, длина.
    • Ступень 2, свыше ~10× медианы — сначала объясняется дистрибуцией, а не текстом. Первое действие: посчитать долю неподписчиков в охвате = (охват − охват подписчиков) / охват, посмотреть разбивку охвата (в ВК она есть: полный, виральный, охват подписчиков, рекламный) и список репостов — кто репостнул и какая у него аудитория. Доля неподписчиков 90–95% или репост из крупного аккаунта означают, что воспроизводится событие дистрибуции, а не текст.
    • Пока разбивка охвата по ступени 2 не проверена, публикация не идёт в основание контент-плана и не смешивается со ступенью 1 в одном списке признаков. Смешение двух ступеней в одной корзине производит ложный паттерн: у публикации, которая просто отработала лучше коридора, и у публикации, которую разнесли репостом, общего признака в содержании может не быть вовсе.
    • Вниз выброс считается по одной ступени: ≤0,5× медианы.
  • Окна валидации: 24 часа / 7 дней / 28 дней. Пока паттерн не проверен на всех трёх, он не подтверждён.
  • Режим малых чисел. Погрешность счётных величин ≈1/√n: 9 наблюдений — ±33%, 100 — ±10%, 900 — ±3,3%. Разница между 12 и 9 лайками статистически неотличима от нуля. Допуск к разбору: минимум 10 публикаций за год минимум в 4 разные недели.

Формулы одной единицы: hook rate = удержание на 3 с / просмотры · completion = средний % просмотра · send rate = пересылки / охват · like rate = лайки / охват · replay rate = реплеи / просмотры · comment rate = комментарии / просмотры.

Вход

Спроси одним блоком, не допрашивай. Чего нет — работай с тем, что есть, и скажи, чего не хватило.

  1. Какая площадка и какой период.
  2. Что есть на руках: файл выгрузки, скриншоты, ничего. Какие столбцы в нём есть — охваты, реакции, репосты, сохранения, время просмотра, разбивка охвата.
  3. Сколько единиц контента вышло за период и даты публикаций — списком или хотя бы по неделям. Без дат не работают ни допуск (10 публикаций минимум в 4 разные недели), ни окна валидации, ни разбор выбросов: выброс объясняется тем, что происходило вокруг этой даты.
  4. Роль площадки: двигатель охвата, дом аудитории, витрина, дубль.
  5. Что менялось в периоде: реклама, посевы, коллаборации, смена рубрик, отпуск, ребрендинг.
  6. Какой вопрос у пользователя на самом деле — «что сработало», «почему упало», «что снимать дальше».

Процесс

  1. Проверь допуск. Меньше 10 публикаций или всё в одну неделю — скажи прямо: разбирать нечего, разница будет шумом. Дай не анализ, а план накопления данных: сколько единиц и за какой срок нужно.
  2. Собери таблицу. Одна строка — одна единица контента. Колонки: дата, формат, тема, пиллар, охват, просмотры, реакции, комментарии, репосты, сохранения, подписки, время просмотра. Пустые поля оставляй пустыми — не подставляй оценки.
  3. Нормируй. Посчитай нормированные метрики на охват. Абсолютные числа оставь в таблице как справку, выводы строй на нормированных.
  4. Посчитай медиану по каждой нормированной метрике за 20–30 последних единиц. Это порог. Если единиц меньше — считай, но помечай: «порог предварительный».
  5. Найди аутлаеры и раздели их на две ступени (пороги — ориентиры уровня C).
    • Ступень 1, 2×–10× медианы. Разбери общие признаки содержания: тема, аватар, тип хука, формат, длина, день, наличие лица в кадре, наличие цифры в заголовке. Общий признак у 3+ выбросов — кандидат в находку. Общий признак у одного — совпадение.
    • Ступень 2, свыше ~10× медианы. Не разбирай как контент, пока не объяснил дистрибуцией. Порядок: доля неподписчиков в охвате → разбивка охвата (ВК: полный, виральный, охват подписчиков, рекламный) → список репостов и размер аудитории репостнувших → были ли посевы и реклама в этот день. Разбивки нет — так и пиши: «объяснение не проверено, публикация из выводов исключена», и назови, где пользователю взять разбивку.
    • Ступени не смешиваются. Признаки ступени 2 не идут в общий список признаков ступени 1 и не становятся основанием контент-плана. Если ступень 2 объяснилась дистрибуцией — вывод из неё касается дистрибуции (кто репостит, куда попадает), а не текста.
    • Вниз: ≤0,5× медианы, отдельным списком.
  6. Разложи по квадрантам «охват × вовлечённость» относительно медианы:
    • Звёзды — высокий охват, высокая вовлечённость: формат масштабировать;
    • Виральное, но пустое — охват есть, вовлечения нет: тема цепляет, обещание не оплачено;
    • Нишевое золото — охвата мало, вовлечение сильное: попали в ядро, нужен другой вход на холодную аудиторию;
    • Провал — низко и то, и другое: формат не брать без новой гипотезы.
  7. Проверь окна. Единицы младше 28 дней помечай как незрелые. Вывод по первым часам — шум, так и пиши.
  8. Сверь с календарём разрывов. Провал или скачок попал на дату из таблицы — это артефакт платформы, не контент. Сравнение до и после даты не проводится.
  9. Сформулируй 3–5 находок. Каждая находка = наблюдение + гипотеза + способ проверки. Наблюдение без способа проверки — не находка. Данных хватило не на все шаги — смотри «Режим неполных данных» и выдавай сокращённую процедуру, а не отчёт из прочерков.

Режим неполных данных

Штатная ситуация, а не сбой: у нового пользователя нет ни профиля бренда, ни полной выгрузки — часто есть только столбец охватов. Скилл в этом режиме сокращает процедуру и называет, чем её достроить. Он не заполняет выход прочерками и не считает недостающее «данными нет» построчно.

Что отпадает и что выдаётся вместо.

Чего нет во входеКакие шаги отпадаютЧто выдаётся вместо
Реакций, репостов, сохранений — только охваты3 (нормировать не на что), 6 (у квадрантов нет второй оси)Ряд охватов: медиана, разброс, коридор, выбросы по двум ступеням, ритм публикаций по датам. Вместо квадрантов — одномерная шкала «относительно своей медианы»
Дат публикаций1 (допуск), 7 (окна валидации), разбор ступени 2Только описание ряда без выводов о динамике. Допуск не проходится и не имитируется
Метаданных публикаций: тема, формат, пиллар, тип хука5 в части признаковВыбросы перечисляются датами и числами, признаки не додумываются. Пользователю выдаётся список из 4–6 колонок, которые он допишет руками за 10–15 минут
Разбивки охвата и репостовступень 2 разбора выбросовВыброс помечается «объяснение не проверено», из оснований контент-плана исключается
Времени просмотра и досмотрастрока досмотра в таблицеСтрока не выводится вовсе
Подписок на уровне публикациистрока «подписки / охват»Строка снимается: у части площадок метрики нет в принципе (см. врезку), это не пробел выгрузки

Как подавать нехватку. Не «данных нет», а следующий шаг — тремя элементами: что именно нужно, где это лежит, сколько займёт.

ЧТО СЧИТАЕТСЯ СЕЙЧАС: <что реально посчитано на имеющемся>
ЧТОБЫ ДОСТРОИТЬ: <какой столбец> → <где взять: ВКонтакте — статистика сообщества,
  «Выгрузить статистику», XLS/CSV с выбором диапазона; Дзен — Студия, XLS;
  YouTube — Advanced mode, до 500 строк; Telegram — выгрузки нет, переносить руками>
  → <сколько это займёт: одна выгрузка ≈ 5 минут, разметка тем руками ≈ 15 минут>
ЧТО ЭТО ОТКРОЕТ: <какой шаг разбора станет возможен и какой вопрос закроет>

Одна строка отказа на весь отчёт, а не по строке на каждую пустую клетку. Отчёт, наполовину состоящий из «данных нет», — брак: это отписка, а не разбор.

Как формулировать находку

НАХОДКА
  Что видно: <факт из таблицы с числом и количеством единиц>
  Гипотеза: <почему так может быть — одна причина, не список>
  Проверка: <что опубликовать или измерить, сколько единиц, за какой срок,
             какой результат подтвердит гипотезу, а какой опровергнет>

Плохо: «карусели заходят лучше». Хорошо: «у 4 из 5 единиц с save rate выше медианы формат — карусель с чек-листом (5 единиц из 23). Гипотеза: сохраняют то, к чему собираются вернуться, а не то, что понравилось. Проверка: 4 карусели-чек-листа за 3 недели против 4 обычных, сравнить save rate на окне 7 дней; подтверждение — save rate чек-листов выше медианы у 3 из 4».

Выход

СТАТИСТИКА · <площадка> · <период> · <N единиц>

ДОПУСК: разбор возможен | данных мало — <что накопить>
РЕЖИМ: полный | сокращённый — нет <столбцов>, шаги <номера> пропущены

| Метрика | Медиана | Диапазон | Единиц | Комментарий |
|---|---|---|---|---|
| Охват | … | …–… | N | |
| Взаимодействия / охват | … | …–… | N | |
| Репосты / охват | … | …–… | N | |
| Досмотр, % | … | …–… | N | |
| Подписки / охват | … | …–… | N | только если площадка отдаёт подписки на уровне публикации |

ВЫБРОСЫ · СТУПЕНЬ 1 (2×–10× медианы, ориентир уровня C)
  <дата · тема · метрика · во сколько раз>
  Общие признаки: <то, что повторяется у 3+, или «общего признака нет»>

ВЫБРОСЫ · СТУПЕНЬ 2 (свыше ~10× медианы — сначала дистрибуция)
  <дата · тема · метрика · во сколько раз>
  Доля неподписчиков в охвате: <%, или «разбивка не проверена»>
  Разбивка охвата: <виральный / подписчиков / рекламный, или «нет данных»>
  Репосты: <кто, какая аудитория, или «не проверено»>
  Вывод: <событие дистрибуции | контент | не проверено — из выводов исключено>

КВАДРАНТЫ [блок выводится, только если есть вторая ось — вовлечённость.
  Нет реакций — вместо блока одномерная шкала «относительно своей медианы»]
  Звёзды: <единицы>
  Виральное, но пустое: <единицы>
  Нишевое золото: <единицы>
  Провал: <единицы>

НАХОДКИ (3–5)
  1. Что видно → Гипотеза → Проверка
  ...

АРТЕФАКТЫ ПЛАТФОРМЫ
  <что из провалов и скачков объясняется датами из календаря разрывов, или «не обнаружено»>

ЧЕГО МЫ НЕ ЗНАЕМ
  <какие поля недоступны, какие выводы поэтому невозможны>

ЧЕМ ДОСТРОИТЬ РАЗБОР [если режим сокращённый]
  <что выгрузить · где это лежит · сколько займёт · какой шаг откроет>

Чек-лист перед выдачей

Чек-лист условный. Пункт, для которого во входе нет данных, помечается «неприменимо — нет <чего>» и проваленным не считается. Молча пропускать пункт нельзя, имитировать выполнение — тоже.

  • Проверен допуск: 10+ публикаций минимум в 4 разные недели. (Неприменимо, если дат публикаций нет — тогда это первое, что запрашивается.)
  • Выбросы разделены на две ступени, ступень 2 не разобрана как контент до проверки дистрибуции, ступени не смешаны в одном списке признаков.
  • У каждого выброса ступени 2 названа доля неподписчиков в охвате либо сказано «не проверено, из выводов исключено».
  • Пороги 2× и 10× поданы как ориентиры уровня C, а не как норма.
  • Все выводы построены на нормированных на охват величинах, не на подписчиках. (Неприменимо, если нет реакций — тогда работа идёт на ряде охватов и это сказано.)
  • Считается медиана, слово «среднее» не встречается там, где имелась в виду медиана.
  • Каждая единица моложе 28 дней помечена как незрелая. (Неприменимо без дат.)
  • Календарь разрывов сверен, артефакты платформы названы отдельно от контента.
  • Строка «подписки / охват» выведена только там, где площадка отдаёт метрику на уровне публикации.
  • Находок 3–5, у каждой есть гипотеза и конкретный способ проверки с числом единиц и сроком.
  • Ни одного внешнего бенчмарка. Порог — только собственная медиана.
  • Есть раздел «чего мы не знаем».
  • В сокращённом режиме назван режим, перечислены пропущенные шаги и есть блок «чем достроить» с местом выгрузки и оценкой времени.
  • На малых числах сказано прямо, что разница неразличима, и шум не прокомментирован.

Красные линии

  1. Не сравнивать абсолютные просмотры с другой площадкой. Это cp-analytics-cross, и там ответ тоже «нельзя».
  2. Не выдумывать бенчмарки, нормы ER, «средние по рынку» и «обычно у таких каналов».
  3. Не объяснять шум. Разница на десятках наблюдений не комментируется, а называется неразличимой.
  4. Не выдавать корреляцию за причину. «После публикации в четверг охват выше» — это наблюдение, а не рекомендация публиковать по четвергам.
  5. Не считать провалом падение, попавшее на дату из календаря разрывов.
  6. Не сравнивать метрику до и после смены её определения. Такое сравнение бессмысленно, даже если данные технически есть.
  7. Не достраивать пропущенные поля оценкой. Нет данных — пустая клетка и строка в «чего мы не знаем».
  8. Не обещать результата от выполнения находок. Находка — гипотеза, а не план роста.
  9. Не строить контент-план на публикации со ступени 2, пока её охват не объяснён дистрибуцией. Иначе воспроизводится репост, а не текст.
  10. Не выводить строку метрики, которой площадка не отдаёт на уровне публикации. Дневное значение вместо публикационного — подделка, а не оценка.
  11. Не выдавать отчёт, где больше половины строк — «данных нет». Не хватает данных — сокращай процедуру и говори, чем её достроить.

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.