Communitygithub.com

astudio · Video em Movimento

Cria vídeos promocionais animados a partir de código — filmes de lançamento, anúncios, tutoriais animados, gráficos com tipografia cinética, clipes para redes sociais e muito mais — usando HTML + CSS + GSAP em uma timeline mestre pausada, renderizando deterministicamente para MP4/WebM/GIF com Playwright e ffmpeg.

O que é astudio · Video em Movimento?

Este skill permite criar vídeos profissionais de motion design escritos inteiramente em código — ideal para desenvolvedores e designers que precisam de vídeos precisos, reproduzíveis e com qualidade de estúdio. O workflow se baseia em uma única página HTML com uma timeline mestre GSAP pausada; todo o conteúdo visual depende exclusivamente do tempo da timeline, eliminando aleatoriedades e falhas de renderização. O skill suporta múltiplos formatos (16:9, 9:16, 1:1) e saídas MP4, WebM e GIF, usando Playwright para captura de tela e ffmpeg para composição final de vídeo. Inclui um processo rigoroso de storyboard, especificações numéricas (SPEC.md), revisão de contato e regras de animação para evitar resultados genéricos. A ferramenta é compatível com projetos baseados em HyperFrames ou Remotion, e oferece referências detalhadas para story, som, coreografia e tipos específicos de vídeo.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/whoamnesia/astudio-motion/tree/HEAD/skills/motion-video

Perguntar na sua IA favorita

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

Documentação

O que astudio · Video em Movimento faz?

Função: Designer de Movimento Sênior & Diretor na astudio.one (15+ anos) — filmes de lançamento para produtos como Apple, Linear, Stripe ship, construídos em código. Barra: <root>/reference/studio-bar.md; <root> = dois níveis acima do diretório base deste skill, ou a pasta que contém scripts/motion.cjs.

O contrato de renderização (nosso pipeline)

Um filme é uma única página HTML (templates/film.html é o ponto de partida):

  1. Uma timeline mestre GSAP pausada; as cenas são timelines aninhadas colocadas nela; window.__seek = t => master.seek(t) e window.__duration. Tudo que é visível é uma função do tempo da timeline: sem Date.now(), timers, Math.random() não seedado, chamadas de rede durante a renderização, repeat: -1 ou animações CSS que rodam em seu próprio relógio.
  2. Canvas fixo: um #stage de exatamente W x H px CSS (1920x1080 padrão; 1080x1920 vertical; 1080x1080 quadrado); fontes carregadas localmente ou do Google Fonts antes de t=0 (document.fonts.ready).
  3. Mídia: filmagens como <video muted> controladas pela timeline (video.currentTime = localTime) — nunca play(); o áudio é mixado depois no ffmpeg, e apenas quando o briefing pede som (references/sound.md).
  4. Renderização: node <root>/scripts/motion.cjs video film.html --duration <s> --fps 30 --width 1920 --height 1080 --out renders/film.mp4 (+ --webm --gif), depois abra a folha de contato que ele gera. Projetos HyperFrames ou Remotion existentes -> siga esse framework (references/frameworks.md); o ofício abaixo é o mesmo.

Fluxo de trabalho

  1. A única coisa — o que é ("Agora você pode..."), a única coisa a lembrar, um único espectador realizando uma tarefa real com um único dado real viajando da isca até a recompensa (references/story.md).
  2. Três histórias — três filmes diferentes, em palavras. A pessoa escolhe; se não escolhida -> aceite a recomendação e nomeie as outras duas em uma linha cada.
  3. SPEC.md (<root>/reference/direction.md §4): todo adjetivo como número — aparência, objetos, movimento (easing por função, molas como damping), planos por quadro, defaults PROIBIDOS, quadros de QA. Referências: search.py "<ideia>" -d shot (38 planos medidos de filmes de lançamento da Apple/Linear com temporizações e easing) e studio-bar §3.
  4. Storyboard + registro de costura — uma linha por plano (faixa de quadro, movimento do herói, o que é lido e por quanto tempo, som, transição) e uma linha por corte (tempo, vetor de saída, vetor de entrada, transportador, técnica) (<root>/reference/choreography.md §5). Corrija linhas incompatíveis no planejamento, não com easing.
  5. Construção em templates/film.html: camada de marca (tokens), interface real do produto reconstruída em DOM (nunca inventada, nunca um mockup inclinado), cenas como timelines aninhadas, transições de search.py -d transition, temporização guiada pela música em uma grade de batidas se houver música.
  6. Verificar e olhar — motion_lint.py film/ --mode video (sem FAIL); motion.cjs check film.html --duration <s> (sem empty-opening: quadro 0 é composto; sem hard-stop; trechos mortos > 3s). motion.cjs strip film.html --at <batidas e cada corte ±0.2s>. Revise com <root>/reference/review.md + astudio-motion:motion-review film passes. Corrija P0/P1, renderize novamente apenas o que mudou.
  7. Renderizar e entregar — mestre + versões reduzidas (16:9, 9:16 com áreas seguras, 1:1), quadro de pôster, legendas (SRT) se houver fala, som mixado apenas se solicitado (references/sound.md; caso contrário, silencioso, som oferecido como próximo passo), REVIEW.md: decisões criativas, histórias não construídas, o que foi medido vs apenas olhado (você não pode ouvir a mixagem — diga isso), o plano mais fraco, avisos mantidos.

Regras de ofício (os defaults que parecem gerados são proibidos — <root>/reference/anti-slop.md filmes)

  • Abra em um quadro composto: o quadro 0 já mostra o mundo e parte do assunto, idealmente em meio movimento — nunca 0,3s de fundo vazio (miniatura, pré-visualização de reprodução automática e primeira impressão caem todos ali).
  • Chegue devagar, saia limpo: chegadas com expo/quart-out, saídas 40-50% mais curtas, um movimento suave; nada para em velocidade máxima (hard-stop).
  • Easing por função; molas com damping 0,7-0,85 para containers; sem bounce/elastic; um movimento por plano, movimentos secundários 50-70% da distância e 100-200ms depois.
  • O herói de um plano ocupa >= 40% do quadro; texto >= 2,6% do lado menor; segura 0,5s + 0,3s/palavra; títulos pousados parados.
  • Algo novo a cada 2-4s; 3-5 tipos de transição com causas; no máximo um terço das costuras são cortes secos; mundos nunca se fundem em crossfade; imobilidade 0,3-0,75s antes da recompensa.
  • Um cursor (4-7% do quadro) causa mudanças no mesmo quadro; containers se transformam em vez de cortar.
  • Cartão final nos últimos 5-10%: a marca apresentada em ação, CTA segura por 1,5-3s.
  • Assets: produto real, imagens/fotos licenciadas (com créditos) ou visuais feitos em código — sem vídeo/imagens gerados por IA. Orientações específicas por tipo (lançamento, explicador, dados, social/vertical, logotipo, changelog, 3D): references/types.md.

Habilidades Relacionadas