O que Habilidade de Vídeo Premium — v3.3 (Grade Âncora + Som) faz?
==================================================
Uma habilidade de orquestração de agente sênior que converte um roteiro de voz em um vídeo curto premium HyperFrames com:
- Grade âncora (kicker → hero → corpo → chip → apresentador, fixo na parte inferior)
- Tipografia cinética (animação escalonada palavra por palavra)
- Animações SVG (diagramas técnicos com elementos em movimento)
- Cartões de evidência com vidro fosco + terços inferiores + telas finais
- Transições com desfoque de movimento
- Sistema de som completo (síntese de SFX, folha de deixa, mixagem de áudio)
- Validação de contrato de design (portão prepare.py)
- Pipeline reprodutível (scenes.sh → prepare.py → build_index.py)
Pipeline (a ordem não é negociável)
roteiro de voz
│
▼
generate.py → new_scene.py → prepare.py → build_index.py
(analisar) (arquivos de cena) (validar) (HTML raiz + transições)
│ │
▼ ▼
npx hyperframes lint → npx hyperframes render
(portão 0 erros) (saída MP4)
│
▼
python3 scripts/gen_sfx.py # sintetizar SFX (uma vez)
python3 scripts/mix_audio.py # VO + deixa + fundo → master.wav
ffmpeg multiplexar → final.mp4
Passo a passo
# 1. Gerar composições de cena + HTML raiz a partir do roteiro de voz
python3 generate.py --script my_script.txt --topic Tor --output index.html
# 2. Portão de validação (contraste, tipo, zona segura, ritmo de campo)
python3 scripts/prepare.py
# 3. Linting (deve ter 0 erros)
npx hyperframes lint
# 4. Visualizar e renderizar
npx hyperframes preview
npx hyperframes render
# 5. Pipeline de áudio
python3 scripts/gen_sfx.py # sintetizar 14 SFX do zero
python3 scripts/mix_audio.py # VO + deixa + fundo → master.wav
ffmpeg -i rendered.mp4 -i renders/master.wav \
-c:v copy -c:a aac -shortest final.mp4
Grade Âncora (fixa na parte inferior, invariante)
Cada cena usa a mesma metade inferior — apenas a metade superior se recompoõe:
| Âncora | Elemento | Posição | Animação |
|---|---|---|---|
| 1 | Kicker | Superior esquerdo | Deslizar para cima de y:-26, aparecer 0,32s |
| 2 | Hero | Faixa superior (1–3 palavras) | Escalar 1,3→1, deriva 44px→0, deriva lenta para cima |
| 3 | Corpo | Cartão / odômetro / linhas | Deslizar para cima 56px→0, escalar 0,95→1 |
| 4 | Chip | Área inferior (3–6 palavras) | Deslizar para cima 30px→0, aparecer 0,26s |
| 5 | Apresentador | Inferior direito, cortado pelo quadro | Escalar 0,92→1, y:46→0, aparecer 0,34s |
Quadro 0 é um pôster — a cena 1 (data-cover="1") abre totalmente composta.
Ciclo de Seis Cores de Campo
Duas cenas vizinhas não compartilham um campo de fundo:
acento → fundo → tinta → secundário → terciário → quaternário
prepare.py falha a construção se duas cenas consecutivas compartilharem um campo.
Todos os pares texto/fundo atendem contraste WCAG ≥ 4,5:1.
Sistema de Som
Síntese de SFX (sem downloads, sem licenciamento)
python3 scripts/gen_sfx.py cria 14 efeitos sonoros:
| SFX | Uso |
|---|---|
pop.wav | Cada corte de cena |
click.wav / key.wav | Elementos de interface, marcação de lista |
chime.wav | Revelação / pontuação |
ping.wav | Notificação |
notify.wav | Call to action |
riser.wav | Grandes viradas antes do corte |
impact.wav | Impacto visual forte |
whoosh.wav | Movimento rápido |
error.wav | Erro / rejeitado |
Folha de Deixa — assets/sfx/cues.json
Deslocamentos relativos à seção (sobrevivem a regravações de VO):
{ "at": "scenes", "file": "pop.wav", "gain": 0.5 }
{ "at": "vo2-0.30", "file": "riser.wav", "gain": 0.3 }
{ "at": "vo9+0.55", "file": "notify.wav", "gain": 0.4 }
Mixagem de Áudio — scripts/mix_audio.py
- VO + deixa SFX + fundo musical →
renders/master.wav - Mede loudness com
ebur128, corrige para −14 LUFS - Pico verdadeiro ≤ −1 dBTP
alimitercomlevel=false(evita armadilha de auto-nível)- Fundo a 0,15 de volume → −29 LUFS (~13 LU abaixo de −16 LUFS VO)
- Sem ducking por sidechain — a diferença de nível é o duck
Tópicos Técnicos (animação automática + evidência)
Quando o roteiro contém uma palavra-chave reconhecida, o orquestrador insere:
| Componente | Tratamento |
|---|---|
| Diagrama SVG | Fluxo nó-link com elemento em movimento + animateMotion |
| Sobreposição de evidência | Cartão de vidro fosco com distintivos de fonte |
| Transição | Desfoque de movimento antes da animação |
| Deixa de áudio | SFX "whoosh" no início da animação |
Reconhecidas: tor, onion, vpn, proxy, isp, relay, network, packet, encryption, cybersecurity, dns, cdn, blockchain, ai, machine learning, e mais.
Formatos de Roteiro de Entrada
Texto simples (autotemporizado ~145 ppm)
Mesmo currículo em todo lugar? É por isso que você é rejeitado.
Adapte-o por empresa.
Leia a **descrição da vaga**.
Um currículo não serve para todas as empresas. Personalize e seja pré-selecionado.
Segmentos com carimbo de tempo
[0-4s] Mesmo currículo em todo lugar? É por isso que você é rejeitado.
[4-10s] Adapte-o por empresa.
[10-14s] Leia a **descrição da vaga**.
Ênfase: **palavra** → alinhado à direita, cor da marca, peso 950, animação pop.
Arquivos
| Arquivo | Propósito |
|---|---|
generate.py | Ponto de entrada da CLI |
orchestrator.py | Pipeline: analisar → detectar → decompor → gerar cenas → construir raiz |
design_system.py | Tokens de design, regras de alinhamento, validação |
PARAMS.json | O ÚNICO arquivo de design que você edita |
scripts/prepare.py | Portão de validação + injeção de tokens |
scripts/new_scene.py | Gerador de composição de cena da grade âncora |
scripts/build_index.py | HTML raiz com temporização contígua + transições adaptativas |
scripts/gen_sfx.py | Síntese de SFX do zero |
scripts/mix_audio.py | VO + deixa + fundo → master.wav |
assets/sfx/cues.json | Folha de deixa relativa à seção |
scenes.sh | Modelo de lista de cenas reprodutível |
compositions/_scene-base.html.tmpl | Esqueleto da grade âncora |
compositions/wipe.html | Transição com desfoque de movimento |
skill.md · skill.json | Documentação + esquema |
Requisitos
- Python 3 (biblioteca padrão)
- CLI HyperFrames:
npx hyperframes init / preview / render / lint - Node.js ≥ 22, FFmpeg
- ffprobe (para medição de áudio)
Licença
MIT — construa sobre ele, compartilhe-o, venda vídeos com ele.