feat: copiada a skill editar-por-voz e seus critérios para as skil

- copiada a skill editar-por-voz e seus critérios para as skills do projeto
- adaptada a skill editar-por-voz para usar o banco SQLite como fonte oficial
- corrigida a cópia do JSON do tipo de vídeo para priorizar clipboard Unicode
- criado carregador único do contexto de edição por voz a partir do SQLite
- criada entrada para registrar planos no SQLite e reaproveitar o mesmo plano na aplicação
- habilitado carregamento do plano editorial diretamente do SQLite na interface
- corrigido o bloqueio visual da etapa de carregamento do plano salvo
- configurado carregamento automático do plano salvo após selecionar a sequência
- documentada a sequência como raiz de retomada do fluxo de edição
- criada a estrutura local para análise de músicas instrumentais com Essentia

Resumo:
- 22 arquivos alterados
- 11 novos
- 11 modificados
- 0 removidos

 11 files changed, 270 insertions(+), 34 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - CONTEXT.md
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/engine/README.md
  - code/engine/aplicar_plano_de_edicao.py
  - code/engine/integracoes/audio/__init__.py
  - code/engine/persistencia/consultas.py
  - code/engine/requirements-audio.txt
  - code/engine/testes/test_consultas_de_persistencia.py
  - code/tests/cep-tipos-video-encoding.test.ts
  - code/.jhonny/
  - code/engine/carregar_plano_de_edicao.py
  - code/engine/integracoes/audio/contratos.py
  - code/engine/integracoes/audio/modelos_de_analise_musical.py
  - code/engine/integracoes/audio/provider_de_analise_musical_essentia.py
  - code/engine/preparar_edicao_por_voz.py
  - code/engine/registrar_plano_de_edicao.py
  - code/engine/testes/test_analisador_de_musica_essentia.py
  - code/engine/testes/test_carregar_plano_de_edicao.py
  - code/engine/testes/test_registrar_plano_de_edicao.py
  - code/plugins/premiere-pro/skills/editar-por-voz/
This commit is contained in:
João Henrique
2026-09-10 13:09:01 -04:00
parent eda1b1aadc
commit a9e5b5ff58
33 changed files with 1811 additions and 34 deletions
@@ -0,0 +1,142 @@
---
name: editar-por-voz
description: Edita um vídeo a partir das evidências de voz, transcrição e configuração editorial mantidas no banco SQLite do projeto. Use quando o usuário pedir para editar vídeo, editar por voz, escolher tomadas, limpar repetições ou montar um corte automático.
---
# Editar por voz
Transforma uma edição concluída no banco em um plano editorial revisável e, após aprovação, em uma alteração verificável no Premiere Pro.
## Fonte de verdade
O banco de análises é a fonte oficial. Não procure nem exija um arquivo
`*_voice_timeline.json` e não trate JSON temporário, cache ou estado do painel
como fonte independente.
Para carregar o contexto sem escrever SQL, execute:
```text
python3 code/engine/preparar_edicao_por_voz.py --banco .jhonny/analises.db
```
Depois de gerar o JSON de ações, registre-o no banco e use o identificador
retornado para aplicar exatamente esse plano:
```bash
python3 code/engine/registrar_plano_de_edicao.py plano.json \
--banco .jhonny/analises.db --tipo-de-video depoimento
python3 code/engine/aplicar_plano_de_edicao.py plano.json \
--banco .jhonny/analises.db --plano-id ID_RETORNADO
```
Use `--video-id` quando o usuário indicar um vídeo específico e
`--sem-palavras` somente quando os limites palavra a palavra não forem
necessários. A resposta válida vem em `contexto`; trate `ok: false` como
bloqueio do fluxo.
Use a edição concluída mais recente em `edicoes_de_video` como raiz do trabalho.
Recupere o restante pelo mesmo `video_id`:
- `videos`, `faixas` e `clipes`: mídia, sequência e estrutura;
- `analises_versao`: versão da análise usada;
- `segmentos_de_transcricao` e `palavras_de_transcricao`: falas e tempos;
- `evidencias_visuais`: contexto visual, quando disponível;
- `planos_de_edicao` e `acoes_do_plano`: decisões já geradas;
- `aplicacoes_do_plano`: histórico de execução.
Leia [criterios/00-fonte-de-dados.md](criterios/00-fonte-de-dados.md) antes de
consultar o banco ou quando houver dúvida sobre qual registro usar.
## Estados obrigatórios
Trate o trabalho como uma sequência de estados:
```text
edicao_concluida
→ contexto_validado
→ plano_gerado
→ preview_aprovado
→ aplicado
→ verificado
```
Não aplique um plano sem contexto validado e preview aprovado. Se algum estado
ou evidência obrigatória estiver ausente, pare e relate exatamente o que falta.
## Fluxo
1. Localize a edição concluída mais recente e confirme vídeo, sequência, tipo,
origem, transcrição e versão da análise.
2. Reúna do banco a transcrição completa, palavras, falantes, tomadas,
métricas e evidências disponíveis. Preserve os tempos da mídia original.
3. Leia a configuração editorial salva em `edicoes_de_video.configuracao` e
extraia objetivo, narrativa, duração, tom, regras de corte e restrições.
4. Separe roteiro de conversa de bastidor pelo conteúdo. Depois agrupe frases
repetidas e escolha a tomada completa, clara, natural e coerente.
5. Reanalise as ênfases apenas depois de definir o material sobrevivente. Se o
banco não tiver métricas ou a camada correspondente estiver incompleta,
decida pelo texto e registre a limitação.
6. Decida cortes, zooms, textos e marcadores somente quando o contrato de
aplicação suportar a ação. Cada ação deve ter motivo verificável.
7. Gere um plano com tempos na mídia original. Salve o plano em
`planos_de_edicao` e suas ações ordenadas em `acoes_do_plano`, associado ao
`video_id`, ao tipo de vídeo e ao contexto editorial carregado.
8. Faça preview do plano e apresente as decisões e incertezas para revisão
humana. Uma alteração no plano exige novo preview.
9. Após aprovação explícita, confirme a sequência atual, crie backup ou
duplicata, aplique o plano pelo fluxo suportado do Premiere e registre o
resultado em `aplicacoes_do_plano`.
10. Reconsulte a timeline, compare com o plano e registre a verificação. Separe
o que foi comprovado automaticamente do que exige avaliação visual.
## Contrato da decisão
O JSON abaixo é uma representação de trabalho, não a fonte principal:
```json
{
"source": "0E6A8829.MP4",
"actions": [
{
"kind": "cut",
"start": 12.4,
"end": 16.8,
"reason": "Repetição da frase anterior."
}
]
}
```
`cut` remove um intervalo. Todos os tempos referem-se à mídia original. A
ação precisa ter `start < end`, estar dentro da duração e não sobrepor outra
ação incompatível. Use `reason` para registrar a fala, comparação ou evidência
que fundamentou a decisão.
Leia, conforme a etapa, [criterios/02-triagem-roteiro-vs-conversa.md](criterios/02-triagem-roteiro-vs-conversa.md),
[criterios/03-escolha-da-melhor-tomada.md](criterios/03-escolha-da-melhor-tomada.md),
[criterios/04-reanalise-do-material-restante.md](criterios/04-reanalise-do-material-restante.md),
[criterios/05-zoom.md](criterios/05-zoom.md),
[criterios/06-texto-corte-marcador.md](criterios/06-texto-corte-marcador.md),
[criterios/07-ritmo.md](criterios/07-ritmo.md) e
[criterios/10-revisao-humana.md](criterios/10-revisao-humana.md).
## Limites
- A skill decide a edição; o Premiere executa.
- Nunca invente falas, identidades, timecodes ou evidências.
- Não altere o áudio original, a transcrição ou a análise para forçar uma
decisão.
- Não declare uma edição concluída com base apenas em um JSON, preview ou
retorno de ferramenta; exija aplicação e verificação.
- Não execute cortes destrutivos sem aprovação e backup/duplicata.
## Relato
Relate sempre em português:
- edição, vídeo e versão da análise usados;
- tomadas encontradas e escolhidas, com motivo;
- falas descartadas como bastidor ou repetição;
- cortes, zooms, textos e marcadores propostos;
- decisões rejeitadas ou ambíguas;
- plano salvo, aplicação realizada e verificação pendente.