Ответ на пост «300 тыс. просмотров клипа в первые сутки! Спасибо дорогие слушатели»2
Месяц назад я хотел смонтировать клип за выходные. Сейчас у меня 62 markdown-файла, использовано 6 разных видеомоделей и Claude Code, который вздыхает каждый раз, когда я открываю чат.
Вот что получилось:
Rutube версия ссылкой: https://rutube.ru/video/588e9ef126f3f3baf7ddf5c185103c28
Увидел пост про 300 тысяч просмотров за сутки - поздравляю, заслуженно. Залип, потому что я последний месяц ковыряю тот же Kling, только зашёл с другой стороны: не «смонтировать за пару дней», а выстроить пайплайн, который ведёт меня по сценарию за руку и делает за меня всю грязную работу — анализ музыки, нарезку на сцены, подбор референсов, сборку промптов. Я в этой цепочке остался скорее в роли режиссёра и приёмщика, чем исполнителя.
Ниже - кухня: где ИИ помогает, где стабильно тупит, и почему я весь месяц тупил с настройкой пайплайна. Бюджет — около 6500 ₽ за месяц подписок (Claude Code + ChatGPT Plus + OpenArt).
Один markdown-файл на каждый футаж
Весь клип - это 62 файла request.md - задания на каждый футаж. Это обычный текстовый файл с разметкой. Но он — управляет всем процессом: и для меня, и для Claude Code, который мне с этим помогает. И этот файл не я пишу руками — его пишет сам Claude Code по итогам нашей беседы про конкретную сцену.
Что в этом файле важного:
Шапка файла - машинно-читаемая. По ней Claude Code за секунду находит «все футажи с липсинком», «все футажи, привязанные ко второму куплету». Без этого в 62 футажах мы бы оба утонули на третий день.
target_time - куда этот футаж встаёт в треке. Это связь со слоем музыки (про него ниже).
start_frame - ссылка на «канон-кадр», подготовленный отдельно (про кадры - далее).
Промпт - самая важная часть. Описание сцены со всеми деталями.
Дальше я открываю OpenArt, скармливаю Kling-у все данные — и получаю result.mp4. Всё.
Учим Claude Code слушать музыку
Из коробки чат-боты не умеют слушать музыку и не понимают её.
Чтобы визуал не разъезжался с треком, всё строится от музыки. На вход - три версии трека (оригинал, инструментал и вокал отдельно) и файл с субтитрами.
Это перемалывается питоновским аудио-анализом — на выходе единая карта: где биты, где громкие акценты, где затишья, где пауза в вокале, где конкретная фраза.
Дальше монтаж режется по этой карте: сцены и переходы сажаются на музыкальные стыки, визуальные акценты (вспышки, смены кадра, движения) — на громкие моменты.
Сама карта собрана в длинную вертикальную картинку, по которой удобно листать сверху вниз и принимать решения «вот сюда встанет сцена, а вот тут переход».
Claude Code для себя сохраняет отдельные файлы с мета-анализом музыки. Я в душе не представляю, в каком они формате, но справляется он хорошо.
Генерация ассетов
Чтобы Kling не выдумывал каждый раз новую улицу/куртку/персонажа, под каждый футаж генерится стартовый кадр. Если он каноничен, видео получается канонично. Если на старт-кадре поехало лицо — поедет и в видео.
Каждый старт-кадр собирается по трёхступенчатой цепочке:
Raw. Сырое фото места или объекта. Например, развлекательный комплекс «Огни Уфы»
Канон. Те же «Огни Уфы», но уже стилизованные под общий визуальный язык клипа (синтвейв-неон с VR, нужная цветовая палитра, нужное настроение)
Фрейм. В канон вписан персонаж в нужной позе/одежде/ракурсе под конкретный футаж. Это уже готовый старт-кадр для Kling.
С персонажами цепочка ровно та же. Канон-картинки переиспользуются между сценами.
Я совсем обленился и заставил Claude Code писать промпты для ChatGPT и запускать его через консоль - то есть один агент знает весь контекст клипа и сочиняет задание, второй знает только нужные ему детали и рисует.
Я остался только на финальной приёмке: каждую картинку всё равно утверждаю руками, и если что-то не так — отправляю обоих агентов переделывать.
Создание промптов
Когда есть карта трека, ассеты и понимание сцены - Claude Code собирает из этого финальный текст промпта для Kling. Промпт получается не «опиши красивую сцену», а конкретный сценарий на 6 секунд: что в кадре, как движется камера, что делает герой в каждый момент времени, какие детали окружения обязаны остаться от старт-кадра. Внутри этого сценария расставлены тайминги, привязанные к битам и фразам.
Самое полезное - Kling не умеет «играть под музыку», но умеет «сделать X к секунде Y». Поэтому промпт раскладывается по секундам: 0-2 с - герой идёт, 2-4 с - ускоряется, 4-6 с - переходит на бег. А что в какую секунду должно случиться, диктует карта трека.
Первые футажи были позором. Я писал в чат «нет, тут камера дёргается», «нет, она оборачивается», «нет, причёска сменилась» - Claude Code переделывал промпт и запоминал паттерн. Каждая такая правка превращалась в правило для следующих сцен.
Конкретный пример: 0:24 - BMW едет по ночной улице, камера сзади отстаёт. Первая попытка: машина в кадре стартовала с места, ускорялась первую секунду, и только потом ехала. На монтаже это смотрелось так, будто в начале каждого футажа героиня снова заводит машину.
Полный промпт там на 40 строк, но фактически проблему решали две формулировки, которые Claude Code дописал и запомнил «на будущее»:
A dark BMW E34 is already in motion at steady cruising speed
at frame one — wheels have rotational motion blur, the car is
not starting from rest.
NO acceleration arc — BMW is already at steady speed from frame 1
Дальше во всех футажах с движущимся транспортом Claude Code сам добавляет «already in motion at steady speed at frame one» — это попало в накопленный свод правил. Таких накоплений к концу проекта набралось десятки. Вот самые неочевидные:
Не называть персонажей по имени. В Start-frame режиме Kling не знает наших героев — имя для него мусор. Работают только обобщения: «the woman», «the driver», «a man in a magenta jacket». Звучит банально, но первые футажи я именно на этом и сжёг — модель «не узнавала» героя, потому что Claude ссылался на него по имени.
Если же персонаж в начале кадра стоит к нам спиной, а потом поворачивается - Start-frame не спасёт, лицо поедет. Тут переключаемся на режим «Text with reference»: туда можно подать промежуточные кадры и отдельные фото персонажа, и Kling уже способен сохранить лицо. Минус — он позволяет себе вольности: может отказаться воспроизвести стартовый кадр в точности и дорисовать свои детали.
Просить случайные микро-движения. Если в промпте написано только «she stands and looks at the camera» - Kling выдаёт статую. Спасает фраза вроде «subtle idle micro-movements: shifts weight, brushes hair aside, tucks a hand into the pocket». Без этого даже статичный план мёртвый.
Если нужен липсинк - Claude Code вырезает из вокальной дорожки ровно тот кусочек mp3, который соответствует репликам в кадре, а я загружаю его в OpenArt вместе со стартовым кадром.
Про разные движки - финальный клип собран не на одном Kling, а на шести моделях: Kling 3.0 Omni (основная рабочая лошадь), LTX 2.3 и WAN 2.7 (там, где Kling упирается в свои ограничения), OpenArt Lip Sync и Kling Avatar (для липсинка), Veo 3 (для отдельных кадров). Claude Code в принципе знаком с этими моделями и их сильными сторонами, а конкретные ограничения интерфейса OpenArt (максимальная длительность, возможность подавать промежуточные кадры и т.п.) я скопировал руками с сайта и отдал ему как справочник - чтобы он не сочинял от себя, какие параметры доступны.
Где модель тупит и что с этим делать
Не всё, что просишь, модель умеет. С этим приходится смириться, и либо отказаться от идеи, либо как-то провернуть себе на пользу. Приведу примеры фейлов:
ChatGPT перепутал лево и право
Сцена: рука героини на рычаге коробки передач. Машина с левым рулём - значит, рука должна быть правой. Это простая задача и интуитивно понятная задача... для кожаных мешков, но не для ИИ.
ChatGPT упорно рисовал левую руку. Я писал «нет, правую» - он соглашался, извинялся, выдавал новую картинку с левой рукой, и убеждал меня, что теперь-то она правая!
Я менял формулировки, описывал положение пальцев - всё равно получалась левая. Восемь или девять подходов и полчаса объяснений - всё сжёг впустую.
В итоге он всё-таки нарисовал правую руку - но теперь она тянется со стороны пассажирского сиденья. Технически он прав. Фактически - усложнил задачу: теперь промпт нужно писать намного шире.
Решение: выкинуть футаж и переиспользовать другой кадр, который уже отлично получился раньше. Я заранее подготовил видео-вставки, которые воспринимаются как переходы между сценами. Зритель не заметит, я не сжёг ещё пол-дня.
Зажигаем свет в окнах под музыку
Сцена: ночной дом, в окнах ритмично вспыхивает свет под акценты в треке. Звучит как штатная задача для Kling - в промпте указываешь тайминги, модель делает.
Но так просто это не работает. Kling игнорирует временные привязки, когда рисует окна. Зажигает когда хочет, но мимо музыки.
Решение получилось обходным:
В Kling делаем камеру статичной, никаких движений. Просим зажигать окна по очереди - с этим он справляется хорошо, правда как хочет он, а не как «аффтар имел в виду».
В DaVinci нарезаем получившийся клип на короткие отрывки и меняем им скорость - растягиваем/ужимаем так, чтобы вспышки окон попали ровно на ноты.
Поверх кадра накидываем transform + zoom - медленный наезд/панорама. Сцена перестаёт выглядеть как стоп-кадр и читается как полноценный план с движением камеры.
Внезапные облака дыма на липсинке
В одном из видео Kling нарисовал облака дыма в кадре поверх героини - без всякого упоминания дыма в промпте.
Технически это лажа: модель добавила то, чего не просили. Но дым лёг в кадр неожиданно органично - даже красиво, что-то в этом есть. Оставил так, без перегенерации. Иногда такое можно понять и простить
Общий вывод такой: иногда честнее принять компромисс, порезать или взять другое, чем гнаться за идеалом и закопать ещё неделю в перегенерации.
Главный вопрос, на который я сам себе так и не ответил: не свалился ли я в «технологию ради технологии»?
Три четверти времени, кучу денег и сил я потратил не на сам клип, а на обвязку вокруг него.
Получилось красиво, я честно закрыл для себя задачу «затащить ИИ в весь процесс целиком» - получилось как получилось.
Но если сравнить варианты «с пайплайном» и «писать промпты ручками» - не уверен, что первый вариант реально быстрее.
Возможно вышло бы так же по времени, просто другой ценой.

























