Communitygithub.com

WEBGRS/reframe

Reenquadre imagens paisagem para formato vertical (9:16), quadrado ou 4:5 — cada cena cortada no que realmente importa (o orador, o que se move, o assunto do plano), o corte seguindo um sujeito que atravessa o quadro, sem nunca reencodar o vídeo. Mede cada cena primeiro, desenha todas as janelas nos quadros para você verificar e confere o film.html finalizado contra as mesmas regras.

O que é reframe?

Esta skill, Reenquadre, transforma vídeos gravados em paisagem (horizontal) em formatos verticais (9:16), quadrados ou 4:5 de forma inteligente, mantendo o foco no que realmente importa em cada cena. Diferente de um simples corte central ou redimensionamento com barras, a skill analisa cada plano individualmente: detecta movimento, detalhes, contraste de cores e tons de pele, e propõe janelas de corte dinâmicas que acompanham o sujeito principal. A ferramenta nunca reencoda o arquivo de vídeo original; em vez disso, usa parâmetros de tempo (`#t=`) e CSS (`object-fit: cover`, `object-position`, `translate`) para fazer o corte na própria página HTML, preservando a qualidade original e o áudio contínuo. É útil para criadores de conteúdo, editores de vídeo e desenvolvedores que precisam adaptar vídeos para plataformas como Instagram, TikTok ou YouTube Shorts sem perder a essência de cada cena, com uma interface que permite revisar visualmente cada sugestão de corte através de sheets de verificação. A skill também inclui um modo de verificação (`check`) que analisa o film.html e aponta violações das regras.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/WEBGRS/openfilm-reframe/tree/HEAD/skills/reframe

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Reenquadre

O vídeo paisagem da pessoa como um filme vertical ou quadrado que parece ter sido filmado para aquele formato: a cada momento o espectador vê sobre o que é o plano, nunca a parede ao lado, nunca metade de um rosto.

O que o define

Cada cena é enquadrada no seu próprio conteúdo. Um único corte central para o vídeo inteiro não é isto, por mais limpo que seja, e também não é o quadro inteiro da paisagem encolhido entre barras desfocadas.

O que tem que ser verdade

  • Medido, depois examinado. Cada janela vem da medição e dos seus próprios olhos nas suas imagens. A medição pode estar errada; as imagens decidem.
  • O sujeito permanece inteiro. Rostos, o orador, a coisa em movimento e palavras que importam permanecem dentro do quadro com espaço ao redor. Quando duas coisas importam e ambas não cabem, o quadro vai para aquela que é o foco do momento (quem fala, o que se move, o que a narração nomeia), e a pessoa ouve o que foi deixado de fora.
  • Enquadramento calmo. Um sujeito parado recebe uma janela fixa para a cena. A janela só se move quando o sujeito se move: um reposicionamento brusco pelo menos um segundo após o último, ou um acompanhamento suave; nunca um corte que deriva ou treme.
  • O vídeo deles como ele é. O mesmo arquivo cortado com #t= e recortado pelo próprio CSS do clipe (object-fit: cover com um object-position, ou uma caixa do formato do vídeo movida por translate); nunca reencodado, cortado num novo arquivo ou com velocidade alterada. Clipes de uma mesma cena se encontram quadro a quadro, então o som da cena corre ininterrupto.

O que você tem

node <pasta desta skill>/scripts/reframe.mjs <video> --aspect 9:16 --src assets/<arquivo> (na pasta do filme) escreve reframe/<nome>.json, uma página de revisão e reframe/<nome>-sheet.jpg. Ela encontra as cenas, pesa movimento (o movimento próprio da câmera removido), detalhe, contraste de cor e tons de pele dez vezes por segundo, e dá a cada cena uma janela fixed (um clipe), split (vários clipes do mesmo arquivo, cada um com pelo menos um segundo, cada um com sua própria posição) ou whole (o formato original do vídeo), com linhas <video> prontas nos seus próprios segundos de origem.

Leia cada folha que ela imprime (look: … (Read it)). Cada imagem é um momento (início de cada clipe, seu momento mais fraco marcado WEAKEST, um a cada 1,5 s): o quadro com a janela delineada e o exterior escurecido, uma régua em % do quadro, e o corte como o filme o mostra. Onde o sujeito está fora da janela ou cortado por ela, defina object-position você mesmo; a saída fornece a fórmula. held é a frequência com que a janela concorda com a medição, não prova de que o sujeito está dentro dela. Linhas marcadas com ! indicam onde olhar com mais atenção.

Um acompanhamento suave (--follow): @keyframes follow-N de translate para o caminho de uma cena dividida e o único clipe <video> que os usa, também em reframe/<nome>-follow.css. Coloque os keyframes no <style> do film.html. A animação roda no tempo próprio do clipe a partir do seu at: um clipe cortado para começar a segundos após o início da cena recebe animation-delay: -a s. O clipe mantém seu próprio som.

Cortar uma cena mantém apenas os clipes dentro do novo #t=, os dois externos cortados para ele, posições inalteradas.

O filme como escrito: node <pasta desta skill>/scripts/reframe.mjs check na pasta do filme lê os cortes do film.html e imprime cada janela, quanto tempo ela se move, cada reposicionamento, os momentos em que a janela mantém o mínimo do que a medição encontrou, e os desenha numa folha. Ela lista com ! o que quebra as regras acima. Corrija cada ! e execute novamente.

A forma do filme é sua viewport (<meta name="viewport" content="width=1080, height=1920">). npx openfilm look mostra o filme cortado.

Com a pessoa

O que eles pedem vem primeiro: a forma (9:16 quando dizem vertical), as cenas que devem estar nele, qualquer coisa que deve permanecer no quadro (um produto, um logotipo, um segundo orador). Pergunte sem atrasar o trabalho. Quando terminar, diga por cena: held, cada linha !, cada janela que você moveu e porquê, e o que o corte deixou de fora.

Habilidades Relacionadas