{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}
Гиперкадры
Создавайте видеокомпозиции на основе HTML, анимированные заставки, социальные наложения, видео с субтитрами, аудиореактивные визуальные эффекты и переходы шейдеров с помощью HyperFrames. HTML — источник правды для видео. Используйте, когда пользователю нужен визуализированный MP4/WebM из композиции HTML, он хочет анимировать текст/логотипы/диаграммы поверх мультимедиа, ему нужны подписи, синхронизированные со звуком, нужно повествование TTS или он хочет преобразовать веб-сайт в видео.
Метаданные навыков
Источник
Необязательно — установите с помощью hermesskills installofficial/creative/hyperframes
Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.
Гиперфреймы
HTML — источник правды для видео. Композиция представляет собой HTML-файл с атрибутами data-* для синхронизации, временной шкалой GSAP для анимации и CSS для внешнего вида. Механизм HyperFrames захватывает страницу покадрово и кодирует в MP4/WebM с помощью FFmpeg.
Дополнение к manim-video: Используйте manim-video для математических/геометрических пояснений (уравнений в стиле 3B1B). Используйте «гиперкадры» для анимационной графики, говорящей головы с подписями, экскурсий по продукту, социальных наложений, переходов шейдеров и всего, что связано с реальными видео/аудиоматериалами.
Когда использовать
Пользователь запрашивает визуализированное видео из текста, сценария или веб-сайта.
Анимированные заставки, нижние трети или типографские вступления.
Видео с субтитрами (TTS + субтитры, синхронизированные с формой волны)
Аудио-реактивные визуальные эффекты (синхронизация ритма, полосы спектра, пульсирующее свечение)
Переходы между сценами (перекрестное затухание, вытеснение, деформация шейдера, вспышка через белый цвет)
Сценарий:
1. Проверяет, что Node.js >= 22 и FFmpeg установлены (если нет, печатает инструкции по исправлению).
2. Устанавливает CLI hyperframes глобально (npm install -g Hyperframes@>=0.4.2).
3. Предварительно кэширует chrome-headless-shell с помощью Puppeteer — обязательно для наилучшего качества рендеринга через путь захвата Chrome HeadlessExperimental.beginFrame в Chrome.
4. Запускает npx Hyperframes Doctor и сообщает результат.
Прежде чем прикасаться к коду, сформулируйте на высоком уровне:
- Что — сюжетная линия, ключевые моменты, эмоциональные моменты.
- Структура — композиции, треки (видео/аудио/наложения), длительность.
- Визуальная идентичность — цвета, шрифты, характер движения (взрывной/кинематографический/плавный/технический)
- Герой кадр — для каждой сцены момент, когда одновременно видно наибольшее количество элементов. Это статический макет, который вы создадите первым.
Ворота визуальной идентификации (HARD-GATE). Перед написанием ЛЮБОЙ композиции HTML необходимо определить визуальную идентичность. НЕ пишите композиции со стандартными или общими цветами (#333, #3b82f6, Roboto говорят о том, что этот шаг был пропущен). Проверка по порядку:
DESIGN.md в корне проекта? → Используйте его точные цвета, шрифты, правила движения и ограничения «Чего НЕ делать».
Пользователь назвал стиль (например, «Swiss Pulse», «мрачный и технологичный», «люксовый бренд»)? → Создайте минимальный файл DESIGN.md с ## Style Prompt, ## Colors (3-5 шестнадцатеричных символов с ролями), ## Typography (1-2 семейства), ## Чего НЕ делать (3-5 антишаблонов).
Ничего из вышеперечисленного? → Прежде чем писать HTML, задайте 3 вопроса:
Есть ли фирменные цвета, шрифты или визуальные отсылки?
Затем сгенерируйте DESIGN.md на основе ответов. Каждая композиция должна прослеживать свою палитру и типографику до DESIGN.md или явного указания пользователя.
2. Подмости
npxhyperframesinitmy-video--non-interactive
Шаблоны: «пустой», «теплое зерно», «режим игры», «швейцарская сетка», «виньелли», «дерево решений», «кинетический тип», «продукт-промо», «nyt-graph». Передайте --example <name>, чтобы выбрать один, --video clip.mp4 или --audio track.mp3, чтобы заполнить его медиафайлом.
3. Макет перед анимацией
Напишите статический HTML+CSS для сначала главного кадра — GSAP пока нет. Контейнер .scene-content должен заполнить сцену (ширина:100%; высота:100%; отступ:Npx) с помощью display:flex + gap. Используйте отступы для перемещения содержимого внутрь — никогда не position: Absolute; top: Npx в контейнере контента (содержимое переполняется, когда его высота превышает оставшееся пространство).
Только после того, как главный кадр станет правильным, добавьте входы gsap.from() (анимируйте в позицию CSS) и выходы gsap.to() (анимируйте из его).
Каждая композиция должна:
- Зарегистрируйте его временную шкалу: window.__timelines["<composition-id>"] = tl
- Начало на паузе: gsap.timeline({pased: true }) — проигрыватель управляет воспроизведением.
— Используйте конечные значения повтора (без повтора: -1 — нарушается механизм захвата). Вычислите: repeat: Math.ceil(duration/cycleDuration) - 1.
- Будьте детерминистичны — никакой логики Math.random(), Date.now() или настенных часов. Используйте начальный ГПСЧ, если вам нужна псевдослучайность.
- Сборка синхронная — никаких async/await, setTimeout или Promises при построении временной шкалы.
См. references/gsap.md для получения информации об основном API GSAP (анимация, замедление, разнесение, сроки).
5. Переходы между сценами
Многосценные композиции требуют переходов. Правила:
1. Всегда используйте переходы между сценами — без переходов.
2. Всегда используйте анимацию входа для каждого элемента сцены (gsap.from(...)).
3. Никогда не используйте анимацию выхода, кроме финальной сцены: переход ЯВЛЯЕТСЯ выходом.
4. Финальная сцена может исчезнуть.
Используйте npx Hyperframes add для установки переходов шейдера («вспышка через белый», «жидкое вытирание» и т. д.). Полный список: npx Hyperframes add --list.
Аудио: всегда отдельный элемент <audio> (воспроизведение видео отключено в строке).
TTS:npx Hyperframes tts "Текст сценария" --voice af_nova --output narration.wav. Список голосов можно получить с помощью --list. Первая буква голосового идентификатора кодирует язык (a/b=английский, e=испанский, f=французский, j=японский, z=мандаринский и т. д.) — CLI автоматически определяет локаль фонемайзера; передайте --lang только для переопределения. Неанглийская фонемизация требует установки espeak-ng во всей системе.
Подписи:npx гиперфреймы транскрибируют narration.wav → расшифровка на уровне слов. Выберите стиль стенограммы (хайповый/корпоративный/учебный/исторический/социальный — см. таблицу в references/features.md). Правило языка: никогда не используйте модели шепота .en, если звук не подтвержден на английском языке — .en переводит неанглийский звук, а не расшифровывает его. Каждая группа подписей ДОЛЖНА иметь жесткое уничтожение tl.set(el, { opacity: 0, Visibility: "hidden" }, group.end) после выхода анимации — в противном случае группы будут видны в более поздних группах.
Визуальные эффекты, реагирующие на звук: предварительно извлекайте звуковые диапазоны (низкие/средние/высокие частоты) и сэмплируйте каждый кадр внутри временной шкалы с помощью цикла for tl.call(draw, [], f / fps) — один длинный анимационный эффект НЕ реагирует на звук. Карта низких частот → масштаб (импульс), высоких → textShadow/boxShadow (свечение), общая амплитуда → opacity/y/backgroundColor. Избегайте клише в виде эквалайзера — позвольте контенту управлять визуальным эффектом, а звук — его поведением.
Выделение в стиле маркера: эффекты выделения, круга, взрыва, каракулей и эскизов для выделения текста являются детерминированными CSS+GSAP — см. references/features.md#marker-highlighting. Полностью доступен для поиска, без анимированных SVG-фильтров.
Переходы сцен: в каждой композиции из нескольких сцен ДОЛЖНЫ использоваться переходы (без переходов). Выбирайте примитивы CSS (перемещение слайда, размытие, перекрестное затухание, масштабирование, шахматные блоки) или переходы шейдеров («вспышка сквозь белый», «жидкое вытеснение», «кросс-деформация», «хроматическое разделение» и т. д.) с помощью «npx Hyperframes add». Таблицы настроения и энергии находятся в references/features.md#transitions. Не смешивайте переходы CSS и шейдеров в одной композиции.
npxhyperframeslint# catches missing data-composition-id, overlapping tracks, unregistered timelines
npxhyperframesvalidate# WCAG contrast audit at 5 timestamps
npxhyperframesinspect# visual layout audit — overflow, off-frame elements, occluded text
npxhyperframespreview# live browser preview
npxhyperframesrender--qualitydraft--outputdraft.mp4# fast iteration
npxhyperframesrender--qualityhigh--outputfinal.mp4# final delivery
hyperframes validate производит выборку пикселей фона за каждым текстовым элементом и предупреждает о коэффициентах контрастности ниже 4,5:1 (или 3:1 для большого текста). «Проверка гиперфреймов» — это компаньон на стороне макета — запускает страницу с несколькими временными метками и помечает проблемы, которые не видит статический анализатор (заголовок, который обходит безопасную область только через 4,5 с, карточка, которая переполняется, когда ее заголовок является самым длинным вариантом, элемент, который оказывается за шейдером перехода). Запускайте «проверку», особенно для композиций с надписями, карточками, подписями или плотной типографикой.
8. Преобразование веб-сайта в видео (если пользователь указывает URL-адрес)
Используйте 7-этапный рабочий процесс захвата видео в references/website-to-video.md: захват → DESIGN.md → SCRIPT.md → раскадровка → композиция → рендеринг → доставка.
Подводные камни
**HeadlessExperimental.beginFrame не найден** — в Chromium 147+ этот протокол удален. Убедитесь, что вы используетеhyperframes@>=0.4.2(автоматически обнаруживается и возвращается в режим снимков экрана). Аварийный люк:export PRODUCER_FORCE_SCREENSHOT=true`. См. hyperframes#294 и references/troubleshooting.md.
Системный Chrome (не chrome-headless-shell) — рендеринг зависает на 120 секунд, а затем происходит тайм-аут. Запустите npx puppeteer Browsers install chrome-headless-shell (это делает setup.sh). hyperframes Doctor сообщает, какой двоичный файл будет использоваться.
repeat: -1 где угодно — прерывает механизм захвата. Всегда рассчитывайте конечное количество повторений.
gsap.set() для элементов клипа, которые появляются позже — элемент не существует при загрузке страницы. Вместо этого используйте tl.set(selector, vars, timePosition) внутри временной шкалы, в момент или после data-start клипа.
<br> внутри текста содержимого — принудительные разрывы не учитывают отображаемую ширину шрифта, поэтому естественный перенос + <br> выполняет двойной разрыв. Используйте max-width, чтобы разрешить перенос текста. Исключение: короткие отображаемые заголовки, в которых каждое слово намеренно находится на отдельной строке.
Анимация «видимости» или «отображения» — GSAP не может их анимировать. Используйте autoAlpha (управляет видимостью и непрозрачностью).
Вызов video.play() или audio.play() — воспроизведение контролируется фреймворком. Никогда не звоните им сами.
Асинхронное построение временных шкал — механизм захвата считывает window.__timelines синхронно после загрузки страницы. Никогда не переносите построение временной шкалы в async, setTimeout или Promise.
Отдельный index.html, завернутый в <template> — скрывает весь контент из браузера. Только подкомпозиции, загруженные через data-composition-src, используют <template>.
Использование видео вместо аудио — всегда отключен звук <video> + отдельный <audio>.
Проверка
До и после рендеринга:
Lint + проверка + проверка прохода:npx Hyperframes lint --strict && npx Hyperframes Validate && npx Hyperframes Inspect (lint выявляет структурные проблемы, проверка выявляет контраст, проверка выявляет проблемы визуального макета/переполнения — см. Troubleshooting.md, если появляются предупреждения).
Хореография анимации — при появлении новых композиций или значительных изменений анимации запустите карту анимации. npx Hyperframes init копирует сценарии навыков в проект, поэтому путь является локальным для проекта:
bash
node skills/hyperframes/scripts/animation-map.mjs <composition-dir> \
--out <composition-dir>/.hyperframes/anim-map
Выводит один файл animation-map.json со сводками для каждой анимации, временной шкалой ASCII Ганта, обнаружением смещения, мертвыми зонами (>1 с без анимации), жизненными циклами элементов и флагами («вне экрана», «столкновение», «невидимый», «быстрый темп» <0,2 с, «медленный темп» >2 с). Сканируйте сводки и флажки — исправьте или обоснуйте каждую. Пропустите небольшие правки.
Файл существует + ненулевое значение:ls -lh Final.mp4.
Продолжительность соответствует data-duration:ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 Final.mp4.