Você passa um assunto ou um link (página/vídeo). A skill detecta o tipo, decide a melhor ação de edição, escolhe um preset e emite plano-edicao.json + RESUMO.md — dado estruturado, renderer-agnóstico. Render opcional já funciona: motion graphics + b-roll flux2-klein, local, sem chave de API.
# do input ao plano input → detect → analyze → best action → preset → PLANO (json + resumo) → (opcional) render → MP4 # início rápido vpe scaffold "como fazer pão caseiro" --preset viral \ > plano-edicao.json vpe validate plano-edicao.json # guardrails vpe resumo plano-edicao.json # pra aprovar
A edição programática é fragmentada (FFmpeg, Auto-Editor, MoviePy, Remotion, HyperFrames). Falta a camada que, de linguagem natural, decide o que fazer e emite um plano limpo e portável. É isso aqui.
Classifica o input em topic, page ou video, analisa a melhor ação de edição e registra o porquê em best_action_rationale.
EditPlan em JSON (pydantic) + RESUMO.md legível. Pode ser consumido por FFmpeg, HyperFrames, Remotion ou outros sistemas.
Motion graphics via HyperFrames + b-roll gerado no flux2-klein. Local, determinístico, sem chave de API.
5 presets de estilo (acao · suave · promo · vendas · viral) são perfis de parâmetro sobre o mesmo schema — trocar o preset muda ritmo, transições, trilha, legenda e aspect sem reescrever o plano base.
O núcleo (gerar plano) é só Python. O render é opcional e precisa da stack local de motion graphics.
Instale em editável; expõe o console script vpe.
python3 -m venv .venv && . .venv/bin/activate pip install -e ".[dev]"
A skill orquestra o vpe e preenche a timeline criativa por linguagem natural.
# https://claude.com/claude-codeSó pra renderizar: HyperFrames (Chrome+FFmpeg), Kokoro (narração) e flux2-klein (b-roll).
# ver knowledge/render.mdComandos reais do vpe. A skill (via SKILL.md) preenche a timeline entre o scaffold e a validação.
Cria o ambiente e expõe o comando vpe.
pip install -e ".[dev]" # expõe `vpe`
vpe detecta o input (assunto/página/vídeo) e aplica o preset escolhido.
vpe scaffold "como fazer pão caseiro" --preset viral > plano-edicao.json
Roteiro/cenas para assunto ou página; source_in/out (cortes reais) para vídeo. Veja examples/.
# timeline: hook → point → ... → cta (cada beat com headline/narração/legenda)
Zera os [error] antes de qualquer render (timeline vazia, sem hook, etc.).
vpe validate plano-edicao.json # exit 0 = ok
Documento legível com fonte, objetivo, preset e a timeline beat a beat. Render é opcional, sob pedido.
vpe resumo plano-edicao.json > RESUMO.md
Plano completo de exemplo em examples/exemplo-viral-pao.json.
// vpe scaffold "https://youtu.be/..." --preset viral "source": { "kind": "video", ... }, "style": { "preset": "viral", "pacing": { "avg_cut_seconds": 1.1, "energy": 0.95 }, "captions": { "style": "karaoke" } }, "output": { "aspect": "9:16", "duration_target_seconds": 30 }
Input do YouTube classificado como video; preset aplicou corte ~1.1s, legenda karaoke e 9:16. A timeline nasce vazia.
# Pão caseiro em 20s - Objetivo: viral - Preset: viral (corte ~1.1s, energia 0.95) - Saída: 9:16, alvo 20s 1. hook Headline: Pão em 20 segundos?! 2. point Headline: 3 ingredientes 3. cta Headline: INEMA.CLUB
O mesmo plano vira um markdown legível com a timeline beat a beat.
Schema do plano: meta · source · intent · style · output · timeline[] · render. Integra com o MDD para a direção cinematográfica dos beats generativos.
vpe. 35 testes..otio pra NLEs.