Vídeo de Lançamento
Transforma um post do X (URL ou texto) mais o site de uma marca (ou perfil salvo em brand.json) em um filme de lançamento H.264 de 25 a 40 segundos em 1920x1080 60 fps com áudio. Todas as escolhas criativas residem em dois pequenos arquivos JSON (brand.json e launch.json); a compilação, o layout, a síntese da trilha sonora e a renderização Remotion são determinísticos.
Pré-requisitos
- Bun (
bun >= 1.1) ffmpegeffprobenoPATH(para codificação H.264/AAC, masterização loudnorm e inspeção de contato)- ImageMagick (
magicknoPATH, recomendado para conversão WebP, corte de transparência e recortes de janela)
<SKILL_DIR> abaixo se refere ao diretório que contém este SKILL.md (por exemplo ~/.claude/skills/launch-video ou ~/.agents/skills/launch-video).
Fluxo de Trabalho Completo
1. Ler o post do X (se fornecida uma URL)
bun <SKILL_DIR>/scripts/post.ts "https://x.com/<handle>/status/<id>"
Obtém o texto do post, autor, estatísticas e mídias anexadas através do endpoint público fxtwitter (sem necessidade de login ou chave de API).
2. Inicializar ou carregar o perfil da marca (brand.json)
Se você já possui um brand.json curado, reutilize-o. Quando apontado para um site ativo (por exemplo https://fomo.family ou https://acme.dev), inicialize primeiro uma pasta da marca:
bun <SKILL_DIR>/scripts/bootstrap.ts "https://fomo.family" --out ./work/brand
Em seguida, faça a curadoria visual de ./work/brand/brand.json (não pule esta etapa):
- Marca (
mark): Inspecioneinline-*.svg,favicon.svgemark.png. O palco é escuro (#000000ou o fundo escuro do site, como#060510), portanto amarkdeve ser branca/clara sobre fundo transparente (PNG32ouSVG). Se o ícone do site estiver sobre um quadrado escuro opaco, extraia a marca clara para transparência com ImageMagick (magick raw.png -colorspace gray -level 6%,92% alpha.png && magick -size WxH xc:white alpha.png -compose CopyOpacity -composite -trim +repage PNG32:mark-white.png) e inspecione uma amostra de visualização. - Capturas de tela (
screens): Veja cada imagem baixada emscreens/(ou capture rotas de produto ao vivo em DPI2xcom Playwright headless). Mantenha apenas capturas reais de interface do produto (4–8 telas), exclua texturas de fundo decorativas e escreva umadescriptionprecisa para cada tela. Adicionecrop: {x, y, w, h}se uma captura de desktop tiver margens de papel de parede externas. PNGs transparentes (telefones flutuantes, cartões, notificações) são automaticamente cortados e renderizados sem moldura. - Logotipos de parceiros/ecossistema (
logos): Adicione ícones SVG/PNG nítidos para quaisquer plataformas, redes, modelos ou ferramentas mencionados nos beats (logos/x.svg,logos/apple.svg,logos/slack.svg, etc.). Defina"fill": "#F2F2F2"em ícones raster monocromáticos escuros para que se destaquem nas telhas hexagonais. - Paleta e CTA: Confirme
palette.bg,palette.fg,palette.accent,mosaicColors(6–10 tons de marca + neutros acinzentados, sem gradientes roxos),website(domínio simples, ex.:"fomo.family") ecta(big,title,body,button).
3. Escrever launch.json
{
"brand": "./brand/brand.json",
"open": { "tagline": "Onde traders se tornam lendas." },
"beats": [
{ "id": "spot", "headline": "Veja no X, negocie.", "screen": "desktop-terminal", "hexes": ["x", "solana"] },
{ "id": "social", "headline": "Siga o que os melhores traders compram.", "screen": "social-feed" },
{ "id": "alerts", "headline": "Alertas em tempo real antes de movimentar.", "screen": "live-alerts" },
{ "id": "sync", "headline": "Telefone e desktop, em sincronia.", "screen": "desktop-and-phone" },
{ "id": "fund", "headline": "Financie instantaneamente com Apple Pay.", "screen": "apple-pay", "hexes": ["apple", "solana", "base"], "hexLayout": "top" }
],
"cta": {},
"outro": { "seconds": 6.5 },
"music": "profile"
}
Regras para beats nítidos (veja references/format-guide.md):
- Tagline (
open.tagline): 5 palavras ou menos nomeando o que o produto é. - 4 a 6 beats: Comece com o gancho do post do X no Beat 1 e depois percorra superfícies concretas do produto. Mantenha cada headline com 2 a 5 palavras terminando em ponto para que fique em uma única linha a
64 px. - Correspondência exata de tela: Cada headline deve corresponder visualmente ao que é mostrado em sua
screen. Nunca emparelhe um headline com uma captura de tela não relacionada. - Layout de hexágonos (
hexLayout):"auto"(padrão: 3 logotipos empilham-se limpos àleft; 1–2 ficam emsides),"top"(linha horizontal acima de uma capturay = 340) ou"sides". - Áudio (
music):"profile"usa o arquivomusicdebrand.jsonquando configurado e, caso contrário, sintetiza uma base eletrônica minimalista de 92 bpm sincronizada com os beats e masterizada em-15 LUFS;"synth"sempre sintetiza;"none"renderiza sem áudio; ou passe um caminho para um arquivo.m4a/.mp3/.wavpersonalizado.
4. Renderizar um rascunho rápido, inspecionar quadros e depois renderizar o full 1080p60
# Rascunho em meia escala para QA visual (~20-40s)
bun <SKILL_DIR>/scripts/render.ts ./work/launch.json --out ./work/draft.mp4 --scale 0.5
ffmpeg -v error -y -i ./work/draft.mp4 -vf "fps=1,scale=480:-1,tile=6x6:padding=2:color=gray" -frames:v 1 ./work/draft-sheet.png
Inspecione ./work/draft-sheet.png e quadros completos dos beats principais:
- O Quadro 0 mostra o mosaico hexagonal de borda a borda; a marca está nítida e visível no palco escuro.
- Cada headline cabe em uma linha com margens amplas e corresponde à sua captura.
- Renderizações de produto transparentes flutuam limpas sem caixa de borda cinza; as telhas hexagonais têm espaço de respiro limpo da captura.
- O cursor do CTA pousa limpo no botão pill no quadro do clique.
- O outro explode de uma parede hexagonal completa e segura o domínio digitado de forma nítida.
Corrija qualquer problema de cópia, corte ou layout em brand.json / launch.json e depois renderize na qualidade full 1920x1080 60 fps:
bun <SKILL_DIR>/scripts/render.ts ./work/launch.json --out ./work/launch.mp4
ffprobe -v error -show_entries format=duration:stream=codec_name,width,height,r_frame_rate -of default=noprint_wrappers=1 ./work/launch.mp4
Relate o caminho absoluto completo de ./work/launch.mp4 e a tabela de beats.