Communitygithub.com

legenda-simples

Legenda "simples" para vídeos verticais 9x16 no Premiere Pro — frases curtas (3-4 palavras, até 5 em trechos rápidos), uma linha, branca com sombra suave, Montserrat Bold, apenas inicial maiúscula, SEM animação de entrada, sincronizada com a fala e dentro da margem segura. Inclui pipeline de edição dinâmica (corta pausas/respirações e alterna zoom). Estilo de cortes de podcast. Use quando o usuário pedir "legenda simples", "legenda de podcast", "legenda por frase", "o modelo simples" ou "edita esse vídeo com a legenda simples". Para o estilo grande/vermelho/palavra por palavra, use a legenda-impacto.

legenda-simples란 무엇인가요?

Este skill implementa o estilo de legenda 'simples' para vídeos verticais 9x16 no Adobe Premiere Pro, voltado principalmente para cortes de podcast. Ele gera frases curtas (3-4 palavras, até 5 em fala rápida) em texto branco, negrito, com sombra suave, sem animação de entrada — o texto aparece por inteiro no primeiro quadro e desaparece em corte seco. A legenda é sincronizada com a fala: cada frase começa exatamente no início da primeira palavra falada e termina 0,3s após a última, sem invadir a frase seguinte. O fluxo de trabalho é baseado em Python + ExtendScript: primeiro transcreve o áudio do Premiere, depois planeja as frases (com programação dinâmica para evitar palavras soltas), gera PNGs transparentes com o texto, verifica margens de segurança e, por fim, importa os PNGs na timeline via scripts JSX. O skill também oferece uma opção de edição dinâmica completa (Opção B) que remove pausas e respirações, aplica zoom alternado (100%/116%) e gera a sequência editada com as legendas já sincronizadas. A alternativa .mogrt (texto editável) existe, mas introduz animação palavra por palavra, o que foge do estilo 'simples'.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gbrand-lab/premiere-legendas-skills/tree/HEAD/skills/legenda-simples

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Legenda Simples — frases curtas, sem animação, no tempo da fala

Uma frase por vez, texto branco em negrito, minúscula com inicial maiúscula (como transcrito), sem fundo, sombra suave, no terço inferior, sem vermelho e sem animação de entrada. Ex.: "O problema é que" / "sem prática".

Pré-requisitos

  • Premiere Pro (testado no 2027/27.0; ExtendScript) e Python 3.9+ com pip install -r requirements.txt (Pillow).
  • Uma forma de executar ExtendScript no Premiere (MCP com execute_extendscript ou o bridge CEP por arquivo) — veja docs/PREMIERE-BRIDGE.md na raiz do repositório.
  • Fonte Montserrat Bold instalada (grátis, Google Fonts). Se não for encontrada, defina CAPTION_FONT_DIR ou coloque o .ttf em fonts/ dentro do skill.
  • O modo padrão (PNG) não precisa de .mogrt. Apenas a alternativa .mogrt precisa de assets/Simple_Text_WbW.mogrt (veja assets/LEIA-ME.md).

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

  • 9x16 (1080x1920). Montserrat Bold 66 px, branco, sombra suave (blur 6, dy 4, 55%). y_center 0,70.
  • Sem animação de entrada: cada frase é um PNG transparente 1080x1920 (make_stills.py) que aparece inteiro no 1º quadro e some em corte seco. O .mogrt palavra por palavra não serve: a entrada é embutida (só existem "Out Animation" e "Anim Speed" 50-500, não "In Animation"). Contrapartida do PNG: o texto não é editável no Premiere — para corrigir, edite blocks.json e gere de novo (segundos).
  • Frase de 3-4 palavras, por programação dinâmica: evita 1-2 palavras soltas, não termina em "o/de/que...", prefere cortar em vírgula ou pausa; vírgula só corta com ao menos 3 palavras. Em fala rápida (frase atravessada em < 0,9 s) junta até 5 palavras, sem atravessar fim de frase (. ? !).
  • Margem segura: nada fora do title safe do Premiere (80% x 80%); largura útil 78% (842 px em 1080), bloco dentro de 10%-90% da altura. O texto encolhe até min_scale e, se não couber, quebra em 2 linhas; tamanho arredondado para BAIXO. Conferir com check_margins.py (deve dar fora da margem: 0).
  • Entrega: editar direto na sequência indicada (sem cópia), a menos que o usuário peça cópia.

Tempo na tela = tempo da fala (modo sync, padrão)

  • A frase nasce no início da 1ª palavra falada (atraso zero) e morre no fim da última + tail 0,3 s, estendida até min_dur 0,8 s somente se houver silêncio depois (nunca invade a próxima frase). Frase que ficaria < 0,5 s cola na anterior somente se couber em 5 palavras e a anterior não fechou uma frase.
  • Nota de projeto: existe também o modo schedule_mode: "lag" (tempo de leitura: cada frase fica ao menos ~0,9 s e, se a fala for mais rápida, a seguinte entra depois, até 0,9 s). Ele descola a legenda da voz (início e fim deixam de coincidir e a duração varia sem relação com o que é falado), por isso o padrão é sync. Use lag somente se o usuário pedir leitura mais lenta (--config com {"schedule_mode":"lag"}).
  • Limite honesto: fala muito densa (~3,6 palavras/s, picos de 6/s) faz algumas frases ficarem curtas (0,36-0,8 s). É a fala, não a legenda.

Opção A — só legenda numa sequência já editada

  1. Confirmar o projeto/sequência com o usuário e deixá-la ativa.
  2. Transcrição: JSON exportado do Premiere (Texto > Transcrição > ... > Exportar; fica em Documentos "<sequência>.json").
  3. PYTHONIOENCODING=utf-8 python -I <skill>/scripts/plan_phrases.py <transcrição.json> <pasta>/blocks.json; mostre a lista e as palavras [conferir].
  4. python -I <skill>/scripts/make_stills.py <pasta>/blocks.json <pasta>/png --track 1 (gera PNGs + JSX; use uma pasta NOVA a cada geração — o Premiere trava os PNGs já importados) e python -I <skill>/scripts/check_margins.py <pasta>/png/stills_clips.json.
  5. No Premiere, com a sequência ativa: rodar stills_import.jsx (importa os PNGs num bin) e em seguida stills_01.jsx... um por vez (ok=20/20). Os tempos já saem na grade de quadros (--fps, padrão 30).

Opção B — edição dinâmica completa (cortes + zoom + legenda)

  1. Importar o vídeo no projeto e ter a transcrição do Premiere.
  2. python -I <skill>/scripts/plan_edit.py <transcrição.json> <pasta>: tira pausas/respirações > 0,3 s e as hesitações (texto vazio), faz sub-cortes de ~3 s em pontuação, alterna zoom 100%/116% e escreve clips.json + blocks.json já no tempo cortado. Ajustes no topo do script (GAP, ZOOM_ALT, SUB_MIN/MAX).
  3. python -I <skill>/scripts/build_cut_script.py <pasta>/clips.json <pasta> --item <nome do arquivo no projeto> --name "<nome> editado 9x16" -> montar.jsx; rode no Premiere (a sequência original não é tocada).
  4. Legendas: passos 4 e 5 da Opção A com o blocks.json desta pasta.
  5. Salvar o projeto e entregar listando: cortes, zoom, palavras duvidosas e o que não foi visto.

Alternativa .mogrt (texto editável, COM entrada palavra por palavra)

python -I <skill>/scripts/make_graphics_script.py <pasta>/blocks.json <pasta>/lote.js --track 1 (usa assets/Simple_Text_WbW.mogrt; Anim Speed em style.json) e rodar os lotes lote_NN.js. Use apenas se o usuário aceitar a animação.

Dicas de Premiere (descobertas na prática)

  • importFiles precisa de caminho absoluto (new File(...).fsName); createNewSequenceFromClips herda 1080x1920 de um vídeo vertical.
  • Render: app.encoder.encodeSequence(...) + startBatch() pode não entrar na fila do Media Encoder. O que funcionou: seq.exportAsMediaDirect(saída, preset, app.encoder.ENCODE_ENTIRE) (renderiza dentro do Premiere, ~5 min para 90 s). Preset: <pasta do Premiere>/MediaIO/systempresets/.../H264 Match Source - High bitrate.epr (procure com glob; fica dentro da instalação). O preset "MooV" gera áudio PCM em .mov/.mp4; se for postar, re-empacote com ffmpeg -c:v copy -c:a aac.
  • Exportar frame (exportFramePNG via QE) pode falhar; os PNGs da legenda dispensam isso: o que se vê no PNG é o que vai para o vídeo.

Ajustes rápidos

QueroMexer em
Fonte/tamanho/posição/sombrastyle.json (font_path, mogrt_font, mogrt_size, y_center, shadow_*)
Mais tempo na telamin_dur, tail em RULES (no sync só estende para o silêncio)
3 palavras em vez de 4{"max_words": 3} via --config
Mais/menos cortes e zoomGAP, ZOOM_ALT, SUB_MIN/SUB_MAX em plan_edit.py

Limites conhecidos

  • PNG não é texto editável (corrigir = editar blocks.json e regenerar).
  • A transcrição do Premiere pode errar; revisar o blocks.json antes de aplicar.
  • A fonte de referência parece Proxima Nova Bold (mais estreita); usa-se Montserrat Bold (livre).

Individual skills in this repo

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

관련 스킬