aula-animada · diff
git:20261007.dfe1650 to git:20261009.384183a
251 added, 73 removed. Audit A to A.
---
name: aula-animada
description: >-
- Cria AULA NARRADA ANIMADA curta (até 4 min) com o estúdio do kit-video-ia: roteiro em partes, uma
- ideia por tela, voz por IA (ElevenLabs ou OpenAI), legenda palavra a palavra, telas animadas no
- tempo da fala, convite no fim, e entrega o vídeo deitado e/ou em pé, conferido (fala comparada com o
- roteiro por transcrição, ritmo sem tela parada mais de 2,5 s, som em -14 LUFS) e com legendas
- .vtt/.srt. Use sempre que a pessoa pedir "aula narrada", "aula em vídeo", "videoaula", "curso em
- vídeo", "série de aulas", "explicar um conceito em vídeo", "vídeo didático", "aula para a central de
- ajuda" ou "transformar este texto em aula", mesmo que não diga "animada". Para gravar um sistema
- funcionando, use a skill tutorial-de-tela.
+ Cria AULA NARRADA ANIMADA de 2 a 5 minutos, com a duração escolhida pela pessoa, no estúdio da
+ Claquete.ai: roteiro em partes no tom e no glossário da marca, uma ideia por tela, voz da
+ ElevenLabs, legenda palavra a palavra, telas que entram no segundo em que a voz diz a palavra e
+ direção de movimento com as skills de motion design. Trabalha sozinha e para em dois portões (o
+ roteiro e plano de edição antes de narrar; a revisão da fala por um subagente antes de montar),
+ confere ritmo, duração e som, e entrega o vídeo deitado e/ou em pé, apagando a montagem. Use
+ sempre que a pessoa pedir "aula narrada", "aula animada", "aula em vídeo", "videoaula", "explicar
+ um conceito em vídeo", "vídeo didático", "aula para a central de ajuda", "série de aulas" ou
+ "transformar este texto em aula", mesmo que não diga "animada". Para mostrar uma ferramenta
+ funcionando, use tutorial-de-tela.
metadata:
- resumo: Aula narrada e animada, do tema ao vídeo conferido
+ resumo: Aula narrada e animada de 2 a 5 min, do tema ao vídeo entregue
---
# Aula narrada e animada
- O resultado é um vídeo curto de explicação: uma janela com a tela da vez, a etiqueta acima, a
- legenda palavra a palavra embaixo e a voz conduzindo. Cada elemento entra **no segundo em que a voz
- diz a palavra dele**, e nada fica parado mais de 2,5 s. Tudo sai de um arquivo só, `aulas/<id>.json`,
- pelo estúdio (a pasta com `kit.config.json`; o instalador cria em `estudio-video/`).
+ O resultado é uma aula curta: uma janela com a tela da vez, a etiqueta acima, a legenda palavra a
+ palavra embaixo e a voz conduzindo. Cada elemento entra **no segundo em que a voz diz a palavra
+ dele**, e nada fica parado mais de 2,5 s. Tudo sai de um arquivo só, `aulas/<id>.json`, pelo estúdio
+ (a pasta com `kit.config.json`; o instalador cria `estudio-video/`). Todo comando roda de dentro dele.
- ## Antes de escrever: o que perguntar
+ O Claude faz tudo sozinho e para só no **portão 1** (roteiro e plano de edição), no **portão 2**
+ (revisão da fala) e na **entrega**.
- Pergunte só o que não der para tirar do pedido ou do material que a pessoa trouxe. Junte numa
- rodada e traga sugestão pronta para ela aprovar:
- 1. **Tema e público**: quem assiste e o que precisa sair sabendo (uma frase).
- 2. **Duração**: o padrão é 1 a 2 minutos; o máximo é 4.
- 3. **Formato**: deitado (`h`, para site, YouTube, central de ajuda) e/ou em pé (`v`, para Reels e celular).
- 4. **Fonte**: texto, artigo ou anotações dela. Número e fato só entram com fonte.
- 5. **Marca e convite**: cores, nome e o endereço do convite final (`kit.config.json`).
- 6. **Voz**: provedor e voz já configurados? Se não, ver "Configurar a voz".
+ ## Antes de escrever
- Se a pessoa trouxer um texto longo, proponha o roteiro em partes e peça o ok antes de narrar: a
- narração é a parte paga.
+ 1. **Leia a marca** em `marca/marca.json`: `publico`, `tom`, `glossario`, `palavras_proibidas`,
+ `chamada` e `movimento`. Sem o arquivo, a aula sai no visual padrão; ofereça "configura minha
+ marca" (skill claquete-marca).
+ 2. **Pergunte numa rodada só** o que o pedido e a marca não respondem (a skill claquete pode já ter
+ perguntado), com sugestão pronta:
+ - **tema e público**: quem assiste e o que precisa sair sabendo, numa frase;
+ - **duração**: 2, 3, 4 ou 5 minutos, a pessoa escolhe;
+ - **formato**: deitado (`h`, para site, YouTube, central de ajuda), em pé (`v`, para Reels e
+ celular) ou os dois;
+ - **fonte**: o texto, o artigo ou as anotações dela. Fato e número só entram com fonte.
+ 3. **Crie o arquivo**: `python3 scripts/kit.py novo <id> --tipo aula --minutos 3` (id em letras
+ minúsculas, números e hífen).
+ ## O tamanho certo
+
+ O `montar` recusa a aula fora de 20% da duração escolhida, para mais ou para menos, e fora de 2 a 5
+ minutos. O `plano` mostra a estimativa antes de qualquer gasto. A voz real sai um pouco mais rápida
+ ou mais lenta que a estimativa: mire no meio da faixa.
+
+ | Duração | Faixa aceita | Mire em | Partes |
+ |---|---|---|---|
+ | 2 min | 120 a 144 s | umas 340 palavras | 11 ou 12 |
+ | 3 min | 144 a 216 s | umas 470 palavras | 15 ou 16 |
+ | 4 min | 192 a 288 s | umas 620 palavras | 20 ou 21 |
+ | 5 min | 240 a 300 s | umas 700 palavras | 23 ou 24 |
+
+ Contas com a velocidade padrão da voz (1,1) e o convite de 4 s no fim. Passou de 5 minutos: divida
+ em duas aulas.
+
## O arquivo da aula
- `estudio-video/aulas/<id>.json` (id em letras minúsculas, números e hífen). Modelo completo em
- `aulas/exemplo.json`.
+ `aulas/<id>.json`. Modelo completo em `aulas/exemplo.json`.
```json
{
"titulo": "Nome da aula",
"cabecalho": "Série · Aula 1",
+ "tipo": "aula",
+ "minutos": 3,
"destaques": ["palavras", "que", "ficam", "coloridas", "na", "legenda"],
"partes": [
{
"fala": "O que a voz diz nesta tela.",
"rotulo": "Etiqueta acima da janela",
"tela": { "tipo": "lista", "kicker": "Etiqueta", "titulo": "Título com *destaque*",
"itens": [{ "texto": "um", "quando": "palavra" }, "dois", "três"],
"chips": [{ "texto": "ficha", "quando": "outra" }] }
}
]
}
```
| tipo | campos | para quê |
|---|---|---|
| `capa` | `kicker`, `titulo`, `sub` | abertura |
| `lista` | `kicker`, `titulo`, `itens` (até 5) | pontos de uma ideia |
| `colunas` | `titulo`, `esquerda` e `direita` (`titulo`, `itens`) | antes e depois, isto e aquilo |
| `fluxo` | `kicker`, `titulo`, `passos` (até 5), `nota` | etapas em sequência |
| `frase` | `kicker`, `titulo`, `sub` | uma afirmação forte |
| `numero` | `kicker`, `de`, `para`, `legenda` | um número que conta até o valor |
| `imagem` | `arquivo` (em `public/`), `legenda`, `zooms` | foto ou ilustração |
| `video` | `arquivo`, `de`, `velocidade`, `legenda`, `zooms` | gravação de tela (skill tutorial-de-tela) |
- `*trecho*` no título fica em destaque.
- - **`quando`** amarra a entrada à palavra falada (`"palavra"` ou `"palavra#2"` para a segunda vez).
+ - **`quando`** amarra a entrada à palavra falada (`"palavra"`, ou `"palavra#2"` para a segunda vez).
Sem `quando`, os itens se espalham por igual na fala.
- **`chips`** são fichas que entram na palavra dita: o jeito mais simples de pôr algo novo na tela.
- **`zooms`**: `{ "quando": "palavra", "foco": [x0, y0, x1, y1], "ate": "palavra" }`, com o foco em
frações da janela. A câmera enquadra o foco inteiro e escurece o resto (nunca corta pela metade).
## Como escrever a fala
- - **Uma ideia por parte**, 20 a 40 palavras (8 a 14 s). Seis a dez partes por aula.
- - Primeira parte: o que a aula mostra e por que importa. Última: recapitulação ou o gancho da próxima.
+ - **Uma ideia por parte**, 20 a 40 palavras (8 a 14 s).
+ - Primeira parte: o que a aula mostra e por que importa para o público. Última: a recapitulação e a
+ ponte para a chamada da marca, que o convite do fim mostra.
- A tela **resume** a fala, não repete: título curto, itens de poucas palavras.
- - Tom de quem explica a um colega: frases curtas, segunda pessoa, sem jargão sem explicação.
+ - **No tom da marca** (`tom`). Sem marca: o de quem explica a um colega, frases curtas, segunda pessoa,
+ sem jargão sem explicação.
+ - **Glossário**: o termo aparece como está, na fala e na tela, nunca trocado por sinônimo, nem para
+ variar.
+ - **Palavras proibidas**: nem na fala (o `validar` recusa) nem na tela (nada recusa: confira).
- Diga o limite com clareza (o que a coisa não faz). Fato e número só com fonte.
- - **Sem travessão** (a voz lê mal; a validação recusa).
+ - **Sem travessão** (a voz lê mal; o `validar` recusa na fala e nos textos da tela).
- ### Escrever para a voz (o que a conferência reprova)
+ ### Escrever para a voz (o que a revisão da fala reprova)
- Cada parte é transcrita e comparada com o roteiro. Reprovou: **reescreva a frase**, não afrouxe a trava.
- Ano em algarismo (`2022`), não por extenso.
- - Homófonos: "por quê" e "por que" soam iguais. Troque a construção ("os motivos").
+ - Palavras que soam iguais: "por quê" e "por que", "sessão" e "seção". Troque a construção ("os motivos").
- Artigo ambíguo: "é o modelo" pode soar "é um modelo". Mude a frase.
- Concordância como a voz vai dizer ("a IA era rápida").
- - Siglas: ponha a pronúncia em `kit.config.json` → `pronuncia` (`"IA": "iá"`).
- - Palavra que o transcritor sempre troca e está certa: `travas.aceitar` (`"Wize": "wise"`).
+ - Siglas e nomes estrangeiros: ponha a pronúncia em `kit.config.json` → `pronuncia` (`"IA": "iá"`)
+ **antes de narrar**. Mudar a pronúncia de uma palavra depois só pede nova narração das partes que
+ usam essa palavra (ver "Mudou depois do ok").
+ - Palavra que o transcritor sempre escreve diferente e que a voz diz certo (um nome de marca):
+ `travas.aceitar` (`"Wize": "wise"`).
## O ritmo: nada parado mais de 2,5 s
- Regra do kit: a cada 2,5 s no máximo, algo **novo** na tela (item que entra, ficha, número que conta,
- zoom). Pulsar e flutuar não contam. Duas travas:
+ A cada 2,5 s no máximo, algo **novo** na tela: item que entra, ficha, número que conta, zoom. Pulsar
+ e flutuar não contam. Duas travas:
1. `montar` calcula, pelos tempos da fala, quando cada elemento entra e **recusa** a parte que fica
- mais de 2,5 s sem novidade, dizendo onde. Conserto: um `quando` num item, uma ficha em `chips`,
- ou dividir a parte em duas.
+ mais de 2,5 s sem novidade, dizendo onde.
2. `finalizar` mede o vídeo pronto (só a área da janela, sem a legenda) e recusa tela parada.
- ## Do arquivo ao vídeo
+ Resolva já no roteiro, antes do portão 1: **uma novidade a cada 5 palavras faladas, mais ou menos**
+ (2,5 s de voz são umas 6 palavras). Um `quando` em cada item, fichas onde a fala corre sem item novo,
+ ou a parte dividida em duas. Assim o `montar` não recusa depois do ok.
+ ## Direção de movimento
+
+ Com as skills de motion design da iart.ai (o instalador põe junto). Elas decidem; o estúdio executa
+ com o que já tem: tipo de tela, `quando`, fichas, zooms, cores e fundo.
+
+ - **motion-art-direction**, antes do roteiro: transforme o `movimento` e o `tom` da marca em três
+ ou quatro regras que valem para a aula toda, para tudo parecer feito pela mesma mão.
+ - Sóbrio: fichas só as que o ritmo pede, zoom raro, mais `lista` e `fluxo`.
+ - Dinâmico: partes mais curtas, mais fichas, `numero` e `colunas` para virar a página.
+ - Editorial: `capa` e `frase` com título forte e `*destaque*`, poucos itens por tela.
+ - **shot-composition**: um ponto de atenção por tela; título curto, que caiba também no em pé (a
+ janela em pé é estreita); o `foco` do zoom pega o elemento inteiro.
+ - **animation-principles**: espaçe as entradas. Itens chegando todos no fim da fala, ou três no
+ mesmo segundo, cansam. Uma entrada a cada 1 a 2,5 s é o ritmo do estúdio.
+ - **color-motion**: a paleta da marca com contraste (texto sobre a janela, destaque sobre o fundo) e
+ os tons de apoio (detalhes na skill claquete-marca).
+ - **logo-animation**: a vinheta da marca. Hoje fica à parte; o estúdio não a encaixa no começo e no
+ fim das aulas (o tipo vinheta chega na 2.1). O logo da marca já aparece no encerramento.
+ - Animação nova (um tipo de tela que não existe) é código em `src/cenas/`, e os tempos de entrada
+ precisam bater com `scripts/kit.py` (procure "RITMO" nos dois). O `--atualizar` do instalador
+ troca a pasta `src/`. Só com o pedido da pessoa; a skill remotion-video ajuda.
+
+ ## O fluxo
+
+ ### 1. Roteiro e revisão
+
+ - Escreva `aulas/<id>.json` e rode `python3 scripts/kit.py validar <id>` (grátis) até não haver erro.
+ - **Revisor do roteiro**: um subagente com um modelo mais forte escrito no pedido (opus, por
+ exemplo), porque a tarefa pede julgamento. Nunca herdando o modelo da sessão. Passe o arquivo da
+ aula, `marca/marca.json` e a fonte. Ele devolve, parte por parte:
+ - fato ou número sem fonte;
+ - fora do tom da marca ou do nível do público;
+ - termo do glossário trocado por sinônimo; palavra proibida na fala ou na tela;
+ - frase difícil para a voz (palavras que soam iguais, ano, sigla sem pronúncia, artigo ambíguo);
+ - tela que repete a fala em vez de resumir;
+ - trecho de mais de umas 6 palavras sem novidade na tela;
+ - duração estimada longe do meio da faixa.
+ - Corrija tudo e valide de novo.
+
+ ### 2. Portão 1: roteiro e plano de edição
+
+ - `python3 scripts/kit.py plano <id>` gera `saida/<id>/roteiro-e-plano.md`: cada parte com a fala,
+ a tela, o que entra em cada palavra, as fichas e os zooms, e a duração estimada. Tela `imagem` ou
+ `video` com arquivo que ainda não existe é só aviso aqui (seção "A gravar depois do ok"); o `montar`
+ a recusa.
+ - Mostre o conteúdo à pessoa na conversa, não só o caminho do arquivo. **Pare e espere.**
+ - Com o ok: `python3 scripts/kit.py aprovar <id>`. Pediu mudança: mude, gere o plano de novo e mostre
+ outra vez.
+
+ ### 3. Narrar
+
+ `python3 scripts/kit.py fazer <id> --formatos h,v` narra cada parte na ElevenLabs (a parte paga) e
+ para no portão 2 (código 2). Parte já narrada com a mesma fala, voz e pronúncia não é narrada de novo.
+
+ ### 4. Portão 2: revisão da fala
+
+ O `conferir` (o `fazer` já roda) gera `public/aulas/<id>/conferencia.json`. Para cada parte:
+ - `fala` (o roteiro) e `falado` (o que foi para a voz, com a `pronuncia` aplicada);
+ - `audio` e `duracao`;
+ - `alertas`: palavras que soam iguais, ano no texto, sigla sem pronúncia;
+ - com a transcrição local (faster-whisper, que o instalador oferece): `ouvido`, `similaridade` (0 a
+ 1), `diferencas` e `situacao`: `ok` (a partir de `travas.similaridade_minima`, 0,9), `revisar`
+ (de 0,75 até ali: o subagente decide) ou `reprovada` (abaixo de 0,75: o `--aprovado` recusa).
+ Números simples por extenso e em algarismo ("dois" e "2") contam como iguais.
+
+ **Conferente da fala**: um subagente com um modelo rápido escrito no pedido (sonnet, por exemplo):
+ é conferência guiada por lista. Ele não ouve; ele lê. Devolve cada parte como aprovada ou reprovada,
+ com o motivo e o conserto:
+ - **Fala exata**: `ouvido` diz o mesmo que `fala`? Diferença que muda o sentido reprova. Diferença só
+ de grafia ("e-mail" e "email") não reprova.
+ - **Pronúncia e siglas**: sigla ou nome estrangeiro que o transcritor escreveu errado indica que a
+ voz disse errado.
+ - **Anos**: lidos como número.
+ - **Palavras que soam iguais** (`alertas`): o sentido sobrevive só de ouvido?
+ - **Glossário**: cada termo dito como está.
+ - **Duração**: muito longe de uns 0,36 s por palavra (pausa estranha, trecho cortado) pede ouvido.
+
+ Sem transcrição local, `ouvido` vem vazio. O subagente confere o lado do texto (`falado`, `alertas`,
+ glossário), e **a pessoa ouve os áudios listados no relatório** antes do ok. Diga quais partes ele
+ marcou para ouvir com atenção.
+
+ - **Aprovou**: `python3 scripts/kit.py conferir <id> --aprovado`.
+ - **Reprovou**: conserte e narre só a parte. Nunca afrouxe a trava.
+ - Pronúncia, sigla ou ano: acerte `kit.config.json` → `pronuncia`. O roteiro não muda:
+ `python3 scripts/kit.py narrar <id> --partes 3` e `conferir <id>` de novo.
+ - Frase que precisa mudar (palavras que soam iguais, artigo ambíguo, sentido trocado): reescrever
+ muda o roteiro aprovado, e o `narrar` recusa. Mostre à pessoa a frase antes e depois; com o ok,
+ `aprovar <id>`, `narrar <id> --partes 3` e `conferir <id>`.
+ - O transcritor escreve diferente uma palavra que a voz diz certo: `travas.aceitar`. Só quando o
+ áudio está certo.
+ - O `--aprovado` recusa se alguma parte ficou `reprovada`, ou se a narração mudou depois do relatório.
+
+ ### 5. Montar, renderizar, finalizar
+
+ - `python3 scripts/kit.py fazer <id> --formatos h,v` de novo (pula a voz e a revisão já feitas), ou
+ por partes: `montar`, `renderizar`, `finalizar`. O `montar` prepara sempre os dois formatos; o
+ `--formatos` (padrão `h`) vale para `renderizar` e `finalizar`.
+ - `montar` recusa: palavra de `quando` que a fala não tem; mais de 2,5 s sem novidade (diz a parte e
+ o segundo); duração fora da faixa.
+ - `finalizar` põe o som em -14 LUFS, gera as legendas `.vtt` e `.srt` e a folha de quadros, e recusa
+ tela parada no vídeo pronto. Ele apaga o arquivo bruto do render, mas roda de novo sobre o vídeo
+ já finalizado (sem o bruto, e sem normalizar o som outra vez). Sem render nenhum, para com "não há
+ render": aí renderize.
+ - Para ver no navegador antes do render: `npm run studio`, depois do `montar`.
+
+ ### 6. Revisão da folha de quadros
+
+ `saida/<id>/<id>-h-folha.jpg` (e `<id>-v-folha.jpg`): 16 quadros do vídeo. **Revisor da folha**: um
+ subagente com um modelo rápido escrito no pedido (sonnet, por exemplo), que abre as imagens e aponta:
+ - texto cortado, vazando da janela ou quebrando feio;
+ - tela vazia;
+ - zoom ruim (o foco corta um elemento);
+ - legenda em cima de algo importante;
+ - cor, fonte ou logo fora da marca;
+ - dado sensível.
+
+ Para ver um momento exato, ele tira um quadro. O segundo está em `public/aulas/<id>/plano.json` (o
+ `inicio` da parte mais o `ini` da palavra):
+
```bash
- cd estudio-video
- python3 scripts/kit.py validar <id> # grátis: confere o arquivo
- python3 scripts/kit.py fazer <id> --formatos h,v # narra, confere, monta, renderiza, finaliza
+ mkdir -p saida/<id>/quadros
+ ffmpeg -ss <segundo> -i saida/<id>/<id>-h.mp4 -frames:v 1 saida/<id>/quadros/q1.jpg
```
- Por partes, quando precisar: `narrar <id> [--partes 2,5]`, `conferir <id> [--refazer]`, `montar <id>`,
- `renderizar <id> [--concorrencia 2]`, `finalizar <id> [--pagina]`. Só mudou a tela (não a fala)? Rode
- de `montar` em diante: a voz não é gerada de novo. Ver no navegador antes do render: `npm run studio`.
+ Corrija o que ele apontar e rode de `montar` em diante.
- Sai em `saida/<id>/`: `<id>-h.mp4`, `<id>-v.mp4`, `<id>.vtt`, `<id>.srt` e uma **folha de quadros**
- (`<id>-h-folha.jpg`). Olhe a folha antes de entregar: texto quebrando feio, tela vazia, zoom ruim.
+ ### 7. Mudou depois do ok
- ## Configurar a voz
+ - **Qualquer mudança no arquivo da aula depois do `aprovar`**, até uma ficha ou um foco de zoom:
+ mostre à pessoa só a diferença e peça ok novo; com ele, `aprovar <id>` de novo. O `fazer` e o
+ `narrar` param enquanto isso.
+ - Mudança só de tela não gera a voz de novo: rode de `montar` em diante.
+ - Mudança de fala: narre só as partes mudadas (`narrar <id> --partes 2,5`), depois `conferir`.
+ - **Cuidado com o custo**: mudar a `voz` (ou o modelo) muda a assinatura de **todas** as partes. Depois
+ disso, narre só com `--partes` e siga com `conferir`, `montar`, `renderizar` e `finalizar` soltos.
+ O `fazer`, e o `narrar` sem `--partes`, narrariam a aula inteira de novo. Já mudar a `pronuncia`
+ de uma palavra só muda as partes cuja fala usa essa palavra: o `narrar` sem `--partes` refaz só elas.
- O instalador já deixa pronto: as chaves num `.env` do estúdio e a voz na conta da pessoa. Se algo
- ficou de fora, `python3 scripts/kit.py voz` põe a voz configurada na conta e gera `saida/teste-voz.mp3`.
+ ### 8. Entrega
- `kit.config.json` → `voz`:
- - **ElevenLabs** (padrão): vem a **Raquel**, voz pública em português do Brasil da biblioteca do
- ElevenLabs, com o modelo `eleven_v4`. Outra voz: troque `voice_id` (e `dono_publico`, se for da
- biblioteca) e rode `kit.py voz`. A resposta já traz o tempo de cada letra.
- - **OpenAI**: `"provedor": "openai"`, `modelo`, `voz` e `instrucoes`. O tempo das palavras vem da transcrição.
- - **`velocidade`** (padrão 1,1) é aplicada depois da síntese, igual para qualquer modelo, e os tempos
- das palavras acompanham.
- - A conferência usa a transcrição da OpenAI (`OPENAI_API_KEY`) nos dois casos.
+ - Mostre o vídeo pronto (`saida/<id>/<id>-h.mp4`, `<id>-v.mp4`), a duração e o que as revisões
+ acharam e corrigiram. **Pare e espere o ok.**
+ - Vai para uma página? Gere a versão leve antes de entregar (skill video-na-pagina).
+ - Com o ok: `python3 scripts/kit.py entregar <id> --destino <pasta>`. Ele copia o vídeo final, as
+ legendas e as versões de página, confere a cópia e apaga a montagem (`public/aulas/<id>/` e
+ `saida/<id>/`). Ficam o vídeo final e o arquivo da aula. Refazer depois narra de novo, e a voz é paga.
- Chave só no `.env` do estúdio ou em variável de ambiente, nunca em arquivo versionado. Custo de uma
- aula de 2 min: o TTS de uns 2 mil caracteres mais centavos de transcrição.
+ ## Comandos
- ## A aparência
+ ```bash
+ cd estudio-video
+ python3 scripts/kit.py novo <id> --tipo aula --minutos 3
+ python3 scripts/kit.py validar <id> # grátis
+ python3 scripts/kit.py plano <id> # portão 1: mostre e espere o ok
+ python3 scripts/kit.py aprovar <id> # só com o ok da pessoa
+ python3 scripts/kit.py fazer <id> --formatos h,v # narra e para no portão 2
+ python3 scripts/kit.py conferir <id> --aprovado # depois da revisão da fala
+ python3 scripts/kit.py fazer <id> --formatos h,v # monta, renderiza e finaliza
+ python3 scripts/kit.py entregar <id> --destino <pasta> # depois do ok ao vídeo pronto
+ ```
- `kit.config.json` → `tema`: cores, fontes, nome (`marca`) e `fundo_imagem`, a foto desfocada atrás da
- janela (prontas: `fundos/champagne.jpg`, `fundos/oceano.jpg`, `fundos/esmeralda.jpg`; vazio = luzes em
- degradê). O convite final fica em `convite`. Não é preciso app de gravação: janela, sombra, fundo,
- cursor e zoom são do próprio estúdio.
+ Por partes: `narrar <id> [--partes 2,5]`, `conferir <id>`, `montar <id>` (sempre h e v),
+ `renderizar <id> --formatos h,v [--concorrencia 2]`, `finalizar <id> --formatos h,v [--pagina]`.
+ Código de saída 2 é portão (mensagem `AGUARDANDO`); 1 é erro (`PAROU`).
- ## Tempo e máquina
+ ## A voz
- Narração e conferência: 1 a 2 min. Render: cerca de 1 min de máquina por minuto de vídeo, por
- formato (`--concorrencia 2` deixa a máquina mais leve). Rode uma aula por vez.
+ - Só a ElevenLabs. A única chave é `ELEVENLABS_API_KEY`, no `.env` do estúdio (o instalador cria)
+ ou no ambiente; nunca em arquivo versionado.
+ - Vem a **Raquel**, voz pública em português do Brasil, com o modelo `eleven_v4`. A voz da marca
+ (`voz.voice_id` no `marca.json`) entra com `kit.py marca`. `python3 scripts/kit.py voz` confere a
+ voz na conta e gera `saida/teste-voz.mp3`.
+ - `voz.velocidade` (padrão 1,1) é aplicada depois da síntese, e os tempos das palavras acompanham.
+ `pausa_entre_partes`: 0,35 s.
+ - A ElevenLabs cobra por caractere. Uma aula de 3 minutos tem uns 2.500.
- ## Entrega
+ ## A aparência
- Diga à pessoa: onde está o vídeo, a duração, o resultado das conferências (fala, ritmo, som) e o que
- ficou de fora ou precisa de decisão dela. Para publicar numa página, ver a skill video-na-pagina.
+ - `kit.py marca` leva cores, fontes, nome, logo, convite e palavras proibidas da marca para o
+ `kit.config.json`, deriva os tons de apoio do fundo (claro leva texto escuro) e gera as fontes do
+ Google Fonts sozinho. O que ele não acerta (a conferência de contraste) está na skill claquete-marca.
+ - `tema.fundo_imagem`: a foto desfocada atrás da janela (prontas: `fundos/champagne.jpg`,
+ `fundos/oceano.jpg`, `fundos/esmeralda.jpg`; vazio = luzes em degradê nas cores da marca).
+ - Música de fundo: `trilha.arquivo` (um arquivo em `public/`) e `trilha.volume` (padrão 0,07).
+ - Não é preciso app de gravação: janela, sombra, fundo e zoom são do próprio estúdio.
+
+ ## Tempo e máquina
+
+ - Narração: 1 a 2 minutos. Render: cerca de 1 minuto de máquina por minuto de vídeo, por formato
+ (`--concorrencia 2` deixa a máquina mais leve). Uma aula por vez.
+ - O `renderizar` recusa sozinho com menos de 5 GB livres, e o `validar` e o `plano` avisam. Antes de
+ gravar uma tela (a gravação em Playwright não passa pelo `kit.py`), confira o disco (no macOS e no
+ Linux, `df -h .`) e, com menos de 5 GB livres, pare e avise.