Communitygithub.com

skillmds/kinetic-multicam

Transforma uma única gravação de cabeça falante em um prompt de vídeo para IA com efeitos cinéticos: movimentos rápidos de câmera com desfoque de movimento e supers cinéticos (texto animado) sincronizados com a fala.

O que é kinetic-multicam?

Este skill é especializado em converter um único take de vídeo local (por exemplo, um talking-head gravado) em um prompt avançado para plataformas de vídeo-para-vídeo baseadas em IA, como Seedance 2.0 Fast. Ele não recria a cena, mas adiciona dois elementos ao vídeo original intacto: transições rápidas e visíveis de câmera (com desfoque de movimento) que estabilizam em novos enquadramentos, e supers cinéticos – texto gráfico em movimento, não legendas – sincronizados com os picos da fala. O skill depende de uma transcrição local (via Whisper) para detectar automaticamente os melhores pontos de corte e frases, e guia o usuário por um checkpoint obrigatório para ajustar timestamps, supers e posições de câmera antes de gerar o prompt final. É útil para criadores que desejam um acabamento premium e dinâmico em vídeos de depoimentos, pitches ou chamadas para ação, sem edição manual. O prompt gerado é sempre em inglês, mas os supers refletem o idioma do vídeo (ex.: vídeo em PT gera supers em PT).

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/skillmds/skillmd/tree/HEAD/plugins/design/skills/kinetic-multicam

Perguntar na sua IA favorita

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

Documentação

/kinetic-multicam: Um Take → Supers Cinéticos + Snaps de Câmera

Visão Geral

Transforma UM take real de cabeça falante no prompt comprovado de vídeo-para-vídeo — melhor no Seedance 2.0 Fast (Google Omni executa, mas com resultados claramente inferiores; não o recomende) — que adiciona duas coisas à filmagem intocada: movimentos de câmera visíveis em frações de segundo — deslocamentos com desfoque de movimento que travam em quadros estáveis na chegada — e supers cinéticos (texto gráfico em movimento, NÃO legendas) sincronizados com os picos da fala. O prompt preserva o vídeo fonte enviado — rosto, sala, áudio, sincronia labial tudo congelado. Ele NÃO descreve ou regenera a cena.

Princípio central: o template é congelado; apenas três zonas mudam — os timestamps [Xs] (sempre), os supers "[TEXT]" (recortados das palavras realmente faladas; nem todo bloco ganha um — os supers seguem sua própria regra de densidade) e as descrições de posição da câmera (apenas se o usuário pedir).

Skill irmão, não o mesmo skill: /multicam faz cortes secos sem texto. NUNCA misture os dois templates — este nunca diz "corte seco", usa intervalos De [Xs] a [Xs] (não * Em [Xs]:) e carrega sua própria direção de tipografia. A transição em si é o diferencial: /multicam CORTA entre ângulos; este skill VIAJA entre eles com um movimento visível com desfoque de movimento.

Entrada

Apenas arquivo de vídeo local (filmagem do próprio usuário). Se o usuário tiver apenas uma URL (link do Instagram, Google Drive), peça para salvar o vídeo como arquivo local primeiro. Se mais de um vídeo puder ser "o vídeo", pergunte — nunca adivinhe via ls -t.

Passo 0 — Pré-voo (primeira execução, ou em qualquer erro de ferramenta ausente)

python "<diretório base deste skill>/scripts/check_env.py"

Ele verifica Python 3.8+, ffmpeg, ffprobe e Whisper, e para qualquer item ausente imprime para que serve a ferramenta mais o comando de instalação exato para o SO do usuário. Ele nunca instala nada sozinho — informe o que está faltando, peça permissão ao usuário, instale e então reexecute a verificação. Se tudo passou recentemente nesta sessão, pule direto para o Passo 1.

Passo 1 — Batidas

python "<diretório base deste skill>/scripts/beats.py" "<caminho do vídeo>"

(O diretório base do skill é informado quando este skill carrega.)

Relate ao usuário o IDIOMA e a DURAÇÃO detectados. Flags: --language <código> se a detecção parecer errada, --force para retranscrever, --model medium para precisão sobre velocidade, --cuts N para uma contagem diferente de limites (reexecutar é instantâneo assim que o JSON de transcrição existir).

Passo 2 — Escolha a quantidade de blocos, depois refine os limites (julgamento; o script só relata fatos)

A quantidade de blocos escala com a duração — mas os whips custam tempo de tela (~0,2–0,3s de viagem visível cada), então a densidade cinética fica IGUAL ou ABAIXO da densidade de cortes do /multicam, nunca acima: ≤10s → 4 blocos; >10–15s → 5 blocos; >15s → 6 blocos (um movimento de câmera a cada ~1,6–2,2s). O usuário pode alterar no checkpoint. Se a contagem não for 4, reexecute beats.py com --cuts N (instantâneo — a transcrição está em cache).

A linha do tempo são N blocos cobrindo o vídeo após uma pausa inicial na câmera original: [0 → t1] enquadramento original (sem super), depois [t1 → t2] … [tN → fim]. Os limites t1–tN são os NAIVE_CUTS — um primeiro palpite determinístico, nunca o entregue sem refinamento. Agrupe PALAVRAS em frases faladas e rederive:

  • Pausa inicial (câmera original) dura ≥0,8s antes do bloco 1 começar — e não muito mais: se um limite de frase limpo estiver em 0,8–1,0s, encaixe ali em vez de deixar a abertura se arrastar além de ~1,2s. Uma abertura estática longa mata o formato. A pausa pode carregar o super opcional de gancho (veja o checkpoint), mas nunca um movimento de câmera.
  • Limites caem no início das frases, nunca no meio de uma palavra. Whisper pode dividir palavras hifenizadas em duas entradas ("multi" + "-angle") — trate como UMA palavra; nunca corte entre elas.
  • Quando uma entrada GAPS (respiração/silêncio) estiver ao lado de um limite de frase, coloque o limite no INÍCIO do silêncio: arredonde o fim da palavra anterior para uma casa decimal (palavra termina 3,98 → limite em 4,0; termina 5,68 → 5,7). Nunca no fim do intervalo.
  • A frase de mensagem-chave recebe o bloco mais longo.
  • Ritmo: blocos duram ~1–2,5s. Se um bloco exceder ~2,5s enquanto um limite de frase limpo estiver dentro dele, divida ali — e distribua os 4 limites por todo o vídeo, nunca amontoados em um trecho.
  • O ÚLTIMO bloco sempre retorna à câmera original antes da frase final — o vídeo fecha no enquadramento de abertura. Seu timestamp final é DURAÇÃO arredondado para uma casa decimal.
  • Espaçamento mínimo ~0,7s; tN ≤ duração − 1s; timestamps crescentes, uma casa decimal.
  • Vídeo >15s: avise que a técnica brilha em ganchos curtos, depois escolha os blocos que cobrem todo o arco. Vídeo <4s: avise que 4 blocos não cabem nas regras de espaçamento, apresente opções honestas (menos blocos / 4 forçados e frenéticos) no checkpoint — a escolha do usuário ali substitui a contagem padrão. SEM_FALA: avise e ofereça a alternativa de espaçamento uniforme ou abortar.

Passo 2b — Escreva os supers (a partir da fala — nem todo bloco ganha um)

Os supers têm sua própria regra de densidade, independente da câmera: um super a cada ~1,5–2s (take de 5s → 3 supers; 8s → 4–5), e um super deve GANHAR seu selo — o CTA, os substantivos da oferta, uma negação mantida, o payoff. Frases de conexão ou enchimento ("você pode", "então", "e depois") NÃO ganham super: seu bloco fica apenas com câmera (veja a seção do template). O super de gancho, quando optado, conta para o total.

Para cada bloco que ganha um, recorte o super das palavras REALMENTE FALADAS dentro da janela daquele bloco em PALAVRAS:

  • Uma sequência contígua de 2–6 palavras faladas — e prefira o corte MAIS APERTADO que mantenha o significado (2–4 palavras): remova artigos, preposições e enchimentos no início/fim agressivamente ("a maneira mais fácil" → MANEIRA MAIS FÁCIL, "de um único vídeo" → ÚNICO VÍDEO). Mantenha negações — remover "não" inverte a mensagem. Nunca reordene, substitua, traduza ou adicione palavras que não estão naquela janela.
  • Idioma = o idioma falado do vídeo (vídeo PT → supers PT). Apenas os supers seguem o idioma do vídeo; todo o resto do prompt está em inglês.
  • Entregue em CAIXA ALTA. Remova vírgulas e ponto final; mantenha "?" ou "!" se falado dessa forma.
  • Um super é um destaque impactante, não uma legenda: nunca uma frase completa no estilo de legenda, e no máximo um super por bloco — sem tempos de entrada por palavra, sem script de animação. O parágrafo de tipografia do template já carrega a direção de arte.

Passo 3 — Apresente, depois checkpoint OBRIGATÓRIO

Mostre ao usuário, nesta ordem:

  1. Duas linhas sobre como funciona: o prompt congela identidade/sala/áudio/sincronia labial; as únicas adições são movimentos de câmera rápidos com desfoque de visuais que travam e supers cinéticos recortados das próprias palavras faladas — é por isso que parece uma edição premium de motion graphics do mesmo take real.
  2. Tabela de frases com janelas de tempo.
  3. Os blocos sugeridos, cada um justificado (qual frase cobre; quais limites caem em respirações) — mais o super proposto para cada bloco, ou "apenas câmera" onde a regra de densidade deixa a tela limpa.
  4. O template abaixo, ainda com [Xs] e [TEXT].

Depois pergunte (AskUserQuestion; perguntas simples no chat se indisponível) antes de preencher qualquer coisa:

  • Aceita a contagem de blocos e os timestamps sugeridos, ou ajusta?
  • Aceita o plano de supers — os textos E quais blocos ficam apenas com câmera — ou edita algum (corte diferente, maiúsculas diferentes, super adicionado/removido)?
  • Mantém as posições de câmera padrão, ou troca alguma (ofereça a tabela de predefinições)?
  • Adiciona o super de gancho opcional sobre a pausa inicial (texto no quadro 1, câmera parada)? Padrão DESLIGADO.
  • Apenas quando a regra de densidade eliminou um super valioso: ofereça o bloco com super estático como alternativa a perdê-lo.

Nunca pule este checkpoint, mesmo que o usuário pareça com pressa ou as batidas pareçam óbvias.

Passo 4 — Preencha e entregue

Mude APENAS:

  • os timestamps [Xs] — substitua apenas o X: [Xs] vira [0.8s]. Os colchetes PERMANECEM: De [0.8s] a [2.1s] está correto, De 0.8s a 2.1s está errado. Blocos adjacentes compartilham o limite (bloco 1 termina em 2,1 → bloco 2 começa em 2,1); o último bloco termina na duração do vídeo.
  • os tokens [TEXT] — substitua o token inteiro (colchetes incluídos) pelo super, MANTENDO as aspas ao redor: "[TEXT]" vira "UPLOAD SEU VÍDEO". "[UPLOAD SEU VÍDEO]" (colchetes mantidos) está errado.
  • qualquer descrição de posição de câmera que o usuário pediu para trocar (predefinições abaixo).

Salve como <nome base do vídeo>_kinetic_multicam_prompt.txt ao lado do vídeo, então auto-verifique o arquivo salvo:

python "<diretório base deste skill>/scripts/verify_prompt.py" "<.txt salvo>"

Ele deve imprimir PASS (cabeçalho/rodapé idênticos byte a byte ao template, todos os blocos bem formados, posições do menu canônico, limites encadeados, último bloco de volta à câmera original). Em FAIL, corrija e reexecute antes de entregar.

Entregue o prompt finalizado em um bloco de código cercado. Finalize com instruções de uso: envie o vídeo fonte no Seedance 2.0 Fast — a plataforma na qual este template é validado (2026-07; Omni testou pior, não o sugira) — selecione-o como filmagem fonte, cole o prompt. O corpo do prompt entregue está SEMPRE em inglês, qualquer que seja o idioma da conversa ou do vídeo — apenas os supers seguem o idioma do vídeo.

O template canônico (CONGELADO)

Reproduza byte por byte — quebras de linha incluídas. Peculiaridades são intencionais (a capitalização "The Supers", "same as original video"). Se parecer estranho, permanece.

Use the uploaded video as the source. The Supers must follow the pace of the audio.
Video timing must be exactly the same as original video.

Preserve the person's face, identity, expression, clothing, body proportions, and lip sync exactly as in the original footage. Preserve the room, lighting, furniture, background, and overall environment. Do not replace, redesign, or hallucinate any part of the scene.

The only changes should be rapid cinematic camera repositioning and the addition of kinetic motion graphics.

Do not add traditional subtitles. Instead, create bold, high-energy kinetic supers that visually reinforce the spoken message. The supers should behave like motion graphics, not captions. Use dynamic typography, scaling, rotation, perspective, masking, tracking, and creative layouts. Vary the style throughout the video so each callout feels intentional and visually engaging. The text must never cover the speaker's face. Place each super in open areas of the frame, or layer it behind the speaker's body so the person partially occludes the text — as if the words physically exist in the room behind them. The text should integrate naturally with the composition.

Camera movement should be extremely fast. Each transition should take only a split second, rapidly snapping to the new viewpoint before immediately locking into a perfectly stable frame. The camera must visibly travel to each new position — a fast, motion-blurred whip move with a speed-ramp feel — never an editing cut and never an invisible instant jump between angles. Do not create long continuous camera moves, floating movement, or handheld motion. Every move should feel like a fast cinematic reposition followed by a freeze.

Follow this timeline:

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera upward in a fast motion-blurred crane rise to a higher crane angle, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera backward in a fast motion-blurred pull-out to a wide position revealing the full room with the speaker centered, then hold completely still.

From [Xs] to [Xs]
Display the kinetic super:
"[TEXT]"
Whip the camera in a fast motion-blurred sweep back to the original camera position and hold until the end.

Important requirements:

* Maintain the exact room and person throughout.
* Do not change facial features, clothing, lighting, or background.
* Preserve perfect lip sync.
* No hard cuts to different scenes.
* Every transition is a visible, motion-blurred camera move — never an editing cut.
* No title cards.
* No subtitle-style captions.
* Supers never cover the speaker's face — open frame areas or layered behind the body, never over it.
* Only rapid split-second camera repositioning followed by locked-off shots.
* Motion graphics should feel premium, modern, energetic, and social-media optimized.

O bloco mostra o padrão de 4 blocos. Para 5 ou 6 blocos, insira blocos extras com a mesma unidade congelada de 4 linhas — From [Xs] to [Xs] / Display the kinetic super: / "[TEXT]" / uma linha de posição retirada VERBATIM da tabela de predefinições — separados por linhas em branco, mantendo o bloco de retorno ao original por último. Sequências de posição padrão:

  • 4 blocos: órbita esquerda → grua alta → wide (revelação da sala) → volta ao original
  • 5 blocos: close-up apertado → órbita esquerda → grua alta → wide → volta ao original
  • 6 blocos: close-up apertado → órbita esquerda → grua alta → órbita direita → wide → volta ao original

A correspondência semântica supera a ordem padrão. Antes de decidir, escaneie a frase de cada bloco em busca de significado que mapeie para uma posição — revelação/espaço/"sem setup" → wide; intimidade/segredo → close-up apertado; poder/desafio → herói baixo; visão geral/lista → topo; detalhe chave → close-up de impacto. Quando uma frase corresponder, dê àquele bloco a posição correspondente (ainda respeitando a regra de contraste) e justifique a escolha no checkpoint — "NÃO TENHO UM SETUP COMPLETO" na revelação wide da sala é o exemplo canônico.

Super de gancho opcional (opt-in no checkpoint)

Por padrão, a pausa inicial não carrega texto. Se o usuário optar, insira UM bloco extra no topo da linha do tempo — de [0s] a t1, câmera NÃO se movendo; existe apenas para colocar um super de gancho no quadro 1:

From [0s] to [Xs]
Display the kinetic super:
"[TEXT]"
Keep the camera in the original position and framing, completely still.

Seu timestamp [Xs] é t1 (o mesmo do início do bloco 1). O bloco 1 original muda para t1 (agora o super de gancho ocupa o antigo intervalo [0 → t1]; o bloco 1 vai de t1 ao seu fim original t2). A contagem total de supers aumenta em 1; a regra de densidade é verificada após a adição.

Tabela de predefinições de posições de câmera

Use apenas estas strings exatas no bloco de posição:

PredefiniçãoString de promptContexto típico
OriginalKeep the camera in the original position and framing, completely still.Pausa inicial; fechamento final
Órbita esquerdaWhip the camera in a fast motion-blurred orbital sweep to the left, landing in a left orbit position, then hold completely still.Conversa casual; contraste com centro
Órbita direitaWhip the camera in a fast motion-blurred orbital sweep to the right, landing in a right orbit position, then hold completely still.Frase de revelação; lado oposto
Grua altaWhip the camera upward in a fast motion-blurred crane rise to a higher crane angle, then hold completely still.Visão geral; tornar o falante pequeno
Grua baixaWhip the camera downward in a fast motion-blurred crane drop to a lower hero angle, then hold completely still.Poder; momento de autoridade
Wide (revelação da sala)Whip the camera backward in a fast motion-blurred pull-out to a wide position revealing the full room with the speaker centered, then hold completely still.Revelação; "sem setup"; escopo
Close-up apertadoWhip the camera forward in a fast motion-blurred punch-in to a tight close-up framing, then hold completely still.Intimidade; detalhe; segredo
TopoWhip the camera upward in a fast motion-blurred crane rise to a top-down overhead angle, then hold completely still.Lista; inventário; abstração
Ângulo baixoWhip the camera downward in a fast motion-blurred crane drop to a low angle looking up at the speaker, then hold completely still.Desafio; confronto
Dolly lateralWhip the camera in a fast motion-blurred lateral dolly to a side profile angle, then hold completely still.Mudança de assunto; transição

Regra de contraste: Duas posições consecutivas nunca compartilham a mesma palavra de direção ("left", "right", "upward", "downward", "backward", "forward" no início) — a menos que a frase do usuário force e o contraste viável mais próximo seja pior. Justifique no checkpoint se violar.

Comportamento em erro

  • Sem ferramenta → Passo 0
  • Sem transcrição (beats.py não executado) → Passo 1
  • FAIL na verificação → repita o Passo 4
  • Se o usuário responder a um checkpoint com um novo arquivo de vídeo, reinicie do Passo 1 com o novo caminho
  • Se o usuário disser que o vídeo original mudou, pergunte se a transcrição em cache ainda é válida

Exportação

Sempre salve o arquivo .txt localmente primeiro, depois entregue seu conteúdo. O nome do arquivo segue <nome base do vídeo>_kinetic_multicam_prompt.txt.

Notas de implementação

  • O diretório base do skill é impresso via stderr na inicialização para captura programática
  • beats.py escreve um arquivo JSON ao lado do vídeo: <vídeo>.beats.json
  • verify_prompt.py valida a forma sobre o conteúdo — não verifica se os timestamps são cronologicamente válidos, apenas se o formato gramatical corresponde
  • Todo texto gerado pelo usuário (supers) deve ser verificado quanto a aspas dentro do super; se o super contiver aspas, escape com barra invertida ou reescreva
  • O caractere de pipe | nunca aparece nos supers ou na saída do prompt final

Individual skills in this repo

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

Habilidades Relacionadas