ГАЙД · ОТ СЦЕНАРИЯ ДО SHORTS

Пиксельный мультфильм с ИИ

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

Это рабочий конвейер, по которому собрана вся серия: 18 глав Гиты в 22 сериях, на русском и английском. Каждый шаг ниже — то, что реально делается для каждой главы, и правила, без которых получается брак. Все анимации на этой странице — настоящие спрайты из серий.

Инструменты

Ни одной программы для рисования или монтажа. Всё делается ИИ-агентом, который пишет код сцен и запускает остальные инструменты, а вы работаете режиссёром: смотрите, принимаете и бракуете.

Claude CodeИИ-агент в терминале. Пишет сценарий, промпты, код сцен, скрипты сборки и проверок, запускает всё остальное. Нужна подписка Claude.
Codex CLIГенерация картинок через подписку ChatGPT: фоны, персонажи, каждая поза анимации. Агент вызывает его сам.
Fish AudioОзвучка по ролям: рассказчик, Кришна, Арджуна. Хорошо держит эмоции, если правильно их размечать. Модель s2.1-pro-free бесплатна — Fish объявила это до 30 ноября 2026; дальше — платный тариф или другой бесплатный голос.
HyperFramesОткрытый движок «HTML → видео». Сцена — это веб-страница с анимацией, рендер в MP4 1080×1920 одной командой.
Python + ffmpegНарезка спрайтов, палитра, проверки кадров, сведение звука. Скрипты пишет агент.
Распознавание речиПроверка каждой реплики: совпадают ли слова озвучки со сценарием. Любой сервис с API (я использую Deepgram).
WanGP (по желанию)Локальная видеомодель для немногих кадров, где нужно настоящее движение: вода, огонь, небо. Работает на игровой видеокарте 10 ГБ, результат пикселизуется обратно в сетку серии.

1Сценарий

Одна серия — одна глава. Пересказ ключевых стихов своими словами, 250–300 слов: это 2:00–2:30 с паузами. Длиннее Shorts не досматривают.

Текст сразу делится на сцены по 6–12 секунд: каждой сцене — одно действие в кадре. Реплика героя и действие на экране должны совпадать по словам: «отпускает горшок» — горшок отпускается именно на этом слове.

Сценарий хранится в файле voiceover.json: кто говорит, текст для субтитров и отдельно текст для озвучки с разметкой эмоций. Из этого файла дальше строится всё: голос, тайминги, субтитры.

Как не потерять зрителя

Первая фраза — конфликт, а не вступление. В первой главе это «Арджуна опускает лук», во второй — «Кришна, ты говоришь, что душа не умирает?». Финал каждой серии — крючок на следующую главу.

2Голос: ударения и эмоции

ИИ-голос угадывает ударения, и в санскритских именах угадывает плохо: «Арджуна́», «дхарма́». Решение — ставить знак ударения прямо в текст для озвучки. Символ U+0301 (комбинируемое ударение) Fish Audio понимает, зрителю он не виден: в субтитрах текст без значков.

ТЕКСТ ДЛЯ ОЗВУЧКИбез разметки

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

Не используйте «+» перед гласной — популярный совет для других движков. Fish читает его вслух как «плюс».

Эмоции внутри фразы, а не на всю реплику

Одна метка в начале реплики даёт ровную интонацию до конца. Ставьте метку перед каждой смысловой частью, где меняется настроение: [серьёзно, медленно] … [нарастая, мощно] … [торжественно]. Метки пишутся по-английски, в квадратных скобках, и в голос не попадают.

Проверка каждой реплики

Каждый дубль прогоняется через распознавание речи и сравнивается со сценарием: слова совпадают с точностью до одного, нет лишних «плюс», нет проглоченных окончаний. Распознаватель путает безударные -ие/-ия — это его особенность, а не ошибка диктора.

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

3Стиль и персонажи

Один и тот же блок стиля добавляется в конец каждого промпта, без исключений. Именно он держит единый пиксель-арт во всех сериях.

STYLE · В КОНЕЦ КАЖДОГО ПРОМПТА
STYLE: very detailed, high-resolution pixel art like a modern premium 2D indie game: SMALL crisp square pixels, a limited palette of about 48 colours, hue-shifted shading, clean dark outlines, warm light with an orange rim light. Realistic adult proportions, not chibi. No blur, no smooth gradients, no anti-aliasing, no text, no letters, no numbers.

Каждому герою — карточка внешности одной строкой, которая слово в слово повторяется во всех промптах. Плюс картинка-референс: первый удачный портрет героя прикладывается ко всем следующим генерациям.

КАРТОЧКА ГЕРОЯ
Krishna (adult man about 38 with blue skin, golden crown with one peacock feather, long black hair, yellow-gold dhoti and upper cloth, marigold garland, gold jewelry, bare feet with golden anklets)

Линейка масштаба

Чтобы колесница не была меньше коня, а дальняя армия — крупнее героя, у сцены есть три плана с фиксированным масштабом. Холст движка 270×480 пикселей, на экране ×4:

ближний — 112 пикселей на метр (герой в короне — 235 px), средний — 40 px/м, дальний — 18 px/м. Слон выше всех, всадник выше коня, дальние ряды мельче. Каждый спрайт масштабируется по этой линейке, а не «на глаз».

Каноничные детали

Для исторического и мифологического материала зрители замечают каждую ошибку. У каждой армии своё знамя: у Арджуны Хануман, у Пандавов лев и полумесяц на шафрановом, у Кауравов золотая кобра на багрово-чёрном. Пандавы всегда слева лицом вправо. Эти правила записаны один раз и применяются в каждой сцене.

Глава 1: Арджуна на поле Курукшетра
Глава 1
Глава 2: Арджуна на коленях перед Кришной
Глава 2
Глава 3: Арджуна и отшельник
Глава 3
Глава 4: гончар у реки
Глава 4

4Анимация поз

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

АРДЖУНА ПОДНИМАЕТ ЛУК6 ПОЗ
1
Каждая поза — отдельная картинка. Никогда не нарезайте позы из одного общего листа: позы соприкасаются, и при нарезке рука или лук одной позы уходят в соседнюю. Так у меня пропадали лук и руки Кришны.
2
Кадр 2 и дальше — правка кадра 1. Первый кадр рисуется с нуля, остальные — редактированием первого: «тот же человек, одежда, цвета, размер, меняется только поза». Иначе герой меняет одежду между кадрами и анимация мелькает.
3
Строгая рамка. Ноги на линии 94% высоты, фигура по центру, целиком в кадре с полями. Тогда кадры встают друг на друга без прыжков.
4
Один масштаб на весь набор. Не подгоняйте каждый кадр по росту: в широкой стойке корона опускается, и фигура «раздувается». Поправка одного кадра — только множителем после проверки листа всех кадров.
КАДР 2+ · ПРАВКА КАДРА 1
Redraw the attached pixel-art sprite as another FRAME of the same animation. Keep EXACTLY the same {герой}: same face, hair, headwear, clothes, colours, pixel style, SIZE and position in the image, the same baseline. Change ONLY: {новая поза}. Transparent background, crisp pixel art, no blur, no text.

STRICT FRAMING: the subject is the only thing in the image, transparent background; the lowest point touches a baseline at 94% of the image height; the subject is horizontally centred; everything fully inside the image with an empty margin.

5Настоящая ходьба

Самое сложное в серии. Две типичные ошибки: неподвижная поза, которую тащат по земле, и цикл, где ноги шагают, но стопы скользят, как по льду. Нажмите «Скольжение», чтобы увидеть разницу.

ЦИКЛ ХОДЬБЫ · 6 ПОЗ · 6 К/Сопорная нога стоит

Почему 6 поз, а не 8

Классический цикл из 8 поз на 8 кадрах в секунду в пикселе выглядит пробежкой. 6 поз по ~170 мс дают цикл около секунды — спокойный шаг взрослого человека.

Как заставить ИИ поставить ноги правильно

По текстовому описанию генератор рисует «ноги врозь» во всех кадрах. Поэтому позы задаются картинкой:

Скелет позы
1. Скелет позы — скрипт рисует 6 поз цикла
Грубый эскиз
2. Эскиз: верх героя + ноги и руки по скелету
Чистовик от ИИ
3. ИИ дорисовывает эскиз, сохраняя позу
Готовый спрайт
4. Спрайт: палитра, масштаб, выравнивание
ДОРИСОВКА ЭСКИЗА
The attached image is a ROUGH PASTE-UP of one frame of a walk animation: the upper body is finished, but the legs, the clothes and the arms are crude placeholder shapes. Redraw it as ONE polished pixel-art sprite of the same character ({карточка героя}).

KEEP THE POSE EXACTLY: every leg, knee, ankle, foot, arm and hand stays exactly where the placeholder shapes are, at the same size and the same place in the image; the darker limbs are the FAR leg and arm (behind the body), the lighter ones the NEAR leg and arm. Only replace the placeholders with proper anatomy, the cloth with natural folds that follow the legs, hands and shoes. Strict side view facing RIGHT, the same ground line.

STYLE: very detailed pixel art, small crisp square pixels, limited palette, hue-shifted shading, clean dark outlines, warm light. Transparent background, no text.

Чтобы стопа не скользила

Скрипт находит стопы в нижних строках каждого кадра и для каждого перехода считает, на сколько тело должно продвинуться, чтобы опорная стопа осталась на месте. Кадры выравниваются по голове, а не по краю картинки: руки машут, ноги ходят, а голова идёт почти ровно. Проверка простая: мировая координата опорной стопы не гуляет больше чем на ±6 пикселей.

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

И главное правило сценария: ходьба нужна, только когда у неё есть цель. Герои, которые «куда-то идут» под философский текст, выглядят как стадо сайгаков. Лучше три образа к смыслу фразы, чем бесцельная прогулка.

6Живые пиксели и липсинк

ПОРТРЕТговорит

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

Ветер двигает только сплошные массы волос и ткани, тонкие контуры не трогает, иначе лицо начинает дрожать.

Рот по громкости голоса

Для портрета рисуются четыре варианта: рот закрыт, приоткрыт, открыт и закрытые глаза. Скрипт меряет громкость озвучки 30 раз в секунду и выбирает рот, глаза моргают сами раз в 2–5 секунд. Разметка фонем не нужна — громкости хватает, чтобы зритель поверил.

Варианты рта — тоже правки исходного портрета, как кадры анимации: «тот же портрет, меняется только рот».

Переход между сценами

ПИКСЕЛЬНЫЙ ПЕРЕХОД · УПОРЯДОЧЕННЫЙ ДИЗЕРИНГ

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

7Кадр для Shorts

Кадр главы 4 с субтитрами

Интерфейс YouTube, Instagram и ВК закрывает до трети вертикального кадра. Всё, что должно читаться, живёт в безопасной зоне.

Зелёная рамка — безопасная зона 1080×1920: x 60–940, y 220–1440. Лица и текст только здесь.
Синяя полоса — место субтитров, y 250–375. Зарезервировано всегда: там не стоят лица, знамёна и важные предметы, даже когда субтитра нет.
Тёмные области — интерфейс: верхняя панель, подпись и кнопки снизу, иконки справа.

Субтитры

Пиксельный шрифт 24 px, не больше 34 знаков в строке и не больше двух строк. Длинная реплика режется на куски по две строки по словам, каждый кусок появляется вовремя. Имя говорящего — маленькая вкладка над рамкой. Огромные субтитры на полэкрана закрывают картинку, которую вы так долго рисовали.

Персонаж может входить в кадр через край, но говорить и действовать — только внутри зоны.

8Сборка, проверки, рендер

Сцена — это функция, которая по времени рисует кадр на холсте 270×480: фон, спрайты нужных поз, живые пиксели, субтитр. HyperFrames прокручивает время и сохраняет каждый кадр в MP4 1080×1920, 30 к/с.

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

Обрывки спрайтов — скрипт ищет кусочки чужих поз и обрезанные края в каждом кадре.
Лист масштаба — все кадры каждого набора на одной картинке: видно, кто вырос или сменил одежду.
Скан безопасной зоны — движок каждые 0,25 с проверяет, не вышло ли лицо или знак из зоны и не попало ли под субтитр.
Стоп-кадры под интерфейсом — по кадру из каждой сцены с наложенными кнопками Reels.
Громкость — пик ниже −1 дБ, голос не тонет в музыке.

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

9Обложка и публикация

Обложка главы 1: Уныние Арджуны Обложка главы 2: Душа вечна Обложка главы 3: Свой долг Обложка главы 4: Меч знания

Одна обложка показывается в пяти обрезках: полный экран, сетка профиля 3:4, лента 4:5, квадрат ВК и маленькая плитка канала. Заголовок и лица — в зоне x 60–940, y 420–1500: она переживает их все.

Арт генерируется с пустым верхом («верхние 40% — спокойное небо»), затем арт и буквы приводятся к одной пиксельной сетке, чтобы шрифт и картинка были одного «зерна». Под заголовком — тёмная полоса, тогда текст читается на любом фоне.

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

Тексты

Название YouTube до 60 знаков, ключ в начале: «Бхагавад-гита, глава 2: …». В описании Shorts нет таймкодов (главы в Shorts не работают) и ссылок на плейлист — плейлист задаётся в настройках. В Reels первые 125 знаков решают, нажмут ли «ещё». Во ВКонтакте название и первые строки индексирует Яндекс, поэтому пишите полными фразами, как люди ищут.

Чек-лист ошибок

Каждый пункт — реальная ошибка из серий. Отмечайте при сдаче каждой серии.