← Все системы Кейс 04 · Контент-система

79 000 роликов конкурентов

Завод следит за креаторами трёх брендов-конкурентов на YouTube, Instagram и TikTok. Начинался он как сценарий n8n, а вырос в веб-приложение: выгрузка за любой период с проверкой на дубли и пропуски, сценарии из отмеченных роликов и месячная статистика, которая собирается одной кнопкой и выглядит одинаково из месяца в месяц.

79 000+роликов конкурентов в базе с марта
17 425роликов только за сентябрь
116 млнпросмотров чужого контента за месяц
281активный аккаунт в реестрах трёх площадок
3этапа проверки каждой выгрузки
1 кнопкамесячная статистика вместо дня ручной работы
Задача

Снять ролик — час. Придумать ролик — день

Контент-завод — это дюжина креаторов, которые снимают для брендов зоотоваров. План — шестьдесят роликов на человека в месяц, то есть семьсот двадцать штук на завод. Оплата креатора не зависит от того, выстрелил ролик или нет, поэтому цена пустого ролика — это цена смены.

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

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

  • 720 роликов в месяц, сценарий на каждый
  • Час-полдня креатора уходит на «о чём снимать»
  • Формат выбирается на глаз, без цифр
  • Найденный референс через месяц не найти
  • Динамику конкурентов никто не считает
  • Проверить семьсот идей вручную некому
Эволюция

Сценарий n8n дорос до приложения

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

1

«Последние 30 роликов» вместо периода

Сценарий брал фиксированное число роликов с автора. У того, кто публикует пять раз в день, неделя обрезалась, у того, кто молчит, в выгрузку попадали старые ролики. Теперь выгрузка идёт строго за даты — неделя, девять дней, месяц до сегодняшнего числа — и лента листается ровно до начала периода.

2

Сбой креатора посреди выгрузки никто не замечал

Если аккаунт закрылся или площадка не ответила, сценарий шёл дальше, а в таблице просто не хватало строк. Теперь каждая выгрузка заканчивается отчётом: сколько креаторов выгружено из скольких, у кого ошибка даже после повторной попытки, все ли ролики реально легли в таблицу.

3

Бренд и статистика — руками

Бренд у каждого ролика проставлялся вручную, а месячную статистику собирали копированием: целый день работы и ошибки — в августе у части авторов просмотры и лайки в своде не сходились с самими роликами. Теперь бренд берётся из реестра аккаунтов, а месяц в статистику дописывает код.

4

Список авторов жил в трёх местах

Instagram и TikTok — в одной таблице, YouTube — в другой, неактивные — в третьей вкладке. Теперь у каждой площадки один реестр со статусом, и именно он решает, кого выгружать.

Первая версия завода — сценарий n8n: вход из телеграма и формы, переключатель команд и блоки сбора Instagram, YouTube и TikTok со своими циклами по страницам
Было: сценарий в n8nПервая версия: вход из телеграма, переключатель по командам и свой цикл сбора на каждую площадку. Ветки поиска по теме и похожих авторов работают здесь до сих пор, а выгрузка, сценарии и статистика переехали в приложение.
Что построено

Панель с тремя кнопками и таблица как рабочее место

Приложение на Python живёт на Railway и работает без ноутбука: закрыть вкладку посреди выгрузки можно — она идёт на сервере, а журнал запусков переживает даже перезапуск. Рабочим местом команды по-прежнему остаётся Google-таблица, панель нужна только для запусков и контроля.

1

Реестр аккаунтов на каждую площадку

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

2

Выгрузка за любой период

Даты любые, плюс быстрые кнопки «неделя», «8 дней», «прошлый месяц и до сегодня». Instagram и TikTok — через ScrapeCreators, YouTube — через официальный API, бесплатно. Ролики ложатся во вкладки площадок с брендом из реестра, а сама выгрузка сохраняется на диск сервера для месячного отчёта.

3

Три этапа проверки с итогом внизу

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

4

Сценарии сами, по статусу в ячейке

Редактор ставит ролику «Создать скрипт». Раз в пять минут приложение забирает отмеченное, снимает расшифровку, а если у ролика TikTok нет субтитров — скачивает видео и расшифровывает его само. Дальше GPT-5 переписывает текст своим промптом под площадку: три хука, сценарий, описание. Ролик получает «Скрипт готов».

5

Отчёт за месяц — одной кнопкой

Отчёт сам ничего не выгружает: он собирает месяц из сохранённых выгрузок и сначала проверяет, что они покрывают все дни. Не хватает трёх дней в YouTube — так и напишет, и в статистику эта площадка не пойдёт, пока дни не довыгрузят. Повторный отчёт за тот же месяц обновляет цифры, а не дублирует их.

6

Архив тех, кто замолчал

После отчёта кнопка показывает креаторов без единого ролика за месяц — со ссылками на аккаунты и причиной: «нет роликов» или «аккаунт удалён». Снимаешь галочки с исключений — остальные уходят в архив реестра с датой и причиной в комментарии и перестают тратить кредиты.

Панель контент-завода в тёмной теме: выбор соцсетей, карточки «Выгрузка за период», «Отчёт за месяц» с покрытием по площадкам и «Скрипты» со счётчиками, строка реестров аккаунтов
ПанельСоцсети выбираются галочками вверху и действуют на все кнопки. В карточке отчёта видно, покрыт ли месяц выгрузками по каждой площадке, в карточке скриптов — сколько роликов ждут сценария. Дизайн собран в Claude Design.
Журнал запусков: отчёт за сентябрь по Instagram и YouTube, у каждого три этапа — данные за месяц, запись в статистику, проверка — и итог внизу
Журнал запусковКаждый запуск — карточка с этапами: одна строка с коротким итогом, подробности по клику. Жёлтый значок — не ошибка, а повод посмотреть: например, у части креаторов за месяц нет роликов.
Реестр аккаунтов Instagram: статус из выпадающего списка, бренд, подписчики, время и результат последней выгрузки, комментарий с причиной архива
Реестр аккаунтовЕдинственный источник «кого выгружать». Активные подсвечены, архивные приглушены, у архивных в комментарии — когда и почему. Ники авторов скрыты.
Главное решение

Таблица осталась рабочим местом, статус в ячейке — командой

Своего интерфейса для работы с роликами у завода нет, и это решение, а не экономия. Контент-команда живёт в Google-таблице: там ролики, метрики и комментарии друг другу. Поэтому отбор остался там же — человек ставит в колонке «Статус» значение «Создать скрипт», и через несколько минут в листе «Скрипты» лежит готовый сценарий.

Панель взяла на себя то, что в таблице делать неудобно: запуски, проверки и контроль. Отбор остаётся у человека и занимает минуты, а сбор, сверка, расшифровка, переписывание и статистика — это часы, и их делает завод.

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

Как выглядит начало месяца. Пятого-шестого числа одна выгрузка «с первого числа прошлого месяца по сегодня» кормит сразу и сценаристов, и статистику. Затем «Создать отчёт» — и «Креаторы без роликов → архив». Вместо дня копирования — три нажатия.

Месячная аналитика

Не только «что снимать», но и «что делают конкуренты»

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

1

Лист месяца по образцу прошлого

Новый лист «09_26» строится по образцу «08_26»: та же шапка, ширины колонок, выпадающий статус, подсветка вовлечённости. Ролики стоят по убыванию просмотров. Месяц закрыт — лист остаётся срезом и больше не меняется.

2

Свод «Анализ» по разделам брендов

Одна строка — один креатор, на каждый месяц блок из пяти колонок: подписчики, просмотры, лайки, число роликов, роликов в день. Креаторы сгруппированы по брендам, у каждого раздела своя строка «Итого» формулами. Внутри раздела — сортировка по просмотрам за последний месяц, так что лидеры всегда наверху.

3

Дельта и статус — то, ради чего открывают лист

В конце строки — изменение просмотров к прошлому месяцу и статус креатора из реестра. Месяц, когда креатор не работал, закрашивается серым автоматически, архивные приглушены. Новые аккаунты из реестра сами встают в раздел своего бренда.

4

Оформление задаёт код, а не память

У каждого месяца постоянный цвет шапки, рамки и форматы чисел одинаковые на всех трёх площадках. Свод переоформляется целиком при каждом отчёте, поэтому сентябрь выглядит так же, как март, а ручные правки оформления не ломают следующее заполнение. Перед первой пересборкой сверены 9 648 ячеек прошлых месяцев — ни одна цифра не сдвинулась.

Свод «Анализ» по Instagram: июль, август и сентябрь 2026 разными цветами, дельта по просмотрам, статусы, архивные креаторы приглушены, строка «Итого HARLY»
Instagram: свод по креаторамТри месяца рядом, дельта справа, «Итого» по бренду внизу. Пустые месяцы серые, архивные креаторы приглушены — сразу видно, кто ушёл. Ники авторов скрыты.
Лист месяца 09_26 в таблице Instagram: ролики по убыванию просмотров с подписчиками, вовлечённостью, лайками, комментариями, длительностью, датой и брендом
Лист месяцаОдна строка — один ролик, метрики на момент выгрузки, сверху самые просматриваемые. Бренд проставлен из реестра, вовлечённость подсвечена.
Свод «Анализ» по YouTube: каналы конкурентов с подписчиками, просмотрами, лайками и числом роликов за три месяца и дельтой
YouTube: те же колонкиСвод устроен одинаково на всех площадках, поэтому каналы и аккаунты сравниваются одним взглядом.
Свод «Анализ» по TikTok: креаторы конкурентов с показателями за три месяца, дельтой и статусом
TikTokТретья площадка в том же формате. Три свода вместе дают картину рынка: кто из конкурентов где растёт и с какой частотой публикует.

Масштаб. Март–август 2026 — 62 000+ роликов. Только сентябрь, три бренда: Instagram — 7 682 ролика и 52,8 млн просмотров, YouTube — 6 486 и 45,4 млн, TikTok — 3 257 и 17,4 млн. В реестрах 281 активный аккаунт; после сентябрьского отчёта 131 замолчавший креатор ушёл в архив за один проход.

Архитектура

Как это устроено

ЗАПУСК ПРИЛОЖЕНИЕ НА RAILWAY ВЫДАЧА Панель период · отчёт · архив журнал с этапами Статус в таблице «Создать скрипт» проверка раз в 5 минут Реестры Активен · Новый · Архив кого выгружать и бренд Выгрузка за период ScrapeCreators · YouTube API лента до начала периода закрепы не обрывают сбор Три этапа проверки повтор сбойных креаторов дубли по ссылке ролика полнота: все и всё на месте Сценарии расшифровка озвучки GPT-5 · промпт на площадку 3 хука · сценарий · описание Отчёт за месяц покрытие всех дней месяца разделы брендов · сортировка архив замолчавших Хранилище выгрузок на диске сервера каждая выгрузка сохраняется целиком · отчёт склеивает месяц из нескольких свежие цифры побеждают · отчёт без кредитов · журнал не теряется NEW Контент завод вкладки роликов с брендом для отбора идей Лист «Скрипты» готовые сценарии у ролика «Скрипт готов» 3 файла статистики лист месяца ММ_ГГ свод «Анализ» по брендам ↺ редактор отмечает ролики в той же таблице, куда завод их выгрузил, — и цикл замыкается PYTHON · FASTAPI · RAILWAY · SCRAPECREATORS API · YOUTUBE DATA API · GPT-5 · GOOGLE SHEETS API ОТБОР ОСТАЁТСЯ У ЧЕЛОВЕКА · ВСЯ РАБОТА ПОСЛЕ ОТБОРА — У ЗАВОДА
Инженерные решения

Что отличает завод от «сделай сценарий по ссылке»

01

Лента листается до границы периода, а закреп её не обманет

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

02

Полнота проверяется, а не предполагается

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

03

Ролик узнаётся по ссылке, а не по ID

Длинные ID постов Instagram таблица превращала в «3,98E+18», и сравнивать по ним было нельзя. Ключ ролика — код из ссылки: повторная выгрузка обновляет цифры у существующей строки, не трогая статус и бренд, которые редактор мог поправить руками.

04

Отчёт склеивает месяц из сохранённых выгрузок

Месяц можно собрать из одной большой выгрузки или из четырёх недельных — отчёт проверит, что покрыт каждый день, а если ролик есть в нескольких выгрузках, возьмёт самые свежие цифры. Повторный отчёт за тот же месяц обновляет блок, а не дублирует его.

05

Таблица в русской локали — свои правила

Формулы через API пишутся с точкой с запятой, иначе в ячейке #ERROR!. Длительность «0:39» таблица читает как 39 минут, поэтому пишется полное время. Вставка колонок внутри объединённой ячейки растягивает чужой месяц — объединения снимаются до вставки и ставятся заново ровно над пятью колонками.

06

Нет озвучки — расшифровка своими силами, ответ модели — через код

Если у ролика TikTok нет субтитров, приложение скачивает видео и расшифровывает его моделью. Ответ сценариста приходит то в markdown-обёртке, то массивом вместо объекта — разборщик снимает обёртку и приводит всё к трём полям, иначе в таблицу уезжал бы мусор.

07

Свой сценарист на каждую площадку

Reels, Shorts и TikTok — разные ритмы и разная длина хука. Общий промпт даёт усреднённый текст, который не работает нигде. Поэтому промптов несколько, и каждый пишет под свою площадку, а не «универсальный короткий ролик».

08

Срез месяца хранится, а не пересчитывается на лету

Метрики ролика меняются со временем, и пересчёт задним числом показал бы уже другие цифры. Поэтому месяц закрывается отдельным листом, а свод сравнивает именно срезы. Через год динамику конкурента можно восстановить такой, какой она была.

Результат

Что изменилось

Было

Каждый креатор искал идею сам, а когда появился сценарий n8n — неделя выгружалась «последними тридцатью роликами», бренд проставлялся вручную, сбои креаторов терялись молча, а месячную статистику целый день собирали копированием.

Стало

Выгрузка строго за период с отчётом о полноте, бренд из реестра, сценарии появляются сами через пять минут после отметки. Месяц в статистику — одной кнопкой, в едином оформлении, с разделами по брендам и сортировкой по просмотрам. Замолчавшие креаторы уходят в архив и не тратят кредиты.

Для бизнеса

79 000+ роликов с метриками — собственная база форматов ниши, которую задним числом не восстановить. Конкурентов сравнивают по цифрам, а не по ощущению, и цифрам можно верить: каждая выгрузка проверена на дубли и пропуски.

Переносимость

Ниша меняется, конвейер остаётся

Про зоотовары знают только промпты сценаристов и реестры аккаунтов. Всё остальное — сбор за период, проверка полноты, расшифровка, разбор ответа, запись по ключу, месячные срезы и оформление статистики — работает с любой нишей и любым языком. Смена рынка — это новый реестр и новая роль в промпте, а не новая система.

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

Стек

На чём собрано

Приложение

  • Python, FastAPI
  • Railway, постоянный диск
  • Веб-панель, дизайн в Claude Design
  • Журнал запусков с этапами

Сбор

  • API ScrapeCreators: Instagram, TikTok
  • YouTube Data API
  • Обход ленты до границы периода
  • Повтор сбойных, проверка полноты

Сценарии

  • Расшифровка озвучки роликов
  • Своя расшифровка видео без субтитров
  • GPT-5 в роли сценариста
  • Свой промпт на каждую площадку

Хранение и аналитика

  • Google Sheets API, сервисный аккаунт
  • Реестры аккаунтов со статусами
  • Листы месяцев и свод «Анализ»
  • Разделы брендов, «Итого», дельта

Система собрана мной целиком: первая версия — сценарий n8n, вторая — приложение, написанное вместе с Claude Code: логика выгрузки и проверок, промпты сценаристов, структура таблиц и оформление статистики. Цифры приведены по рабочим таблицам завода, заказчик обезличен: ники авторов не раскрываются.

Нужен такой контент-завод?

От вас — ниша и список авторов, за которыми стоит следить. Остальное на мне: сбор с площадок за любой период с проверкой полноты, база форматов, сценаристы под каждую площадку и месячная аналитика по конкурентам, которая собирается одной кнопкой.