# "Direto ao Ponto": arquitetura da série de vídeos longos (~10 min, 16:9)

Proposta de como a nova série entra na plataforma **reaproveitando o motor que já existe** (cenas em GD, narração com
cache e tempo por letra, fila por cron, publicador por destino, página pública). Nada de segundo motor: o que muda é a
**orientação** (16:9), o **tamanho** (um capítulo por tarefa), o **apresentador** (PNG enviado pelo painel) e o
**pacote de efeitos** (que depois vale para todos os vídeos).

Nome da série configurável (padrão **Direto ao Ponto**), com submenu, página própria no site e identidade própria.

> **Situação (08/11/2026):** as **cinco entregas** estão prontas e descritas no `LEIA-ME.md` (seções “Série longa,
> entrega 1 de 5” a “entrega 5 de 5”): **1** (briefing, roteiro, editor e apresentador), **2** (o vídeo 16:9: um
> trecho por tarefa, apresentador com balão karaokê, montagem, SRT e capa), **3** (teaser 9:16, aprovação e
> agendamento, cron da série), **4** (os quatro destinos: YouTube com capítulos, Facebook, Instagram com o teaser ou
> o completo 9:16 numa moldura, e a seção da série no site) e **5** (efeitos especiais em todos os vídeos e o
> apresentador também nos curtos; o que mudou em relação ao plano está em “Como ficou”, na seção 7). Na entrega 2, o que mudou em relação ao plano da seção
> 4: os quadros são JPEG (não PNG) e a camada viva é redesenhada **a cada palavra** da narração (≈ 2,5 vezes por
> segundo, no ritmo do karaokê) em vez de 8 vezes por segundo fixas — a respiração do apresentador virou um leve
> balanço por palavra; o concat dos trechos usa o demuxer do ffmpeg com o vídeo copiado e só o áudio remixado (trilha
> com ducking). Medido: ~9 s de máquina por minuto de vídeo em 720p (apresentador, karaokê e visual), 24 fps.
> Na entrega 3: o teaser é a classe `RenderTeaser` (tarefa `longo_teaser`, uma só), que reaproveita as cenas dos curtos
> (`Quadros`) e a linha do tempo deles (`Render::planejarCena`); a fala do teaser vira **blocos com legenda queimada
> sobre painéis** (título + ícone, “Neste episódio” com os capítulos, “Você leva”), as frases do capítulo 1 saem uma
> por slide com a tela do slide como título, e a chamada final usa o cartão “VÍDEO COMPLETO · LINK NA BIO” com o
> título; o **ding** é sintetizado no próprio ffmpeg (dois senos com decaimento, mixados antes da trilha) e obedece ao
> `fx.nivel`; o teaser entra na fila sozinho ao fim da montagem quando `serie.instagram = teaser`. A aprovação cria
> as publicações pelo `Publicador::pedir`, que passou a aceitar **data e hora** (`publicacoes.longo_id` liga cada uma
> ao episódio); a publicação no **site** no horário e as transições agendado → publicando → publicado / erro por
> destino ficam no `Longos::tick()`, chamado em cada ciclo da fila ao lado do `Publicador::tick()`; o **episódio
> semanal** usa `serie.semanal_criado_em` para não repetir no mesmo horário, nasce com `longos.automatico = 1` e sem
> usuário, e a **cadeia automática** (briefing → roteiro → vídeo → teaser → aprovação) é decidida pelo estado no banco
> a cada ciclo, não por ganchos nas tarefas (robusta a worker reiniciado); o modo automático também aprova episódios
> criados à mão que ficam prontos. A página pública já usa **player 16:9** para o vídeo horizontal (parte da
> entrega 4 antecipada); a seção própria da série no site e a categoria/sufixo do YouTube vieram na entrega 4, e os
> efeitos na 5. Diferenças do que foi feito em relação ao plano abaixo: o menu da série fica no nível principal do
> painel (não dentro de “Episódios e roteiros”); o briefing e o roteiro são editados em **texto com rótulos**
> (convertido para JSON ao salvar); as tarefas da série chamam-se `longo_briefing`, `longo_briefing_livre`,
> `longo_melhorar`, `longo_roteiro`, `longo_trecho`, `longo_montar` e `longo_teaser` (a revisão “sem enrolação” é uma
> chamada `longo_revisao` dentro da tarefa do roteiro); a tabela `longos` guarda também as aulas usadas no modo
> semana (`fontes`), `automatico`, `publicado_em` e `avisos` (migração 013); o apresentador pode ser enviado no canal
> **e** como padrão da plataforma.

---

## 1. O que já existe e onde é reaproveitado

| Peça atual | O que faz hoje (vídeos curtos 9:16) | Na série longa |
|---|---|---|
| `Tela` | primitivas GD: fontes, cores do canal, cartões, pills, ícones, fade/deslize, WebP/PNG | **igual**; ganha `sombra()`, `brilho()`, `punchIn()` e desenho do balão de fala |
| `Quadros` (1080×1920) | as cenas do curto (abertura, impacto, gancho, título, bloco, exemplo, resumo, quiz, fim) e os 11 **modelos de cena** (`Cenas::MODELOS`) | nova classe `QuadrosLargos` (1920×1080) com as cenas da série; os **modelos de cena viram o "visual do capítulo"** desenhado no cartão da direita, com o mesmo código dos modelos (`mLista`, `mGrafico`, `mComparacao`…) parametrizado por área |
| `Cenas` | lista fechada de modelos e ícones, validação com correção | **igual** (é o que a IA escolhe em `capitulos[n].v`) |
| `Roteiro` | schema JSON, pedido à IA, validação, `[confirmar]`, palavras proibidas, sequência de cenas e duração estimada | nova classe `RoteiroLongo` com o schema da série, o pedido, a validação e o **texto editável ↔ JSON**; as regras e as proibidas do canal são as mesmas |
| `Voz` | narração por cena (ElevenLabs/OpenAI), cache por texto+voz, `inicios` por letra (ElevenLabs `with-timestamps`) | **igual**, um WAV por **trecho**; os `inicios` por letra alimentam o **balão karaoke** (palavra que acabou de aparecer em destaque) |
| `Render` | planeja cada cena (eventos → estados → PNG), monta a lista do ffmpeg, junta narração + trilha com ducking, cron de montagem (`bin/montar.php`) quando o PHP não roda o ffmpeg | nova classe `RenderLongo` com o **mesmo plano por eventos**, mais a **camada de vida** (8 quadros/s) e um MP4 por trecho; a montagem final é `concat` sem reencodar o vídeo; o cron de montagem continua valendo |
| `Capa` | capas 16:9 e 9:16 nos modelos do canal | capa 16:9 do episódio a partir do quadro final da cena do título; capa 9:16 do teaser pelo gerador atual |
| `Legenda` | legenda por destino (limites, hashtags, "link na bio") | **igual** para o teaser e o vídeo completo; a descrição do YouTube ganha os **capítulos com timestamps** |
| `Publicador` | fila por destino, YouTube com upload retomável (PUT em pedaços, 308), Facebook `/videos` com `file_url` e renovação no 190, Instagram Reels, página pública | **igual**: o episódio longo é um `videos` de tipo **longo** e o teaser um `videos` de tipo **teaser**; cada um publica pelos caminhos já testados (o YouTube deixa de ser Short sozinho: 16:9 e > 3 min) |
| `Fila` + `bin/worker.php` | uma tarefa por vez, trava, progresso, tentativas, Reagendar, avisos por e-mail | tipos novos de tarefa (abaixo); **um capítulo por tarefa** |
| `Catalogo` / site | catálogo, página do vídeo, player próprio/YouTube/rede, JSON-LD, sitemap, views somadas | seção própria da série, capítulos listados, "Direto ao Ponto · 10 min", player 16:9 |
| `Biblioteca` | todos os MP4, usos e espaço | registra o MP4 final, os trechos (apagáveis depois da montagem) e o teaser |
| `Avisos` (Etapa 7) | e-mail de tarefa/publicação com erro | **igual** (os tipos novos entram em `tarefa_erro`) |

---

## 2. Banco de dados (migração `011_longos.php`, idempotente)

### Tabela `longos` (um episódio da série)

| Coluna | Tipo | Para quê |
|---|---|---|
| `id` | int | |
| `uid` | varchar(40) único | `AAAA-MM-DD-dap-xxxxxx` (dap = sigla da série) |
| `canal_id` | int | canal dono (voz, cores, fontes, ícones, regras, hashtags) |
| `modo` | enum(semana, tema) | **Semana em 10** ou **Tema livre** |
| `tema`, `orientacoes` | text | o que eu digitei |
| `semana_de`, `semana_ate` | date | no modo semana: o período resumido |
| `fontes` | json | ids dos vídeos curtos usados no resumo da semana (título, pontos, exemplo, resumo de cada um) |
| `briefing` | json | editável no painel ("Salvar briefing", "Melhorar com IA") |
| `roteiro_id` | int → `roteiros` | **versões**, como nos curtos (`roteiros.origem` = ia, revisao, editor); nada é apagado |
| `capitulos` | json | por trecho: `n`, `arquivo` (MP4 do trecho), `duracao`, `narracao` (WAV), `inicio` (timestamp acumulado), `quadros`, `tempo_maquina` |
| `arquivo`, `bytes`, `duracao` | | MP4 final 16:9 (também em `videos.arquivo` do vídeo longo) |
| `capa_id` | int → `capas` | capa 16:9 |
| `teaser_video_id` | int → `videos` | o teaser é um vídeo 9:16 da plataforma (tipo teaser), com capa própria e publicações próprias |
| `video_id` | int → `videos` | o vídeo longo (tipo longo) |
| `resolucao` | enum(720, 1080) | |
| `status` | varchar | rascunho → briefing → roteiro → gerando → pronto (aguardando aprovação) → agendado → publicando → publicado / erro |
| `progresso` | json | `{trecho, de, pct, mensagem}` para a barra do painel |
| `erro` | text | o que fazer |
| `aprovado_por`, `aprovado_em`, `publicar_em` | | aprovação e agendamento |
| `criado_por`, `criado_em`, `atualizado_em`, `terminado_em` | | |

A **publicação por destino** não ganha JSON próprio: usa a tabela `publicacoes` (uma linha por destino por tentativa,
"registros por destino não se sobrescrevem"), ligada ao `video_id` (YouTube, Facebook, Instagram completo) ou ao
`teaser_video_id` (Instagram teaser).

### Mudanças em tabelas que existem

- `videos.tipo` enum(**curto**, longo, teaser), padrão curto; `videos.longo_id`; o vídeo longo tem `largura/altura`
  1920×1080 (ou 1280×720) e `duracao_seg` ~600; a aba Vídeos mostra o tipo.
- `canais.apresentador` (arquivo PNG) e `canais.apresentador_lado` (esquerda/direita; o PNG é espelhado quando preciso
  para a mão aberta apontar para o conteúdo); ajustes globais `apresentador.arquivo` (padrão para canais sem o seu) e
  `fx.nivel` (tudo / leve / nenhum).
- `renders` continua sendo o histórico de versões dos curtos; o longo guarda as suas versões em `longos.capitulos`
  (por trecho) e em `videos.render_id` apontando para uma linha de `renders` com `tipo = longo` (para a Biblioteca e
  o "usar esta versão" funcionarem igual).
- Ajustes da série (`serie.*`): nome, ativa, modo semanal ligado, dia/hora de gerar (sáb 08:00) e de publicar
  (dom 10:00), automático, resolução, duração alvo (6–15, padrão 10), capítulos (3–7, padrão 5), destino do Instagram
  (teaser / completo / nada), revisão "sem enrolação", destinos ligados.

---

## 3. Fila: tipos de tarefa

| Tipo | Dados | O que faz | Tempo típico |
|---|---|---|---|
| `longo_briefing` | longo_id | briefing pela IA a partir do tema/orientações **ou** das aulas da semana (modo semana: lê os roteiros dos curtos publicados nos últimos 7 dias) | 20–60 s |
| `longo_briefing_livre` | canal_id, texto | "Melhorar com IA (briefing de fatos)" antes de criar o episódio: devolve o briefing no próprio campo (o episódio nasce com ele e vai direto ao roteiro) | 20–60 s |
| `longo_melhorar` | longo_id, instrução | "Melhorar com IA" com instrução ("acrescente 3 fatos históricos"): a IA recebe o briefing atual com as minhas edições e devolve só o que mudou | 20–60 s |
| `longo_roteiro` | longo_id | roteiro JSON validado; se a revisão "sem enrolação" estiver ligada, a 2ª passada acontece na mesma tarefa (mantém a estrutura, corta repetição e frases vazias) | 40–120 s |
| `longo_trecho` | longo_id, n | **um trecho por tarefa**: 0 = abertura + gancho + título; 1..N = capítulos; N+1 = resumo + exercício + fim. Narração do trecho (cache), plano, quadros, camada de vida, MP4 do trecho | 60–120 s por capítulo em 720p |
| `longo_montar` | longo_id | `concat` dos trechos sem reencodar o vídeo; áudio = narrações emendadas + trilha com ducking; capa 16:9; registro na biblioteca; descrição com capítulos | 20–60 s |
| `longo_teaser` | longo_id | teaser 9:16 (≤ 85 s) com capa própria, como um render curto normal | 60–90 s |
| `publicar` (já existe) | video_id, destino | YouTube / Facebook / Instagram / site, um por destino | como hoje |

Regras da fila continuam: uma tarefa por vez, trava em `storage/fila.lock`, progresso visível, erro com o que fazer,
tentativas, aviso por e-mail. O **cron da série** entra no `tick` que já roda a cada ciclo: cria o episódio semanal no
dia/hora configurado (quando o modo semanal está ligado) e publica os episódios **aprovados** no horário (mesmo com a
criação semanal desligada).

Quando o PHP do site não roda o ffmpeg, cada `longo_trecho` deixa os quadros e a narração prontos e o **cron de
montagem** (`bin/montar.php`, o mesmo de hoje) codifica o trecho; a montagem final idem.

---

## 4. Cenas e tempos (10 min, 5 capítulos, 1920×1080, 24 fps)

Ritmo de fala: 2,5 palavras/s (o mesmo do motor atual). A IA recebe um **orçamento de palavras** por parte (≈ 1.500
no total para 10 min); a validação avisa quando passa ou falta.

| Trecho | Cena | O que aparece | Dura |
|---|---|---|---|
| 0 | **Abertura tecnológica** | grade, cantoneiras, anéis, varredura, nome da marca digitado, *woosh* + *ding* | 4 s |
| 0 | **Gancho** | frase grande entrando linha a linha + ícone do tema + pill "5 capítulos · ~10 min"; apresentador fala | ~14 s (≈ 35 palavras) |
| 0 | **Título + promessa** | título digitado com cursor, 3 cartões "o que você leva" entrando no ritmo da fala, ícone com anel pulsando | ~18 s (≈ 45 palavras) |
| 1–5 | **Cartão de capítulo** | pill, número grande com punch-in e brilho, linha de luz crescendo, título deslizando, ícone pulando; *woosh* + *ding* | 1,6 s |
| 1–5 | **Slides** (3 a 5 por capítulo) | frase atual grande entrando; as anteriores pequenas com ✓; "+ k pontos neste capítulo"; **visual do capítulo** (modelo de cena) animando no cartão da direita; apresentador com o balão karaoke | 16–24 s cada (2 a 4 frases, ≈ 40–60 palavras) |
| 1–5 | *total do capítulo* | | **~85–100 s** |
| 6 | **Resumo** | 4 cartões numerados entrando no ritmo da fala | ~20 s |
| 6 | **Exercício** | cartão grande + ícone de alvo | ~14 s |
| 6 | **Fim** | assinatura da série, pills Inscrever-se / Curtir / Comentar, aviso "conteúdo educativo", confete | ~10 s |
| | **Total** | 36 s + 5 × ~90 s + 44 s | **≈ 9–10 min** |

Barra de progresso dos capítulos no rodapé o tempo todo (o segmento do capítulo enche em tempo real). Fusão entre
frases; varredura com borda de luz na troca de seção; flash na saída da abertura.

**Teaser 9:16 (≤ 85 s):** abertura dos curtos (2 s) → gancho com a `teaser.fala` (≤ 140 palavras, ≈ 55 s) → até 3
frases do capítulo 1 (≈ 15 s) → chamada "VÍDEO COMPLETO NO YOUTUBE · link na bio" com *ding* (5 s). Se passar de
85 s, a plataforma corta as frases do capítulo 1 e, se ainda passar, avisa para encurtar a fala do teaser.

### Apresentador

- **Upload pelo painel** (pedido novo): em **Canais > Identidade > Apresentador** (e um padrão global na configuração
  da série): PNG com fundo transparente, até 4 MB, pelo menos 800 px de altura. A plataforma recorta as margens
  transparentes, guarda o original e versões prontas (16:9 e 9:16), e mostra uma **prévia do enquadramento** nos dois
  formatos. Opção "espelhar" (para a mão aberta apontar para o conteúdo) e lado (esquerda/direita). Sem avatar: a
  narração escrita vira um **cartão** de legenda (como hoje).
- **No 16:9:** embaixo à esquerda (≈ 28% da altura); o **balão de fala** branco com rabinho apontando para ele, as
  palavras aparecendo em ~1,6 s acompanhando a voz (pelos `inicios` por letra); os elementos da cena se afastam dele
  sozinhos (área útil calculada a partir do retângulo do avatar).
- **No teaser 9:16:** maior, colado embaixo; o balão fica **em cima dele**, na largura toda, rabinho para a cabeça.
- **Vida:** respiração (escala 1–1,5% em 3 s) sempre; enquanto a narração toca, balanço lateral e vertical curtos.

### Custo controlado (como o motor atual faz, e um passo além)

- Cada cena é redesenhada por inteiro **só enquanto anima** (2–5 s, por estados, como hoje: um PNG por estado).
- Depois, o quadro pronto é repetido e só a **camada de vida** é composta por cima, **8 vezes por segundo**:
  avatar respirando, ícone flutuando, anel pulsando, visual animando, barra viva, partículas.
- Os quadros vão ao ffmpeg por **pipe MJPEG** (`popen`); sem `popen`, caem para arquivos JPEG numerados na pasta do
  trecho (e o cron de montagem codifica).
- Referência a medir na entrega 2: 5 min de vídeo ≈ 6 min de máquina em 720p, um capítulo por tarefa.

---

## 5. Roteiro: formato JSON e texto editável

```json
{
  "titulo": "até 70", "descricao": "…", "tags": ["…"],
  "gancho":   {"tela": "frase grande", "fala": "…"},
  "promessa": {"itens": ["…", "…", "…"], "fala": "…"},
  "capitulos": [
    {"titulo": "…", "v": {"modelo": "grafico", "destaque": "barras", "itens": ["3 meses: 3", "6 meses: 6"], "legenda": "…"},
     "slides": [{"tela": "frase curta", "fala": "2 a 4 frases"}, {"tela": "…", "fala": "…"}, {"tela": "…", "fala": "…"}]}
  ],
  "recap":     {"itens": ["…", "…", "…", "…"], "fala": "…"},
  "exercicio": {"tela": "…", "fala": "…"},
  "fim":       {"fala": "…"},
  "teaser":    {"fala": "até 140 palavras"}
}
```

Validação no servidor (`RoteiroLongo::validar`): limites de tamanho, 3 itens na promessa, 4 no recap, 3–5 slides por
capítulo, N capítulos conforme a configuração, `v` corrigido por `Cenas::normalizar`, palavras proibidas do canal,
`[confirmar]` pendente bloqueia a publicação, orçamento de palavras. A IA devolve JSON no modo estrito (como hoje).

O painel mostra o roteiro como **texto** e volta para JSON ao salvar (com mensagens dizendo o que corrigir):

```
[ABERTURA]
- tela: Reserva de emergência: quanto, onde e quando
FALA: …

[VOCÊ LEVA]
- Quanto guardar, com a sua conta
- Onde deixar sem perder liquidez
- Quando usar (e quando não)
FALA: …

[CAPÍTULO 1] O que é (e o que não é) a reserva
VISUAL: mito_verdade | a: "Reserva é investimento" | b: "Reserva é segurança"
- tela: Dinheiro parado de propósito
FALA: …
- tela: Não é para a viagem
FALA: …

[RESUMO] … [EXERCÍCIO] … [FIM] … [TEASER]
```

---

## 6. Painel

- **Submenu da série** (nome configurável) dentro de "Episódios e roteiros": **Configuração**, **Novo episódio**
  (modo semana/tema, tema, orientações, "Melhorar com IA (briefing de fatos)", caixa "o texto acima já é o briefing",
  "Criar episódio") e **Episódios** em cartões: status colorido (rascunho → briefing → roteiro → gerando com
  progresso → pronto/aguardando aprovação → agendado → publicando → publicado / erro com o que fazer), players do
  vídeo e do teaser, briefing e roteiro editáveis, botões conforme o status ("Gerar roteiro", "Gerar o vídeo",
  "Gerar o vídeo de novo" (reaproveita roteiro e narração), "Aprovar e agendar", "Publicar agora", "Refazer teaser",
  "Voltar a rascunho", "Arquivar" (nada é apagado)).
- **Aba Vídeos** mostra os longos e os teasers com o tipo e o status por destino, como os curtos (Etapa 6).
- **Canais > Identidade**: upload do apresentador com prévia.
- **Efeitos especiais**: um nível só (tudo / leve / nenhum) na configuração da série, valendo para todos os vídeos.

---

## 7. Efeitos especiais (módulo `Fx`, entrega 5, para todos os vídeos)

| Efeito | Onde é feito | Nível |
|---|---|---|
| Câmera viva (zoom 1,5–5,5 % + deriva) | ffmpeg: `scale=…:eval=frame` + `crop` com `sin(t)`, fase contínua entre trechos (`t + t0`); testado uma vez em Diagnóstico; no cron de montagem vai no pedido e refaz sem ele se falhar | tudo |
| Fundo vivo (≈ 40 partículas + 3 feixes, nunca sobre o balão) | camada de vida (GD, 8/s) | tudo |
| Transições (fusão, varredura com borda de luz, flash) | estados da cena (GD) | tudo e leve |
| Cartão de capítulo/bloco (1,3–1,9 s) | estados da cena | tudo e leve |
| Punch-in, brilho, sombra | `Tela` | tudo e leve |
| Barra de progresso viva | camada de vida | tudo e leve |
| Apresentador falando | camada de vida | tudo e leve |
| Confete, karaoke | camada de vida / balão | tudo e leve |
| Efeitos sonoros sintetizados (*woosh*, *pop*, *ding*) | gerados em PHP (ruído com envelope, seno curto, seno decaindo), mixados no WAV abaixo da voz | tudo e leve |

Estimativa do plano: +10 % a +20 % de máquina; MP4 ~50 % maior com a câmera.

**Como ficou (entrega 5).** O que precisa de movimento contínuo foi para o **ffmpeg**, não para uma camada GD a 8/s:
o **fundo vivo** (máscara pela diferença entre o quadro e o fundo do canal em ¼ da resolução + partículas PNG num laço
de 6 s), a **barra viva** (trilho, faixa que enche e ponto de luz, por cima da câmera) e o **apresentador falando**
(respira e balança nos trechos de fala). Os quadros GD continuam por estado: transições, cartões, karaokê (também na
legenda dos curtos), confete (15 desenhos/s nos curtos, 12 na série), sombra e brilho. Os sons são sintetizados em PHP
e somados ao WAV da narração. Se o ffmpeg não tiver os filtros quadro a quadro, a montagem cai para um **modo simples**
(sem câmera e fundo vivo) com aviso. O nível **nenhum** reproduz os quadros, o WAV e o comando do ffmpeg de antes, byte a
byte. **Custo medido** (2 núcleos, voz do cache, com o apresentador; nenhum → leve → tudo): curto de 2:02 55 s → 81 s → 117 s (7,4 → 9,4 → 22,2 MB); teaser de 54 s 19 s → 36 s → 52 s (3,5 → 4,2 → 9,9 MB); série de 1:41 em 720p 35 s → 41 s → 54 s (5,4 → 5,8 → 11,6 MB) — mais que a estimativa. A câmera é o que pesa: todo quadro muda e o x264 trabalha
bem mais (o MP4 fica ~3× maior); o leve tira só a câmera e o fundo vivo.

---

## 8. Entregas (cada uma com LEIA-ME, testes e telas)

1. **Briefing + roteiro + editor + apresentador**: migração 011, submenu e configuração, Novo episódio (tema livre
   e Semana em 10 pelo que saiu nos últimos 7 dias), briefing com "Melhorar com IA" e "briefing de fatos", roteiro
   JSON validado com revisão "sem enrolação", editor texto ↔ JSON, cartões de episódio, **upload do apresentador com
   prévia 16:9 e 9:16**.
2. **Render 16:9 por capítulo + montagem + capa**: `QuadrosLargos`, apresentador com balão karaoke, um trecho por
   tarefa, camada de vida, MP4 por trecho, `concat` sem reencodar, trilha com ducking, capa, progresso, "Gerar o vídeo
   de novo", biblioteca, medição de tempo por capítulo.
3. **Teaser + aprovação/agendamento**: teaser 9:16 com capa própria, "pronto – aguardando sua aprovação" com os dois
   players, Aprovar e agendar / Publicar agora / Refazer teaser / Voltar a rascunho / Arquivar, modo automático, cron
   da série (episódio semanal no dia/hora; publicação dos aprovados no horário).
4. **Publicação nos 4 destinos + página pública**: YouTube (não Short, descrição com capítulos `00:00 Abertura /
   00:40 Capítulo 1…`, categoria e sufixo do canal), Facebook `/videos`, Instagram (teaser como Reel, ou o completo, ou
   nada), seção da série no site com capítulos e "Direto ao Ponto · N min"; aba Vídeos com o tipo longo.
5. **Efeitos especiais para todos os vídeos**: módulo `Fx` com o nível no painel, aplicado aos curtos, ao teaser e à
   série; apresentador também nos curtos (opcional por canal: o balão no lugar da legenda queimada).

---

## 9. Roteiro de um episódio de exemplo

Tema escolhido para o exemplo (troque à vontade): **Reserva de emergência: quanto guardar, onde deixar e quando
usar**, no canal "Bolsa para Iniciantes" (5 capítulos, ~10 min, ≈ 1.450 palavras faladas).

```
[ABERTURA]
- tela: Reserva de emergência: quanto, onde e quando
FALA: Sete em cada dez famílias brasileiras não conseguiriam cobrir uma despesa inesperada de dois mil reais sem se
endividar [confirmar]. Não é falta de disciplina: é falta de um colchão. Em dez minutos, você sai daqui sabendo
quanto guardar, onde deixar e quando usar.

[VOCÊ LEVA]
- Quanto guardar, com a sua própria conta
- Onde deixar sem perder liquidez
- Quando usar (e quando não)
FALA: Este é o Direto ao Ponto: um tema, sem enrolação. Hoje você leva três coisas: a conta de quanto a sua reserva
precisa ter, os critérios para escolher onde deixar esse dinheiro, e uma regra simples para decidir quando usar e
quando deixar quieto. Vamos por partes.

[CAPÍTULO 1] O que é (e o que não é) a reserva
VISUAL: mito_verdade | a: "Reserva é um investimento para render" | b: "Reserva é segurança: tem que estar disponível"
- tela: Dinheiro parado de propósito
FALA: Reserva de emergência é dinheiro separado para imprevistos: perder o emprego, um conserto do carro, um problema
de saúde. Ela existe para você não precisar de empréstimo caro no pior momento. Por isso ela fica parada de
propósito, e isso não é desperdício.
- tela: Não é para a viagem
FALA: A reserva não é o dinheiro da viagem, do celular novo nem da entrada do apartamento. Esses são objetivos, e cada
um merece um pote separado. Misturar os dois é o jeito mais comum de ver a reserva sumir sem nenhuma emergência.
- tela: Antes de qualquer outro investimento
FALA: Ela vem antes de qualquer investimento com risco. Sem reserva, qualquer queda do mercado vira um problema real,
porque você pode ser obrigado a vender na baixa para pagar uma conta. Com reserva, você tem tempo. E tempo é o que
protege quem investe.

[CAPÍTULO 2] Quanto guardar: a conta dos 3 a 6 meses
VISUAL: grafico | destaque: barras | itens: "3 meses: 3", "6 meses: 6", "12 meses: 12" | legenda: múltiplos do custo mensal
- tela: Comece pelo seu custo de vida
FALA: A regra mais usada é guardar de três a seis meses do seu custo de vida. Custo de vida, não renda. Some o que
você gasta por mês para viver: moradia, comida, transporte, contas, saúde. Esse número é a base de tudo.
- tela: 3 meses: emprego estável
FALA: Se a sua renda é estável, com carteira assinada e contas previsíveis, três meses costumam ser um ponto de
partida razoável. É o tempo médio para se reorganizar depois de um imprevisto grande [confirmar].
- tela: 6 a 12 meses: renda variável
FALA: Se você é autônomo, tem comissão ou renda que oscila, a conta sobe para seis meses, e há quem prefira doze. O
raciocínio é simples: quanto menos previsível a entrada, maior o colchão. Não existe número certo para todo mundo,
existe o seu.
- tela: Exemplo: R$ 3.500 por mês
FALA: Exemplo: uma pessoa gasta três mil e quinhentos reais por mês. Três meses são dez mil e quinhentos; seis meses,
vinte e um mil. Parece muito, e é. Mas a meta não precisa ser batida este ano. Precisa ser começada esta semana.

[CAPÍTULO 3] Onde deixar: liquidez, segurança e rendimento
VISUAL: comparacao | a.titulo: "O que importa" | a.itens: "Sacar no mesmo dia", "Risco baixíssimo", "Render perto do básico" | b.titulo: "O que não importa" | b.itens: "Ganhar do mercado", "Produto da moda", "Prazo longo"
- tela: Liquidez primeiro
FALA: Onde deixar a reserva se decide por três critérios, nesta ordem: liquidez, segurança e rendimento. Liquidez é
poder sacar no mesmo dia, sem perda. Emergência não espera o vencimento de ninguém.
- tela: Segurança: risco baixíssimo
FALA: Segurança significa risco de perda muito baixo. No Brasil, títulos públicos de curto prazo e aplicações
cobertas pelo Fundo Garantidor de Créditos, que protege até duzentos e cinquenta mil reais por pessoa por instituição
[confirmar], são os exemplos clássicos de produtos pensados para esse papel.
- tela: Rendimento: só o básico
FALA: Rendimento vem por último. A reserva não precisa ganhar do mercado; precisa acompanhar o juro básico e vencer a
inflação, para não derreter. Promessa de rendimento alto na reserva é sinal de risco escondido.
- tela: Compare, não copie
FALA: Compare as opções com esses três critérios e com o seu caso. Este vídeo é educativo e não substitui uma
orientação individual: para a sua situação, vale conversar com um profissional de confiança.

[CAPÍTULO 4] Como montar sem sufocar o orçamento
VISUAL: passos | itens: "Defina a meta em reais", "Separe um valor fixo por mês", "Automatize a transferência", "Guarde o que sobrar e o extra", "Revise a cada 6 meses"
- tela: Meta em reais, não em meses
FALA: Transforme a conta do capítulo dois em um número em reais e escreva em algum lugar visível. Meta vaga não
puxa comportamento; meta escrita, sim.
- tela: Um valor fixo, no dia do pagamento
FALA: Escolha um valor fixo que caiba no seu mês e transfira no dia em que o dinheiro entra, antes de gastar. Pode ser
pequeno. A constância vale mais do que o tamanho da parcela.
- tela: Automatize
FALA: Automatize a transferência no banco ou na corretora. O que depende de lembrar, falha. O que é automático,
acontece. Décimo terceiro, restituição e qualquer extra podem acelerar a meta.
- tela: Revise a cada seis meses
FALA: A cada seis meses, revise: o custo de vida mudou? A renda ficou mais ou menos previsível? Ajuste a meta. A
reserva acompanha a sua vida, não o contrário.

[CAPÍTULO 5] Quando usar (e quando não)
VISUAL: checklist | itens: "É inesperado?", "É necessário agora?", "Não dá para pagar com a renda do mês?", "Não é um desejo disfarçado?"
- tela: Quatro perguntas antes de sacar
FALA: Antes de usar a reserva, faça quatro perguntas. É inesperado? É necessário agora? Não dá para pagar com a renda
do mês? E a mais honesta: não é um desejo disfarçado de urgência? Quatro sins: use sem culpa.
- tela: Usou? Reponha primeiro
FALA: Se usou, a prioridade seguinte é repor. Volte ao valor fixo mensal, pause aportes com risco até recompor e
trate a reposição como a primeira conta do mês.
- tela: Não é para oportunidade
FALA: Reserva não é para aproveitar oportunidade de investimento nem promoção. Oportunidade que exige o seu colchão
não é oportunidade: é risco com outro nome.

[RESUMO]
- A reserva é segurança, não investimento
- Três a seis meses do seu custo de vida
- Liquidez, segurança e só depois rendimento
- Use com quatro perguntas e reponha primeiro
FALA: Resumindo. A reserva é segurança, não investimento. O tamanho são três a seis meses do seu custo de vida, mais
se a renda oscila. Para escolher onde deixar, a ordem é liquidez, segurança e só depois rendimento. E, na hora de
usar, quatro perguntas e a reposição como prioridade.

[EXERCÍCIO]
- tela: Hoje: some o seu custo de vida e multiplique por 3
FALA: Exercício de hoje: some tudo o que você gasta por mês para viver e multiplique por três. Esse é o primeiro
número da sua reserva. Escreva nos comentários só o múltiplo que faz sentido para você: três, seis ou doze.

[FIM]
FALA: Esse foi o Direto ao Ponto. Se ajudou, deixe o like e se inscreva, porque toda semana tem um tema novo sem
enrolação. Até o próximo.

[TEASER]
FALA: Sete em cada dez famílias não conseguiriam pagar uma despesa inesperada de dois mil reais sem se endividar.
Reserva de emergência resolve isso, mas quase ninguém sabe quanto guardar nem onde deixar. Em dez minutos eu mostro
a conta dos três a seis meses do seu custo de vida, os três critérios para escolher onde deixar o dinheiro e as
quatro perguntas para decidir quando usar. Vídeo completo no YouTube, link na bio.
```

Tempos estimados pelo ritmo do motor (2,5 palavras/s + respiro): trecho 0 ≈ 38 s; capítulos ≈ 68 s, 92 s, 95 s, 72 s,
66 s; fechamento ≈ 46 s → **≈ 8 min 0 s** com 3–4 slides por capítulo. Para chegar aos 10 min, a IA recebe o orçamento
de palavras e tende a 4–5 slides por capítulo; o validador mostra a duração estimada e avisa quando foge do alvo.
O teaser ≈ 2 + 56 + 15 + 5 = **78 s**.

Os três `[confirmar]` do exemplo (pesquisa das famílias, "tempo médio para se reorganizar" e o valor do FGC) ficam
pendentes no painel até alguém confirmar ou remover, como nos curtos.
