Promo de marca (showreel de estúdio)
Esta skill produz um vídeo promocional completo a partir de um único arquivo de configuração, promo.json. Uma cena em canvas desenha cada quadro no Chrome headless, portanto o vídeo é motion design puro, sem templates ou imagens de arquivo:
- Imagem: os próprios clipes da marca, sua animação de logotipo e seus textos.
- Trilha sonora: uma faixa sintetizada original feita em código (128 bpm). Cada corte, transição e batida está alinhado com seus compassos.
- Narração: VoxCPM2, executado localmente.
- Som: o áudio de cada trabalho toca em seu respectivo holofote.
A estrutura é fixa e funciona em qualquer escala de marca. Apenas o conteúdo muda.
| Tempo | Seção |
|---|---|
| 0-3,4 s | { Toda história } digitado, depois "merece mover." |
| 3,2-7,6 s | um anel de cartões 3D (stills de todos os trabalhos): "Aqui estão cinco dos nossos." |
| 7,6 s (compasso 4) | a batida: sobrancelha, o nome da marca em uma caixa de destaque com glitch, uma linha secundária |
| 9,5 s + 5,6 s cada | um holofote por trabalho: bloco de título mais o trabalho em um cartão inclinado (16:9) ou um telefone (9:16), chip "Vídeo completo · m:ss", seu próprio som com barras de nível ao vivo |
| pausa | "Sua história" e depois um grande "próxima." na última palavra da linha de narração |
| corrida | todos os clipes passam voando em 3D, com três palavras (Escrito · Narrado · Animado) nas frases do narrador |
| final | o logotipo líquido pousa na batida final, desliza para a esquerda, o nome aparece, depois os chips e a URL |
A duração é de 51,5 s com 5 trabalhos, 45,9 s com 4 e 40,2 s com 3.
Requisitos:
- ffmpeg, Node 22+ e Google Chrome ou Chromium (
CHROME_PATH). - Um Python com numpy e scipy (
PROMO_PY). - Para narração, VoxCPM2 (
VOX_PY, vejascripts/voices.py). Sem ele, o promo não tem narrador, ou você pode colocar suas próprias gravações embuild/vox/<id>.wav.
Fluxo de trabalho
1. Reúna o que o promo precisa
-
3-5 trabalhos: vídeos finalizados do trabalho da marca, em qualquer duração. Um vídeo vertical toca em um telefone, um paisagem em um cartão. Observe:
- Um bom momento de som em cada um, como o início de uma frase ou um clímax: 4 s dele tocam no holofote. Informe seu tempo de início como
sound, ou omita e o início de uma pausa silenciosa perto de 35% do vídeo será usado. - Defina
"mute": truepara um trabalho cujo som não deve tocar.
- Um bom momento de som em cada um, como o início de uma frase ou um clímax: 4 s dele tocam no holofote. Informe seu tempo de início como
-
A animação do logotipo, com transparência. A melhor fonte é
/generate-logocom o estilo líquido:generate-logo/scripts/animate.sh logo.png --styles liquid --proresIsso gera
<nome>-5s-liquid-alpha.movmais seu-sfx.wav. Um-alpha.webmtransparente ou um PNG transparente também funciona. -
Informações da marca:
- O nome, dividido em duas partes coloridas (
["KumNit", " Studio"]). - As cores: dois gradientes para o nome, um destaque, um segundo destaque e um destaque quente. Leia-as do logotipo.
- O site.
- O que a marca faz: os quatro chips.
- O nome, dividido em duas partes coloridas (
-
Idioma:
"lang": "en"ou"km". Para khmer, escreva todo texto e linha de narração em khmer natural. Kantumruy Pro e Koulen estão incluídos.
2. Escreva o projeto
Crie uma pasta para o projeto e copie examples/kumnit-showreel.json para dentro dela como promo.json, depois edite-o. Cada chave é descrita em references/config.md. Mantenha os textos curtos: títulos de uma a três palavras, linhas de até seis palavras. Linhas longas encolhem para caber, mas são lidas pior.
Escreva a narração em voice.lines como uma frase curta por momento:
nextdeve terminar na palavra mostrada em grande. Por exemplo, "Sua história poderia ser a próxima."rushprecisa de três frases separadas por vírgulas, uma por palavra da corrida ("Nós a escrevemos, narramos e animamos cada quadro.").
3. Visualização (cerca de 30 s)
<pasta_da_skill>/scripts/promo.sh <projeto>/promo.json --preview
Isso corta os assets, planeja os tempos e renderiza 12 stills para out/<nome>-preview.png. Leia e verifique:
- Os cartões mostram os momentos certos.
- Nenhum título está apertado.
- O logotipo está emoldurado (sua marca deve preencher cerca de 60% da caixa).
- Os holofotes alternam os lados.
Para corrigir uma imagem, altere o início sound desse trabalho. Depois exclua assets/clips/p<k>, assets/bites/p<k>.wav e assets/manifest.json, e execute a visualização novamente.
4. Renderização (cerca de 10 minutos na primeira vez)
<pasta_da_skill>/scripts/promo.sh <projeto>/promo.json # execute em segundo plano
As etapas são executadas nesta ordem: assets, vozes, plano, música, mixagem, renderização, codificação.
- Vozes: a primeira execução carrega o modelo (cerca de 2 min), depois leva de 10 a 60 s por linha. Linhas que já existem são mantidas, portanto exclua um
build/vox/<id>.wavpara refazê-lo. - Renderização: cerca de 4 min com 2 processos Chrome.
- Retomar:
--from mix(ourender, ouencode) executa novamente a partir dessa etapa.
Saída: out/<nome>-1080p60.mp4 e out/<nome>-contact.png (um quadro por segundo).
5. Verifique antes de entregar
- Leia a folha de contato.
ffprobedeve mostrar a duração esperada (51,5 s com 5 trabalhos).- A mixagem é normalizada para -14 LUFS.
- Você não pode ouvir o resultado, portanto informe ao usuário o que verificou (tempos, níveis, quadros) e peça que ele escute. Preste mais atenção ao narrador sobre o som de cada trabalho.
Ajustes
- Efeitos sonoros: defina
sfxDircomo uma pasta com os próprios efeitos sonoros do usuário e os nomes de arquivo emscripts/audio.py(SFX) são tentados primeiro. Qualquer coisa faltante é sintetizada, portanto a skill também funciona sem biblioteca. - Tempos: são medidos a partir da narração em
scripts/plan.py. O som de cada trabalho começa após sua linha de narração e para antes do próximo holofote. Para alterar as regras, editeplan.py, não a cena. - Aparência: as cores vêm de
brand, todo o movimento está emscripts/scene.mjs, e a trilha sonora está emscripts/music.py, cujo layout de compassos está documentado no início do arquivo.