Communitygithub.com

adriiita/vertical-video-editing-skill

Transforme um roteiro aprovado, mídia de áudio/vídeo e ativos coletados em um vídeo vertical (9:16) polido, com qualidade de criador, renderizado com HyperFrames. Codifica um fluxo de trabalho obrigatório de init→preview→lint→render→verify; um visual editorial reutilizável (manchetes serifadas/sans-serif mistas, fundos de palco de papel e grade escura, divisões empilhadas com legendas de emenda, barras de destaque, etiquetas de nome, cartões de manchete, pilhas de cartões de interface); ganchos projetados; espinha dorsal A-roll/B-roll; cortes não metronômicos de até 0,2s; layouts de tela dividida com transições deliberadas para tela cheia; movimentos de câmera suaves (zoom/push) com regras anti-tremor explícitas; legendas cinéticas/ênfase em palavras-chave; gráficos em movimento temáticos (cartões de número/especificação/pôster/chamada); animação de logotipo; camadas de SFX mixadas sob a voz; tema visual derivado de um pacote de estilo (styles/<style>/FRAME.md); integração de ativos por meio de um manifesto; e verificação necessária (capturas de tela de prévia + ffprobe + verificações pontuais de quadro + um script de verificação de renderização). Adota convenções do hyperframes-helper (GSAP power...

O que é vertical-video-editing-skill?

Este skill capacita um agente de IA a atuar como um editor de vídeo profissional, transformando um roteiro aprovado, mídia de voz/áudio e ativos coletados em um vídeo curto vertical (9:16) de alta qualidade, renderizado com o HyperFrames. Ele impõe um fluxo de trabalho não negociável: iniciar o projeto com `npx hyperframes init edit`, visualizar com live-reload, verificar com lint, renderizar o MP4 final e, por fim, validar com ffprobe e um script de verificação. O skill define uma gramática de edição rigorosa, incluindo um gancho de abertura projetado, cortes rápidos e não uniformes (de até 0,2s), layouts de tela dividida, movimentos de câmera suaves e legendas cinéticas. O visual é derivado de um pacote de estilos (styles/<style>/FRAME.md), garantindo uma identidade visual coesa. O skill suporta as plataformas HyperFrames e Node.js, e é projetado para uso com agentes como Claude Code, Cursor e Codex. Ele inclui regras rígidas para evitar artefatos comuns de IA, como cortes uniformes de 1s e fontes padrão, exigindo um resultado final que pareça um vídeo de criador profissional.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/adriiita/vertical-video-editing-skill/tree/HEAD/skills/video-editing

Perguntar na sua IA favorita

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

Documentação

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:

  1. npx hyperframes init edit dentro da pasta edit/ do seu projeto — cria o esqueleto (index.html, meta.json, hyperframes.json, CLAUDE.md, package.json).
  2. cd edit e modifique os arquivos de projeto gerados para construir a edição real. Adicione fonts/, assets/sfx/, sub-composições em compositions/.
  3. 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.
  4. npx hyperframes lint / npm run check — corrija todos os erros; revise os avisos.
  5. npx hyperframes render — MP4 final.
  6. Verifique: ffprobe (dimensões 9:16, duração, codec) + ffmpeg verificaçõ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 npx e 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 inclui vibe-life como exemplo prático e _template como ponto de partida — veja styles/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 em references/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-position para que o rosto fique centralizado na área visível do painel, olhos no terço superior — o padrão 50% 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)

  1. Cada elemento temporizado precisa de data-start, data-duration, data-track-index e class="clip" (o framework controla a visibilidade via clip).
  2. Nunca use GSAP no elemento .clip em si — o framework é dono da sua visibilidade/transformação. Anime um wrapper filho (por exemplo, .cam, .inner).
  3. As timelines devem ser gsap.timeline({ paused: true }) e registradas em window.__timelines["main"] (o id corresponde a data-composition-id).
  4. Apenas determinístico — sem Math.random(), sem Date.now(), sem buscas de rede, sem repeat: -1. As renderizações são amostradas por quadro e devem ser reproduzíveis.
  5. 9:16 = 1080×1920. Defina #root { container-type: size; } para que cqw/cqh sejam resolvidos em relação ao quadro (1cqw = 10,8px). Dimensione tipo/gráficos em cqw/cqh, não em vw/vh.
  6. 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 em 3.55 e aciona overlapping_clips_same_track. Deixe uma lacuna ou use durações como 0.34. (Adotado das pegadinhas de lint do hyperframes-helper.)
  7. Áudio: vídeos são muted com um elemento <audio> separado. Prefira uma faixa de áudio mestre pré-misturada (VO + SFX mixados via ffmpeg adelay+amix) em vez de muitos elementos <audio> — múltiplas faixas causam eco/dessincronização. Coloque-a em um data-track-index alto e dedicado.
  8. 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

  1. 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.
  2. 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".)
  3. 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 alternativas alternate. Nunca coloque mídia de espaço reservado/sem licença em uma renderização final — sinalize lacunas no relatório.
  4. npx hyperframes init edit. Esqueleto primeiro. Em seguida, adicione fonts/ (subconjuntos woff2 locais), assets/sfx/, compositions/.
  5. 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.
  6. 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".)
  7. Visualize e inspecione. npx hyperframes preview em 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.
  8. 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).
  9. Renderize. npx hyperframes render → MP4.
  10. 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, use ffmpeg para verificações pontuais de quadro em uma folha de contato e inspeção visual contra a prévia.
  11. Escreva edit-report.md e 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:

  1. Verifique o manifesto para linhas alternate ou build-in-editor primeiro — batidas de gráficos em movimento personalizados são suas para construir, não um bloqueio.
  2. 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.
  3. 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: ffmpeg extrai 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.md sob "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 em window.__timelines; suavizações GSAP power2/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.

...

Habilidades Relacionadas