Communitygithub.com

Vídeo Curto (Short-Form)

Este skill deve ser usado quando o usuário pedir para criar ou editar um vídeo curto vertical (9:16) para plataformas como Reels, TikTok ou YouTube Shorts.

O que é Vídeo Curto (Short-Form)?

O skill **short-form-video** é uma ferramenta especializada para engenharia de vídeos curtos verticais (9:16) que maximizam a retenção do espectador e o desempenho algorítmico. Ele fornece uma metodologia completa baseada na **curva de retenção**, em vez de valor de produção: o foco está em hooks que abrem um loop de curiosidade nos primeiros 1–3 segundos, padrões de interrupção visual a cada 2–4 segundos para resetar a atenção, e loops contínuos que incentivam a repetição. O skill inclui gramática de hooks por tipo (loop aberto, promessa direta, interrupção de padrão, negação), uma tabela de arco de retenção de 20 segundos com orçamento de tempo para cada batida (hook, setup, corpo, payoff/loop), e regras de composição dentro da área segura 9:16 (900x1400 central). Tecnicamente, ele exige que todos os cortes, zoom e interrupções sejam derivados de `useCurrentFrame()` do Remotion, sem timers CSS ou JavaScript. O skill também fornece um checklist de saída, um fluxo de verificação com stills (hook, meio, fim) antes da renderização final em MP4, e faz referência a um `Short` do Remotion totalmente funcional com scheduler de cena frame-driven, componente `PunchIn` e sobreposição de área segura. Ele funciona exclusivamente com o ecossistema Remotion e é adequado para criadores de conteúdo, editores de vídeo e desenvolvedores que precisam produzir vídeos curtos otimizados para retenção em escala.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/iart-ai/tiktok-video-skills/tree/main/skills/short-form-video

Perguntar na sua IA favorita

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

Documentação

O que Vídeo Curto (Short-Form) faz?

Projete um vídeo 9:16 que sobrevive ao deslize. Vídeo curto não é um pequeno filme de lançamento — é uma máquina de retenção: um hook que conquista o primeiro segundo, interrupções de padrão que resetam a atenção a cada poucos segundos e, frequentemente, um loop que compra tempo de exibição além dos 100%. O ofício é o timing, não o polimento.

Quando usar

  • Reels / TikTok / YouTube Shorts (7–60s, vertical 9:16).
  • Edição de retenção: corrigir queda de audiência, adicionar interrupções de padrão, ajustar ritmo.
  • Hooks, loops contínuos, templates de vídeo curto repetíveis (um design, muitos tópicos).

Estrutura da história (o contrato de retenção)

Contar histórias em vídeo curto é um contrato com o polegar do espectador: cada segundo deve reconquistar o próximo. A narrativa é moldada de trás para frente a partir da curva de retenção, não para frente a partir de uma introdução. Bloqueie estes pontos antes de tocar na linha do tempo.

  • Uma ideia por vídeo. Um curto carrega exatamente um payoff. Uma segunda ideia divide a atenção e a curva cai no meio — transforme-a em um segundo vídeo. Se você não consegue nomear o único aprendizado em uma frase, você ainda não tem um curto.
  • Abra um loop nos primeiros ~3s, feche-o por último. O hook coloca uma pergunta ou lacuna (o loop aberto); o payoff a responde. O espectador fica porque o loop está aberto — então nunca responda cedo demais, e nunca enterre o payoff em preparação.
  • Sem ar morto. Cada batida avança a ideia ou reseta a atenção. Corte tudo que não faça nem um nem outro. Silêncio, rampas lentas, introduções de aquecimento ("ei pessoal, neste vídeo…") são onde os espectadores deslizam.
  • Por que a curva, não o corte, é a unidade de trabalho. O algoritmo distribui o que mantém a curva de retenção por segundo plana; uma edição "boa" que achata a curva perde para uma feia que a mantém alta. Você está editando a curva, e o hook é a comporta de tudo que vem depois — corrija-o primeiro.

A espinha narrativa (o arco Hook → Setup → Corpo → Payoff/loop está orçado na tabela abaixo):

MovimentoFunção na históriaFalha se perdido
HookAbrir o loop; prometer o payoffDeslize nos primeiros 3s
Manutenção da tensãoManter a lacuna aberta durante o corpoMeio plano, queda no meio
PayoffFechar o loop — a única ideia, entregue"Perdi meu tempo", sem compartilhamento
Loop / CTAAlimentar de volta ao frame 0, ou um pedido claroSem repetição, sem ação

(A tabela do arco de retenção abaixo atribui segundos a cada movimento; esta seção é a lógica narrativa e a ordenação por trás dela. A gramática do hook lista os arquétipos de hook.)

A única métrica que impulsiona tudo

Retenção, não valor de produção. O algoritmo distribui o que mantém os espectadores; ~87% decidem ficar ou deslizar em 3 segundos, e o limite para distribuição fica próximo de 70%+ de taxa de visualização média (Shorts ~73%, TikTok ~78%, Reels ~65%). Cada decisão abaixo é negociada contra essa curva. Um take impecável que entedia aos 0:04 perde para um feio que segura.

O arco de retenção

BatidaFunçãoOrçamento (de um curto de 20s)
Hook (0–1s)Um frame + uma linha que cria um loop aberto0–1s
SetupPagar por que assistir — promessa, stakes ou a lacuna1–4s
CorpoEntregar valor em batidas; uma ideia por batida4–17s
Payoff / loopFechar o loop — ou realimentá-lo ao frame 017–20s

Escale o corpo, nunca o hook. Um curto de 60s tem um corpo maior e mais batidas — o mesmo hook de 1 segundo.

Gramática do hook (primeiro ~1s)

O hook é uma frase + um visual que abre uma lacuna de curiosidade que o cérebro precisa fechar. Escolha um padrão e comprometa-se:

Tipo de hookFormaMelhor para
Loop aberto"O motivo pelo qual seu X continua Y…" (resposta atrasada)a maioria dos conteúdos
Promessa direta"3 maneiras de ___ em 30 segundos"educacional / lista
Interrupção de padrãosnap-zoom / whip-pan / incompatibilidade visual no frame 1entretenimento
Negação"Pare de fazer ___" / "Você está ___ errado"opiniões fortes

Duas regras: a linha do hook está na tela como texto até o frame 1 (85% assistem sem som), e o visual mais marcante também é o primeiro frame — nunca uma rampa lenta de entrada. Segure um frame de abertura forte; não faça fade up a partir do preto.

Interrupções de padrão e ritmo de corte

Uma interrupção de padrão é qualquer mudança que reseta a atenção: um corte seco, zoom punch, inserção de B-roll, efeito sonoro, pop de legenda ou mudança de ângulo. Em vídeo curto, a densidade é alta — uma mudança visual a cada ~2–4 segundos; vídeos com uma interrupção aproximadamente a cada 4s seguram ~58% contra ~41% para um cabeça falante estático. O assassino é um meio plano: o TikTok reduz a distribuição quando a curva de retenção achata, então nunca costure o corpo a partir de takes de baixa energia.

// Conduza cada interrupção a partir do FRAME, não do relógio — renderiza deterministicamente.
import { useCurrentFrame } from "remotion";
const fps = 30;
const cuts = [0, 1.2, 3.0, 5.4, 8.0, 11.2, 14.0]; // segundos — desiguais de propósito
const frame = useCurrentFrame();
const shot = cuts.findIndex((t, i) => frame < (cuts[i + 1] ?? Infinity) * fps);

Varie o intervalo — um metrônomo é lido como tédio; cortes desiguais são lidos como momentum. Um zoom punch-in é a interrupção mais barata que não precisa de novo material:

import { useCurrentFrame, interpolate, spring, useVideoConfig } from "remotion";
const PunchIn = ({ at, children }) => {
  const frame = useCurrentFrame(); const { fps } = useVideoConfig();
  const s = spring({ frame: frame - at * fps, fps, config: { damping: 12, stiffness: 200 } });
  const scale = interpolate(s, [0, 1], [1, 1.12]); // snap para 112% na batida
  return <div style={{ transform: `scale(${scale})`, transformOrigin: "50% 45%" }}>{children}</div>;
};

Legendas

A maioria dos espectadores assiste sem som, então legendas na tela não são opcionais — elas carregam o conteúdo e funcionam como uma interrupção de padrão quando cada frase aparece. Mantenha 4–7 palavras por linha, alto contraste, dentro da área segura. Não reimplemente animação de legenda aqui — use o skill caption-animation para timing palavra por palavra, destaque de karaokê e estilo; este skill apenas posiciona legendas na linha do tempo de retenção e dentro da zona segura 9:16.

Loops e repetição

Um loop contínuo conta cada repetição como tempo de exibição novo — um loop limpo de 8s assistido 3× é 300% de taxa de visualização, o sinal mais forte possível. Duas técnicas: combine o último frame com o primeiro (mesma composição, posição, cor) para que o corte seja invisível, e escreva um loop de frase — formule o hook para que o payoff alimente de volta ao frame 0 ("…e é por isso que eu nunca — " → loopa para o início). O melhor comprimento para repetição é ~7–15s.

Áreas seguras 9:16

Componha dentro da zona segura universal para que a UI da plataforma nunca cubra texto ou rostos.

ZonaPixels (1080×1920)Evitar
Segura universal (todas as plataformas)centro 900×1400qualquer coisa crítica fora dela
Topomanter limpo ~120pxperfil / UI de som
Fundomanter limpo ~320pxlegendas, CTA, hashtags, barra de áudio
Direitamanter limpo ~120pxbotões like / comentar / compartilhar

Coloque o texto do hook e o sujeito principal na caixa central 900×1400. Reserve os ~320px inferiores mesmo que pareça vazio no editor — é onde a plataforma pinta suas próprias legendas e botões.

Checklist de saída

  • A linha do hook está em texto na tela até o frame 1; o visual mais forte é o primeiro frame (sem fade-up).
  • Um loop aberto / promessa definida nos primeiros ~4s.
  • Uma interrupção visual de padrão a cada ~2–4s; intervalos desiguais; sem meio plano.
  • Legendas presentes (via caption-animation), 4–7 palavras, dentro da área segura.
  • Loop fechado — primeiro/último frame combinados ou uma frase que realimenta o frame 0.
  • Composto dentro da caixa central 900×1400; fundo 320px / topo 120px / direita 120px mantidos limpos.
  • Todo valor animado derivado de useCurrentFrame() — sem timers CSS/biblioteca.

Entregar e verificar (stills renderizados → MP4)

Ajudante empacotado (scripts/): mosaico de stills com scripts/contact-sheet.sh sheet.png f-hook.png f-mid.png f-end.png, depois verifique a codificação com scripts/probe-mp4.sh out.mp4 [LxA] [fps]. Veja scripts/README.md.

O curto é enviado como uma composição Remotion (<Composition> + zod schema + defaultProps) — todo corte, punch-in e interrupção dirigido por useCurrentFrame(), nunca Date.now() / Math.random() / timers. Entregável = out/*.mp4 + o projeto (re-render por tópico). 9:16 vertical (1080×1920) é o padrão.

Loop de verificação — renderizar stills → inspecionar → codificar. Três frames testam as três coisas que fazem ou quebram a retenção: o hook, o ritmo e a costura do loop.

# Stills no hook / meio do corpo / último frame — COM PROPS ENVIADOS (o tópico real, não defaults)
npx remotion still Short out/f-hook.png --frame=10  --props='{"topic":"...","hook":"..."}'   # ~primeiros 3s lidos instantaneamente
npx remotion still Short out/f-mid.png  --frame=N   --props='{"topic":"...","hook":"..."}'
npx remotion still Short out/f-end.png  --frame=L   --props='{"topic":"...","hook":"..."}'   # L = durationInFrames-1

# Inspecione cada PNG:
#  - Frame HOOK (~frame 0 / primeiros 3s): linha do hook está em texto na tela e lida instantaneamente; visual mais forte já presente (sem fade-up)
#  - Costura do loop: compare f-hook(frame 0) vs f-end(último frame) — mesma composição/posição/cor para um corte de loop invisível
#  - Área segura 9:16: hook + sujeito chave dentro da caixa central 900x1400; limpo do topo ~12%, fundo ~20-35% (legendas/CTA/áudio), trilha de ação direita

npx remotion render Short out/short.mp4 --props='{"topic":"...","hook":"..."}'   # codificar uma vez que stills verificam
npx remotion render Short out/demo.gif --codec=gif                                # clipe de prova README

Por tópico / lote: verifique UM tópico via stills antes de renderizar todos eles. Use npx remotion compositions para durationInFrames/fps para escolher os frames do meio e do fim.

Antes de finalizar:

  1. Os stills renderizam limpos no hook, meio e último frame — sem erros.
  2. O frame do hook lê instantaneamente (texto na tela + visual mais forte na frente, sem fade-up); primeiro vs último frame combinam para uma costura de loop limpa.
  3. Hook + sujeito + legendas estão dentro da caixa segura central 9:16 900×1400 em cada frame verificado.
  4. Apenas frame-driven — sem Date.now() / Math.random() / timers; cortes desiguais, sem meio plano.
  5. Props enviados de um tópico real (não defaultProps) renderizam corretamente; MP4 codificado, GIF opcional.

Arquivos de referência

  • references/retention-pacing.md — uma composição Remotion <Short> completa e executável: um scheduler de cena frame-driven com cortes desiguais, a interrupção de padrão PunchIn, um hook na tela, uma sobreposição de área segura 9:16 e um loop contínuo primeiro/último frame. Além de uma biblioteca de padrões de hook, um método de depuração da curva de retenção, mapas de zona segura por plataforma e o padrão de renderização em lote template×tópico.

Individual skills in this repo

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

Habilidades Relacionadas