Communitygithub.com

legenda-impacto

Modelo de legenda de alto impacto para videos verticais 9x16 no Premiere Pro — animação palavra por palavra sorteada, linha pequena + linha grande (branca ou vermelha) alternando com legenda reta, fonte condensada em maiúscula, sempre dentro da margem segura.

¿Qué es legenda-impacto?

Este skill implementa um modelo de legenda chamado 'Legenda Impacto', projetado para criar legendas de alto impacto visual em vídeos verticais 9x16 (Reels, Shorts, TikTok) no Adobe Premiere Pro. O processo começa com a transcrição do áudio do vídeo em um JSON; o script 'plan_blocks.py' analisa essa transcrição e gera um plano de blocos de palavras, onde cada bloco pode ser do tipo 'big_below' (linha pequena em cima, grande embaixo), 'big_above' (palavra forte grande em cima), 'single_big', 'single_small' ou 'reta' (linha única ou duas). A cada bloco há 40% de chance de se tornar reta, e no máximo dois blocos consecutivos do mesmo tipo. Palavras fortes, números ou valores monetários são destacados em vermelho (#F2381C) na linha grande, com limite de dois vermelhos seguidos e força para um se passarem quatro blocos sem cor. A animação palavra por palavra usa um arquivo .mogrt (Essential Graphics), selecionado aleatoriamente entre os disponíveis em 'assets/', nunca repetindo o anterior. O texto é centralizado, em maiúsculas, fonte Impact (ou Anton como fallback), com margem segura implementada (largura útil de 78% da tela, ou 842 px em 1080), e linhas que não cabem são automaticamente reduzidas (mínimo 60%) ou quebradas em até 3 linhas com corte equilibrado. O script 'make_graphics_script.py' gera lotes de até 8 clipes cada, que são enviados ao Premiere via ExtendScript. Após a colocação, os clipes da trilha vermelha recebem o efeito 'RGB Color Balance' com valores específicos para obter a cor exata. O skill funciona exclusivamente com a transcrição do Premiere e é adequado para qualquer vídeo vertical. Exige Python 3.9+ com Pillow, e um MCP do Premiere ou bridge CEP para executar ExtendScript.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gbrand-lab/premiere-legendas-skills/tree/HEAD/skills/legenda-impacto

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Legenda Impacto

Modelo de legenda de alto impacto para Reels/Shorts/TikTok. Quando o usuário pedir para legendar um vídeo com este modelo, aplique-o como descrito abaixo, sem pedir os parâmetros de novo.

Pré-requisitos

  • Premiere Pro (testado no 2027/27.0; usa ExtendScript) e Python 3.9+ com pip install -r requirements.txt (Pillow).
  • Uma forma de executar ExtendScript no Premiere: um MCP do Premiere (execute_extendscript) ou o bridge de arquivos CEP — ver docs/PREMIERE-BRIDGE.md na raiz do repositório.
  • Fontes: Impact (vem no Windows e no macOS) e, opcional, Anton. Se a fonte não for achada, defina CAPTION_FONT_DIR.
  • Pacote de .mogrt palavra por palavra (*_WbW.mogrt) em assets/ — não vem no repositório (veja assets/LEIA-ME.md). São modelos Essential Graphics com os controles "Anim Speed"/"Out Animation" e um campo de texto.

Parâmetros (fonte da verdade: style.json e scripts/plan_blocks.py)

  • Formato 9x16 (1080x1920). Texto em MAIÚSCULO, centralizado, y_center 0,54 (um pouco abaixo do meio).
  • Fonte Impact. Linha pequena 56 px (branca), linha grande 140 px, reta 76 px; encolhe para caber (mín 60%).
  • Bloco de 1 a 6 palavras, cortado por pontuação, pausa > 0,45 s ou duração > 3,3 s; nunca termina em palavra solta (o, de, que...).
  • Tipos de bloco: big_below (pequena em cima + grande embaixo, padrão), big_above (palavra forte grande em cima), single_big, single_small e reta (1 linha, ou 2 se for longa, tamanho padrão, branca). Cada bloco vira reta com 40% de chance, no máximo 2 seguidos do mesmo tipo.
  • Vermelho #F2381C na linha grande quando tem número/dinheiro/palavra forte (lista strong), no máximo 2 vermelhos seguidos, força 1 se passaram 4 blocos sem.
  • Animação: .mogrt palavra por palavra, sorteada por bloco entre os que existirem em assets/, nunca repetindo a anterior; as duas linhas do mesmo bloco usam a mesma. Saída em corte seco (Out Animation desligada). Anim Speed 150 (200 se o bloco < 1 s).
  • Margem segura (regra fixa): nada de texto fora do title safe do Premiere (80% x 80% = 10% de margem em cada lado). Implementado em make_graphics_script.py (layout_text + clamp_y; safe_margin_x/y e safe_tolerance no style.json): largura útil = 1 - 2*0,10 - 0,02 = 78% da largura (842 px em 1080). Linha que não cabe: 1) encolhe até min_scale (60%); 2) se ainda não couber, quebra em 2 (até 3) linhas com corte equilibrado e encolhe só o necessário; o tamanho é arredondado para BAIXO, então a linha mais larga nunca passa da margem. O bloco inteiro também fica entre 10% e 90% da altura.
  • Entrega: editar direto na sequência que o usuário indicar (sem criar cópia), a menos que ele peça cópia.

Passo a passo

  1. Conferir o projeto: confirme com o usuário qual projeto/sequência está aberta e deixe a sequência alvo ativa (o ExtendScript trabalha na sequência ATIVA).
  2. Transcrição: o usuário exporta o JSON do Premiere (Texto > Transcrição > menu ... > Exportar; fica em Documentos, "<sequência>.json").
  3. Plano: PYTHONIOENCODING=utf-8 python -I <skill>/scripts/plan_blocks.py <transcricao.json> <pasta>/blocks.json. Mostre o resumo e as palavras [conferir] (confiança < 0,75). Corrija erros no blocks.json (campos small/big).
  4. Trilhas: liste as trilhas de vídeo. V1 = vídeo. Use V2 (índice 1) para linhas pequenas, V3 (índice 2) para grandes/retas e uma trilha NOVA acima de tudo (índice = número atual de trilhas) para as vermelhas. Se houver clipes de legenda/título antigos cobrindo o quadro, desligue-os.
  5. Gerar lotes: python -I <skill>/scripts/make_graphics_script.py blocks.json <pasta>/lote.js --tracks 1,2,<indiceVermelha> [--seed N] -> lote_01.js... (8 clipes cada) e lote_clips.json.
  6. Conferir a margem ANTES de rodar: python -I <skill>/scripts/check_margins.py <pasta>/lote_clips.json — tem que dar fora da margem: 0 (maior largura <= 78%).
  7. Rodar cada lote no Premiere (ExtendScript, campo script, IIFE com return, só JSON.parse/stringify), um de cada vez, esperando ok=8/8. Se o bridge oscilar, verifique a conexão antes de CADA lote. Nunca mande tudo junto (dezenas de clipes de uma vez travam o Premiere).
  8. Vermelho: liste os clipes da trilha vermelha e aplique o efeito "Equilíbrio de cor (RGB)" (em inglês "RGB Color Balance") com Vermelho 242, Verde 56, Azul 28. Só uma vez por clipe — reaplicar duplica o efeito e escurece o vermelho (se rodar de novo, apague e recrie os clipes da trilha vermelha).
  9. Conferir: leia de volta texto/fonte/tamanho/posição dos clipes e rode check_margins.py de novo; exporte 3-4 quadros (um vermelho, um reto, um de 2 linhas) se o export de frame funcionar, senão peça ao usuário para olhar com as guias de margem ligadas. Salve o projeto.
  10. Entregar: diga o que foi feito, as palavras duvidosas e que não viu em movimento.

Ajustes rápidos

QueroMexer em
Tamanhos/fonte/posiçãostyle.json (mogrt_size_small/big/plain, mogrt_font, y_center, gap)
Margemsafe_margin_x/y, safe_tolerance no style.json
Mais/menos legenda reta--plain-prob (padrão 0,4)
Outra aleatoriedade--seed
Mais/menos vermelho, blocos maiores/menoresRULES em plan_blocks.py ou --config regras.json
Corrigir textoblocks.json e refazer os lotes

Alternativa: vídeo transparente (só se o Premiere não aceitar .mogrt)

render_captions.py blocks.json out.mov --duration <s> --fps 30 gera ProRes 4444 com alfa (entrada "pop" de 5 quadros, vermelho nativo, não editável). Colocar na timeline como mídia importada. Render de 45 s leva ~5 min.

Limites conhecidos

  • A animação roda no tempo do template, não no instante exato de cada palavra falada.
  • Palavrão censurado ("P*RRA") não é automático (editar no blocks.json).
  • Corte de frase pode ficar estranho; revisar a lista de blocos antes de rodar.
  • A cor do .mogrt não é alterável por script (por isso o efeito de cor nos vermelhos).

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Skills relacionados