Communitygithub.com

heygen-com/hyperframes

Transforma um changelog .md semanal em um vídeo de changelog finalizado com a marca (1080 quadrado, ~45-60s, narração Annie, fundo animado com a marca, visualizações mock da interface, legendas discretas).

O que é hyperframes?

Esta skill transforma um changelog em formato Markdown em um vídeo de changelog semanal totalmente produzido e com a marca. Ela é autossuficiente, fornecendo fontes, fundo animado, léxico e scripts. A skill é projetada para ser usada com agentes de IA como Claude Code, Cursor ou Codex, e requer a execução local de ferramentas como `ffmpeg`, `node`, `heygen` CLI e, opcionalmente, `whisper` para sincronização de legendas. O fluxo de trabalho começa com a cópia dos ativos da skill (fontes, música de fundo, padrão de fundo) para um diretório de projeto e, em seguida, segue um pipeline rigoroso de 6 etapas: análise do changelog, roteamento de visualizações, escrita de roteiro de duas camadas (falado vs. exibido), geração de narração com a voz 'Annie' do HeyGen, construção do HTML do projeto e, finalmente, a verificação por meio de gates automatizados (verificação de zona de legenda, verificação de costura). Uma diretiva fundamental é priorizar visualizações animadas da interface real em vez de listas de tópicos, usando um registro de visualizações para determinar a representação mais fiel. A skill garante a consistência da marca ao proibir a criação manual de assets ou a reutilização de scaffolds de projetos anteriores, e exige que o array de legendas no scaffold seja preenchido a partir de um arquivo `captions.json` gerado, com uma verificação de presença de legendas como um gate de aprovação/reprovação.

Funciona com✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/heygen-com/hyperframes/tree/HEAD/.agents/skills/changelog-video

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Changelog → Vídeo com Marca

Entrada: um changelog .md (temas + itens, como o digest semanal do HyperFrames). Saída: um projeto HyperFrames limpo e verificado em projects/active/weekly-changelog-<range>/. Renderize somente quando solicitado.

Carregue primeiro, não negociável: motion-doctrine (+ cut-the-curve, oversized-cursor se um cursor aparecer, seam-craft) e captions-overlay. Esta skill fornece o pipeline específico do changelog; a doutrina fornece a lei do movimento.

A diretriz principal: visualize, não liste

Cada tema é ilustrado por um mock animado da interface real ou um análogo fiel que representa a mudança na experiência — nunca bullets de texto. Encaminhe cada tema/item através de references/visualization-registry.md ANTES de escrever o roteiro; o registro decide ui-recreate / ui-analog / terminal / checklist. Checklist de texto é o ÚLTIMO recurso, reservado para itens genuinamente não visuais (listas de correções de confiabilidade).

Pipeline

0 · Inicialize o projeto a partir dos assets DESTA skill — não negociável

Faça isso antes de escrever qualquer HTML de composição. Pular isso sempre produz um vídeo que se parece com um projeto similar que você construiu antes, NÃO com a marca desta skill — esse é o erro mais comum que faz com que esta skill saia da marca. Os assets, fontes e scaffold da skill são a skill; o prompt SKILL.md é um roteador.

mkdir -p project/assets/fonts
cp <SKILL_DIR>/assets/fonts/*.woff2 project/assets/fonts/
cp <SKILL_DIR>/assets/bgm.mp3 project/bgm.mp3
ffmpeg -y -stream_loop 15 -i <SKILL_DIR>/assets/bg-pattern.mp4 -t <TOTAL> \
  -vf "scale=1080:1080,fps=30,eq=saturation=0.72,[email protected]:t=fill" \
  -an -c:v libx264 -crf 20 -pix_fmt yuv420p project/assets/bg-pattern-<TOTAL>s.mp4
cp <SKILL_DIR>/examples/master-skeleton.html project/index.html

Em seguida, leia references/build-spec.md de ponta a ponta (não superficialmente) — ele define os tokens da marca (TT Norms Pro + ABC Solar Display + TT Norms Mono, creme #f5f6f4, verde racionado #5ef17c, cartões de vidro com bordas verde-tintadas, formato de pílula kicker/sec-chip, trilho de legendas de 32px em top: 990) que cada cena herda do scaffold.

SÓ ENTÃO comece os passos 1-6 abaixo. Os passos 1-4 (analisar, rotear, roteiro, narração) planejam o que vai no scaffold; o passo 5 preenche placeholders (<RANGE>, <TOTAL>, <CUT_N>, <DUR_N>, corpos das cenas) dentro do project/index.html já copiado — você NÃO reescreve o chrome, fontes, paleta ou layout do scaffold.

Se você se pegar usando cp em um index.html de um vídeo anterior, ou escrevendo suas próprias declarações @font-face, ou projetando um shader WebGL de fundo em vez de usar o bg-pattern MP4 codificado acima: PARE. Exclua o index.html atual e recomece no cp do scaffold master-skeleton. Reconstruir o conteúdo da cena no scaffold correto é mais barato do que retrofitting da marca no scaffold errado.

1 · Análise + corte editorial

  • Extraia: intervalo da semana, estatísticas principais (lançamentos, commits), temas, itens.
  • Orçamento: 45-60s no total. Título ≤2s, encerramento ≤3.5s, 4 temas ≈ 9-12s cada.
  • Por tema, mantenha UMA visualização principal + no máximo 3 itens falados. Todo o resto existe apenas como o ponteiro "digest completo" no encerramento. Cortar é a tarefa: um changelog com 30 itens ainda rende ≤14 beats falados.
  • Ordene os temas pela história: funcionalidade principal → superfície do produto → desempenho → confiabilidade (o digest geralmente já segue essa ordem).

2 · Roteamento de visualização

Para cada tema, escolha a superfície de references/visualization-registry.md e escreva uma linha: tema → superfície → as 2-4 ações sequenciadas que o mock realiza, cada uma ligada a uma frase do roteiro. Se nenhuma superfície do registro se encaixar e nenhum análogo fiel existir, é uma cena de checklist — não invente uma interface falsa para algo que não podemos representar honestamente.

3 · Roteiro de duas camadas (falado vs. exibido)

Escreva o roteiro como linhas de token por references/script-voice.md: registro conversacional, cada termo técnico carregando uma forma fonética spoken de references/lexicon.json enquanto display mantém a grafia padrão. As legendas mostram display; a narração lê spoken. Qualquer termo que não esteja no léxico: PARE e pergunte ao usuário como se pronuncia, depois adicione ao léxico. Salve como script-tokens.json no projeto.

4 · Narração — Annie (HeyGen, fixa)

# apenas texto da camada falada; palavras JSON = timestamps verdadeiros do texto FALADO
# Caminho nativo do repositório: a skill changelog-video é executada a partir da raiz do repositório hyperframes,
# então ela usa o helper TTS hyperframes-media rastreado diretamente (sem `npx hyperframes
# skills install`). Se você copiou a skill para outro repositório, substitua pelo
# seu próprio caminho para o heygen-tts.mjs do hyperframes-media / media-use.
node skills/hyperframes-media/scripts/heygen-tts.mjs ./vo-spoken.txt \
  -o voiceover.mp3 --words vo-words.json \
  --voice 330290724a1b470fb63153f34d4c0183   # Annie — natural (não substitua)

Requer heygen CLI ≥0.3.0 autenticado (heygen auth login --oauth). Em seguida, alinhe os timestamps falados de volta aos tokens de exibição:

node <SKILL_DIR>/scripts/align-captions.mjs \
  --tokens script-tokens.json --words vo-words.json --out captions.json

captions.json é a entrada do trilho de legendas (grafia de exibição, tempo falado). O alinhador imprime avisos MISMATCH — resolva cada um antes de construir (geralmente uma grafia de léxico que o TTS renderiza como múltiplas palavras). O áudio é o relógio: todos os tempos dos beats vêm de vo-words.json; uma regeneração da narração reabre cada costura.

Os timings de palavras são um gate rígido. Antes de passar para o passo 5, verifique se vo-words.json não está vazio e tem um array words: [...] com start/end por palavra. Se estiver vazio (0 bytes) ou faltando o array — um modo de falha conhecido quando o provedor TTS retorna áudio mas sem payload de timestamp — NÃO PROSSIGA sem eles. Alternativa: alinhe à força o áudio produzido contra o roteiro de exibição usando whisper local:

uvx --from openai-whisper whisper voiceover.mp3 \
  --model base.en --language en --word_timestamps True \
  --output_format json --output_dir .
# depois execute align-captions.mjs com --words voiceover.json (mesma forma)

Whisper interpreta mal renderizações TTS ("gee-sap" → "gsap", "heyjen" → "hey Jen", etc.) — as legendas ainda usam a grafia DISPLAY de script-tokens.json; whisper fornece apenas os timestamps. align-captions.mjs lida com a junção. Essa alternativa é a diferença entre uma construção legendada e uma silenciosamente sem legendas.

5 · Construção

Siga references/build-spec.md exatamente: tokens da marca + fontes (incluídas em <SKILL_DIR>/assets/), a codificação do fundo animado, scaffold da cena, chrome, trilho de legendas, um momento de verde racionado por cena. Em seguida, a ordem da doutrina: ledger.json (todas as costuras comuns cut-the-curve LEFT) → seam-stamp → beats internos nas palavras da narração → verificação seam-gate.

Legendas não são opcionais. O master-skeleton inclui uma IIFE do trilho de legendas que lê um array LINES — deixar esse array vazio é um bug enviado, não uma escolha de estilo. Popule-o a partir de captions.json antes de prosseguir para o passo 6:

// cole no lugar de "const LINES = /* … */ []" na IIFE do trilho de legendas:
const LINES = /* conteúdo de captions.json */ [
  { id: 0, end: 2.74, w: [["This", 0.0], ["week,", 0.30], …] },
  …
];

Se align-captions.mjs foi pulado ou LINES é [], a verificação de quadro no passo 6 falhará — não a esconda removendo #cap-line do scaffold.

6 · Gates (tudo verde antes de apresentar)

  1. node packages/cli/bin/hyperframes.mjs check --caption-zone "x0=0;y0=.90;x1=1;y1=1;severity=error;seek=.02,.06,.10,.14,.18,.22,.26,.30,.34,.38,.42,.46,.50,.54,.58,.62,.66,.70,.74,.78,.82,.86,.90,.94,.98" (ou a CLI hyperframes instalada da skill skills/hyperframes-cli/ local do repositório) — 0 erros (contraste: texto escuro ≥ .66 alpha; conteúdo da cena permanece acima do trilho de legendas). NÃO use npx hyperframes@latest; a CLI local rastreada do repositório é a fonte de verdade para o contrato de composição que esta skill produz.
  2. seam-gate.mjs verify — 0 falhas.
  3. Reinicie o servidor de pré-visualização (ele armazena em cache o bundle), verifique 3-4 beats via __player.seek na página de composição bruta.
  4. NÃO renderize a menos que o usuário peça. Após uma renderização solicitada, verifique quadros do MP4 (ffmpeg -ss <t> … -frames:v 1): legendas presentes, vídeo de fundo não preto, sem quadros pequenos/congelados.
  5. Gate de presença de legendas — falha rígida. Amostre 3-4 quadros espalhados pela janela de fala da narração (ex: t=3, t=15, t=30, t=42 para uma narração de 48s) e confirme que o trilho de legendas em top: 990 renderiza texto visível em cada um. Se qualquer quadro em um intervalo de fala estiver sem legendas, a construção envia sem legendas — trate como um gate vermelho e re-verifique a população de LINES do passo 5. Foi exatamente isso que deu errado na construção v4 de 13 a 20 de julho.

Layout do projeto

projects/active/weekly-changelog-<range>/
├── index.html            # documento mestre único (cenas como slides, costuras carimbadas)
├── ledger.json           # vetor ledger (entrada do seam-stamp)
├── script-tokens.json    # roteiro de duas camadas (fonte de verdade para narração + legendas)
├── vo-spoken.txt         # gerado: camada falada, uma linha
├── voiceover.mp3 + vo-words.json + captions.json
├── bgm.mp3               # cópia de <SKILL_DIR>/assets/bgm.mp3 (a trilha da casa) a menos que o usuário forneça uma
└── assets/fonts/ + assets/bg-pattern-<dur>s.mp4

Anti-padrões

Não façaEm vez disso
Slides com bullets para mudanças de interfaceMock da superfície representando a mudança
Interface falsa para itens não representáveisCena de checklist honesta
"JSON"/"CLI" simples no texto TTSFormas faladas do léxico; exibição permanece padrão
Grafias fonéticas nas legendasLegendas sempre renderizam a camada de exibição
Adivinhar a pronúncia de um termo desconhecidoPergunte, depois aumente o léxico
Falar cada item do changelog≤3 por tema; o link do digest carrega o resto
Acentos verdes em todos os lugaresUm momento verde por cena (#5ef17c)
Começar a partir do index.html de um vídeo anteriorPasso 0 — copie examples/master-skeleton.html desta skill para project/index.html, sempre
@font-face feito à mão / shader WebGL / BGM personalizadoPasso 0 — copie os assets/ desta skill literalmente; os assets da skill SÃO a marca
Entregue sem invalidação do CloudFrontExecute aws cloudfront create-invalidation na distribuição E2BSLVSZ7FG3U0 para o caminho exato após qualquer substituição S3 — o CDN armazena o arquivo antigo em cache caso contrário
Enviado com o array LINES vazio no scaffoldO passo 4 deve produzir um captions.json populado; o passo 5 deve colá-lo na IIFE; o gate 5 do passo 6 deve confirmar legendas nos quadros renderizados. Um LINES vazio = envio sem legendas = refaça a execução
Sem vo-words.json → pule legendas e envie mesmo assimRecorra ao alinhamento forçado do whisper no áudio produzido; legendas não são opcionais

Individual skills in this repo

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

general-video

>

heygen-com/animejs

Anime.js adapter patterns for HyperFrames. Use when writing Anime.js animations or timelines inside HyperFrames compositions, registering animations on window.__hfAnime, making Anime.js seek-driven and deterministic, or translating Anime.js examples into render-safe HyperFrames HTML.

heygen-com/claude-design-hyperframes

Use when running inside Claude Design specifically. Produces a valid, brand-accurate HyperFrames video draft using pre-valid skeletons. For Claude Code / Cursor / Codex, use the `hyperframes` skill instead.

heygen-com/contribute-catalog

Author a new HyperFrames registry block (caption style, VFX block, transition, lower third) or component (text effect, overlay, snippet) and ship it as an upstream PR to the hyperframes repo. Use ONLY when the user wants to CONTRIBUTE to the public catalog — for in-project caption/transition authoring use the `hyperframes` skill, for installing existing registry items use the `hyperframes-registry` skill.

heygen-com/css-animations

CSS animation adapter patterns for HyperFrames. Use when authoring CSS keyframes, animation-delay based timing, animation-fill-mode, animation-play-state, or CSS-only motion that HyperFrames must seek deterministically during preview and rendering.

heygen-com/gsap

GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo). Use when writing GSAP animations in HyperFrames compositions.

heygen-com/hyperframes

A tiled headline surface flips cell by cell under a sweeping depth field to reveal the rear headline. HyperFrames block, 1920×1080, 8s, 18 variables.

heygen-com/hyperframes

Leaves sweep through the frame and part to reveal the headline. HyperFrames block, 1920×1080, 12s, 11 variables.

heygen-com/hyperframes

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

heygen-com/hyperframes

A single feature card orbits a dot sphere on approved Blender camera motion. HyperFrames block, 1920×1080, 10s, 4 variables.

heygen-com/hyperframes

A wireframe portal bursts open, the title comes through, then its letters swap into a second phrase. HyperFrames block, 1920×1080, 8s, 9 variables.

heygen-com/hyperframes

Glass shards fly in through fog and tile themselves into the headline. HyperFrames block, 1920×1080, 12.16s, 19 variables.

heygen-com/hyperframes

Render-correctness doctrine for scene-to-scene seams in HyperFrames launch videos — the prerequisites that make transitions composite correctly on the master timeline. Load when assembling the master timeline / index.html, when a white flash appears at a cut or crossfade seam (especially on dark films), when reasoning about why a transition opacity dip shows through, or when verifying the render-side mechanics of how overlapping scene wrappers blend. Covers the opaque stage-ground (#root background) white-flash guard and how the injector overlaps wrappers, holds final frames, ping-pongs tracks, and stamps lint-clean template code onto the master timeline. Does NOT contain the per-transition catalog — see the transition registry for individual transition entries.

heygen-com/hyperframes

An orbiting camera follows an ice logo as it breaks apart, reforms into two text moments, and fades. HyperFrames block, 1920×1080, 22.5s, 216 variables.

heygen-com/hyperframes

name: embedded-captions

heygen-com/hyperframes

A chain of bevelled cuboids rides a travelling wave as a content carousel. HyperFrames block, 1920×1080, 6.666666666666667s, 40 variables.

heygen-com/hyperframes

Turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video: there is no site or footage to capture, so the visuals are invented per scene (typography, abstract graphics, diagrams, data-viz). Use for topic explainers, concept breakdowns, how-tos, listicles. Not a video built from a website (/product-launch-video — promo or tour). Unclear → /hyperframes.

heygen-com/hyperframes

Import Figma content into a HyperFrames composition — rendered assets, brand tokens, components, storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI), connector-assisted motion when available, and shaders from a connector or native export. Use when the user pastes a figma.com link or asks to bring a Figma design, frame, logo, brand, or animation into a video/composition.

heygen-com/hyperframes

House-style oversized macOS cursor technique for HyperFrames launch videos. Load whenever a scene involves cursors or a pointer-led action, when kicking off a UI scene, when igniting a morph/transition/typing run with a click, or when a scene reads as static, dead, or stale and needs a cheap high-yield source of motion to carry the viewer's eye and segment them out of the stale state. Covers cursor size/look (incl. brand-motif cursors), the off-screen entry law, tip-targeting and the click tap, click-ignites-the-next-beat, and exit / cross-scene handoff.

heygen-com/hyperframes

The technique catalog: five velocity-matched SEAMS (zoom-through, INVERSE zoom-through, cut-the-curve, waterfall cut, rack-focus blur-cut) plus the two in-scene techniques — waterfall ENTRY (staggered arrival cascades for title cards / segment openers) and the nudge curve (slow-fast-slow three-phase group slides). Covers partial-travel (~12% of frame) velocity matching via mirrored power4 eases, the Z scale-sign rule, size-scaled blur (10px text / 18-20px full-frame), word-by-word staggered cuts, cascade pacing by element weight, and the 10/65/25 slide ratio. Read before authoring any transition, text-beat handoff, kinetic text entry, or group reposition. [depth, zoom, inverse-zoom, scale-sign, mirrored-zoom, rack-focus, pacing, velocity, cut-the-curve, waterfall, stagger, cascade, kinetic-text, title-card, segment-opener, nudge, slide, easing, group-motion, z-depth, motion-graphics, cinematic, transition, blur, directional-continuity]

Habilidades Relacionadas