Communitygithub.com

Ahmed-OC/motion-video-skills

Portão de QA e finalização para QUALQUER vídeo renderizado (gerado ou não): inspeciona especificações contra expectativas (duração, fps, resolução, codec, pix_fmt, áudio), mede e normaliza loudness integrada para −14 LUFS com re-codificação só de áudio, gera folhas de contato e tiras de quadros consecutivos para revisão visual, executa uma passagem crítica estruturada com rubrica de pontuação e verifica determinismo da renderização.

O que é motion-video-skills?

Este skill é um portão de liberação completo para qualquer vídeo renderizado (MP4, WebM, MOV), independentemente de como foi gerado. Ele automatiza a verificação técnica (duração, fps, resolução, codec, formato de pixel e presença de áudio), a medição e normalização de loudness integrada para −14 LUFS (padrão das plataformas sociais), e a geração de folhas de contato (1 frame a cada 0,5s) e tiras de quadros consecutivos para inspeção visual detalhada. Além disso, inclui uma passagem de crítica estruturada com 6 critérios (Hook, Legibilidade, Movimento, Sincronia, Consistência de Estilo e Som), cada um pontuado de 0 a 10, que deve ser executada por um revisor diferente do autor do código. Por fim, verifica o determinismo da renderização comparando hashes de duas execuções com a mesma entrada, garantindo que não haja aleatoriedade oculta. O skill é compatível com qualquer terminal Unix/Linux, requer ffmpeg e scripts auxiliares, e é ideal para usuários que precisam auditar, diagnosticar, normalizar ou preparar vídeos para publicação.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Ahmed-OC/motion-video-skills/tree/HEAD/skills/video-qa

Perguntar na sua IA favorita

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

Documentação

QA de Vídeo — o portão de liberação

Um vídeo não está pronto quando é renderizado; está pronto quando foi inspecionado, VISTO em uma folha de contato e normalizado. Este skill funciona em qualquer arquivo, independentemente de como foi feito.

1. Inspecione os fatos (nunca confie em suposições)

scripts/probe.sh video.mp4

Compare cada valor com o que foi solicitado (linha do tempo, briefing, especificação da plataforma):

VerificaçãoEsperado
duraçãoduração solicitada ± 0,1s
fps / resoluçãofps / L×A solicitados
codec / pix_fmth264 / yuv420p (yuvj420p = variante full-range, geralmente ok)
fluxo de áudiopresente se e somente se o vídeo deve ter som
loudness integrada−14 ± 2 LUFS (plataformas sociais normalizam perto de −14)

Qualquer incompatibilidade é um bug na renderização, não uma questão de gosto. Corrija upstream, re-renderize.

2. Loudness: medir → normalizar (apenas áudio, segundos)

# medir
ffmpeg -hide_banner -i video.mp4 -af ebur128 -f null - 2>&1 | awk '/Integrated loudness/{getline; print}'

# normalizar para −14 LUFS (fluxo de vídeo copiado, sem re-codificação)
ffmpeg -i video.mp4 -c:v copy -af "loudnorm=I=-14:TP=-1.5:LRA=11" -c:a aac -b:a 192k video_norm.mp4 \
  && mv video_norm.mp4 video.mp4

Nunca normalize de ouvido com um filtro de volume — LUFS é a unidade que as plataformas realmente usam.

3. Veja: folha de contato + tiras

scripts/contact_sheet.sh video.mp4 contact.png 2 8x    # 1 quadro / 0,5s, 8 colunas
# 12 quadros consecutivos em torno de um momento delicado (transição em T):
ffmpeg -y -ss <T-0.2> -i video.mp4 -frames:v 12 -vf "scale=320:-1,tile=6x2" strip_T.png

Leia a folha como um filme: o ritmo está visível? cortes na grade da batida? alguma cena vazia ou superlotada? Folhas de contato escondem a qualidade do movimento — sempre ASSISTA ao vídeo completo pelo menos uma vez antes de aprovar.

4. Passagem crítica (construtor ≠ juiz)

Revise a RENDERIZAÇÃO — não a fonte, não as intenções — pontuando cada /10:

  1. Gancho — o quadro mais marcante nos primeiros 2 segundos?
  2. Legibilidade — texto ≥ tamanho mínimo, dentro das zonas seguras, sem sobreposição/corte, tempo de exibição suficiente?
  3. Movimento — sem easing linear, entradas com múltiplas propriedades, escalonamento, saídas mais rápidas que entradas?
  4. Sincronia — eventos alinhados na grade de batida/palavra?
  5. Consistência de estilo — uma família de paleta, um sistema tipográfico, transições unificadas?
  6. Som — locução clara, música atenuada, loudness alvo, sem clippagem?

Protocolo: registre os 3 piores defeitos COM timestamps → corrija exatamente esses → re-renderize → re-pontue. 3–5 rodadas até ≥8/10 em todos os critérios é normal. Execute a crítica em um contexto novo (ou subagente): o autor do código é o pior revisor do código.

5. Determinismo (para vídeos gerados/repetíveis)

# duas impressões digitais da mesma entrada devem corresponder byte a byte
ffmpeg -i video.mp4 -map 0:v -f framemd5 - | sha1sum

Mesmo pipeline, mesma entrada → hash diferente significa tempo de parede oculto, aleatoriedade não semeada ou estado acumulado: corrija o gerador, não "tente de novo".

6. Lista de verificação de entrega

video.mp4        H.264, yuv420p, +faststart, −14 LUFS
poster.png/jpg   o quadro do gancho
contact.png      o filme a 2 fps
sources          o que gera o vídeo (editável > final)

Diga ao usuário exatamente qual arquivo deve editar para mudar algo e o comando de re-renderização.

Regra da evidência

Quando um revisor (humano ou modelo de visão) alegar um defeito de geometria ("texto está cortado", "elementos se sobrepõem"), confirme com uma medição (inspeção no player, amostra de pixel ou as próprias métricas do código gerador) antes de "corrigir" um não-bug. Revisores alucinam margens com muito mais frequência do que renderizações cortam texto.

Individual skills in this repo

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

Habilidades Relacionadas