Criador de Vídeos Podcast Nano
Uma pipeline de 7 etapas para uso pessoal: pesquisa ∥ materiais → roteiro → TTS → verificação de áudio → vídeo → verificação de prévia → renderização 4K ∥ kit de publicação. Sem scripts empacotados, sem backends fixos, sem modelos. O skill é dono da lógica e executa autonomamente por padrão; o backend TTS e a ferramenta de vídeo são escolhidos por vídeo (veja Seleção de ferramentas por vídeo).
O que faz isso funcionar independentemente da escolha da ferramenta — os três invariantes:
- Checkpoints nunca são pulados — mas quem verifica é política. Três checkpoints existem: roteiro (após Etapa 2), áudio (após Etapa 3), prévia (antes da renderização). O verificador padrão é o próprio agente (auto-verificação, definida por checkpoint); o AGENTS.md/CLAUDE.md de um projeto pode atualizar qualquer checkpoint para uma barreira humana — veja Política de supervisão.
- Áudio é o relógio mestre. A duração do vídeo final deve corresponder à narração dentro de ±0,5s (
ffprobeambos). Os visuais são cortados para o áudio, nunca o contrário. - Uma mudança no roteiro invalida tudo a jusante. Editar o roteiro → re-executar o checkpoint do roteiro, depois TTS → checkpoint de áudio → visuais → checkpoint de prévia → renderização. Nunca corrigir temporizações manualmente.
Política de supervisão
O modo padrão é autônomo: a pipeline executa de ponta a ponta, com o agente realizando a auto-verificação de cada checkpoint. O AGENTS.md/CLAUDE.md de um projeto ativo pode substituir por checkpoint com uma linha cada:
Checkpoint 1 (roteiro): humano— parar após a Etapa 2 até que o usuário aprove o roteiro. Vale a pena: uma mudança tardia de roteiro custa uma reexecução completa.Checkpoint 2 (áudio): humano— o usuário ouve o áudio completo antes dos visuais. Vale a pena quando leituras incorretas de TTS são caras de detectar depois.Checkpoint 3 (prévia): humano— o usuário revisa o rascunho antes da renderização. Vale a pena para canais sensíveis a estilo.
Checkpoints não mencionados permanecem verificados pelo agente. Os arquivos de política do projeto começam a partir de AGENTS.template.md (ao lado deste SKILL.md): copie-o para a raiz do projeto de vídeo como AGENTS.md (mais uma cópia CLAUDE.md para Claude Code) e preencha os vínculos de ferramentas. O skill nunca envia ou publica nada em lugar nenhum — o kit de publicação são arquivos em disco; a publicação é sempre um ato humano fora desta pipeline.
Seleção de ferramentas (por vídeo)
Decida o backend TTS e a ferramenta de vídeo uma vez, antes da Etapa 3, nesta ordem de prioridade:
- Vínculos do projeto vencem. Um
AGENTS.md/CLAUDE.mdpreenchido no projeto ativo (veja Política de supervisão) É a especificação permanente do usuário — use-o, sem escanear, sem questionar. Se o usuário nomear uma ferramenta na sessão, isso substitui o arquivo. Se o arquivo de política estiver ausente ou ainda contiver placeholders do modelo (/absolute/path/to/...), resolva os vínculos pelas regras 2–3, depois escreva os valores resolvidos de volta no arquivo de política do projeto para que a próxima execução comece vinculada. - Detectar automaticamente skills instalados. Escaneie os skills disponíveis na sessão por qualquer coisa que possa fazer o trabalho — vídeo: skills que encapsulam uma ferramenta de autoria (Remotion, HyperFrames, CapCut, ...); TTS: qualquer skill que encapsule um mecanismo TTS. Exclua skills de pipeline de ponta a ponta (por exemplo, outras variantes de criadores de vídeos podcast, se instalados): eles são pipelines como este, não backends — invocá-los aqui aninharia fluxos de trabalho e dobraria os checkpoints. Um encaixe → use-o; vários → escolha a melhor correspondência para o idioma e as necessidades de saída do projeto. Registre a escolha em
research.md; exiba-a no resumo final. Nunca bloqueie aguardando confirmação de ferramenta. - Nada encontrado. Recurso a CLIs simples que o usuário já possui (ffmpeg + qualquer CLI TTS) e informe isso — nunca instale uma nova ferramenta sem solicitação. Se uma CLI TTS não puder emitir temporização de legendas, derive pistas dividindo o roteiro uniformemente pela duração do áudio e sinalize a aproximação no Checkpoint 2. Se uma ferramenta especificada pelo usuário estiver ausente ou não puder atingir o piso de capacidade, informe isso e passe para a regra 2 em vez de improvisar.
Piso de capacidade (aplica-se às regras 1–3): a escolha de TTS deve produzir áudio de narração mais temporização de legendas; a escolha de vídeo deve exportar um arquivo de vídeo de rascunho (para verificação no Checkpoint 3) e 4K. Prévia ao vivo é um bônus, nunca um substituto para a exportação do rascunho. Trabalhos auxiliares não precisam de seleção: pesquisa usa a busca web integrada, imagens/capa a exportação de imagem estática da ferramenta de vídeo ou qualquer ferramenta de imagem, verificações de duração usam ffprobe. Se ffmpeg/ffprobe estiverem ausentes, reporte e pare — o invariante de ±0,5s não é negociável e não é pulado para manter uma execução ativa.
Layout de trabalho
Todos os artefatos para um vídeo residem em videos/{nome}/ ({nome} = inglês minúsculo, separado por hífen). Os nomes dos arquivos de áudio/temporização se adaptam ao backend escolhido; o conjunto é o que importa:
videos/{nome}/
├── research.md # Etapa 1 — fatos + fontes
├── podcast.txt # Etapa 2 — roteiro de narração
├── podcast_audio.wav # Etapa 3 — áudio de narração (nome por backend)
├── podcast_audio.srt # Etapa 3 — temporização de legendas (ou equivalente do backend)
├── assets/ # Etapa 1 — imagens/BGM + sources.md (fonte + licença por ativo)
├── video-project/ # Etapa 5 — o que a ferramenta de vídeo produzir
├── final_4k.mp4 # Etapa 7 — renderização 3840×2160
├── cover.png # Etapa 7 — capa do vídeo
└── publish_info.md # Etapa 7 — título / descrição / tags / capítulos
Fluxo de trabalho
Verificação de ponto de entrada (antes da Etapa 1). Procure por videos/{nome}/ na raiz do projeto (ou no diretório que o usuário nomear). Se já contiver artefatos de uma sessão anterior, isso é uma iteração — retome da etapa mais antiga afetada (veja Iterando), não reexecute a Etapa 1. Só comece na Etapa 1 quando não existirem artefatos.
Etapa 1 — Pesquisa ∥ coleta de materiais
Duas saídas paralelas de uma única passagem de investigação (fatos e ativos vêm das mesmas fontes):
Pesquisa → research.md. Investigue o tópico (busca web, artigos, indicações do usuário). Destile em research.md: fatos, números e suas fontes. Cada número que o roteiro alegar deve rastrear de volta para cá — um número preciso sem fonte é fabricado; descarte-o ou atribua-o.
Materiais → assets/. Colete tudo que os visuais e a capa consumirão em videos/{nome}/assets/: imagens/ilustrações/capturas de tela por seção, logotipos de marca, BGM. Duas fontes, em ordem de prioridade:
- Fornecidos pelo usuário — arquivos que o usuário entrega ou aponta; copie para
assets/, nunca os referencie no local. - Coleta automática — material oficial primeiro (banner do produto, ficha técnica, captura de tela), senão conjuntos gratuitos/licenciados (SVG unDraw, Pixabay/Pexels, OpenMoji / Microsoft Fluent Emoji / Google Noto Emoji,
@lobehub/iconspara logotipos de marca).
Registre a URL de origem + licença de cada ativo em assets/sources.md no momento da coleta (conjuntos que exigem atribuição devem ser creditados na descrição do vídeo na Etapa 7). Nenhum ativo adequado existe para uma seção? Não fabrique uma captura de tela — recorra a um layout somente texto para essa seção (ou uma ilustração genérica de licença gratuita), registre a decisão em assets/sources.md e siga em frente; perguntar ao usuário é opcional em modo humano. Ativos ausentes podem ser adicionados a qualquer momento antes da Etapa 5.
Etapa 2 — Roteiro → podcast.txt, depois Checkpoint 1
Apenas texto falado, sem markdown. Divida o roteiro em segmentos com marcadores [SECTION:xxx|display-label] (nomes em inglês minúsculo, ex. [SECTION:hero|intro]) — uma seção por segmento de vídeo. Esta convenção de marcadores é o contrato portátil entre roteiro, fragmentação TTS e layout visual; qualquer ferramenta TTS/vídeo pode consumi-lo. Marcadores são metadados estruturais: nunca falados, nunca mostrados como texto de legenda — TTS e legendas consomem apenas o texto entre os marcadores.
Regras de estilo (independentes de idioma): veja Estilo de roteiro.
Checkpoint 1 — autorevisão do roteiro (obrigatório). Verifique o roteiro contra cada regra de Estilo de roteiro, depois reconcilie suas seções com assets/: liste seções sem ativo correspondente, colete ou recorra conforme a regra de nenhum ativo acima, e anote o que fica sem. Em modo humano (política do projeto), pare em vez disso e entregue o roteiro — NÃO execute TTS até que o usuário aprove explicitamente. Áudio, temporizações e entradas visuais derivam todos do roteiro; uma mudança tardia de roteiro custa uma reexecução completa.
Etapa 3 — TTS
Execute o backend TTS escolhido (Azure, Edge, fish, minimax, ... — o que a sessão escolheu). Produza:
- áudio de narração (WAV/MP3)
- temporização de legendas (SRT ou equivalente, texto da pista = roteiro palavra por palavra)
Higiene de pronúncia antes de sintetizar, em qualquer idioma de narração: leituras de marcas/termos que não podem ser derivadas mecanicamente (Qwen lido como seu nome de marca chinês, MoE soletrado letra por letra) vão para uma lista de aliases/fonemas de acordo com o mecanismo do backend — nunca no texto do roteiro (vazaria para as legendas).
Etapa 4 — Verificação de áudio — Checkpoint 2
Auto-verificação do agente (modo autônomo): ffprobe a duração do áudio contra uma estimativa aproximada do roteiro (taxa de fala por idioma; use apenas para detectar erros grosseiros como um arquivo silencioso ou truncado); verifique se cada token de marca/termo no roteiro tem uma entrada de alias/fonema (uma verificação de cobertura — a pronúncia real é exatamente para isso que serve o Checkpoint 2 em modo humano); verifique se há segmentos silenciosos ou cortados (silencedetect/volumedetect) que sugiram falhas de síntese. Corrija lacunas na lista de aliases e ressintetize se encontradas. Em modo humano, o usuário ouve o áudio completo; leituras incorretas → corrija a lista de aliases (não o roteiro), ressintetize, reverifique.
Etapa 5 — Fazer o vídeo
Corte os visuais com a ferramenta escolhida (Remotion, HyperFrames, CapCut, ...) para o áudio de narração, usando assets/ como pool de materiais. Os marcadores de seção de podcast.txt orientam o layout; as pistas de legendas orientam as entradas de texto. Mantenha os arquivos de rascunho em videos/{nome}/.
Etapa 6 — Verificação de prévia — Checkpoint 3
Auto-verificação do agente (modo autônomo): inspecione a exportação do rascunho (um arquivo de vídeo buscável — o piso de capacidade garante um): extraia um quadro por seção (ffmpeg -ss <tempo-meio-da-seção> -i draft.mp4 -frames:v 1) e veja cada um para estouro de layout, legendas ausentes, referências de ativos quebradas; verifique se a duração do rascunho corresponde à narração dentro de ±0,5s. Corrija e reverifique após cada mudança. Em modo humano, o usuário revisa o rascunho pessoalmente (prévia ao vivo se a ferramenta tiver, senão a exportação do rascunho); renderize apenas sob confirmação explícita ("render"), e cada rodada de mudanças precisa de nova confirmação.
Etapa 7 — Renderizar 4K ∥ kit de publicação
Execute em paralelo (a renderização é o trabalho longo de bloqueio; o kit de publicação não depende dela):
- Renderizar em 3840×2160 →
final_4k.mp4. Verifique duração vs áudio de narração dentro de ±0,5s antes de considerar concluído. - Kit de publicação →
publish_info.md(título / descrição / tags / timestamps de capítulos — cada capítulo começa no tempo SRT da primeira pista de sua seção) ecover.png(gere a partir do quadro estático da ferramenta de vídeo se disponível, senão qualquer ferramenta de imagem; pode reutilizar material deassets/). A seção de fontes de ativos depublish_info.mdcopia deassets/sources.md.
Estilo de roteiro (independente de idioma)
Proveniência: as referências completas do skill
video-podcast-maker/references/natural-narration.md(anti-sabor IA) +script-polish.md(edição profunda) são as fontes canônicas; esta é a destilação independente de idioma. Edite as regras lá primeiro, depois espelhe aqui — não bifurque uma regra e a desvie.
O idioma de narração é o que o roteiro do usuário for — esta pipeline padrão é em português, mas as regras abaixo se aplicam em qualquer registro falado de idioma. Essas regras são aplicadas no Checkpoint 1; leia cada seção em voz alta — se você hesitar, divida a frase.
- Prosa falada cotidiana, não prosa escrita. Uma ideia por frase, sujeito primeiro, sem orações aninhadas, sem — ou · como conectivos. Varie o comprimento das frases; uma leve primeira pessoa é aceitável.
- Troca de conectivos. Substitua conectivos livrescos (além disso / contudo / portanto / em resumo) pelo equivalente cotidiano, ou delete. Elimine aberturas enumerativas (primeiramente / em segundo lugar / por último) e apenas vá para o próximo ponto.
- Lista de morte. Delete preenchimento formuláico: jargão corporativo, "vale a pena notar", "como todos sabem", "revolucionário", "mudança de jogo", "perfeito", "vamos esperar para ver" — e seus equivalentes no idioma de narração.
- Indícios estruturais. Cascas verbo-substantivo ("realizar uma otimização") → ação concreta + resultado ("reduziu a aprovação de três etapas para uma"). "Não X mas Y" → declare Y. Paralelismo de três partes ("tanto A e B e C") → mantenha apenas o item mais informativo; dois são melhores que três. Intensificadores vagos ("significativamente") → um número ou uma consequência perceptível. Atribuição vaga ("especialistas dizem") → fonte nomeada + data, senão delete a frase. Finais de slogan ("o futuro é brilhante") → termine com um fato concreto, número ou próxima ação.
- Números são dígitos arábicos (
86,1,1,5G,9B) — legendas são o roteiro palavra por palavra, então escreva o que DEVE APARECER na tela. Nunca escreva a forma falada do TTS no roteiro para corrigir uma leitura incorreta; use a camada de alias/fonema do backend. - Números devem ser rastreáveis até
research.md— um número preciso sem fonte é fabricado; descarte-o ou atribua-o.
Iterando
- Roteiro alterado → reexecute o Checkpoint 1 (humano em modo humano), depois da Etapa 3 (TTS) até os Checkpoints 2 e 3 até a renderização. Nunca edite temporizações manualmente.
- Áudio ressintetizado (mesmo roteiro, voz/taxa diferente) → reexecute o Checkpoint 2; os visuais podem permanecer se as temporizações não mudaram; reexecute o Checkpoint 3 antes de renderizar.
- Apenas visuais → edite e reexecute o Checkpoint 3.
- Reutilize o mesmo diretório
videos/{nome}/.