Communitygithub.com

every-app/video-skills

Crie um pequeno teaser de produto sem narração (anúncio de recurso, clipe social, vídeo hype, de cerca de 10 a 30 segundos) a partir de capturas de tela reais do produto, como uma composição HyperFrames (HTML e GSAP, renderizado com npx).

O que é video-skills?

Esta skill permite criar teasers de produto curtos e dinâmicos (10–30 segundos) sem narração, usando capturas de tela reais do produto. O resultado é uma composição HyperFrames (HTML e GSAP) renderizada com npx. Cada cena possui um movimento de câmera lento, linhas recortadas das capturas que se encaixam no lugar, uma página inclinada em 3D, legendas de duas ou três palavras, um cartão de marca final e cortes sincronizados com as batidas de uma faixa musical. A skill suporta captura real de tela com Playwright, composição baseada em tabela de tempo, sincronização com música via Python e renderização final em MP4 60fps. É ideal para teasers de recursos, motion graphics e clipes de lançamento sem narração; para demos narradas, use a skill `narrated-video`.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/every-app/video-skills/tree/HEAD/skills/teaser-video

Perguntar na sua IA favorita

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

Documentação

Teaser vídeo

Um teaser mostra um recurso em alguns compassos, cada um com um foco claro, ao som de música. Cada tela é uma captura de tela real do produto; o movimento vem da câmera, de linhas recortadas dessas capturas que se encaixam em seus próprios lugares, e dos cortes que acompanham a música. O vídeo inteiro é código (uma página HTML e uma tabela de tempo, renderizados pelo HyperFrames), portanto uma nova captura, uma legenda alterada ou um clipe de música diferente é apenas uma reexecução.

A pessoa dirige o gosto e iterará várias vezes. Mostre contact sheets antes das renderizações completas, mantenha cada renderização e anote o que mudou e por quê. Comece com os padrões em references/taste.md: eles são o que uma primeira rodada de revisões convergiu.

Configuração

  • Node 22+ com npx (HyperFrames roda através de npx [email protected]; nada para instalar), ffmpeg no PATH (HyperFrames precisa dele para snapshots e renderizações também), uv (as ferramentas Python declaram suas próprias dependências) e Playwright com Chromium no projeto do produto para capturas. As renderizações carregam GSAP e a fonte Inter de uma CDN, portanto precisam de conexão de rede.
  • SK=<diretório desta skill>/scripts.
  • Trabalhe em uma pasta fora de quaisquer arquivos rastreados de repositório (um .logs/<vídeo>/ ignorado pelo git, ou uma pasta temporária):
<work>/
  assets/<tema>/    capturas e boxes.json, por passada de captura
  capture/           os scripts de captura para este produto
  video/             index.html e timeline.js (copiados do exemplo); assets/ contém as capturas, ícone da marca, música
  NOTES.md           cada versão e por que mudou, comandos de reconstrução

1. Briefing

Confirme em uma breve troca, oferecendo padrões:

  • Duração: 10 s a menos que solicitado de outra forma. Sob um limite rígido, corte compassos, nunca acelere o movimento.
  • Os compassos: três ou quatro, cada um uma tarefa em uma tela (digitar uma URL, revisar o que foi encontrado, ver o resultado, a marca). Cada compasso recebe uma legenda de duas ou três palavras, sem números.
  • Dados de exemplo que se leem rapidamente: um site conhecido, para que os resultados (nomes de concorrentes, favicons) sejam reconhecíveis.
  • Aparência: os tokens de tema do próprio produto (modo escuro é um bom padrão para um teaser) e seu ícone de marca real, tirado de seu site ativo, não uma marca que você desenhe.
  • Música: o arquivo, e se qualquer trecho de 10 s serve (veja a etapa 5).
  • Qual branch ou worktree tem a UI mais nova para cada tela. Verifique se está desatualizada em relação ao remoto antes de capturar.

2. Captura

Capturas de tela reais a 1440x900, 2x, com $SK/capture.mjs (o mesmo auxiliar que narrated-video): quadros de digitação para qualquer coisa digitada, capturas altas (2400 px) para qualquer coisa que a câmera percorra verticalmente, caixas medidas para cada elemento que uma cena enquadra, recorta linhas ou clica. Passe { colorScheme: 'dark' } para cap.page() para modo escuro. Nunca desenhe UI ou edite pixels. Detalhes, incluindo quadros de animação congelada e captura de um estado de carregamento sem pagar pela requisição: references/capture.md. Olhe para cada captura antes de usá-la.

3. Composição

Copie examples/openseo-ai-visibility/video (index.html, timeline.js) para a pasta de trabalho, coloque as capturas, o ícone da marca e a música em video/assets/, e reescreva timeline.js: a tabela de tempo, legendas, paleta, caminhos e alturas das capturas, as caixas medidas, as chaves de câmera de cada cena e o ponteiro. O index.html constrói cada cena a partir desse arquivo: linhas são recortadas de sua captura usando as caixas medidas. Como as peças funcionam e os números que importam: references/composition.md.

4. Rascunho e visualização

cd video
npx --yes [email protected] lint                                           # deve reportar 0 erros
npx --yes [email protected] snapshot --at 0,1.2,2.4,2.6,3.4,4.4,6.0,8.2,9.5 --no-end   # em snapshots/

Snapshots levam segundos, então use-os em vez de renderizações de rascunho. Faça snapshot de cada início de cena, clique, entrada de legenda e o meio de cada dissolução, e examine-os (cada execução também escreve contact sheets): um foco por quadro e centralizado, a legenda clara da coisa em foco, sem borda de página em branco enquanto a página está plana, sem linha ainda faltando no final de uma revelação. Em seguida, verifique um quadro em resolução total de cada cena para garantir texto nítido.

5. Música

uv run $SK/beats.py song.mp3                     # andamento, volume por segundo, cada batida
uv run $SK/beats.py song.mp3 --window 51.9 10    # batidas de um clipe candidato em tempo de vídeo

Escolha o clipe, escreva seu início no elemento <audio> em index.html e seus tempos de batida na tabela de tempo, e mova os cortes para eles: o clique principal no drop, cada mudança de cena em uma batida, o logotipo na batida mais forte. Escolhendo o clipe e mapeando-o: references/music-sync.md.

6. Renderização e verificação

npx --yes [email protected] render -o renders/<vídeo>-vN.mp4 --fps 60 --crf 14 \
  --video-frame-format png --experimental-fast-capture=false            # cerca de 15 s para 10 s de vídeo
uv run $SK/verify-sync.py renders/<vídeo>-vN.mp4 <tempos de batida planejados...>   # cada batida dentro de um quadro; sai com 1 se não
uv run $SK/sheet.py renders/<vídeo>-vN.mp4 renders/sheet-vN.png <tempos...>

Nomeie as renderizações por versão e mantenha todas; a pessoa compara. Um still para compartilhar (imagem social, miniatura) é um snapshot 4K de um momento escolhido: npx --yes [email protected] snapshot --at 7.3 --no-end --zoom 0,0,1920,1080 --zoom-scale 2 -o stills escreve um PNG 3840x2160.

7. Revisão e iteração

Forneça o caminho do mp4 (e como abri-lo), os compassos e seus tempos, e qualquer coisa que difira da solicitação. Registre cada rodada em NOTES.md. A primeira versão do exemplo trabalhado levou sete rodadas; o que mudou em cada uma está em examples/openseo-ai-visibility/NOTES.md.

Regras rígidas

  • Apenas telas reais. Uma revelação de linha pode brevemente cobrir linhas com o fundo da própria tabela (amostrado da captura) enquanto as linhas reais pousam por cima; uma vez que pousaram, o quadro é a captura.
  • Verifique capturas por segredos e dados pessoais (chaves, e-mails, nomes de outras pessoas, URLs localhost) antes de renderizar.
  • A música e as capturas permanecem na máquina da pessoa; não publique nada sem ser solicitado.
  • Restaure qualquer arquivo rastreado que construir ou visualizar o produto regenere em seu repositório.

Os erros que mais custam tempo estão em references/gotchas.md.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas