video-editing
Use este skill quando você tiver um roteiro aprovado, mídia de voz/áudio fornecida e ativos reunidos, e precisar transformá-los em um vídeo curto vertical (9:16) finalizado. Você é o editor principal, não um montador de clipes. O padrão é vídeos curtos com qualidade de criador (densidade de Kallaway / Varun Mayya): cada batida merece atenção. Saídas genéricas de ferramentas de IA — cortes uniformes de 1s, fontes padrão, transformações lineares/com tremor, um visual de modelo padrão — são uma falha, não um resultado aceitável.
A proporção padrão é 9:16 (1080×1920). Os pacotes de estilo também definem comportamento 16:9 e 1:1, então o mesmo visual pode ser redirecionado — mas o ritmo e a gramática do gancho deste skill são escritos primeiro para o formato curto vertical.
O fluxo de trabalho não negociável (nunca pule, nunca reordene)
Criar index.html manualmente do zero quebra o live-reload e a estrutura do projeto. Sempre:
npx hyperframes init editdentro da pastaedit/do seu projeto — cria o esqueleto (index.html,meta.json,hyperframes.json,CLAUDE.md,package.json).cd edite modifique os arquivos de projeto gerados para construir a edição real. Adicionefonts/,assets/sfx/, sub-composições emcompositions/.npx hyperframes preview(execução longa — execute em segundo plano) — verifique no navegador com live reload. Use uma ferramenta do navegador para inspecionar e capturar a tela. Confirme o ritmo, layout, tempo do texto e suavidade da animação antes de renderizar.npx hyperframes lint/npm run check— corrija todos os erros; revise os avisos.npx hyperframes render— MP4 final.- Verifique:
ffprobe(dimensões 9:16, duração, codec) +ffmpegverificações pontuais de quadro em uma folha de contato. Execute o script de verificação incluído (abaixo).
Use a documentação do hyperframes (npx hyperframes docs) para referência de API/recursos e as referências neste skill para o padrão de edição. Se as ferramentas do HyperFrames estiverem quebradas ou ausentes, pare e informe o usuário, em vez de criar uma edição genérica manualmente.
Requisitos
- HyperFrames — o mecanismo de renderização, executado via
npx hyperframes. Este skill é o padrão de edição sobre o HyperFrames; ele não o substitui. - Node.js (para
npxe o script de verificação). - ffmpeg / ffprobe no PATH — para síntese de SFX, mixagem de áudio e verificação de renderização.
- Um pacote de estilo em
styles/<style>/FRAME.md(este skill incluivibe-lifecomo exemplo prático e_templatecomo ponto de partida — vejastyles/README.md).
Entradas
Trabalhe a partir de uma pasta de projeto. Um layout recomendado (adaptável ao seu):
seu-projeto/
├── script.md # roteiro aprovado com batidas/timestamps, supers, dicas de energia — A ESPINHA DORSAL
├── voiceover/ # mídia de voz / áudio fornecida (o A-roll)
├── avatar/ # mídia de áudio opcional
├── assets/
│ ├── manifest.json # B-roll reunido + mapa de ativos por batida + notas de direitos
│ └── ... # a mídia reunida
└── edit/ # SUA saída (criada por `npx hyperframes init edit`)
Leia (não edite) o roteiro, a mídia de voz/áudio e o manifesto de ativos. Escolha o pacote de estilo que o vídeo deve usar (styles/<style>/FRAME.md).
Saídas
Escreva tudo na pasta edit/ do seu projeto:
- O projeto HyperFrames (
index.html+compositions/+fonts/+assets/sfx/+assets/master_audio.*). - O MP4 final renderizado (9:16), verificado.
edit-report.md— uma nota de entrega: decisões de edição por batida, ativos usados (com referências do manifesto), SFX/música usados, notas de verificação de prévia/renderização e qualquer coisa que você sinalizou para revisão final. Modelo emreferences/edit-report-template.md(anexado abaixo).
Gramática de edição (o que "profissional" significa aqui)
Cada item abaixo é uma barreira de qualidade, não uma sugestão.
A linguagem visual padrão é o visual editorial — veja "visual-editorial" abaixo. Os quadros são páginas projetadas, não vídeo com texto sobreposto: manchetes editoriais mistas serifadas-itálico/negrito-sans-serif, fundos de palco de papel e intersticiais de grade escura, a divisão empilhada (B-roll em cima / áudio em baixo) como layout padrão de A-roll/B-roll, supers com barra de destaque com ênfase de cor em palavras-chave, legendas de emenda e etiquetas de nome, cartões de manchete e pilhas de cartões de interface. Construa cada vídeo curto a partir desses dez padrões, tematizados por pacote de estilo.
- Gancho projetado (primeiros 1–3s): supers de texto no topo, uma interrupção de padrão, então um movimento para dentro do quadro (por exemplo, um painel dividido que cresce para 9:16 completo). Nunca comece com uma áudio estática.
- Estrutura A-roll / B-roll: A-roll (áudio / VO) é a espinha dorsal; B-roll (clipes, capturas de tela, gráficos em movimento) cobre e pontua. Corte B-roll sobre o áudio do A-roll, não em silêncio.
- Granularidade de corte: cortes tão rápidos quanto 0,2s quando a energia do roteiro exige; nunca cortes metronômicos de 1s. O ritmo segue o roteiro.
- Layouts de tela dividida: composições lado a lado e empilhadas, com transições deliberadas para dentro e para fora da tela cheia. A divisão empilhada com legenda de emenda é o padrão — a cobertura de B-roll em tela cheia é a exceção.
- Enquadramento seguro para o rosto: sempre que uma pessoa estiver dentro de um painel ou corte, tendencie o corte com
object-positionpara que o rosto fique centralizado na área visível do painel, olhos no terço superior — o padrão50% 50%quase sempre está errado para fontes de áudio e corta cabeças. Os movimentos de câmera em um painel de pessoa devem manter o rosto no quadro durante todo o movimento. Um rosto descentralizado ou cortado é uma falha de verificação. Veja "visual-editorial" §4 "Enquadramento seguro para o rosto". - Movimento de câmera suave: zoom in/out e pan esquerda/direita, sempre suaves, nunca lineares, nunca com tremor. Veja "movimentos-de-câmera" para o contrato anti-tremor.
- Texto cinético / legendas: entradas animadas, ênfase em palavras-chave (uma palavra de destaque), supers de legenda sincronizadas com a voz.
- Gráficos em movimento temáticos: cartões de número, cartões JSON/especificação, chamadas com caixa delimitadora, divisões de pôster, construções de gráfico — projetados no tema do estilo, não genéricos.
- Animação de logotipo / marca: animação de marcas/produtos onde o roteiro as nomeia.
- SFX: whooshes, cliques, risers, impactos em camadas sobre cortes e acertos gráficos — sutis, mixados sob a voz. Veja "sfx-e-áudio".
- Estética coesa: um tema de cor, tipografia consistente, curvas suaves, sem elementos de visual padrão, sem estouros. Tudo do pacote de estilo
FRAME.md.
Tematização de estilo (obrigatório, antes de projetar qualquer coisa)
Derive a identidade visual do pacote de estilo primeiro — cores, tipo, personalidade de movimento e linguagem gráfica vêm de styles/<style>/FRAME.md. Estilo diferente → visual diferente. Veja "tematização-de-estilo" abaixo para transformar FRAME.md em uma especificação de design frame.md concreta (tokens de paleta, @font-face para fontes locais, personalidade de movimento → escolhas de suavização/corte). O exemplo vibe-life fornecido usa uma paleta creme/tinta/pêssego/manteiga; Space Grotesk + Instrument Serif itálico + JetBrains Mono; movimento de recorte de papel (cortes duros mascarados por SFX, não crossfades); uma palavra de destaque serifada-itálico por quadro em uma pílula; sombras de tinta duras e planas. Seu próprio estilo preenche as mesmas funções com seus próprios tokens.
Regras rígidas do HyperFrames (quebrá-las quebra a renderização)
- Cada elemento temporizado precisa de
data-start,data-duration,data-track-indexeclass="clip"(o framework controla a visibilidade viaclip). - Nunca use GSAP no elemento
.clipem si — o framework é dono da sua visibilidade/transformação. Anime um wrapper filho (por exemplo,.cam,.inner). - As timelines devem ser
gsap.timeline({ paused: true })e registradas emwindow.__timelines["main"](o id corresponde adata-composition-id). - Apenas determinístico — sem
Math.random(), semDate.now(), sem buscas de rede, semrepeat: -1. As renderizações são amostradas por quadro e devem ser reproduzíveis. - 9:16 = 1080×1920. Defina
#root { container-type: size; }para quecqw/cqhsejam resolvidos em relação ao quadro (1cqw = 10,8px). Dimensione tipo/gráficos emcqw/cqh, não emvw/vh. - Clipes adjacentes na mesma trilha não devem se tocar — a precisão de ponto flutuante faz
3.2 + 0.35 = 3.5500000000000003, que se sobrepõe a um clipe começando em3.55e acionaoverlapping_clips_same_track. Deixe uma lacuna ou use durações como0.34. (Adotado das pegadinhas de lint do hyperframes-helper.) - Áudio: vídeos são
mutedcom um elemento<audio>separado. Prefira uma faixa de áudio mestre pré-misturada (VO + SFX mixados via ffmpegadelay+amix) em vez de muitos elementos<audio>— múltiplas faixas causam eco/dessincronização. Coloque-a em umdata-track-indexalto e dedicado. - Densidade:
timeline_track_too_dense(muitos elementos temporizados em uma trilha) é um aviso para um piloto curto, mas real em escala — divida cenas em sub-composições (data-composition-src="compositions/file.html") para edições de tamanho de produção.
Fluxo de trabalho
- Leia o roteiro como a espinha dorsal. Construa um mapa de batidas: cada batida/timestamp → necessidade de A-roll (segmento de VO/áudio) + necessidade de B-roll/MG + super na tela + corte/câmera/transição pretendidos + energia. A energia do roteiro dita o ritmo; não imponha um ritmo uniforme.
- Tematize a partir do pacote de estilo. Leia
styles/<style>/FRAME.md. Produza a especificação de design concreta: tokens de paleta, declarações locais de@font-face, personalidade de movimento, linguagem gráfica. (Veja "tematização-de-estilo".) - Reconcilie a cobertura de ativos. Faça referência cruzada com seu manifesto de ativos: quais batidas são cobertas pela mídia reunida, quais são
build-in-editor(suas para construir como gráficos em movimento), quais são alternativasalternate. Nunca coloque mídia de espaço reservado/sem licença em uma renderização final — sinalize lacunas no relatório. npx hyperframes init edit. Esqueleto primeiro. Em seguida, adicionefonts/(subconjuntos woff2 locais),assets/sfx/,compositions/.- Construa a edição batida por batida em
index.html(e sub-composições para comprimento). Aplique a gramática de edição: gancho projetado, cobertura A-roll/B-roll, cortes não metronômicos, telas divididas, movimentos de câmera suaves, texto cinético, MGs temáticos, animação de logotipo. Anime wrappers filhos, nunca o.clip. - Crie SFX + áudio mestre. Sintetize SFX livres de direitos com ffmpeg (
anoisesrc/aevalsrc/sine) ou use ativos autorizados; misture VO + SFX em uma faixa mestre. (Veja "sfx-e-áudio".) - Visualize e inspecione.
npx hyperframes previewem segundo plano; abra no navegador; capture a tela das principais batidas; confirme ritmo, layout, tempo do texto e suavidade do movimento. Corrija antes de renderizar. - Lint.
npm run check/npx hyperframes lint --verbose. Corrija todos os erros; revise os avisos (note falsos positivos conhecidos — por exemplo, avisos de contraste WCAG amostrados em timestamps onde um cartão de alto contraste está oculto). - Renderize.
npx hyperframes render→ MP4. - Verifique com o script de verificação. Execute
node scripts/verify-render.mjs <caminho-para-mp4>— verifica 9:16, duração esperada, h264/yuv420p, áudio presente. Em seguida, useffmpegpara verificações pontuais de quadro em uma folha de contato e inspeção visual contra a prévia. - Escreva
edit-report.mde defina a disposição (done / in_review / blocked). Anexe o MP4 + folha de contato.
Execute a verificação (o script está em scripts/verify-render.mjs ao lado deste arquivo):
node scripts/verify-render.mjs path/to/edit/<file>.mp4
Opcionalmente, verifique especificações exatas:
node scripts/verify-render.mjs <file>.mp4 --duration 12 --tolerance 0.5
Ativos ausentes
Se uma batida precisar de um ativo que sua pasta assets/ não tem:
- Verifique o manifesto para linhas
alternateoubuild-in-editorprimeiro — batidas de gráficos em movimento personalizados são suas para construir, não um bloqueio. - Se estiver genuinamente ausente e for rápido de obter legal e diretamente, obtenha você mesmo e registre a proveniência em
edit-report.md. - Caso contrário, liste a batida/timestamp exata, a necessidade do ativo e a ação de edição pretendida no relatório, peça ao usuário para fornecê-la e continue nas batidas que você pode finalizar. Nunca renderize um espaço reservado que você não pode licenciar.
Verificação (obrigatório antes da entrega)
- Capturas de tela da prévia: quadros representativos capturados da prévia ao vivo, confirmando layout/tempo/movimento.
- ffprobe: dimensões exatamente 9:16 (1080×1920), duração esperada (±tolerância),
h264/yuv420p, fluxo de áudio presente. O script de verificação aplica isso. - Verificações pontuais de quadro:
ffmpegextrai quadros em toda a linha do tempo em uma folha de contato; confirme que cada técnica necessária é renderizada no estilo e corresponde à prévia. - Verificação de rosto: em cada captura de tela da prévia e quadro da folha de contato contendo uma pessoa, o rosto inteiro está visível e centralizado em seu painel (não cortado por uma emenda, legenda, borda ou movimento de câmera). Falhe na verificação e reenquadre se não.
- Direitos: sem mídia não licenciada/de espaço reservado na renderização; qualquer coisa que precise de uma verificação de licença final deve ser mencionada no relatório.
- Registro de alterações de design: qualquer desvio da especificação de estilo ou dos padrões de visual editorial (novo layout, cores/tipo alterados, movimento modificado) deve ser registrado em
edit-report.mdsob "Decisões de design", com o motivo. Alterações visuais são aceitáveis; alterações visuais silenciosas não são.
Créditos e proveniência
Este skill pesquisou a documentação do hyperframes, github.com/robonuggets/hyperframes-helper e quadros de referência de vídeos curtos de qualidade de criador, e foi além deles. Veja "proveniência-padrão" abaixo para a divisão. Resumo:
- Adotado de hyperframes-helper / HyperFrames: modelo HTML como fonte da verdade; atributos de tempo
data-*+class="clip"; timelines pausadas emwindow.__timelines; suavizações GSAPpower2/power3.out; estilo de legenda com brilho branco; ênfase de sublinhado SVG; a lista de pegadinhas de lint (sobreposição de precisão de ponto flutuante, apenas determinístico, vídeo mudo mais áudio, etc.). - Adicionado aqui: um sistema completo de movimento de câmera suave com um contrato anti-tremor explícito; gramática de formato curto 9:16 (ganchos projetados, corte não metronômico abaixo de 0,2s, transições de tela dividida para tela cheia); um pipeline de tematização de estilo de
FRAME.md→ especificação de design concreta; síntese de SFX livre de direitos + disciplina de faixa mestre única pré-misturada; e um script de verificação de renderização (afirmações ffprobe + verificações pontuais de folha de contato).
Apêndice — Biblioteca de Referência (embutida)
A fonte de autoria mantém estes como arquivos separados em references/; eles estão embutidos aqui para que o skill seja um único arquivo SKI autossuficiente.
...