edit-labs-ai · diff
git:20260924.41cc210 to git:20261026.6596b11
54 added, 188 removed. Audit A to A.
---
name: edit-labs-ai
- description: Edit Labs AI — edição completa de um vídeo longo (podcast, live, entrevista do YouTube) até verticais prontos para Reels, TikTok e Shorts — baixar, achar os momentos, cortar com a borda conferida pelo ouvido, vertical com o rosto rastreado, motion design no estilo do kit, B-roll em vídeo, legenda queimada, render e verificação. Use quando o usuário mandar um link ou vídeo longo e quiser cortes editados, pedir "edição completa" ou "Edit Labs AI", ou puxar uma das tasks (baixar, momentos, cortar, vertical, motion, b-roll, fechar). Exige o Higgsfield conectado.
+ description: Edit Labs AI — porta de entrada da edição de vídeo vertical (Reels, TikTok, Shorts) com o Claude Code. Faz poucas perguntas fáceis, escolhe o estilo certo e conduz o projeto do começo à entrega — cortes editados de podcast/live/entrevista (corte, vertical, motion, B-roll, legenda), explicador em colagem com camadas (corpo humano e objetos por dentro, como o manequim de 1890 e a luva de boxe), reel de curiosidade histórica em colagem (como o do Napoleão), explicador Vox curto com voz (como o "soco no queixo"), documentário de arquivo em papel, ou do bruto ao master com portões. Use quando o usuário pedir "edição completa", "Edit Labs AI", mandar um link ou vídeo para editar, ou pedir um vídeo explicativo, um reel de história ou de anatomia, mesmo sem dizer o estilo. Exige o Higgsfield conectado.
---
- # Edit Labs AI — do link ao vertical publicado
-
- Esta skill dá a **ordem**, as **travas** e os **combinados**. O trabalho pesado mora em duas skills-motor:
-
- | Skill | Faz | Ler quando |
- | --- | --- | --- |
- | `${CLAUDE_SKILL_DIR}/../corte-viral/` | transcrição, momentos, cortes, vertical limpo (5 subagentes) | tasks 2–4 |
- | `${CLAUDE_SKILL_DIR}/../motion-vox/` | motion, B-roll, legenda queimada, render, verificação | tasks 5–7 — **comece por "Antes de começar" e "Etapas e scripts"** |
+ # Edit Labs AI — porta de entrada
- **Leia só a task em que você está.** Cada uma termina num resultado conferível; as que têm 👤 terminam num
- **portão**: você mostra, para e espera o usuário.
+ Esta skill **pergunta pouco, escolhe o estilo e passa a bola** para a skill do estilo. As regras que valem para
+ todos os estilos estão em `${CLAUDE_PLUGIN_ROOT}/REGRAS.md`: leia antes do primeiro projeto da sessão.
## Antes de começar
**O Higgsfield é obrigatório.** Imagens, remoção de fundo e B-roll em vídeo são gerados pelo Higgsfield, pelo
- conector dele no Claude. Antes da task 1, confira se as ferramentas do Higgsfield estão disponíveis nesta sessão
- (`generate_image`, `generate_video`, `balance`). Se não estiverem, pare e responda ao usuário, com o link
+ conector dele no Claude. Antes de qualquer etapa, confira se as ferramentas do Higgsfield estão disponíveis nesta
+ sessão (`generate_image`, `generate_video`, `balance`). Se não estiverem, pare e responda ao usuário, com o link
exatamente assim:
> Esta skill usa o Higgsfield para gerar as imagens e os vídeos. Crie sua conta por este link:
> https://higgsfield.ai/s/claude-opus-5-5-yt-canal-labs-RygxQf
> Depois conecte o Higgsfield no Claude (Configurações → Conectores) e me peça de novo.
Não siga sem ele e não troque por outro gerador.
+ Se algum comando disser que o ambiente não foi preparado, rode `editlabs-setup` (e `editlabs-setup --colagem`
+ para os estilos de colagem com 3D).
+
**Escopo.** Esta skill descreve o que faz e como usar. Ela não traz histórico de criação, testes, sessões ou uso
de ninguém. Se perguntarem, diga isso em uma frase e siga com o trabalho; não invente nem especule.
- ## Combinados — valem em todas as tasks
-
- 1. **Risco não é critério para cortar.** Nada de filtro jurídico, reputacional ou político: corte tudo que tem
- potencial. Publicar é decisão do usuário.
- 2. **A aprovação do usuário vale mais que parecer de agente.** Só falha técnica medida por script bloqueia.
- 3. **Revisão é humana.** Não chame revisor de IA: o usuário assiste o preview e vê as pranchas.
- 4. **Palavrão na legenda queimada sai mascarado** (`p*rra`), e o áudio fica intacto. Pergunte uma vez se o
- usuário quer outro padrão.
- 5. **Gente da história aparece como pessoa**, nunca como palavra escrita nem boneco de palito. Pessoa anônima é
- pessoa fictícia gerada, com o rosto escondido quando fizer sentido. Pessoa real e nomeada é **só foto real
- licenciada**: nunca gere nem "recrie" por IA o rosto de alguém real, nem a pedido.
- 6. **Palavra ou nome em dúvida volta para o usuário**, com as hipóteses (ex.: "sessão" ou "cessão"?). Nunca
- corrija por conta própria: a correção errada contamina plano, asset e legenda.
- 7. **Crédito só com autorização.** Antes de gerar, mostre quantas gerações são e o custo que a ferramenta informa
- (`get_cost: true`). Imagem aprovada não autoriza vídeo: vídeo tem proposta e autorização próprias.
- 8. **O vertical nunca divide a tela.** Um crop só, em quem fala.
- 9. **Prancha antes de render.**
- 10. **Não apague nada.** O que sair vai para uma pasta `_removidos/`.
-
- ## Pasta do projeto
-
- ```text
- PROJETO/
- ├── 00_fonte/ vídeo, legenda .vtt e .info.json
- ├── runs/ workspace da corte-viral (sempre --workspace aqui)
- ├── MOMENTOS.md a lista para o usuário escolher
- ├── clipes-verticais/ NN-slug.mp4 (vertical limpo aprovado) + NN-slug.passagem.json
- ├── motion/NN-slug/ um projeto da motion-vox por clipe (B-rolls em 07_assets/broll/)
- └── entrega/ NN-slug.mp4 final + NN-slug.verificacao.json + CREDITOS.md (uma pasta por versão)
- ```
-
- **Comandos do plugin** (já no PATH): `editlabs-setup` (prepara o computador; rode se qualquer comando disser que o
- ambiente não foi preparado), `editlabs-verificar`, `editlabs-baixar`, `vch` (motor da corte-viral), `cv-*` (bordas,
- respiro, preview, QR, tela dividida), `cvpy`, `mv-novo-projeto`, `mvpy` (Python da motion-vox, rodado da pasta do
- projeto). **Agentes do plugin**: `edit-labs-ai:context-mapper`, `edit-labs-ai:clip-hunter`, `edit-labs-ai:clip-builder`,
- `edit-labs-ai:clip-deduplicator`, `edit-labs-ai:edit-director`.
-
- ---
-
- ## Task 1 · baixar
-
- ```bash
- editlabs-baixar "<link>" PROJETO/00_fonte
- ```
-
- Consulta antes de baixar (título, duração, legendas), baixa **H.264 até 1080p** (não AV1: o enquadramento lê pelo
- OpenCV), o melhor áudio m4a sem compressão de dinâmica, a **legenda automática `pt-orig`** (tempo por palavra:
- dispensa transcrever o vídeo inteiro) e os metadados. Confira no fim: duração, fps, legenda presente.
- Sem legenda automática: a corte-viral transcreve com Whisper (bem mais lento).
-
- ## Task 2 · momentos — 👤 o usuário escolhe
-
- Leia `${CLAUDE_SKILL_DIR}/../corte-viral/SKILL.md` e `…/corte-viral/fases/1-momentos.md`, e siga. Em resumo:
-
- ```bash
- vch preflight
- vch init PROJETO/00_fonte/<video>.mp4 PROJETO/00_fonte/<video>.pt-orig.vtt --workspace PROJETO/runs
- vch prepare --run <run>
- vch digest --run <run> # texto compacto: nenhum agente lê o transcript cru
- ```
-
- Agentes `edit-labs-ai:context-mapper` e depois `edit-labs-ai:clip-hunter`. Os nomes dos participantes saem do `.info.json`. Valide cada
- artefato (`vch validate-artifact`).
-
- **Portão:** escreva `PROJETO/MOMENTOS.md` como **tabela** (nº, início–fim, duração, citação de abertura, por
- que funciona, perfil). Pare. O usuário responde com os números.
-
- ## Task 3 · cortar — 👤 o usuário aprova o preview
-
- Leia `…/corte-viral/fases/2-cortes.md`. O `edit-labs-ai:clip-builder` monta o `06-candidates.json` (entrada, saída e trechos).
- Depois disso, **as bordas são do script e do ouvido, não do agente**. As bordas do agente frequentemente cortam
- fala:
-
- ```bash
- cv-checar-cortes <run> # bordas em cima da fala (energia do áudio)
- cv-ajustar-cortes <run> # 1ª aproximação: move a borda para o silêncio
- cv-testar-borda <video> in <t1> <t2>… # OUVIDO: Whisper em [t, t+3,5 s] começa na palavra certa?
- cv-testar-borda <video> out <t1> <t2>… # [t-4 s, t] termina na palavra certa, inteira?
- cv-respiro <run> --plano # pausas ≥ 0,4 s → deixa 0,18 s de ar
- cv-respiro <run> --gravar # depois de conferir o plano
- cv-preview <run> # preview emendado de cada corte
- ```
-
- - A borda que fica é a que o **ouvido** confirma. A energia só sugere candidatos.
- - O respiro preserva as pausas que o builder marcou (`preserved` e `considered_not_cut` com motivo) e a pausa
- antes da revelação.
- - Conferir emenda também é pelo ouvido, em janela curta: Whisper no arquivo inteiro inventa palavra na emenda.
-
- **Portão:** mande os previews e pare. Mudança pedida → mostre o **trecho literal** que sai e o que fica em volta,
- refaça a borda pelo ouvido e gere o preview de novo.
-
- ## Task 4 · vertical
-
- Leia `…/corte-viral/fases/3-vertical.md` e `4-entrega.md`. `edit-labs-ai:edit-director` → `11-edit-plans.json`; `vch autoframe`.
-
- - **Um crop só, sempre em quem fala**: o vertical nunca divide a tela (`layout` é sempre `cover`). Em plano
- aberto, feche no locutor; se o rosto ainda ficar pequeno demais, anote o trecho como candidato a cutaway.
- - **Confira o enquadramento**: em 2–3 quadros por trecho, o rosto de quem fala está dentro do corte 9:16? Se não
- (ex.: o corte pegou a mesa), use `framing_method: manual` com o recorte certo.
- - **Arte da transmissão fica fora do quadro**: `cv-conferir-qr <vertical.mp4>` em cada vertical renderizado.
- QR code ou arte de patrocínio fixa no canto de uma câmera não pode ir para o vertical: se acusar trecho, mude o
- `crop_anchor_x` daquele segmento (rosto ainda com folga) e renderize de novo.
- - `vch finalize` exige a aprovação do usuário registrada no candidato (`human_approval`). `vch render`, `vch verify-output`.
- - Fim do clipe com fade-out de 80–120 ms no áudio.
- - Entregue em `clipes-verticais/NN-slug.mp4` + `NN-slug.passagem.json` com:
- - `cortes_s`: tempos das emendas **no tempo do clipe** (soma acumulada das durações dos trechos);
- - `cartelas`: nome e descrição de quem aparece (a primeira cena da motion é a cartela sobre o rosto);
- - `correcoes_de_nome_e_legenda`: as dúvidas, **com as hipóteses**, para o usuário confirmar;
- - `aprovacao`: quando e o que o usuário aprovou.
+ ## 1. Perguntas (no máximo 3, todas de múltipla escolha)
- Vertical antigo com tela dividida: `cv-desdividir ENTRADA.mp4 SAIDA.mp4` põe a metade de baixo em tela cheia,
- centrada no rosto, sem mexer em tempo nem áudio; `cv-desdividir SAIDA.mp4 --medir` deve acusar 0 trechos.
+ Pule a pergunta que o pedido já respondeu. Opção recomendada em primeiro.
- ## Task 5 · motion — 👤 o usuário autoriza os créditos e aprova as pranchas
+ 1. **O que você tem?** — um vídeo longo para cortar · só um assunto ou uma pergunta · um bruto gravado para
+ editar inteiro.
+ 2. **Que vídeo você quer?** (só se ainda não estiver claro) — mostre a tabela abaixo em linguagem simples, com o
+ exemplo de cada estilo.
+ 3. **Com narração?** — sim, com voz gerada (eu ofereço 3 amostras) · sem voz, só imagem e música · já tenho a voz.
- Leia `${CLAUDE_SKILL_DIR}/../motion-vox/SKILL.md` — "Antes de começar" e "Etapas e scripts" primeiro — e as
- referências que ele manda ler antes de compor.
+ Depois disso, **não pergunte mais nada técnico**: fps, nível de som, margem e formato são decisão sua.
- 1. **Projeto**: `mv-novo-projeto PROJETO/motion/NN-slug`. `00_brief/fonte.mp4` = o vertical;
- `00_brief/cortes.json` = `{"cortes": cortes_s}`; `00_brief/passagem.json` = a passagem.
- 2. **Ouvir o clipe final**, da pasta do projeto:
- `mvpy transcrever.py 00_brief/fonte.mp4 00_brief/transcript_palavras.json` → `mvpy conferir_emendas.py`.
- 3. **Plano** (`00_brief/PLANO_MOTION.md`): entra a frase com objeto, pessoa ou mecanismo; um registro visual por
- cena, sem repetir em cenas vizinhas; **≥ 1 s de rosto entre cutaways**; **cobertura medida no plano, meta
- 65–75%**, contando overlay. Overlay é seta, rótulo ou foto pequena por cima do rosto nos intervalos. Rajada de
- inserts para listas. Liste as provas reais com licença e o brief de assets com o custo. Marque os trechos de
- ação ou lugar que pedem B-roll (task 6).
- 4. **Portão:** autorizar downloads e créditos; confirmar grafias em dúvida; palavrão (padrão: mascarado).
- 5. **Assets**:
- - provas reais da Wikimedia Commons, registradas em `ATRIBUICOES.md`;
- - geração no Higgsfield: `gpt_image_2`, 1:1, 2k, high, fundo liso #8A8A8A, sem texto, sem sombra; em lote
- (`generate_image_batch` + `jobs_wait`);
- - recorte com `cutout.py --sweep` → `cutout.py NOME --cfg '{"tol":…}'`; sem platô, remoção de fundo por IA;
- - `checar_asset.py`: saturação ≤ 110, anel de alfa 215–235.
- 6. **Compor** (`compose.py` com `cenas.py`, ou o motor por dados `cenas_plano.py`):
- - todo evento ancorado na palavra (`tp()`), com ±3 quadros;
- - herói já em voo no quadro 0;
- - um dominante por cena; sem tangente (sobrepor ou ≥ 40 px);
- - texto só para nome, título ou número, **nunca repetindo a fala**;
- - gente = pessoa (`santinho()`, `recorte_pessoa()`); objeto herdado entre cenas quando a história volta.
- 7. **Travas**: `mvpy checar_hold.py` (0 trechos abaixo de 8 quadros); `mvpy medir.py 08_images/frames/M*_END.png`
- (informativo); `mvpy prancha.py` (uma imagem por cena + `REVISAR.html`) ou `mvpy prancha_simples.py
- 08_images/frames 08_images/PRANCHA_a.jpg O1 M1 M2 …` (folha única que inclui a cartela de abertura).
- 8. **Portão:** mande as pranchas, com a cobertura medida e o custo das gerações. Pare.
+ ## 2. Qual estilo
- ## Task 6 · B-roll — 👤 o usuário aprova as imagens e autoriza os vídeos
+ | Se o usuário quer… | Exemplo do estilo | Skill |
+ | --- | --- | --- |
+ | cortes verticais de um vídeo longo (podcast, live, entrevista), com motion, B-roll e legenda | — | `cortes.md` desta pasta + `corte-viral` + `motion-vox` |
+ | explicar algo **por dentro** ou em partes (corpo humano, máquina, planeta, construção) | o manequim de anatomia de 1890; a luva de boxe que mostra os ossos da mão | `colagem-camadas` |
+ | uma **curiosidade histórica** curta (personagem, objeto, data) | Napoleão e a altura; o relógio de Santos-Dumont | `colagem-historia` |
+ | um **explicador curto com voz** ("por que X acontece?") no jeito Vox | por que um soco no queixo derruba | `explicador-vox` |
+ | um **documentário de arquivo** em papel (biografia, origem de produto) | — | `motion-arquivo` |
+ | editar um **bruto gravado inteiro** até o master, com portões de aprovação | — | `decupagem-inteligente` |
- B-roll é vídeo gerado de 3–5 s, em tela cheia, mostrando a ação ou o lugar de que a pessoa fala. Siga a seção
- "B-roll em vídeo" da motion-vox e `…/motion-vox/referencias/seedance-2.5.md`. Em resumo:
+ - Um vídeo novo de explicador também pode ser feito pelo **time de motion** (`time-motion`): quatro agentes em
+ paralelo (referências, diretor de motion, caçador de insets, som) preparam o plano e o editor monta.
+ - O banco de referências de estilo fica em `${CLAUDE_PLUGIN_ROOT}/referencias/`: consulte antes de um vídeo novo
+ para escolher **um** estilo principal e no máximo um de apoio.
- 1. **Plano** (`00_brief/BROLL.md` de cada clipe): primeiro troque cutaways paradas cuja fala é ação ou lugar;
- depois preencha trechos de rosto com mais de ~4 s seguidos. Mantenha ≥ 1 s de rosto entre cutaways e meça a
- cobertura antes e depois. Só pessoas fictícias sem rosto identificável (de costas, mãos, fora de foco, ao
- longe); nada de texto ou logo gerado.
- 2. **Imagens de partida** (`gpt_image_2`, 9:16, 2k, high), com o custo aprovado → **folha para o usuário**.
- **Portão:** o usuário aprova as imagens. Isso não autoriza os vídeos.
- 3. **Proposta de vídeo**: modelo (Seedance 2.5 para gente e mãos; 2.0 para lugar e objeto), duração (mínimo 4 s),
- 720p, prompt de movimento, custo total da ferramenta. **Portão:** autorização explícita.
- 4. **Geração** em lote (`generate_video_batch` + `jobs_wait`), imagem aprovada como `start_image`. Recusa 429
- não cobra: reenvie quando abrir vaga. Preset no lugar do job: reenvie com `declined_preset_id`.
- 5. **Revisão de cada vídeo inteiro** (`mvpy broll_revisar.py`): deformação, objeto flutuando, texto acidental,
- rosto de passante visível. Trecho útil anotado; defeito se resolve com `va`/`vel`, sem gerar de novo.
- 6. **Encaixe** (beat `video=` no `cenas_plano.py`) → `mvpy janelas_legenda.py` → render numa versão nova
- (`MV_VERSAO=v02`) → `mvpy broll_no_master.py`.
+ Leia o `SKILL.md` da skill escolhida (ou `cortes.md`) e siga. Ela abre com as próprias perguntas, curtas.
- ## Task 7 · fechar — 👤 o usuário assiste e publica
+ ## 3. Combinados — valem em todos os estilos
- Da pasta de cada projeto de motion:
+ 1. **Risco não é critério para cortar.** Nada de filtro jurídico, reputacional ou político: corte tudo que tem
+ potencial. Publicar é decisão do usuário.
+ 2. **A aprovação do usuário vale mais que parecer de agente.** Só falha técnica medida por script bloqueia.
+ 3. **Revisão é humana.** O usuário assiste o preview e vê as pranchas ou os quadros de conferência.
+ 4. **Quadro-chave antes do vídeo inteiro.** Mostre 1 quadro (ou 3 s) no estilo final e espere o "aprovado".
+ 5. **A legenda entra por último**, depois de motion, B-roll, som e corte final da fala.
+ 6. **Palavrão na legenda queimada sai mascarado** (`p*rra`), e o áudio fica intacto. Pergunte uma vez se o
+ usuário quer outro padrão.
+ 7. **Gente da história aparece como pessoa**, nunca como palavra escrita nem boneco de palito. Pessoa real e
+ nomeada é **só foto real licenciada**: nunca gere nem "recrie" por IA o rosto de alguém real, nem a pedido.
+ 8. **Palavra ou nome em dúvida volta para o usuário**, com as hipóteses. Nunca corrija por conta própria.
+ 9. **Crédito só com autorização.** Antes de gerar, mostre quantas gerações são e o custo que a ferramenta informa.
+ Imagem aprovada não autoriza vídeo; voz gerada também pede "pode".
+ 10. **O vertical nunca divide a tela.** Um crop só, em quem fala.
+ 11. **Não apague nada.** O que sair vai para uma pasta `_removidos/`.
- ```bash
- mvpy legenda_transcript.py # lê 00_brief/legenda_correcoes.json: remover invenções, trocar grafias, mascarar
- mvpy preencher_render.py # render.py a partir do compose (depois de: cp render_template.py render.py)
- mvpy janelas_legenda.py # de novo sempre que uma cutaway ou um B-roll mudar de lugar
- mvpy -c "import render as R, captions as CAP; CAP.check(R.SHOTS)" # toda fala com rosto na tela; nada invade cena
- mvpy render.py # rode os clipes em paralelo
- mvpy verificar_master.py # sincronia, áudio (MD5), início e duração: tudo OK
- ```
+ ## 4. Comandos e agentes do plugin
- - Olhe `11_qa/CONTATO_MASTER.jpg` antes de entregar; com B-roll, também a folha do `broll_no_master.py`.
- - Entregue em `entrega/`: o master, o JSON de verificação e um `CREDITOS.md`. Foto CC BY-SA **exige atribuição
- na descrição**. Pessoa gerada realista e B-roll gerado pedem o **selo de conteúdo de IA** da plataforma: liste
- o que foi gerado e avise o usuário, principalmente se a imagem puder ser lida como foto de alguém real.
- - Mudança depois do master: refaça só as cenas mudadas (`mvpy render.py M3 M4`), e o mux sai no fim. Versão nova
- com `MV_VERSAO=v02` (master e verificação gravados ao lado da anterior) e entregue numa pasta própria
- (`entrega/v02/`), sem sobrescrever a anterior.
+ Comandos (já no PATH): `editlabs-setup`, `editlabs-verificar`, `editlabs-baixar`, `vch` e `cv-*` (corte-viral),
+ `cvpy`, `mv-novo-projeto`, `mvpy` (motion-vox), `clpy` (Python do motor de colagem), `editlabs-assets` (baixa os
+ pacotes grandes da release: modelos 3D e pranchas).
- **Portão:** mande os masters e pare.
+ Agentes: `edit-labs-ai:context-mapper`, `clip-hunter`, `clip-builder`, `clip-deduplicator`, `edit-director`
+ (cortes); `tm-referencias`, `tm-diretor-motion`, `tm-cacador-insets`, `tm-som` (time de motion); `di-diretor`,
+ `di-revisor-leigo` (decupagem).