Lemo-Opuscar — скилл Claude Code, который снимает короткие фильмы кодом в 51 стиле
📂 Исходный код на GitHubLemo-Opuscar — скилл для Claude Code, который снимает короткие фильмы без видеомодели. 51 стиль, и в каждом описание вида и звука (STYLE.md) плюс демо-ролик, снятый целиком кодом. Картинка рисуется на canvas, WebGL и three.js, голос синтезируется через TTS, музыка собирается из свободных сэмплов, звук сводится в ffmpeg до −14 LUFS. Есть процедура создания своего стиля и тестовая короткометражка. MIT, 4102 звезды, 463 форка.
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-файлы, архивные негативы, срезы тканей. Каждое число в таком ролике либо измерено, либо взято из источника, и ссылка на источник лежит в проекте.
Как проходит работа
Скилл работает как маленькая студия. Порядок шагов задан заранее.
- Бриф. Агент задаёт вопросы один раз, одним сообщением: что он не может решить сам по теме, есть ли у человека своя запись голоса, своя музыка и свои фотографии, на каком языке нужен фильм и нужна ли раскадровка на согласование. Всё, что уже известно из запроса, он не переспрашивает.
- Сценарий. До того как откроет код демо-ролика, агент пишет файл
TREATMENT.md. В нём три варианта структуры с объяснением, почему выбран один, краткое описание сюжета, список кадров с планом съёмки, раскладку по секундам, карту музыки и таблицу звука. - Проверка вида. Агент рисует тестовые кадры настоящим кодом рисования и сверяет их с
STYLE.md. - Раскадровка. Только если человек её попросил. Тогда агент показывает 6–9 ключевых кадров и ждёт одобрения. Если не просил, не останавливается.
- Производство. Голос, проверка озвучки, музыка, анимация, сведение и рендер.
- Сдача. Агент проверяет результат и отдаёт готовый файл.
Демо-ролик при этом нельзя переиспользовать. Из него берут только приёмы: как настроена кисть, как устроен риг, как собирается микс. Сюжет, кадры и темп — свои.
Как снимается кадр
Каждый ролик — это папка с файлом 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, ни водяного знака.