Communitygithub.com

thanmaiashok/shortcut-clips

Transforma vídeos longos locais (podcasts, palestras, entrevistas, streams) em clipes verticais 9:16 com enquadramento focado no rosto, legendas animadas, títulos e hashtags. O Claude seleciona os momentos mais virais a partir de uma transcrição com timestamps; uma pipeline local ffmpeg faz o resto. Sem chaves de API. Use quando o usuário pedir para criar shorts, reels, TikToks ou clipes a partir de um vídeo ou podcast, encontrar momentos virais ou dignos de citação, ou re-cortar, re-titular ou re-renderizar clipes feitos anteriormente.

O que é shortcut-clips?

shortcut-clips é uma skill para agentes de IA (como o Claude Code) que automatiza a criação de clipes verticais 9:16 a partir de vídeos longos, como podcasts, palestras, entrevistas ou streams. O agente atua na etapa de julgamento: ele lê momentos candidatos em formato de texto (transcrições com timestamps), seleciona os melhores com base em critérios de viralidade e escreve um arquivo `clips.json` que orquestra uma pipeline local ffmpeg para renderização final. A pipeline cuida da transcrição, identificação de janelas candidatas, reframing para foco no rosto, legendas animadas e geração de títulos e hashtags. A skill suporta opções como idioma da transcrição (por exemplo, `--language hi|kn|en`), comprimento dos clipes (`--min-len`/`--max-len`, padrão 20-60 segundos) e estilos visuais (`bold-pop`, `minimal` ou `karaoke-highlight`). É ideal para criadores de conteúdo que desejam extrair rapidamente momentos virais sem depender de serviços externos ou APIs pagas. O agente também oferece suporte a edições posteriores: re-renderizar clipes com novos títulos, estilos ou cortes, e re-selecionar momentos sem precisar re-transcrever o vídeo todo.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/thanmaiashok/shortcut-clips/tree/HEAD/skills/shortcut-clips

Perguntar na sua IA favorita

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

Documentação

O que shortcut-clips faz?

Uma pipeline local faz o trabalho mecânico (transcrever, encontrar janelas candidatas, reenquadrar, legendar, renderizar). Seu trabalho é a etapa de julgamento: ler os momentos candidatos como texto, escolher os melhores e escrever clips.json. Você nunca vê ou precisa de quadros de vídeo.

0. Entradas

  • Vídeo: caminho de arquivo local. Se o usuário fornecer uma URL, explique que o shortcut-clips só funciona com arquivos que ele mesmo disponibilizar (conteúdo próprio ou com direitos) e peça um arquivo. Não baixe nada.
  • Número de clipes: use o número do usuário; caso contrário, 3.
  • Opções (apenas se o usuário pedir): --language hi|kn|en|…, --min-len/--max-len (padrão 20-60 s), estilo bold-pop (padrão), minimal ou karaoke-highlight.

1. Preparar (transcrever + candidatos)

shortcut-clips prepare "<video>"
  • Ele imprime a pasta de saída e, em seguida, uma linha por arquivo de chunk. Anote ambos.
  • A primeira execução baixa o modelo de fala. Um vídeo de 1 hora leva aproximadamente 15 a 25 minutos em CPU e 5 a 10 minutos em GPU. Para vídeos com mais de cerca de 10 minutos, execute o comando em segundo plano e aguarde sua conclusão. Informe ao usuário que está processando. Reexecuções são seguras: etapas concluídas são armazenadas em cache.
  • Em caso de falha, mostre ao usuário o aviso de correção do erro. shortcut-clips doctor verifica a instalação.

2. Escolher os momentos

  1. Leia <pasta de saída>/work/candidates.txt, depois cada arquivo de chunk que ele lista, em ordem. Cada chunk lista sentenças (s0012 [68.3] texto) e candidatos (c004 s0012-s0021 68.2-108.6 (40s)), cada candidato é um intervalo dessas sentenças. Não leia transcript.json ou candidates.json: os chunks contêm tudo que você precisa, em muito menos tokens.
  2. Pontue cada candidato conforme reference/rubric.md. Ao longo do processo, mantenha uma lista de cerca de 3× o número solicitado: id do candidato, cinco pontuações de critério, nota de uma linha. Descarte os demais.
  3. Melhore os vencedores. Você pode mover os limites de um clipe para outras fronteiras de sentença, por exemplo, começando na sentença com o gancho mais forte ou terminando logo após o pagamento:
    • início = o tempo da primeira sentença escolhida.
    • fim = o tempo da sentença após a última que você mantém, ou o tempo final do candidato se você mantiver sua última sentença.
    • Mantenha-se dentro do intervalo de comprimento. O validador ajusta os limites para palavras inteiras.
  4. Escolha o conjunto final: maiores pontuações gerais, sem que dois clipes compartilhem mais do que alguns segundos, e tópicos diferentes sempre que possível.

3. Escrever clips.json

Escreva <pasta de saída>/clips.json seguindo reference/clips-format.md. Escreva hook_text, title e caption no idioma e na escrita da transcrição, a menos que o usuário peça o contrário. Ordene os clipes do melhor primeiro. Em seguida, execute:

shortcut-clips validate "<pasta de saída>/clips.json" --write

Corrija cada error e reexecute até que apareça ✓. Corrija warnings quando for fácil. As linhas info relatam ajustes automáticos (limites ajustados) e não precisam de ação.

4. Renderizar

shortcut-clips render "<pasta de saída>/clips.json"

Em seguida, informe ao usuário: para cada clipe, seu número, título, duração, pontuação e caminho do vídeo, além da galeria <pasta de saída>/index.html. Adicione uma frase sobre por que o clipe principal funciona. Mencione que ele pode pedir alterações.

Edições e reexecuções

  • "Deixar o clipe 2 mais curto", "novo título", "usar estilo karaokê": edite clips.json (substituição de style/layout por clipe sobre defaults), valide com --write, renderize novamente. Clipes inalterados são reutilizados do cache.
  • "Encontrar momentos diferentes": volte ao passo 2 com os mesmos chunks. Não reexecute prepare.
  • Idioma errado detectado: reexecute prepare com --language <código>. Apenas a transcrição e etapas posteriores são refeitas.
  • Nenhuma janela candidata: o vídeo é curto ou tem pouca fala. Reexecute prepare com um --min-len menor (por exemplo, 10).

Habilidades Relacionadas