Communitygithub.com

Explicador guiado por SRT

Transforma um texto falado num vídeo explicativo: esquema, SRT, storyboard e um MP4 renderizado em código.

O que é Explicador guiado por SRT?

Um processo de cinco fases cujo relógio é o ficheiro de legendas. Confirma-se o esquema, o texto e o storyboard, e depois cada plano é renderizado e unido.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zamchudo/srt-driven-video/tree/HEAD

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

SRT-Driven Video (Fluxo de Vídeo SRT)

Transforme um roteiro de locução em um vídeo explicativo com visuais gerados por código. SRT como única referência temporal, progresso em cinco fases, pausa ao final de cada uma para confirmação do usuário.

Ambiente e Dependências

  • Windows: Playwright (channel="msedge", usa Edge local, sem instalar Chromium) + imageio-ffmpeg (fornece ffmpeg; não inclui ffprobe, usa ffmpeg -i stderr para análise).
  • Instalação: pip install playwright imageio-ffmpeg (scripts já tratam localização do ffmpeg).
  • Todos os scripts em scripts/ foram testados no Windows; Linux/macOS precisam remover channel="msedge" e usar ffmpeg do sistema.

Visão Geral das Cinco Fases

FaseProdutoPortão de Confirmação
0 Roteirooutline.md + tabela de decisõesUsuário confirma roteiro e decisões
1 Roteiro+SRTscript.md / subtitles.srt / notas_apresentador.mdUsuário confirma roteiro
2 Storyboardstoryboard.json (obrigatório passar em check_timeline.py)Usuário confirma storyboard
3a Primeira cena + biblioteca de componentesassets/shared/ + scene-001 amostra baixa resoluçãoUsuário aprova estilo antes da produção em massa
3b Cena por cena em lotescenes/scene-NNN/scene.mp4 × NUsuário revisa cenas-chave
4 Montagem finaloutput/final.mp4 + cover.pngUsuário confirma vídeo final

Detalhes do fluxo, campos da tabela de decisões, armadilhas comuns (imageio-ffmpeg sem filter_complex_script, armadilha de level do alimiter etc.) em references/pipeline.md.

Três Contratos Essenciais (não opcionais)

  1. Referência temporal SRT: limites das cenas coincidem com limites das legendas; erro total ≤0,1s; python scripts/check_timeline.py <project_dir> verifica em cada fase.
  2. WORKLOG de continuidade: criar WORKLOG.md na raiz do projeto (modelo em references/worklog-template.md), único estado entre sessões; tabela de decisões após travada não deve ser alterada; a partir das fases 3/4 os arquivos de base (outline/script/SRT/notas/storyboard/assets/shared/scenes) são congelados.
  3. Portão de confirmação por fase: após cada fase, pausar e aguardar confirmação explícita do usuário antes de prosseguir.

Renderização de Cena (Fase 3)

Cada cena é uma página HTML independente, implementando window.setTime(t) para renderização determinística (toda animação é função pura de t); queima de legenda usa o elemento de contrato unificado div#subtitle. Contrato completo de desenvolvimento, fluxo de qualidade (check_frames.py painel de quadros-chave), regras de design em references/visual-authoring.md.

Modelo inicial: assets/neon-theme/ (tema cyberpunk já aprovado: theme.css + components.js, com partículas/dígitos voando/cartões de dados/barras de comparação/indicadores de risco/transições/componente de legenda) — usuário pode copiar diretamente para assets/shared/ do projeto para obter o mesmo estilo; outros estilos seguem a mesma estrutura.

python scripts/render_scene.py scenes/scene-001 --duration 10.5 --fps 30 --size 960x540   # amostra baixa resolução
python scripts/check_frames.py scenes/scene-NNN --times 0.5,3,6,9.2                        # qualidade antes de renderizar
python scripts/render_all.py .                                                             # lote completo
python scripts/render_all.py . --no-subtitle --outdir output/nosub                         # variação sem legenda
python scripts/concat_final.py .                                                           # montagem + capa

Módulo de Efeitos Sonoros Opcional (desligado por padrão)

Ativado apenas se o usuário explicitamente quiser efeitos sonoros nos pontos-chave, e já travado na tabela de decisões da fase 0. Material via Freesound CC0 (verifica licença um a um), timeline em assets/sfx/mix_timeline.json e submetido a pré-aprovação do usuário; entrega em duas rotas, escolha uma: mixagem automática com FFmpeg (mix_sfx.py) ou lista de marcação para剪映 (make_cue_sheet.py) para inserção manual — a segunda é mais estável na prática. Processo completo em references/sound.md.

Habilidades / Ferramentas Externas de Referência

  • vibe-motion/sound (GitHub, clonar para tools/sound/): CLI de busca/download do Freesound. Repositório sem licença, apenas ferramenta interna de download; licença segue a declaração CC0 de cada efeito no Freesound.

Especificações de Entrega

final.mp4: 1920×1080 / 30fps / h264 / yuv420p, duração exata do span total do SRT; cover.png extraído do quadro de pico (determinístico por amostragem); após verificar duração, número de frames, especificações, nível de áudio, atualizar WORKLOG e reportar.

Habilidades Relacionadas