Communitygithub.com

Clip Picker

Extrai os melhores clipes curtos de vídeos longos e não estruturados. Use sempre que o usuário fornecer um ou mais vídeos extensos e quiser os destaques / melhores momentos encontrados e cortados.

O que é Clip Picker?

O Clip Picker é uma skill para agentes de IA que resolve uma limitação fundamental: o Claude não pode assistir vídeos, apenas ler imagens estáticas. A skill contorna isso amostrando quadros do vídeo em intervalos regulares, gerando folhas de contato com carimbo de tempo que o Claude pode analisar visualmente. O pipeline completo inclui: (1) confirmar uma rubrica de seleção com o usuário, (2) amostrar o vídeo com `survey.py`, (3) inspecionar visualmente as folhas de contato para mapear janelas candidatas, (4) criar um arquivo `candidates.json`, (5) confirmar a nitidez dos quadros heróis com `score.py` e (6) apresentar uma prancha classificada com `board.py` para o usuário escolher e cortar os clipes. A rubrica padrão é otimizada para vídeos POV de moto/bicicleta (com ênfase em borrão de movimento, curvas, ultrapassagens e paisagens), mas pode ser generalizada para qualquer tipo de filmagem através de algumas perguntas iniciais. A skill é útil para editores de vídeo, criadores de conteúdo, ciclistas, motociclistas e qualquer pessoa que precise extrair rapidamente os melhores momentos de horas de gravação, suportando fluxos de trabalho com ffmpeg, Python e ferramentas de edição adicionais.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kaustubhupadhyaya/editor-pack/tree/HEAD/skills/clip-picker

Perguntar na sua IA favorita

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

Documentação

O que Clip Picker faz?

Encontre os melhores momentos em gravações longas. Todo o método existe para contornar um limite difícil:

Claude não consegue assistir vídeo. Ele lê imagens estáticas. Então "escolher bons clipes" é, na verdade: amostrar a gravação em imagens com densidade suficiente para ver o que acontece, julgá-las contra uma rubrica, confirmar em resolução total e depois cortar. Aparar é trivial e quase instantâneo; ver 30+ minutos de gravação é o custo real — planeje-se para isso e não se desculpe por isso.

Os scripts ficam em scripts/ (survey.py, score.py, board.py). Eles cuidam das partes mecânicas; o Claude faz o julgamento visual entre elas. Dependências: ffmpeg/ffprobe no PATH, numpy, pillow (todas instaladas nesta máquina — veja [[editor-pack-video-editing-stack]]).

Pipeline

Escolha um WORKDIR no scratchpad (ex.: .../scratchpad/clippick). Então:

1. Confirme a rubrica. Se a gravação não for POV de moto/bicicleta (o padrão embutido abaixo), pergunte ao usuário 1-2 perguntas: o que torna um clipe bom para ele, duração desejada do clipe, formato de saída (16:9 vs 9:16) e quão seletivo (algumas joias vs tudo). Uma boa frase de critérios muda cada seleção — obtenha-a antes de amostrar.

2. Amostrar — transforme a gravação em folhas de contato legíveis.

python scripts/survey.py "C:\caminho\para\videos_ou_dir" --out WORKDIR --interval 4

Um thumbnail a cada 4s, lado a lado 6x6, com timecode da fonte queimado em cada um. Para gravações rápidas/cheias de ação use --interval 2-3; para gravações lentas --interval 6-8. Ele imprime as especificações de cada clipe e sinaliza fontes HDR (HLG/PQ). Em clipes HEVC longos/múltiplos isso é lento (a decodificação por software é o gargalo) — execute-o em segundo plano e veja as folhas conforme elas chegam.

3. Inspecione visualmente cada folha. Leia cada WORKDIR/montagens/*_sheet_*.jpg. Mapeie janelas candidatas por timecode contra a rubrica. Um evento que passa num piscar de olhos entre amostras pode ser perdido — se uma folha sugerir algo (um flash de um canto, uma figura), anote e amostre esse trecho com mais densidade depois.

4. Crie WORKDIR/candidates.json — um objeto por janela candidata (esquema abaixo). Mantenha cada janela com 15-30s (ou a duração do usuário). Dê a cada uma um código pick (P01, P02, ... na sua ordem classificada), um title de uma linha (por que ela se qualifica) e tags.

5. Confirme em resolução total + nitidez.

python scripts/score.py --work WORKDIR

Puxa um quadro herói em resolução total por candidato, pontua a variância do Laplaciano (uma métrica de foco) e os organiza lado a lado em review.jpg. Leia. Descarte os que estiverem genuinamente borrados/sem interesse; ajuste start/end para acertar o melhor momento. Baixa nitidez = borrão de movimento de quadro inteiro — desejado para tomadas de fluxo, não uma rejeição. Execute novamente após edições.

6. Apresente uma prancha classificada (o usuário escolhe).

python scripts/board.py --work WORKDIR --mode thumbs     # -> WORKDIR/pickboard.html (publicável como um Artefato)

Ou, quando quiserem assistir antes de escolher, uma prancha reproduzível que também corta os clipes:

python scripts/board.py --work WORKDIR --mode play --out "%USERPROFILE%\Downloads\clips"

play corta cada candidato para H.264 amigável ao navegador (mapeamento automático HDR->SDR para HLG/PQ), escreve review_player.html com players <video> nativos junto aos mp4s (abra no Chrome/Edge para reprodução local). A saída padrão é 16:9, apenas corte, sem crop.

7. Corte / finalize os vencedores que o usuário escolher. Para escolhas de pixel exato ou formato, encaminhe através da skill [[editor-pack-video-editing-stack]] video-tool-router (stream-copy vs re-encode, a proteção HLG, Resolve para correção de cor/estabilização/upscale). Ofereça acompanhamentos: aumento de motion-blur em clipes de fluxo, verticais 9:16, cor, legendas, uma montagem.

A rubrica de seleção (isto é como realmente "escolhe")

Um clipe vale a pena ser mantido quando ele passa pelos portões de qualidade E carrega pelo menos um sinal "especial".

Portões de qualidade (todos devem ser atendidos)

  • Subconjunto, 15-30s da fonte (padrão; respeite a duração do usuário).
  • Assunto claro e estável — o assunto principal (moto/guidão, rosto, jogador) está nítido e enquadrado de forma estável. Rejeite borrão global de solavancos/tremidos, desfocado, estourado ou muito escuro, lente obstruída.
  • Algo está acontecendo — movimento ou mudança. Rejeite parado/estacionado/esperando e nada monótono.

Sinais "especiais" (precisa >=1; mais + mais forte = classificação mais alta)

  • Velocidade / movimento — os arredores ficam borrados com motion-blur enquanto o assunto permanece nítido. Isso é um positivo e matéria-prima ideal para uma edição de aumento de motion-blur.
  • Interação — outras pessoas/motociclistas/veículos/animais; ultrapassagens, andando em grupo, alguém reagindo.
  • Ação / dinâmica — curvas & inclinação, viradas, mudança de elevação, uma manobra, um momento de quase-acidente.
  • Luz e ambiente — nascer/pôr do sol, hora dourada, nuvens dramáticas, névoa/nevoeiro, túneis, uma vista ou revelação, água. A luz do horário do dia é a maior alavanca "cinematográfica" — sempre sinalize.
  • Novidade — uma mudança de cena/terreno, uma entrada/saída, qualquer coisa visualmente nova em relação aos minutos ao redor.

Conciliando "nítido, não borrado" com "motion-blur é bom"

Mantenha o assunto nítido e o momento intencional; trate motion-blur periférico como um recurso. Rejeite apenas borrão global (quadro inteiro borrado por um solavanco). Uma câmera de peito/guidão mantém a moto nítida enquanto o mundo passa borrado — essa é a aparência desejada, não um defeito.

Classificação

Ordene por: força e raridade do sinal especial, depois clareza, depois variedade (não classifique cinco janelas quase idênticas nas primeiras posições — varie os estilos: uma vista, um fluxo borrado, uma ultrapassagem, uma atmosférica). Seja honesto quando um critério estiver simplesmente ausente (ex.: nenhum nascer/pôr do sol em lugar nenhum) — diga isso em vez de forçar uma escolha fraca.

Perfil POV de passeio (padrão embutido para as gravações deste usuário)

Câmera de capacete/guidão de moto/bicicleta. Concretamente: mantenha varreduras com motion-blur, curvas/inclinação, ultrapassagens & andar em grupo, vida na estrada, névoa/nevoeiro e vistas de serra, túneis/alamedas de árvores. Pule: paradas, sinais, estacionamento, mexendo no celular, longas retas sem nada. (Esta é exatamente a rubrica que produziu o conjunto de clipes que o usuário gostou.)

Esquema do candidates.json

[
  {"pick":"P01","clip":"clip_6318","file":"%USERPROFILE%/Downloads/clip_6318.mov",
   "start":96,"end":120,"hero":104,"title":"Túnel de árvores altas, pilotos à frente, motion-blur intenso",
   "tags":["motion-blur","paisagem"]}
]
  • start/end/hero estão em segundos. hero é um instante representativo dentro da janela (usado para o thumbnail e a pontuação de nitidez) — escolha o momento mais característico, não necessariamente o ponto médio.
  • Os códigos pick servem como identificador para o usuário escolher ("corte P01, P03, P10").
  • tags (livres, mas estas ganham rótulos bonitos): motion-blur, curva, vista, interação, ultrapassagem, atmosfera, paisagem, ação, luz, vida selvagem.

Eficiência e pegadinhas

  • Decodificação HEVC/HDR é o gargalo, não a edição. Uma amostragem de ~30 min de HEVC leva minutos de decodificação. Amostre apenas com a densidade que a gravação justifica; coloque a amostragem e a codificação do modo play em segundo plano.
  • Gravação HLG/HDR fica acinzentada em uma exportação H.264 SDR ingênua — board.py play detecta automaticamente e faz o mapeamento de tom, mas qualquer corte manual desta gravação também deve fazer. Veja a proteção HLG em video-tool-router.
  • Acelere sob demanda: se o usuário nomear o estilo de imediato ("só as curvas da serra e o borrão do túnel"), amostre com um intervalo maior, pré-selecione apenas esses e codifique apenas o punhado que ele quer — reduz uma passagem de 20 minutos para alguns minutos.
  • Não invente. Afirme apenas o que um quadro amostrado realmente mostra. Se não tiver certeza se um evento de 1-2 segundos existe, amostre esse trecho com mais densidade antes de afirmá-lo.
  • Caminho da fonte do Windows está codificado nos scripts (C:/Windows/Fonts/...); ajuste em outros sistemas operacionais.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Habilidades Relacionadas