feat: criado monitoramento contínuo de trilhas com varredura recur
- criado monitoramento contínuo de trilhas com varredura recursiva e baixa prioridade - gerado e validado plano editorial revisável do depoimento da Erika sem aplicação na timeline - adicionada leitura e comparação estrutural da timeline após aplicar planos de edição - limitadas as classificações de trilhas às duas maiores probabilidades de cada categoria - limpo o catálogo musical para reiniciar as análises sem remover dados de vídeo Resumo: - 34 arquivos alterados - 6 novos - 28 modificados - 0 removidos 28 files changed, 833 insertions(+), 75 deletions(-) Arquivos: - .jhonny/analises.db - code/cep-plugin/index.html - code/cep-plugin/main.js - code/engine/analisar_trilhas.py - code/engine/aplicar_plano_de_edicao.py - code/engine/consultar_detalhes_de_trilha.py - code/engine/editor/__init__.py - code/engine/editor/aplicador_de_plano_de_edicao.py - code/engine/editor/backup_de_sequencia.py - code/engine/editor/escrita/escrita_no_editor.py - code/engine/editor/modelos.py - code/engine/editor/validacao_semantica.py - code/engine/integracoes/audio/classificador_de_musica_essentia.py - code/engine/integracoes/audio/modelos_de_analise_musical.py - code/engine/integracoes/audio/provider_de_analise_musical_essentia.py - code/engine/persistencia/esquema.py - code/engine/persistencia/repositorio_de_trilhas.py - code/engine/testes/duplos_de_premiere.py - code/engine/testes/test_aplicador_de_plano_de_edicao.py - code/engine/testes/test_aplicar_plano_de_edicao.py - code/engine/testes/test_escrita_no_editor.py - code/engine/testes/test_leitor_de_plano_de_edicao.py - code/engine/testes/test_validador_semantico_de_plano.py - code/plugins/premiere-pro/skills/editar-por-voz/SKILL.md - code/plugins/premiere-pro/skills/editar-por-voz/criterios/08-formato-de-saida.md - code/plugins/premiere-pro/skills/editar-por-voz/criterios/10-revisao-humana.md - code/src/tools/timeline.ts - code/tests/tools/tool-modules.test.ts - .jhonny/planos/ - code/.jhonny/analises.db-shm - code/.jhonny/analises.db-wal - code/engine/editor/verificador_da_aplicacao.py - code/engine/testes/test_verificador_da_aplicacao.py - code/plugins/premiere-pro/skills/editar-por-voz/criterios/11-gancho.md
This commit is contained in:
@@ -76,7 +76,7 @@ ou evidência obrigatória estiver ausente, pare e relate exatamente o que falta
|
||||
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
|
||||
6. Decida cortes, ganchos, zooms, textos e marcadores somente quando o contrato de
|
||||
aplicação suportar a ação. Cada ação deve ter motivo verificável.
|
||||
7. Antes de salvar, reconstrua o texto que sobreviverá a cada emenda. Um
|
||||
segmento do Whisper não equivale a uma frase: una segmentos adjacentes
|
||||
@@ -88,13 +88,19 @@ ou evidência obrigatória estiver ausente, pare e relate exatamente o que falta
|
||||
`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.
|
||||
9. Faça preview do texto sobrevivente, lendo em sequência a última frase antes
|
||||
e a primeira frase depois de cada corte. Apresente decisões e incertezas
|
||||
para revisão humana. Uma alteração no plano exige novo preview.
|
||||
e a primeira frase depois de cada corte. Para `hook`, apresente a frase
|
||||
completa que abrirá o vídeo e a primeira frase original que virá em seguida.
|
||||
Uma alteração no plano exige novo preview.
|
||||
10. 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`.
|
||||
11. Reconsulte a timeline, compare com o plano e registre a verificação. Separe
|
||||
o que foi comprovado automaticamente do que exige avaliação visual.
|
||||
o que foi comprovado automaticamente do que exige avaliação visual.
|
||||
|
||||
Essa releitura pós-aplicação é obrigatória: uma aplicação só pode ser
|
||||
reportada como bem-sucedida quando a cobertura de origem em vídeo e áudio
|
||||
corresponder ao complemento dos cortes do plano. Sobras, lacunas ou
|
||||
desalinhamentos devem reprovar a verificação e ficar registrados no histórico.
|
||||
|
||||
## Contrato da decisão
|
||||
|
||||
@@ -114,10 +120,12 @@ O JSON abaixo é uma representação de trabalho, não a fonte principal:
|
||||
}
|
||||
```
|
||||
|
||||
`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.
|
||||
`cut` remove um intervalo. `hook` duplica um único trecho vinculado em `0s` e
|
||||
mantém a fala na posição original; use somente
|
||||
`params: {"target": 0, "keep_original": true}`. 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),
|
||||
@@ -125,7 +133,9 @@ Leia, conforme a etapa, [criterios/02-triagem-roteiro-vs-conversa.md](criterios/
|
||||
[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).
|
||||
[criterios/10-revisao-humana.md](criterios/10-revisao-humana.md). Quando o
|
||||
pedido envolver gancho ou reordenação, leia também
|
||||
[criterios/11-gancho.md](criterios/11-gancho.md).
|
||||
|
||||
## Limites
|
||||
|
||||
@@ -146,6 +156,6 @@ 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;
|
||||
- cortes, ganchos, zooms, textos e marcadores propostos;
|
||||
- decisões rejeitadas ou ambíguas;
|
||||
- plano salvo, aplicação realizada e verificação pendente.
|
||||
|
||||
@@ -15,6 +15,9 @@ em `planos_de_edicao` e `acoes_do_plano`. Você nunca escreve XML.
|
||||
"actions": [
|
||||
{"kind": "cut", "start": 21.9, "end": 127.6,
|
||||
"reason": "tomadas descartadas, frases interrompidas e conversa com a equipe"},
|
||||
{"kind": "hook", "start": 141.2, "end": 147.8,
|
||||
"params": {"target": 0, "keep_original": true},
|
||||
"reason": "frase completa escolhida como gancho de abertura"},
|
||||
{"kind": "zoom", "start": 2.0, "end": 10.7,
|
||||
"params": {"scale": 1.15}, "reason": "abertura: \"Aquela mama\" (ênfase 0.42)"},
|
||||
{"kind": "text", "start": 127.7, "end": 129.0,
|
||||
@@ -39,13 +42,14 @@ erro é silencioso.
|
||||
Ambos ≥ 0. Um `end <= start` é rejeitado.
|
||||
|
||||
### 3. Tipos
|
||||
`cut` · `zoom` · `text` · `marker`
|
||||
`cut` · `hook` · `zoom` · `text` · `marker`
|
||||
|
||||
### 4. Parâmetros por tipo
|
||||
|
||||
| Tipo | `params` |
|
||||
|---|---|
|
||||
| `cut` | nenhum |
|
||||
| `hook` | `target: 0` e `keep_original: true` |
|
||||
| `zoom` | `scale` entre 1.0 e 3.0 (padrão 1.3 se omitido) |
|
||||
| `text` | `content` **obrigatório**, até 120 caracteres |
|
||||
| `marker` | opcional: `content` vira o nome do marcador |
|
||||
@@ -70,6 +74,14 @@ ao menos 0,30s de respiro junto às palavras mantidas. A engine bloqueia borda
|
||||
dentro de palavra, continuação gramatical e margem insuficiente. Detalhes em
|
||||
`06-texto-corte-marcador.md` e `10-revisao-humana.md`.
|
||||
|
||||
### 7. Gancho: uma cópia completa para o início
|
||||
|
||||
Use no máximo um `hook`. O intervalo deve estar contido em um único clipe de
|
||||
vídeo e seu áudio vinculado, em velocidade normal. A frase copiada precisa ter
|
||||
começo, fechamento e 0,30s de margem nas duas bordas. O aplicador aceita apenas
|
||||
o destino `0` e preserva a ocorrência original; nenhuma outra ação pode
|
||||
sobrepor esse intervalo.
|
||||
|
||||
## Persistência
|
||||
|
||||
Depois de validar o JSON, crie um registro em `planos_de_edicao` ligado ao
|
||||
@@ -81,8 +93,11 @@ confirmada.
|
||||
|
||||
- **Plano ou ação inválida** → o plano inteiro é bloqueado antes de alterar a
|
||||
timeline.
|
||||
- **Borda de corte semanticamente insegura** → o plano inteiro é bloqueado
|
||||
- **Borda de corte ou gancho semanticamente insegura** → o plano inteiro é bloqueado
|
||||
antes da conexão com o Premiere e antes do backup.
|
||||
- **Gancho com faixas adicionais ocupadas, mídia retimada ou par A/V
|
||||
ambíguo** → recusado; use uma sequência simples de diálogo ou faça a
|
||||
duplicação manualmente.
|
||||
- **Ação apontando para material cortado** → descartada e reportada, nunca
|
||||
deslizada para o conteúdo vizinho.
|
||||
- **Ação fora da mídia** → reportada como não colocada.
|
||||
|
||||
@@ -10,22 +10,26 @@ presuma que uma etapa posterior corrigirá bordas editoriais imprecisas.
|
||||
|
||||
## Preview obrigatório
|
||||
|
||||
Antes de pedir aprovação, apresente para cada corte:
|
||||
Antes de pedir aprovação, apresente para cada corte ou gancho:
|
||||
|
||||
- intervalo removido e motivo;
|
||||
- intervalo afetado e motivo;
|
||||
- última frase completa que ficará antes;
|
||||
- primeira frase completa que ficará depois;
|
||||
- texto da emenda resultante;
|
||||
- texto da emenda resultante quando houver remoção;
|
||||
- margem acústica em cada lado;
|
||||
- qualquer incerteza que exija escuta humana.
|
||||
|
||||
Para `hook`, apresente também a frase completa que passará a abrir o vídeo e
|
||||
confirme que a ocorrência original será preservada.
|
||||
|
||||
O editor deve aprovar o conteúdo sobrevivente, não apenas a quantidade de
|
||||
ações. Se o preview mostrar palavra truncada, oração incompleta ou continuação
|
||||
sem contexto, o plano volta para edição e recebe novos limites.
|
||||
|
||||
## Defesa automática
|
||||
|
||||
Ao clicar em **Aplicar plano na timeline**, a engine revalida os cortes antes
|
||||
Ao clicar em **Aplicar plano na timeline**, a engine revalida cortes e
|
||||
ganchos antes
|
||||
de se conectar ao Premiere e antes de criar o backup. A aplicação é bloqueada
|
||||
quando encontra:
|
||||
|
||||
@@ -33,6 +37,7 @@ quando encontra:
|
||||
- menos de 0,30s entre a borda e a palavra mantida;
|
||||
- fala mantida interrompida antes do corte;
|
||||
- retomada no meio de frase depois do corte.
|
||||
- gancho sem frase completa ou sem margem nas duas extremidades.
|
||||
|
||||
Essa validação é uma rede de segurança, não substitui o preview. Depois que o
|
||||
plano passa, a engine cria uma única cópia de segurança, aplica as ações e
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# 11 — Gancho duplicado
|
||||
|
||||
> **Escopo:** Copiar uma fala do meio do vídeo para a abertura.
|
||||
> **Quando:** pedidos de gancho ou abertura forte com repetição intencional.
|
||||
|
||||
## Semântica atual
|
||||
|
||||
`hook` cria uma cópia: a fala permanece no corpo do vídeo e sua cópia passa a
|
||||
abrir a sequência. Use somente:
|
||||
|
||||
```json
|
||||
{
|
||||
"kind": "hook",
|
||||
"start": 141.2,
|
||||
"end": 147.8,
|
||||
"params": {"target": 0, "keep_original": true},
|
||||
"reason": "frase completa escolhida como gancho de abertura"
|
||||
}
|
||||
```
|
||||
|
||||
## Escolha editorial
|
||||
|
||||
O gancho deve funcionar sem a frase anterior. Prefira uma promessa, contraste,
|
||||
resultado, pergunta ou afirmação específica que desperte curiosidade e continue
|
||||
verdadeira fora da posição original. Evite pronomes sem referente, continuações
|
||||
como “por isso” ou “então” e conclusões que dependam de explicação anterior.
|
||||
|
||||
Selecione a menor unidade que preserve o sentido completo. Una segmentos do
|
||||
Whisper quando a gramática continuar entre eles. A primeira palavra precisa
|
||||
iniciar a frase, a última precisa fechá-la e cada extremidade precisa conservar
|
||||
ao menos 0,30s de respiro.
|
||||
|
||||
## Limites da execução segura
|
||||
|
||||
A versão atual aceita um único `hook`, destinado a `0s`, dentro de um único
|
||||
clipe de vídeo em velocidade normal e seu áudio correspondente. Ela recusa
|
||||
faixas adicionais ocupadas, par A/V ambíguo, mídia retimada ou invertida e
|
||||
qualquer outra ação que sobreponha o trecho do gancho.
|
||||
|
||||
A operação cria a cópia a partir do mesmo intervalo da mídia de origem; o
|
||||
original conserva seus efeitos, mas a cópia nasce sem efeitos específicos do
|
||||
clipe. Por isso o gancho deve rodar antes de zooms e outros efeitos do plano.
|
||||
Ela só prossegue quando o backup da sequência foi confirmado pelo Premiere.
|
||||
|
||||
## Preview
|
||||
|
||||
Antes da aprovação, mostre:
|
||||
|
||||
- a frase completa escolhida;
|
||||
- o intervalo original e as margens de cada borda;
|
||||
- a nova abertura seguida da primeira frase do conteúdo anterior;
|
||||
- a confirmação de que a ocorrência original será preservada;
|
||||
- o aumento esperado da duração total pelo tamanho do gancho.
|
||||
|
||||
O plano está pronto somente quando a nova emenda preserva sentido, ritmo e
|
||||
respiração.
|
||||
Reference in New Issue
Block a user