Vídeo de curso/treinamento a partir de slides
Leia video-studio primeiro. Comprovado em um curso de marketing de 22 minutos construído a partir de um PDF (a solicitação foi "edição normal, sem motion graphics pesados", voz masculina indiano-inglês). Recrie com a estrutura abaixo: edit/course.py, render.py, mix.py.
Pipeline
- Slides → imagens:
pdftoppm -r 200 -png raw/deck.pdf work/slides/p(ou exporte PPTX/Keynote para PDF primeiro). Olhe cada página. Para construções progressivas, encontre as caixas de cada parte (título, bullet 1..n, gráfico, imagem) — visualmente a partir da imagem ou com projeções de linhas/colunas PIL dos pixels não-fundo — e armazene por slide. - Roteiro (
edit/course.py): por slide: parágrafosvo+reveals[{box:[x,y,w,h], cue:"palavra falada"}] +zoomopcional. Escreva para ensinar, não para ler o slide: introduza a lição (por que é importante), uma ideia por parágrafo, exemplos, recap ao final de cada módulo, ~140–150 palavras/min. Hinglish se o público quiser. Mostre o roteiro e obtenha aprovação antes de qualquer VO (custos de créditos). - Verificação de orçamento:
eleven.py credits; um curso de 22 min ≈ 18k caracteres — o Starter tem 40k/mês, então regravar tudo no mesmo mês pode não caber. Informe o usuário sobre o custo. VO de teste gratuito comsaydo macOS apenas para testar o tempo. - VO: por parágrafo
eleven.py tts "<texto>" work/vo/<slide>_<n>.mp3 --voice 05QRrdNgiglhuYOaTQvw --speed 1.05 --words work/vo/<slide>_<n>.json(Prem, aprovada). Em cache por texto — editar um parágrafo gera custo apenas para aquele. Corrija pronúncias com respelling no texto. Concatene com 0,35 s entre parágrafos e 0,8 s entre slides; construa o JSON da linha do tempo (início/fim do slide, tempos das palavras-chave). - Renderização (
edit/render.py): cada slide começa limpo (apenas título), e cada parte aparece com fade/deslizamento na palavra-chave; câmera com easing lento (1,00 → 1,04) e zoom na parte sendo discutida para slides densos; transições push/deslizamento entre slides (0,4 s), rótulo de capítulo no canto superior esquerdo, barra de progresso fina, número do slide. Nítido: renderize slides a partir dos PNGs de 200 dpi em 1920x1080, sem desfoque. Baixa prioridade, em chunks por módulo para que uma renderização interrompida possa ser retomada. - Mixagem (
edit/mix.py): cadeia de voz (highpass 80, compressão leve), música de fundo −20 dB com ducking sidechain (assets/music/*underscore*), SFX suave nas revelações (pop/swish −14 dB) e transições (whoosh −12 dB) — mais leve que reels. Master −14 LUFS,--tp -2.0. - Preview → aprovação → completo: primeiro módulo em
--scale 0.5, receba feedback, depois tudo.qc.py --platform youtube. - Empacotamento: capítulos do YouTube (um por grupo de slides/módulo), descrição com esboço da aula, arquivos por módulo se for plataforma de curso
(
exports/vN_module_<n>_<slug>.mp4), miniatura (thumbnail-designer), SRT opcional (captions_ass.py --style cleanou a partir das palavras do VO).
Regras
- Visuais seguem a fala: nada aparece antes de ser mencionado; nada importante aparece sem ser mencionado.
- Mantenha o design original do deck (é a marca do cliente); adicione apenas a câmera, revelações, rótulo de capítulo e barra de progresso.
- Números e afirmações apenas do deck/usuário. Soletre nomes de marcas corretamente na tela, mesmo se respelling para a voz.
- Se o usuário for dormir e dispensar aprovações, ainda mantenha previews e notas para que ele possa revisar pela manhã.