Processador de Vídeo de Entrevista
Ferramenta de efeitos especiais para vídeo baseada em Python + Playwright + MoviePy, usando HTML/CSS/Anime.js para renderizar efeitos visuais de alta qualidade.
Fluxo de Trabalho
Primeira Etapa: Analisar o Conteúdo da Legenda
Quando o usuário fornece o vídeo e o arquivo de legenda, primeiro analise o conteúdo da legenda para gerar sugestões de efeitos:
- Ler o arquivo de legenda (.srt)
- Analisar o conteúdo, identificando:
- Informações do convidado (para barras de identificação)
- Pontos de transição de tópico (para títulos de capítulo)
- Palavras-chave e termos (para textos decorativos)
- Nomes técnicos (para cartões de termos)
- Insights valiosos (para cartões de citações)
- Dados numéricos (para animações de dados)
- Pontos principais (para listas de tópicos)
- Gerar uma lista de sugestões e apresentá-la ao usuário para revisão
Segunda Etapa: Revisão do Usuário
Apresente as sugestões ao usuário no formato Markdown:
## Sugestões de Efeitos Visuais
**Tema**: notion
### 1. Barra de Identificação (Lower Third)
- **Nome**: Dario Amodei
- **Cargo**: CEO
- **Empresa**: Anthropic
- **Tempo de Aparição**: 1000ms
### 2. Texto Decorativo (Fancy Text)
1. **Inteligência Artificial Geral** (destaque)
Tempo: 2630ms - 5500ms
Motivo: Primeira menção a conceitos centrais
...
O usuário pode:
- Confirmar todas as sugestões
- Modificar algumas sugestões
- Remover componentes desnecessários
- Adicionar novos componentes
Terceira Etapa: Gerar Configuração e Renderizar
Com base nas sugestões aprovadas pelo usuário, gere um config.json e então renderize o vídeo.
Componentes Disponíveis
| Componente | Finalidade | Campos de Configuração |
|---|---|---|
| barra_identificacao (lower_third) | Exibir informações do convidado | name, role, company, startMs, durationMs |
| titulo_capitulo (chapter_title) | Título de transição de tópico | number, title, subtitle, startMs, durationMs |
| texto_decorativo (fancy_text) | Resumir o ponto atual | text, style, startMs, endMs, position |
| cartao_termo (term_card) | Explicar termos técnicos | chinese, english, description, firstAppearanceMs |
| cartao_citacao (quote_callout) | Destacar insights valiosos | text, author, startMs, durationMs, position |
| animacao_dados (animated_stats) | Exibir números | prefix, number, unit, label, startMs |
| lista_pontos (bullet_points) | Resumir pontos principais | title, points[], startMs, durationMs |
| barra_social (social_bar) | Guia de acompanhamento | platform, label, handle, startMs, durationMs |
Regras de Uso para Textos Decorativos
⚠️ Importante: Os textos decorativos devem seguir as seguintes regras:
-
Devem ser frases: Resuma de forma concisa o ponto de vista do orador no momento
- ✅ Correto: «O desenvolvimento da IA é uma curva suave» «O crescimento da inteligência é semelhante à Lei de Moore»
- ❌ Errado: «Inteligência Artificial» «Lei de Moore» (são palavras soltas, devem usar cartão de termo)
-
Complementar os cartões de termo:
- Texto decorativo: Resumir o ponto de vista (ex.: «A inteligência dobra a cada ano»)
- Cartão de termo: Explicar o termo (ex.: «Lei de Moore: o número de transistores em circuitos integrados dobra a cada 18-24 meses»)
-
Posição no topo: Por padrão, exibir na área superior da tela (acima da legenda), evitando cobrir rostos
Regras de Uso para Barras Sociais
- Duração padrão da exibição: 8 segundos (mais longa que outros componentes para dar tempo suficiente ao usuário memorizar)
- Geralmente aparece no final do vídeo
- Plataformas suportadas: twitter, weibo, youtube
Sistema de Temas
Suporta 4 temas visuais:
| Tema | Estilo | Cenário de Uso |
|---|---|---|
notion | Estilo caloroso de conhecimento | Educação, compartilhamento de conhecimento |
cyberpunk | Futurista neon | Tecnologia, tópicos de ponta |
apple | Minimalista e elegante | Negócios, entrevistas profissionais |
aurora | Gradiente e fluxo | Conteúdo criativo e artístico |
Formato do Arquivo de Configuração
{
"theme": "notion",
"lowerThirds": [
{
"name": "Dario Amodei",
"role": "CEO",
"company": "Anthropic",
"startMs": 1000,
"durationMs": 5000
}
],
"chapterTitles": [
{
"number": "Parte 1",
"title": "A Natureza do Crescimento Exponencial",
"subtitle": "The Nature of Exponential Growth",
"startMs": 0,
"durationMs": 4000
}
],
"keyPhrases": [
{
"text": "Inteligência Artificial Geral",
"style": "emphasis",
"startMs": 2630,
"endMs": 5500
}
],
"termDefinitions": [
{
"chinese": "摩尔定律",
"english": "Moore's Law",
"description": "O número de transistores em circuitos integrados dobra a cada 18-24 meses",
"firstAppearanceMs": 37550,
"displayDurationSeconds": 6
}
],
"quotes": [
{
"text": "O desenvolvimento da IA é uma curva exponencial muito suave",
"author": "— Dario Amodei",
"startMs": 30000,
"durationMs": 5000
}
],
"stats": [
{
"prefix": "Taxa de crescimento ",
"number": 240,
"unit": "%",
"label": "Crescimento anual da capacidade computacional",
"startMs": 45000,
"durationMs": 4000
}
],
"bulletPoints": [
{
"title": "Pontos Principais",
"points": [
"O desenvolvimento da IA é uma curva exponencial suave",
"Crescimento da inteligência semelhante à Lei de Moore",
"Não há momento de singularidade repentino"
],
"startMs": 50000,
"durationMs": 6000
}
]
}
Instalação de Dependências
# Entrar no ambiente virtual
cd ~/.claude/skills/video-wrapper
source venv/bin/activate
# Instalar dependências
pip install -r requirements.txt
# Instalar navegador Playwright
playwright install chromium
Uso na Linha de Comando
# Usar renderizador de navegador (recomendado)
python src/video_processor.py video.mp4 subs.srt config.json output.mp4
# Especificar renderizador
python src/video_processor.py video.mp4 subs.srt config.json -r browser
python src/video_processor.py video.mp4 subs.srt config.json -r pil
Implementação Técnica
- Renderização Visual: HTML + CSS + Anime.js (via captura de tela do Playwright)
- Síntese de Vídeo: MoviePy
- Motor de Animação: Anime.js (animação física Spring)
- Renderização de Backup: Python PIL
Estrutura de Arquivos
~/.claude/skills/video-wrapper/
├── src/
│ ├── video_processor.py # Script principal de processamento
│ ├── browser_renderer.py # Renderizador Playwright
│ ├── content_analyzer.py # Analisador de conteúdo
│ ├── fancy_text.py # Texto decorativo PIL (backup)
│ └── term_card.py # Cartão de termo PIL (backup)
├── templates/
│ ├── fancy-text.html # Modelo de texto decorativo
│ ├── term-card.html # Modelo de cartão de termo
│ ├── lower-third.html # Modelo de barra de identificação
│ ├── chapter-title.html # Modelo de título de capítulo
│ ├── quote-callout.html # Modelo de cartão de citação
│ ├── animated-stats.html # Modelo de animação de dados
│ └── bullet-points.html # Modelo de lista de tópicos
├── static/
│ ├── css/
│ │ ├── effects.css # Efeitos básicos
│ │ ├── theme-notion.css # Tema Notion
│ │ ├── theme-cyberpunk.css
│ │ ├── theme-apple.css
│ │ └── theme-aurora.css
│ └── js/
│ └── anime.min.js # Anime.js
└── requirements.txt
Observações
- O processamento de vídeo pode demorar; por favor, aguarde pacientemente.
- Certifique-se de ter espaço em disco suficiente para armazenar o vídeo de saída.
- A renderização com Playwright oferece melhor qualidade, mas requer a instalação do Chromium.
- Se o Playwright não estiver disponível, o sistema reverterá automaticamente para a renderização PIL.