Communitygithub.com

shutckin/aivfx-content-kit

Makes motion graphics on the HyperFrames engine (HTML scenes rendered to video) with an AIVFX studio layer: name lower thirds, chapters, numbers, Shorts and Reels hooks, end cards, titles. The brand (colors, fonts, motion, durations) lives in one file, the video is a brief of scene roles, motion is set in words, and the agent renders a draft over footage and a final ProRes 4444 with alpha. Gives timing rules, 9:16 and 16:9 safe zones, lint and black-frame checks, a delivery checklist and a brand file checker. Triggers: 'lower third', 'motion graphics', 'chapter card', 'shorts hook', 'end card', 'transparent overlay', 'brand kit for motion', 'HyperFrames'. Triggers (RU): «сделай плашку», «нижняя треть», «плашка с именем», «заставка», «глава», «титры», «хук для шортс», «финальная карточка», «моушен для ролика», «графика с альфой для монтажа», «заведи бренд для графики», «сделай на хайперфреймс».

Was ist aivfx-content-kit?

aivfx-content-kit is a Claude Code agent skill that makes motion graphics on the HyperFrames engine (HTML scenes rendered to video) with an AIVFX studio layer: name lower thirds, chapters, numbers, Shorts and Reels hooks, end cards, titles. The brand (colors, fonts, motion, durations) lives in one file, the video is a brief of scene roles, motion is set in words, and the agent renders a draft over footage and a final ProRes 4444 with alpha. Gives timing rules, 9:16 and 16:9 safe zones, lint and black-frame checks, a delivery checklist and a brand file checker. Triggers: 'lower third', 'motion graphics', 'chapter card', 'shorts hook', 'end card', 'transparent overlay', 'brand kit for motion', 'HyperFrames'. Triggers (RU): «сделай плашку», «нижняя треть», «плашка с именем», «заставка», «глава», «титры», «хук для шортс», «финальная карточка», «моушен для ролика», «графика с альфой для монтажа», «заведи бренд для графики», «сделай на хайперфреймс».

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/shutckin/aivfx-content-kit/tree/HEAD/skills/motion-graphics

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Моушен-графика для роликов

Instructions are in Russian. Respond in the user's language.

Зачем

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

Моушен студии построен на HyperFrames, и студия доработала его в свою фабрику: решения о бренде принимаются один раз и записываются в файл, ролик описывается брифом по ролям сцен, а агент превращает бриф в композиции и рендерит. Новая плашка получается такой же, как остальные, даже если её делает другой агент через месяц.

На чём работает

ИнструментЗачем он здесьЧто из чего
HyperFramesдвижок: сцена это HTML-композиция, рендер в видео, свои проверкиHTML, CSS и таймлайн GSAP → MP4, WebM или MOV ProRes 4444 с альфой
Claude Code (или аналог)агент собирает сцены по брифубриф + бренд-файл → композиции, рендер, проверки
Бренд-файлодно место для цветов, шрифтов, движения, отступовbrand.json → числа для каждой сцены
ffmpegчерновик поверх футажа, лист кадров, поиск чёрных кадровсцены с альфой + кадры ролика → превью и лист кадров
ProRes 4444финал с прозрачным фоном для монтажаMOV с альфа-каналом
DaVinci Resolve (или аналог: Premiere, Final Cut)монтаж, графика кладётся поверх роликаMOV ProRes на дорожку выше футажа

Агент пишет план, бриф, композиции и гоняет проверки; владелец утверждает план и черновик; тексты (имена, цифры) дают владелец или клиент.

HyperFrames это открытый движок от HeyGen: https://hyperframes.heygen.com. Композиция там это HTML-файл с атрибутами data-* для времени, таймлайном GSAP для анимации и CSS для вида. Нужны Node.js 22 или новее и ffmpeg.

Что даёт сам HyperFramesЧто добавила студия
композицию HTML с дорожками и таймингом сценбренд-файл: цвета, шрифты, движение, отступы; правила бренда печатаются перед каждым рендером
hyperframes init, preview со студией в браузеребриф ролика по ролям сцен вместо ручной вёрстки каждой композиции
hyperframes render: MP4, WebM и MOV ProRes 4444 с прозрачностью (--format mov), --quality draftбиблиотеку ролей и шаблонов: роль переводится в шаблон конкретного бренда, один бриф собирается в стиле любого бренда
hyperframes lint, check и validate: ошибки разметки и таймлайна, ошибки в браузере, пропавшие файлы, контраст текстачерновик поверх настоящего футажа и контактный лист кадров вместо оценки на чёрном
hyperframes add: готовые блоки и эффекты из реестрасравнение финала с черновиком по тёмным кадрам и поиск чёрных кадров
hyperframes doctor: проверка окруженияcheck_brand.py: проверка бренд-файла до первой сцены
--docker для одинакового результата на разных машинахлокальные шрифты, встроенные в композицию, и локальный GSAP, имена файлов по сценам

Принципы ниже переносятся и на другие движки, которые превращают код в видео.

Когда включать

Графика в ролик (имя спикера, глава, цифра, финальная карточка), хук для Shorts и Reels, прозрачные оверлеи для монтажа, новый бренд для графики.

Не включай для полноэкранных промо-роликов на 10-25 секунд со своим сюжетом: там нужна раскадровка под темп музыки, одна своя композиция на ролик, а роли сцен только мешают. Раскадровку роликов делает shot-list, обложки к статьям article-cover, стиль генеративных кадров film-look.

Три файла вместо одного большого

  1. Бренд-файл brand.json: цвета, шрифты, размеры текста, словарь движения, длительности ролей, отступы и безопасные зоны. Один на бренд, меняется редко. Образец с вымышленным брендом и комментарием к каждому полю: templates/brand.example.json.
  2. Бриф ролика scenes.json: список сцен по ролям. Только смысл и тексты, ни одного цвета и ни одного числа движения. Образец: templates/scenes.example.json.
  3. Шаблон роли: на каждую роль одна композиция HyperFrames, которая читает бренд и сцену и подставляет числа. Свои шаблоны пишешь сам, это небольшая работа на роль. Хороший старт: hyperframes init и готовые блоки из реестра через hyperframes add.

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

Как завести бренд-файл

  1. Скопируй templates/brand.example.json в проект как brand.json.
  2. Возьми цвета с сайта или из гайдлайна бренда. Нет гайдлайна: спроси владельца про фон, основной текст и акцент. Не придумывай фирменные цвета за клиента.
  3. Каждому цвету дай одно значение: фон, текст, вторая строка, акцент. Если не можешь назвать, зачем цвет нужен, он лишний. Пять активных цветов это потолок.
  4. Шрифты: один для заголовков и цифр, один для подписей, можно один на всё. Только санс или сериф. Моноширинные и пиксельные шрифты не используем нигде, включая цифры, даты и метки. Цифры набирай сансом с ровными по ширине цифрами: в CSS font-variant-numeric: tabular-nums. Счётчик перестаёт прыгать, а шрифт остаётся живым.
  5. Шрифты встраивай в композицию (файлом из проекта или прямо в CSS). Шрифт из интернета может не догрузиться в момент рендера, и кадры уйдут системным шрифтом. То же с GSAP: держи его локально, загрузка из сети может отвалиться посреди рендера.
  6. Запиши в rules ограничения бренда словами: как использовать акцент, можно ли вводить новые цвета, откуда брать факты. Агент читает их перед каждой сборкой, иначе они теряются между сессиями.
  7. Прогони проверку:
python3 scripts/check_brand.py brand.json

Скрипт ищет обязательные поля, цвета не в hex, контраст текста к фону ниже 4.5:1, моноширинные и пиксельные шрифты, текст мельче 28 пикселей на кадре 1080, длительности вне разумных пределов и безопасные зоны, которые не закрывают интерфейс площадки. Код выхода 1 при нарушениях.

Роли сцен

Описывай роль, а не шаблон. Роль говорит, зачем сцена нужна, а шаблон под неё выбирает бренд. Смени бренд, и та же роль соберётся в другом стиле без переписывания брифа.

РольЗачемПоляФонДлительность
hookпервые 1-3 секунды Shorts, удержать палецtitle (3-6 слов), subtitle по желаниюсвой, полный кадр2-3 с
nameкто говорит в кадреtitle (имя), subtitle (кто он)прозрачный3-5 с
chapterсмена смыслового блокаlabel (номер), titleсвой или прозрачный2.5-4 с
numberодна цифра, которую надо запомнитьvalue, unit, noteпрозрачный3-4 с
endcardфинал: имя, сайт, что делать дальшеtitle, meta, логотипсвой, полный кадр4-6 с

Короткий факт, угловая заметка или перечисление с разделителями тоже бывают ролями (fact, note, list). Новую роль заводи, когда одна и та же задача встретилась хотя бы второй раз, а не под одну сцену.

Место в кадре at: bl, br, tl, tr, left, right, center. Плашка с именем почти всегда снизу слева, на стороне, противоположной взгляду спикера.

Тексты только из брифа. Имена, должности, цифры и адреса не выдумываются: нет данных, спроси. Ошибка в фамилии на плашке видна каждому зрителю.

Движение словами

В сцене движение описывают как режиссёр, а не как программист:

линия акцента прочерчивается слева, имя поднимается за ней, должность проявляется следом; держится; всё уходит вниз одним движением

Агент переводит это в числа бренда и в твины GSAP: «поднимается» это сдвиг на motion.travel_px за motion.enter_sec с торможением ease_enter, «следом» это пауза stagger_sec, «уходит» это exit_sec. Если в описании нет нужного слова, бери умолчания бренда, а не придумывай скорость.

  • Одна мысль на сцену. Если сцена говорит две вещи, это две сцены.
  • Сначала финальный кадр, потом движение. Сверстай сцену в момент, когда всё уже на месте, и только потом добавляй вход и выход. Так наложения видны до рендера.
  • Вход медленнее выхода. Появление с торможением, уход с разгоном и примерно вдвое быстрее. Зритель следит за входом, выход ему не нужен.
  • Одно направление на ролик. Вошло снизу, ушло вниз или вверх по той же оси. Хаос направлений читается как монтажная ошибка.
  • Не больше двух приёмов в сцене. Сдвиг и проявление уже достаточно. Вращение, отскок и размытие разом это демо-ролик движка.
  • Короткие расстояния, элементы по очереди. Сдвиг на 30-60 пикселей выглядит дорого, через полэкрана дёшево. Линия, потом имя, потом подпись.
  • Хук по словам, а не по буквам. Побуквенно медленно и мешает читать.
  • Финал держится неподвижно 3-4 секунды, иначе его не успевают прочитать.
  • Без случайностей в коде. Случайные числа и текущее время дают разную картинку при каждом рендере. Разброс бери формулой от номера элемента.

Тайминг и читаемость на телефоне

  • Текст держится неподвижно не меньше min_hold_sec после полного появления.
  • Время на чтение: около 0.3 секунды на слово плюс время входа. Плашка из шести слов меньше трёх секунд не живёт.
  • Текст среднего размера. Огромный заголовок на весь экран кажется криком.
  • Короткая сторона 1080 пикселей: заголовок 64-110, подпись не меньше 40, метка не меньше 28. Мельче на телефоне не читается.
  • Строка до 25-30 знаков. Длинную разбей на две по смыслу, не по ширине.
  • Текст поверх футажа всегда на подложке, тени или затемнении. Контраст 4.5:1 считается к подложке, а не к пустому фону.
  • Акцент на одно слово или одну линию. Залитый акцентом абзац не читается.
  • Таймлайн сцены должен заполнять её слот целиком: в конце добавь пустой твин на всю длительность сцены. Иначе HyperFrames скрывает сцену раньше, и в ролике мелькает чёрный кадр.

Безопасные зоны

Площадки закрывают часть кадра своим интерфейсом. Числа для кадра с короткой стороной 1080, перепроверь на свежем скриншоте площадки.

9:16 (1080x1920, Shorts, Reels, TikTok): сверху около 250 пикселей (ник, кнопки), снизу около 400 (подпись, музыка, прогресс), справа около 140 (лайки и комментарии), слева около 60. Хук и важный текст ставь в центральную полосу. Плашка с именем в вертикали поднимается выше обычного.

16:9 (1920x1080, YouTube, горизонтальный монтаж): по бокам около 96 пикселей, сверху 54, снизу около 96. В последние 5-20 секунд YouTube ставит конечные заставки, финальную карточку строй с местом под них.

Зоны живут в бренд-файле, сцену проверяй наложением рамки на черновой кадр.

Рендер

  • Черновик: hyperframes render --quality draft, в разы быстрее финала. Им проверяют всё, финал рендерят один раз.
  • Обычное видео (MP4, H.264): хук, финал и всё, что стоит полным кадром. Альфа там только утяжеляет файл.
  • Прозрачный фон для монтажа: плашки, главы поверх футажа, цифры. HyperFrames сам рендерит MOV ProRes 4444 с альфой (--format mov) для DaVinci Resolve, Premiere и Final Cut, для веба есть WebM с альфой (--format webm). MP4 альфу не хранит. Полнокадровую графику для монтажа можно перегнать ffmpeg в ProRes 422 HQ, она легче.
  • Против полос на градиентах: лёгкое зерно (texture.grain) и ProRes-мастер.
  • Не включай захват кадров в PNG (--video-frame-format png): в проверке студии он проваливал тёмные участки в чёрное.
  • Имена файлов латиницей по сценам: name-01-sokolova.mov.

Черновик поверх футажа до финала

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

  1. Рендер сцен в черновом качестве с прозрачным фоном.
  2. ffmpeg накладывает их на кадры или куски настоящего ролика (preview_bg в брифе: файл, видео или папка кадров, сценам раздаются по кругу) и склеивает в одно превью.
  3. Лист кадров: начало, середина и конец каждой сцены одной картинкой.
  4. Просмотр глазами и показ владельцу с нумерованным списком сцен, чтобы ответ был одним словом. Прошедший lint не значит, что дизайн работает.

Проверки

  • hyperframes lint после каждого нового шаблона, перед показом hyperframes check (lint, ошибки в браузере, раскладка и контраст текста одним прогоном), hyperframes doctor, если рендер падает. Lint ловит реальные баги: полноэкранный слой без нулевой прозрачности на старте засвечивает первые кадры; центрирование через translate(-50%,-50%) вместе с твином по y сбивается в конце, центруй flex-обёрткой.
  • Поиск чёрных кадров в черновике и финале: ffmpeg снимает яркость кадров, полностью чёрный кадр на стыке значит пропавшую сцену или замёрзшее видео. У каждого видео внутри композиции должен быть свой id, иначе кадр замирает.
  • Сверка финала с черновиком по тёмным кадрам: доля провалившихся в чёрное пикселей не должна вырасти.

Порядок работы

  1. Бренд: есть brand.json? Нет, заведи и проверь скриптом.
  2. План: пронумерованный список сцен с ролями, текстами, форматом и длительностью. Показать план, а не видео:
Бренд: Fjord Lab, 16:9, альфа для плашек

01. name / bl / альфа: «Мария Соколова» · «Инженер по звуку», 4 с
02. chapter / альфа: «Глава 2» · «Как мы пишем тишину», 3 с
03. number / right / альфа: 48 часов · «на запись одного эпизода», 3.5 с
04. endcard / MP4: «Fjord Lab» · fjordlab.example, 5 с
  1. Бриф scenes.json по утверждённому плану.
  2. Композиции по ролям, hyperframes lint.
  3. Черновик поверх футажа, лист кадров, поиск чёрных кадров, показ.
  4. Правки словами («третью короче», «имя крупнее») правятся в брифе, общие («все плашки медленнее») в бренде.
  5. Финальный рендер, ProRes 4444 для прозрачных сцен, сверка с черновиком, выдача файлов в папку под монтаж.

Типичные ошибки

  • Цвет или скорость прямо в сцене. Через пять роликов в проекте пять разных акцентов. Всё визуальное только в бренде.
  • Оценка графики на плоском фоне. Плашка «отлично смотрится» до первого светлого кадра.
  • Хук в нижней трети вертикали. Его закрывает подпись площадки.
  • Моноширинный шрифт для цифр «для техничности». Запрещён: выглядит как консоль, а не как ролик. Те же ровные цифры даёт санс с tabular-nums.
  • Логотип на каждой плашке и подписи канала по краям. Бренд узнают по системе, а края закроет площадка. Логотип в финале.
  • Финал сразу, без черновика. Финальный рендер в разы дольше, а правки всё равно будут.
  • Одинаковый звук на каждое слово. Щелчок подряд раздражает к третьему.

Чек-лист сдачи

  • check_brand.py прошёл без ошибок, hyperframes lint чистый.
  • В брифе нет цветов, шрифтов и чисел движения, только смысл.
  • Тексты сверены с брифом, имена и цифры не выдуманы.
  • Каждая сцена говорит одну мысль, текст держится не меньше min_hold_sec, таймлайн заполняет слот сцены.
  • Текст и логотип внутри безопасных зон нужного формата.
  • Черновик собран поверх настоящего футажа, лист кадров просмотрен, чёрных кадров нет.
  • Плашки и главы в ProRes 4444 с альфой, хук и финал обычным видео.
  • Тёмные кадры финала сверены с черновиком, полос и пятен нет.
  • Шрифты и GSAP встроены локально, моноширинных шрифтов нет.
  • Файлы названы латиницей по сценам, план и черновик утверждены владельцем. Отправка клиенту или публикация только по его прямому слову.

Первыми устаревают размеры интерфейса площадок, флаги HyperFrames и поддержка альфы в редакторах. Факты проверены на октябрь 2026.

Глубже

Код фабрики, библиотека шаблонов и бренд-паки студии не выложены. Полные шаблоны ролей, разборы реальных роликов и настройку системы под команду студия AIVFX показывает в работе и в обучении: https://aivfx.ru.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

shutckin/aivfx-content-kit

Runs a client AI video for a concept studio from brief to delivery. Takes the brief and real product photos, writes a synopsis, builds character and location sheets with 3 options each, a 16:9 approval deck, stills in waves, one prompt for the whole video, client revisions as a list, assembly and a delivery checklist. Core rule: the client approves the preproduction package before the first video frame, and the approved character and location sheets go as references into every generation. Use when a brief arrives for an advertising or product AI video. Triggers: 'client AI video', 'preproduction package', 'character sheet', 'location sheet'. Not for articles or covers (use blog-article and article-cover). Triggers (RU): «вот бриф», «новый клиент», «концепт студия», «препродакшн-пакет», «лист персонажа», «лист локации», «презентация клиенту», «правки от клиента», «готовим сдачу».

shutckin/aivfx-content-kit

Packages YouTube videos and Shorts: a pack of 3-4 thumbnail variants of one idea for choice and A/B testing, title and thumbnail as one unit, one idea per image, face and emotion, a large object, text up to 3-4 words or none, readable on a small phone screen. Works from own frames and screenshots plus references, generates or refines the frame with models (Nano Banana, Seedream, GPT-Image, Higgsfield and others) with the film-look style and logos in one pass, keeps a consistent channel series, checks the file with a script (size, weight, name), reviews the small view by eye on a contact sheet and shows options to the owner before upload. Triggers: 'YouTube thumbnail', 'video packaging', 'thumbnail A/B test', 'Shorts cover', 'title and thumbnail'. Triggers (RU): «сделай превью», «обложку для ролика», «обложку для YouTube», «упакуй ролик», «варианты для A/B-теста», «заголовок и превью», «обложку для Shorts», «серия превью для канала».

Verwandte Skills