- alinhada a remoção da engine Python ao fluxo ripple do executor CEP para cortar vídeo e áudio - criada remoção atômica para manter vídeo e áudio vinculados sincronizados - criada aba de configuração de legendas offline e inclusão das preferências no pacote para a IA - criado gerador offline de blocos de legenda sincronizados com palavras da transcrição e cortes aprovados - criada uma versão base portátil da skill edit-video-by-voice para testes em outros agentes de IA - incorporado perfil editorial opcional à skill portátil para orientar decisões de edição Resumo: - 14 arquivos alterados - 4 novos - 10 modificados - 0 removidos 10 files changed, 278 insertions(+), 33 deletions(-) Arquivos: - code/cep-plugin/index.html - code/cep-plugin/main.js - code/docs/supported-actions.md - code/engine/editor/aplicador_de_plano_de_edicao.py - code/engine/editor/escrita/escrita_no_editor.py - code/engine/testes/duplos_de_premiere.py - code/engine/testes/test_aplicador_de_plano_de_edicao.py - code/src/tools/timeline.ts - code/tests/tools/structural-verification.test.ts - code/tests/tools/tool-modules.test.ts - code/engine/arquitetura/legendas.md - code/engine/editor/legendas/ - code/engine/testes/test_gerador_de_legendas.py - skills/
81 lines
2.6 KiB
Markdown
81 lines
2.6 KiB
Markdown
# Input timeline
|
|
|
|
The skill accepts any timeline format that can be unambiguously normalized to
|
|
the following shape:
|
|
|
|
```json
|
|
{
|
|
"source": "video.mp4",
|
|
"duration": 42.5,
|
|
"utterances": [
|
|
{
|
|
"speaker": "apresentador",
|
|
"text": "A fala transcrita.",
|
|
"start": 3.2,
|
|
"end": 5.8,
|
|
"take": "take-02",
|
|
"confidence": 0.98,
|
|
"excluded": false
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
An optional editor profile can be present at the same root level as
|
|
`source`, `duration`, and `utterances`:
|
|
|
|
```json
|
|
{
|
|
"perfil_de_video": "Entrevista",
|
|
"objetivo": {
|
|
"principal": "Transmitir conhecimento e autoridade",
|
|
"publico": "Pessoas interessadas no assunto",
|
|
"mensagem": "O conteúdo da conversa é compreendido com contexto."
|
|
},
|
|
"narrativa": {
|
|
"tipo": "História pessoal",
|
|
"storytelling": true,
|
|
"estrutura": "Apresentação → perguntas essenciais → aprofundamento → síntese e encerramento."
|
|
},
|
|
"emocao": {
|
|
"objetivo": "Interesse e credibilidade",
|
|
"intensidade": 2,
|
|
"tom": "Informativo"
|
|
},
|
|
"formato": {
|
|
"canais": "YouTube, podcast em vídeo, cortes sociais",
|
|
"proporcao": "16:9",
|
|
"duracao_minima_segundos": 60,
|
|
"duracao_maxima_segundos": 600,
|
|
"ritmo": "equilibrado"
|
|
},
|
|
"prioridades": ["Clareza", "Conteúdo", "Contexto", "Ritmo", "Estética"],
|
|
"elementos_de_edicao": {
|
|
"broll": true,
|
|
"legendas": true,
|
|
"textos": true,
|
|
"graficos": false,
|
|
"zoom": true,
|
|
"cortes": "Remover redundâncias e silêncios longos; preservar respostas completas e contexto."
|
|
},
|
|
"regras_de_edicao": "Não cortar uma resposta de modo que altere o sentido.",
|
|
"restricoes": "Não cortar frases de modo que prejudique o raciocínio.",
|
|
"criterios_de_qualidade": "Manter contexto, lógica e informação relevante."
|
|
}
|
|
```
|
|
|
|
The profile is editorial context, not an execution request. Boolean flags and
|
|
descriptions of future elements such as B-roll, captions, text, graphics,
|
|
zoom, or music must not appear as actions unless the active action contract
|
|
explicitly supports them.
|
|
|
|
`segments`, `transcript`, or another collection name may be accepted only when
|
|
the items clearly provide equivalent timing and text fields. Do not silently
|
|
repair malformed data, clamp out-of-range values, or infer the media duration.
|
|
|
|
Unknown metadata may inform analysis but must not be copied into the output
|
|
contract. Explicit exclusion or inactivity flags take precedence over the
|
|
content of the corresponding utterance. If profile text contains broken
|
|
character encoding, preserve the intended meaning only when it is unambiguous;
|
|
otherwise ask for a UTF-8 version instead of guessing.
|