Към съдържанието

ValoxVSL

Моето студио за AI видеореклами и веригата от агенти, върху която е изградено

Роля
Основател; ръководех агентите, които изградиха веригата
Статус
Работи
Код
Частно хранилище
Технологии
Next.js 16React 19TypeScriptPrismaSQLiteFFmpegRemotionMCP SDKGeminiFAL (Kling, Seedance, Veo, Sora)ElevenLabsWhisperClerkDrizzleNeon Postgresnext-intlVercel
Шест генерирани с AI изображения на един измислен български пехотинец, наречен в инструмента Иван Защитника, от шест различни кадъра на документална реклама за Дойран: приклекнал във входа на окоп пред огън, гледащ нагоре в тъмен бункер, ранен по гръб, в атака с пушка, целещ се към камерата с мокра коса и с шлем във френски стил при сива светлина. Слабото лице, светлите очи и калта са едни и същи на всяко изображение.
Един AI герой в шест сцени, всички генерирани от едно и също референтно изображение на героя.

В числа

83

MCP инструмента, с които агент може да изпълни цяла поръчка от начало до край

38

конфигурации на агенти във веригата

67сцени

в реклама от 179 секунди, която агент направи от начало до край през MCP

1 260

реални инструкции за редакция от хора, индексирани, така че агентът да избягва предварително дефекти, които операторите вече са поправяли

14

референтни изображения на кадър, така че лице, етикет на продукт или стая да остават непроменени

Проблемът

Видео продажбеното писмо (VSL) е дълга реклама: сценарий, десетки сцени, герои, които трябва да изглеждат еднакво във всеки кадър, и глас зад кадър, синхронизиран с картината. Генеративните модели правят отделните клипове евтини, но почти не помагат те да са последователни, така че лице, етикет на продукт или разположение на стая се променя от кадър на кадър. Исках верига от агенти, която държи тези неща постоянни, и бизнес, който продава резултата ѝ на български компании.

Подходът

Първо изградих веригата от агенти, като ръководех агенти за програмиране, а върху нея и сайта на бизнеса. Веригата е последователност от тясно специализирани агенти с одобрение от човек между фазите, детерминиран редактор в края и таблица с разходите за всяко извикване към доставчик. По-късно добавих MCP слой, за да може Claude Code да изпълни цяла поръчка: агентите на приложението генерират, а Claude оценява всяка фаза и решава какво да се направи отново. Брат ми работи по студиото заедно с мен.

Генерирано с AI изображение на генерал Вазов, българския командир при Дойран през 1918 г., в три сцени от същата документална реклама: едър план с фуражка с козирка, гъсти вежди и дебели сиви мустаци, портрет в цял ръст в дървена командна барака, облечен в шинел, и портрет в окоп, с полева куртка и с бинокъл в ръце, под димно небе. Лицето е AI изображение на историческа личност, а не фотография.
Генерал Вазов, AI изображение, в три сцени с три различни облекла и три различни осветления.

Как работи

  1. Visual Bible, преди да има и един пиксел

    Сценарият се разделя на сегменти по маркери //. След това агентът MasterJSON пише Visual Bible: документ, проверен със zod, с описание на героите (от 500 до над 1 000 думи за всеки), местата, постоянните детайли на средата, от 3 до 8 сюжетни блока и от 5 до 15 строги правила за последователност между кадрите. Човек го потвърждава, преди да се генерира каквото и да е, а втора точка за одобрение приема референтните изображения на героите, продуктите и местата.

  2. Тесни агенти за всяка сцена

    Всяка сцена минава през агентите Classifier, Producer и Prompt Engineer, които работят на паралелни партиди; версия 3 групира първите двама по сюжетен блок, за да намали извикванията. Приложението съдържа 38 конфигурации на агенти, с варианти за вериги за документални филми, електронна търговия, разследване и анимация. Генерирането на изображения приема до 14 референтни изображения на кадър, така че лицето да остане същото.

  3. Първо се изпраща всичко, после се проверява състоянието

    Генерирането на видео първо изпраща всяка сцена в облачната опашка и после проверява състоянието ѝ, зад ротация на няколко ключа, мениджър на опашката с mutex за всеки набор от ключове и заключване на ресурси. Видео моделите стоят зад един общ интерфейс: Kling, Seedance, Veo 3.1 и Sora 2 работят през FAL, а таблица с цени на извикване оценява всяка заявка.

  4. Редактор, който реже по гласа

    Редактор v0 сглобява рекламата във FFmpeg. Подрязванията прекодират видеото за синхрон с точност до кадър, времевите отметки на думите от ElevenLabs или Whisper се свързват със сегментите на сценария, музиката се смесва отдолу, караоке субтитрите се вграждат в картината, а времевата линия се експортира като EDL или FCPXML за довършване в DaVinci Resolve. В хранилището има и редактор v2 върху Remotion, с агенти, които гледат монтажа, но той е на пауза.

  5. Claude като продуцент

    MCP сървър предоставя веригата като 83 инструмента, а skill с пошагова инструкция (runbook) прави Claude Code продуцент. Той чете резултата от всяка фаза, разглежда всяко референтно изображение, кара Gemini да гледа генерираните клипове за движение, поддържа файл със състоянието и спазва защитите за разходите. Инструмент за история индексира 1 260 инструкции за редакция, които човешки оператори са давали на приложението, така че агентът да избягва предварително дефекти, които хората вече са поправяли. Първият цялостен пуск беше реклама за електронна търговия, която агент изпълни от начало до край през този сървър: 67 сцени, 179 секунди. Агентът не оценяваше движението, затова добавих инструмент за проверка на качеството на видеото по сцени.

  6. Витрината

    valoxvsl.com е на български по подразбиране, с английска версия на /en, и е изграден с Next.js 16, Clerk, Drizzle върху Neon и next-intl. Клиентите получават табло с фирми, продукти, заявки и бележки, а заявката минава от чакаща към приета, в изпълнение и завършена, след като администратор я одобри. Страницата с резултати изчислява общите суми от запазени дневни редове по кампании; ValoxVSL съобщава там за над 500 000 EUR генерирани приходи и среден ROAS 4,6x за клиентите си.

Пет генерирани с AI изображения на един измислен мъж в черна тениска с червени кирилски букви, от реклама на продукт: голям студиен портрет на сив фон, портрет седнал пред червена тухлена стена, усмихнат портрет в стая с дървени греди и две изображения на смеещ се мъж до тухлена стена. Късата прическа с плавен преход (фейд) и поддържаната брада са едни и същи.
Моделът от рекламата на тениската остава същият в пет сцени.

Какво избрах и какво отпадна

Избрах

Ръчно изграденият Node процес остава в main

Пред

Преминаване към V4, пренаписване на Python с FastAPI, LangGraph, LiteLLM и Langfuse

Преработката с LangGraph така и не достигна възможностите на системата, която е в продукция, затова остава в отделен клон.

Избрах

Проектиране на следващата верига, преди да бъде изградена, като част от Valox Cinema

Пред

Нов старт на студиото от нулата

Един пуск на агент даде пълен набор от планове, записи на решения и файлове с проучване, но никакъв код на приложение. Най-полезната му находка беше недостатък в сегашния инструмент: защитите за парите са написани като текст в markdown на skill, а броячите на разходите не блокират нищо. Наследникът описва бюджетите като код, който се прилага задължително.

Избрах

Индивидуални оферти на сайта

Пред

Публични цени на пакети

Студиото предлага услугите си едновременно на българския и на холандския пазар и един публичен ценоразпис не може да обслужва и двата. Цените бяха свалени от сайта с един pull request.

Резултатът

Инструментът работи в продукция зад вход на tool.valoxvsl.com, а valoxvsl.com е на живо. Студиото изработи реклами за клиентите от публичните страници с казуси; сега описвам рекламната работа като на пауза. Търсене на грешки заведе серия задачи, а 11 агента, работещи върху пакети с непресичащи се файлове, поправиха всички, пуснати в продукция след резервно копие на базата данни. Отворени пропуски: продукцията още работи на SQLite, а миграцията към Postgres е само оценена, и защитите за бюджета все още са само текст. Сървърът в продукция беше компрометиран веднъж през уязвимост в използвания уеб framework; този случай има собствена страница.