Video Editor Full — Skill de Pós-produção de Vídeo Full-stack
Integra 6 grandes capacidades em um Skill único de pós-produção de vídeo. Da gravação bruta ao produto final, tudo com IA.
Matriz de Capacidades
| Módulo | Ferramenta | Uso | Dependência |
|---|---|---|---|
| Transcrição | Whisper (base/small/medium) | Áudio → Legendas SRT | Python + openai-whisper |
| Remoção de Silêncio | auto-editor | Jump cut automático | Python + auto-editor |
| Edição Precisa | ffmpeg filter_complex | PIP lupa, títulos capítulo, aceleração, drawbox destaque | ffmpeg 7.0+ |
| Legendas | filter subtitles ffmpeg | Queimar SRT (suporte YaHei CN) | ffmpeg + fonte |
| Animação | Remotion | Introdução/Conclusão, visualização de dados, gráficos dinâmicos | Node.js 18+ + Remotion |
| Vídeo de Marca | HyperFrames | HTML/CSS → Vídeo, Avatar Digital IA | Node.js + HeyGen API Key |
Visão Geral do Fluxo de Trabalho
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Vídeo Bruto │────▶│ Análise & │────▶│ Planejamento │
│ │ │ Transcrição │ │ de Conteúdo │
└─────────────┘ └──────────────┘ └─────────────────┘
│
┌──────────────────────────────┼──────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ auto-editor │ │ ffmpeg Edição │ │ Remotion │
│ Rem. Silêncio│ │ PIP+Capítulo+ │ │ Intro/Outro │
└──────┬───────┘ │ Aceleração │ └──────┬───────┘
│ └────────┬────────┘ │
└─────────────────────────────┼──────────────────┘
▼
┌─────────────────┐
│ Queimar Legendas│
│ + Exportação │
└─────────────────┘
Pré-requisitos
# Obrigatório
pip install openai-whisper auto-editor
# ffmpeg deve estar no PATH (recomendado 7.0+)
ffmpeg -version
# Opcional: Remotion (animação intro/outro)
npx create-video@latest --blank
# Opcional: HyperFrames (vídeo de marca)
# Necessita HeyGen API Key, veja templates/hyperframes-config.example.json
Detalhamento dos Módulos
Módulo 1: Análise & Transcrição
Passo 1: Metadados do Vídeo
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
Focar em: resolução, framerate, duração, codec, bitrate.
Passo 2: Extrair Keyframes (a cada 5 segundos)
mkdir -p frames
ffmpeg -i input.mp4 -vf "fps=1/5" -q:v 2 frames/frame_%03d.jpg
Usar análise visual para determinar áreas de UI importantes, limites de capítulos, alvos da lupa.
Passo 3: Transcrição com Whisper
import whisper
model = whisper.load_model("base") # Para chinês, base basta; medium é mais preciso mas lento
result = model.transcribe("audio.wav", language="zh")
Após gerar o SRT, é necessária calibragem manual:
- Nomes próprios (nomes de produtos, termos técnicos)
- Alinhamento da timeline (especialmente no final, pode haver deriva)
- Erros de homófonos
Módulo 2: Remoção de Silêncio com auto-editor
# Uso básico: remover todos os segmentos silenciosos
auto-editor input.mp4 --margin 0.2s --output no_silence.mp4
# Modo conservador: remover apenas silêncios > 1 segundo
auto-editor input.mp4 --min-clip-length 1s --margin 0.3s --output no_silence.mp4
# Exportar timeline (não renderiza; para uso posterior com ffmpeg)
auto-editor input.mp4 --export timeline:api
Nota: O auto-editor altera a timeline do vídeo. As legendas DEVEM ser geradas ou realinhadas APÓS a remoção de silêncio.
Ordem recomendada: Vídeo original → auto-editor → Transcrição/Alinhamento legendas → Edição precisa ffmpeg
Módulo 3: Edição Precisa com ffmpeg (Núcleo)
3.1 PIP Lupa (Picture-in-Picture)
# Chave: usar force_original_aspect_ratio no crop para evitar esticamento
PIP_W, PIP_H = 300, 188 # Dimensões alvo da janela PIP
# Trecho filter_complex:
# crop → scale (manter proporção) → pad (preencher com preto) → drawbox (borda amarela)
f"[pip{i}]crop={cw}:{ch}:{cx}:{cy},"
f"scale={PIP_W}:{PIP_H}:force_original_aspect_ratio=decrease,"
f"pad={PIP_W}:{PIP_H}:(ow-iw)/2:(oh-ih)/2:color=0x1a1a2e,"
f"drawbox=x=0:y=0:w={PIP_W}:h={PIP_H}:color=yellow:t=2"
f"[pip{i}s]"
3.2 Título de Capítulo (drawtext com fade)
# Exibir título no ponto de transição do capítulo, com fade in/out
f"drawtext=text='{title}':"
f"fontfile='C\\:/Windows/Fonts/msyh.ttc':"
f"fontsize=28:fontcolor=white:borderw=3:[email protected]:"
f"x=(w-text_w)/2:y=30:"
f"alpha='if(lt(t,{start}),0,if(lt(t,{start}+0.4),(t-{start})/0.4,"
f"if(lt(t,{end}-0.4),1,if(lt(t,{end}),({end}-t)/0.4,0))))':"
f"enable='between(t,{fade_in},{fade_out})'"
3.3 Aceleração
# Acelerar vídeo
f"[vout]setpts=PTS/{SPEED}[vfinal]"
# Acelerar áudio (atempo range 0.5-2.0; acima disso, encadear)
f"[0:a]atempo={SPEED}[afinal]"
3.4 Sincronização Timeline Legendas
Após aceleração, os timestamps das legendas devem ser ajustados:
new_start = original_start / SPEED
new_end = original_end / SPEED
3.5 Template de Construção Completo
Veja scripts/build_template.py
Módulo 4: Animação com Remotion
Ideal para gerar introduções, conclusões, transições animadas e visualização de dados.
# Inicializar projeto Remotion
npx create-video@latest my-intro --blank
# Escrever animação em src/Composition.tsx
# Renderizar para MP4
npx remotion render src/index.ts MyComp out/intro.mp4
Os clipes gerados são concatenados ao vídeo principal com ffmpeg:
# lista concat
echo "file 'intro.mp4'" > list.txt
echo "file 'main.mp4'" >> list.txt
echo "file 'outro.mp4'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp4
Instalação do Skill Remotion Agent:
# Skill oficial (recomendado)
git clone https://github.com/remotion-dev/skills.git ~/.claude/skills/remotion
Módulo 5: HyperFrames Vídeo de Marca
Renderiza HTML/CSS/JS em quadros de vídeo. Ideal para branding, site para vídeo.
# Instalação
npm install @anthropic-ai/hyperframes
# Uso básico: HTML → MP4
npx hyperframes render --input composition.html --output brand.mp4
Necessita HeyGen API Key para funcionalidade de Avatar Digital.
Template de configuração em templates/hyperframes-config.example.json.
Módulo 6: Exportação Final
Queimar Legendas (Último Passo)
ffmpeg -y -i video_no_sub.mp4 \
-vf "subtitles='srt_path':force_style='FontSize=13,FontName=Microsoft YaHei,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,Shadow=1,MarginV=22,Bold=1'" \
-c:v libx264 -preset slow -crf 17 \
-c:a copy -pix_fmt yuv420p -movflags +faststart \
output.mp4
Exportação Multiplataforma
| Plataforma | Resolução | Proporção | Limite de Duração |
|---|---|---|---|
| YouTube | 1920x1080 | 16:9 | Ilimitado |
| WeChat Video | 1080x1920 | 9:16 | 60s (recomendado) |
| Xiaohongshu | 1080x1350 | 4:5 | 5min |
| Twitter/X | 1280x720 | 16:9 | 2:20 |
| 1920x1080 | 16:9 | 10min |
# Exemplo corte vertical (16:9 → 9:16)
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" -crf 18 vertical.mp4
Diretrizes de Qualidade
- CRF 17 + slow preset — Qualidade padrão para tutoriais
- yuv420p — Compatível com todos os players
- faststart — Streaming inicia rápido
- lanczos — Algoritmo de redimensionamento preferido
- Máximo 2 codificações — Evitar perda geracional
- Legendas por último — Garantir alinhamento da timeline
Armadilhas Comuns
- No Windows, caminhos no filtro subtitles do ffmpeg precisam de
/e:deve ser escapado como\: - No Windows, Whisper deve usar caminhos do Windows (não usar
/tmp/) - Range
atempoé 0.5-2.0; acima disso, encadear:atempo=2.0,atempo=1.5= 3x - Se a proporção da área de crop PIP for diferente da janela alvo, ocorre esticamento. SEMPRE usar
force_original_aspect_ratio - auto-editor altera a timeline; legendas anteriores ficam inválidas
filter_complexmuito longo não pode ser passado na linha de comando; usar-filter_complex_scriptpara escrever em arquivo
Estrutura de Arquivos
video-editor-skill-pack/
├── SKILL.md # Este arquivo
├── scripts/
│ ├── build_template.py # Template de construção edição precisa ffmpeg
│ ├── transcribe.py # Script de transcrição Whisper
│ ├── adjust_srt_speed.py # Ajuste de timeline SRT para aceleração
│ └── analyze_frames.py # Extração e análise de keyframes
├── templates/
│ ├── hyperframes-config.example.json
│ └── remotion-intro/ # Template intro Remotion (a preencher)
└── examples/
└── tutorial-video-workflow.md # Exemplo de fluxo completo de vídeo tutorial