Lemo-Opuscar — скилл Claude Code, который снимает короткие фильмы кодом в 51 стиле

· 7 мин чтения
skills claude-code video creative-coding filmmaking
📂 Исходный код на GitHub

Lemo-Opuscar — скилл для Claude Code, который снимает короткие фильмы без видеомодели. 51 стиль, и в каждом описание вида и звука (STYLE.md) плюс демо-ролик, снятый целиком кодом. Картинка рисуется на canvas, WebGL и three.js, голос синтезируется через TTS, музыка собирается из свободных сэмплов, звук сводится в ffmpeg до −14 LUFS. Есть процедура создания своего стиля и тестовая короткометражка. MIT, 4102 звезды, 463 форка.

Lemo-Opuscar — скилл Claude Code, который снимает короткие фильмы кодом в 51 стиле

Lemo-Opuscar — это скилл для Claude Code, который снимает короткие фильмы целиком кодом. Видео не генерируется нейросетью и не берётся из стоковых библиотек. Кадры рисует код на веб-странице, звук синтезируется по той же сетке событий, а готовый файл собирает ffmpeg.

В библиотеке 51 стиль. Для каждого стиля есть файл STYLE.md с описанием вида, цвета, движения и звука. Рядом лежит демо-ролик, снятый тем же кодом. Человек выбирает стиль, говорит о своей теме, а агент ставит фильм: придумывает историю, рисует кадры, пишет музыку, озвучивает и сводит звук.

Репозиторий открыт под лицензией MIT, у него 4102 звезды и 463 форка. Важная оговорка из README: библиотека сделана под Claude, стили настроены под Claude Opus 5.5, и другие модели могут не воспроизвести их так же хорошо.

Что лежит в библиотеке

51 стиль разложены по десяти категориям. Внутри каждой категории стиль — это отдельная папка с файлом STYLE.md, своим демо-роликом и готовым кодом.

Категория Сколько Примеры
Эмпирические фильмы (Evidence Films) 8 Satellite Briefing, LiDAR Survey, Exploded Teardown
Рисунок и живопись 7 Watercolor Brush, Impasto Oil Painting, Ukiyo-e
Восточные традиции 4 Shadow Puppetry, Red Paper-cut, Paper-cut Lightbox
Печать и гравюра 5 Risograph Print, Woodcut Print, Copperplate Engraving
Графика и типографика 7 Swiss Motion Graphics, Blueprint, ASCII / CRT Terminal
Информация и презентация 5 Data Storytelling, Isometric Infographic, Dark Tech Keynote
Мультфильм и анимация 4 1930s Rubber Hose Cartoon, 80s Cel Anime, Sci-Fi Sitcom Toon
Игры 4 16-bit Pixel RPG, HD-2D, Game Show Flat
Кино и эпохи 2 1920s Silent Film, Liminal Found Footage
Материалы и 3D 5 Brick Toy, Tilt-Shift Miniature, Glass Product Render

Полный список с названиями роликов лежит в индексе стилей. Все демо-ролики можно посмотреть в галерее.

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

Как проходит работа

Скилл работает как маленькая студия. Порядок шагов задан заранее.

  1. Бриф. Агент задаёт вопросы один раз, одним сообщением: что он не может решить сам по теме, есть ли у человека своя запись голоса, своя музыка и свои фотографии, на каком языке нужен фильм и нужна ли раскадровка на согласование. Всё, что уже известно из запроса, он не переспрашивает.
  2. Сценарий. До того как откроет код демо-ролика, агент пишет файл TREATMENT.md. В нём три варианта структуры с объяснением, почему выбран один, краткое описание сюжета, список кадров с планом съёмки, раскладку по секундам, карту музыки и таблицу звука.
  3. Проверка вида. Агент рисует тестовые кадры настоящим кодом рисования и сверяет их с STYLE.md.
  4. Раскадровка. Только если человек её попросил. Тогда агент показывает 6–9 ключевых кадров и ждёт одобрения. Если не просил, не останавливается.
  5. Производство. Голос, проверка озвучки, музыка, анимация, сведение и рендер.
  6. Сдача. Агент проверяет результат и отдаёт готовый файл.

Демо-ролик при этом нельзя переиспользовать. Из него берут только приёмы: как настроена кисть, как устроен риг, как собирается микс. Сюжет, кадры и темп — свои.

Как снимается кадр

Каждый ролик — это папка с файлом index.html. Страница отдаёт наружу несколько функций:

window.DUR = 54.2;
window.render = (t) => { /* рисуем кадр на секунде t */ };
window.READY = true;
window.EV = [{ t: 12.4, type: 'click' }];
window.TEXTS = (t) => [{ id: 'title', text: '...', x0: 0, y0: 0, x1: 100, y1: 40 }];

Главное требование — детерминированность. В коде не должно быть Date.now(), а случайные числа обязаны идти через генератор с фиксированным зерном. Тогда любой кадр можно отрисовать отдельно, в любом порядке, и результат будет тем же самым. Это позволяет рендерить фильм параллельно.

Дальше картинку снимает headless-браузер: он открывает страницу, вызывает render(t) для каждой секунды и делает скриншоты. Кадры склеиваются в видео через ffmpeg. Зерно плёнки добавляется уже в ffmpeg, а не в странице: нарисованное зерно делает каждый кадр плохо сжимаемым и сильно замедляет рендер. Для двухмерных стилей используется обычный canvas, для трёхмерных — three.js, для пост-эффектов вроде CRT или повреждений плёнки — шейдеры на WebGL2.

Звук

Звук собирается в три слоя: фон, шумовые эффекты и музыка.

  • Голос. По умолчанию текст читает TTS. Для английского это Kokoro, он работает локально и не требует сети. Для китайского — edge-tts от Microsoft, ему нужна интернет-связь. Если у человека есть своя запись, она используется как есть, а момент каждого слова определяется распознаванием речи.
  • Проверка озвучки. Каждую реплику прогоняют через faster-whisper и сравнивают с исходным текстом. Пока проверка не проходит, строка перегенерируется. Заодно определяется момент каждого слова — по нему картинка подстраивается под речь, а субтитры не наезжают на говорящего.
  • Музыка. Не «пианино со струнными», а инструменты, которые характерны для стиля. Партитура пишется по карте музыки: время, инструмент, нота, длительность, сила, положение в пространстве. Играется она из бесплатных сэмплов (VSCO 2 CE, VCSL, FreePats, Karoryfer, Salamander Grand Piano), щипковые струнные звучат по физической модели Karplus–Strong, а чипы и фоны синтезируются через numpy.
  • Шумовые эффекты. Щелчки, шорох, удары и скрипы синтезируются процедурно и попадают точно на нужный кадр, потому что события приходят из той же страницы с картинкой.

Финальный микс собирается в ffmpeg: два прохода loudnorm дают громкость около −14 LUFS. Субтитры пишутся отдельным файлом .srt и одновременно вжигаются в картинку.

Свой стиль

Отдельная процедура позволяет сделать стиль своим. Человек говорит: «хочу изменить стиль укиё-сэ на свой». Агент читает STYLE.md базового стиля и показывает три группы: что можно менять без потери характера, что меняет характер стиля, а что менять нельзя — это уже будет другой стиль. Дальше человек описывает правки и даёт имя.

Свой стиль сохраняется в ~/lemo-my-styles/ — за пределами библиотеки. Ни обновления библиотеки, ни её удаление его не трогают. Агент рисует кадр нового стиля рядом с кадром исходного, показывает оба и ждёт подтверждения. После этого делает тестовый ролик на 15–30 секунд, в котором видно каждую правку. Дальше свой стиль можно называть как любой другой: «сними ролик в стиле "Ночная укиё-сэ" про…». Инструкция лежит в MY-STYLES.md.

Что нужно на машине

Node 20+, ffmpeg и Python 3.11 (или uv). Остальное ставится скриптом в три этапа: базовый уровень — около 350 МБ, голос — около 700 МБ вместе с моделью распознавания, музыка — около 140 МБ. Библиотеку сэмплов качают отдельно, от 70 до 400 МБ на набор.

Ставится скилл как плагин Claude Code:

claude plugin marketplace add lemomo-ai/lemo-opuscar
claude plugin install lemo-opuscar@lemolab

После этого библиотека с гайдами, инструментами и подсказками стилей скачивается в ~/lemo-opuscar и используется всеми вашими фильмами. Проект самого фильма создаётся в той папке, из которой вы запустили агента.

Другие пути: клонировать репозиторий и запустить в нём claude (фильмы тогда появляются в films/<name>/ внутри клона), либо скопировать папку plugin/skills/lemo-opuscar/ в папку скиллов своего агента.

Съёмка одного ролика занимает у агента примерно 30–60 минут и требует заметного количества токенов. Разрешение по умолчанию — 1920×1080 при 24 кадрах в секунду; другой размер задаётся флагом.

OPUSCAR 98

Главная витрина проекта — фильм длиной 6 минут 31 секунду. Один герой проходит сквозь все 98 лауреатов премии «Лучший фильм» с 1927 по 2025 год. Каждый фильм перерисован в стиле, который ему идёт: 77 из них сделаны в 2D, 4 — в 2.5D, 17 — в 3D. Все стили открыты: у каждого есть тег, кадр, подсказка стиля, которую можно переиспользовать, список кадров и режиссёрские заметки, плюс выгрузка в JSON. Сам ролик лежит на странице проекта, и его можно скачать в 1080p.

Что почитать в репозитории

  • AGENTS.md — как агент ищет стиль и в каком порядке идёт по шагам.
  • DIRECTOR.md — режиссёрская часть: сюжет, звук, ритм, камера, работа с актёрами и список типовых ошибок.
  • TECHNIQUE.md — техническая часть: рендер, голос, музыка, сведение, субтитры.
  • core/README.md — команды всех инструментов с флагами.
  • Лицензия — MIT.

Фильмы, которые снимаются не внутри библиотеки, считаются полностью вашими: в них нет ни подписи LemoLab, ни водяного знака.

Источник: https://github.com/lemomo-ai/lemo-opuscar