Communitygithub.com

kidsavagez/reel

Pipeline de script a Reel finalizado com duas portas de aprovação humana. Escreve o roteiro com dicas de efeitos, e depois que o usuário grava: seleciona as melhores takes, corta pausas e filler, adiciona efeitos, legendas e texto na tela, renderiza uma prévia, coleta feedback, renderiza o final e escreve a legenda da postagem.

O que é reel?

O **kidsavagez/reel** é uma skill avançada para Claude Code que automatiza o pipeline completo de criação de Reels (curtas em vídeo) para Instagram, YouTube Shorts e similares. Ela converte uma ideia em um roteiro, processa as gravações brutas do usuário e produz um vídeo finalizado com legendas, efeitos visuais e texto na tela, tudo com duas portas de aprovação humana para garantir qualidade e controle criativo. A skill é acionada por comandos como `/reel` ou quando o usuário descreve uma ideia, envia um vídeo de referência ou diz "bikin reel". Ela suporta múltiplos idiomas (indonésio, inglês ou automático) e estilos visuais personalizáveis, incluindo fontes, cores, posições e tipos de efeitos. O processo começa com a análise de um vídeo de referência para extrair o estilo visual, depois o usuário aprova o roteiro, grava o conteúdo, e a skill cuida do alinhamento, corte, efeitos, renderização de prévia e ajustes finais com base no feedback do usuário. O pipeline é particularmente útil para criadores de conteúdo que desejam agilizar a produção de Reels sem abrir mão do controle criativo. As duas gateways humanas (aprovação do roteiro e feedback na prévia) garantem que o resultado final atenda às expectativas do usuário, enquanto a automação lida com tarefas repetitivas e técnicas como transcrição, alinhamento de takes, corte, efeitos visuais e renderização.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kidsavagez/CLAUDE-VIDEO-PIPLINE/tree/HEAD/.claude/skills/reel

Perguntar na sua IA favorita

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

Documentação

O que reel faz?

Onde as coisas estão e configuração inicial

  • Pasta do pipeline = a pasta video-pipeline onde esta skill reside (três níveis acima deste arquivo: video-pipeline/.claude/skills/reel/SKILL.md). Execute todos os comandos a partir daí. Os projetos ficam em projects/<data>-<slug>/ dentro dela.
  • PY = o Python próprio do pipeline. Use-o para todos os comandos abaixo, nunca o do sistema: .venv/Scripts/python.exe no Windows, .venv/bin/python no Mac ou Linux.
  • Se PY não existir, configure primeiro, sem pedir para o usuário digitar nada: execute python install.py (ou py install.py no Windows, python3 install.py no Mac). Se parar com "ffmpeg está faltando" ou "git está faltando", instale a ferramenta para eles (Windows: winget install ffmpeg / winget install Git.Git; Mac: brew install ffmpeg), diga para reiniciarem o Claude Code se o novo comando não for encontrado, e execute install novamente. Quando o install exibir READY, execute PY scripts/selftest.py e confirme 9/9 passed.
STYLE (uma vez por referência) -> 1 BRIEF -> [porta: usuário aprova roteiro] -> 2 GRAVA (usuário)
-> 3 ALINHAR -> 4 CORTAR -> 5 EFEITOS -> 6 PRÉVIA -> [porta: notas do usuário, loop] -> 7 FINAL

Você escreve, corta e renderiza. O usuário grava, aprova e publica. Nada é jamais publicado daqui.

0. Estilo a partir de uma referência (quando o usuário envia edições de referência)

  1. PY scripts/style_ref.py <ref.mp4> [mais refs] --name <nome-do-estilo>
  2. Abra cada imagem que ele escrever em styles/refs/<nome-do-estilo>/ e leia os números do report.json.
  3. Escreva styles/<nome-do-estilo>.json com APENAS as chaves que diferem de styles/default.json: fonte/tamanho/cores/posição das legendas, palavras por grupo/maiúsculas, aparência do texto na tela, corte de encaixe (cut.max_gap: mais apertado para edições rápidas), espaçamento de efeitos (effects.min_gap, do ritmo da referência), loudness.
  4. Escreva styles/<nome-do-estilo>.md: o que a edição faz, em palavras simples. Quais dos 51 efeitos correspondem a movimentos que você viu, com que frequência algo acontece na tela, como o gancho abre, o que nunca faz. Adicione os números medidos (cortes por minuto, duração do take).
  5. Mostre o .md ao usuário e pergunte o que você errou. Você vê frames amostrados, não movimento ou som: diga isso, e peça que nomeiem timestamps que eles amam (--at 7.2,12 captura esses frames).

Fontes: as legendas podem usar qualquer fonte em vendor/claude-video-effects/fonts/ (Montserrat, Anton, Archivo Black, Inter, Instrument Serif, Playfair Display, Space Mono, Permanent Marker) ou qualquer .ttf/.otf que o usuário colocar em fonts/.

1. Brief

  1. PY scripts/new_project.py "<slug>" --lang id --style <estilo> (lang: id, en ou auto).
  2. Leia ~/.claude/youtube/voice.md ou ~/.claude/instagram/voice.md se existir. Escreva no idioma e voz do usuário. Nunca invente um número, resultado ou cliente; pergunte, ou deixe {{angka}}.
  3. Preencha script.json: uma linha por frase que ele dirá, papéis hook / body / cta.
    • Hook: escreva 3 opções, recomende uma, mantenha com cerca de ~3 segundos falados.
    • onscreen: texto curto para o hook (e qualquer linha que precise de um cartão de título).
    • effects: efeitos de dica EM UMA PALAVRA: {"fx": "backdrop-word", "on": "GRATIS", "text": "GRATIS"}. Escolha do .md do estilo. No máximo um efeito a cada effects.min_gap segundos. Nem toda linha recebe um. Efeitos que usam os próprios reels do usuário (orbit, phone-fan, place-in-grid, fan-build, noise, profile-wall, carousel-spin) precisam de "images": "<pasta>".
    • Gráficos e contadores (liquid-glass-graph, over-the-shoulder-zoom) apenas com números reais.
  4. Escreva brief.md ao lado: as opções de hook, o roteiro como ele lerá, uma nota de take por efeito ("linha 4: deixe espaço acima da sua cabeça"), e as regras de gravação de templates/shooting.md.
  5. Porta: mostre o roteiro e pare. Não continue até o usuário aprová-lo.

2. Gravação (usuário)

Eles colocam os arquivos em <projeto>/raw/. Vários arquivos são aceitos; são usados na ordem do nome.

3. Alinhar

  1. PY scripts/transcribe.py <projeto> (primeira execução baixa o modelo Whisper). Muitos reinícios na gravação, ou o corte ainda repete palavras? Use PY scripts/burst_transcribe.py <projeto>: ele transcreve cada rajada de fala separadamente (large-v3-turbo), para que um reinício após uma pausa nunca seja mesclado com o próximo take. Se palavras ainda engolirem pausas, execute PY scripts/snap_words.py <projeto> antes de alinhar.
  2. PY scripts/align.py <projeto>. Leia o relatório para o usuário de forma resumida: linhas que estão FALTANDO ou SEM TAKE COMPLETO, e qualquer improvisação que pareça valer a pena manter. Não pare para eles a menos que uma linha esteja faltando; mencione-as na prévia.

4. Cortar

PY scripts/cut.py <projeto>

Reels apenas com voz (o usuário grava apenas a voz, a imagem é toda gráficos em movimento): PY scripts/cut_voice.py <projeto> -> work/voice.wav (limpa, -16 LUFS) e work/prog_words.json (cada palavra mantida com seu tempo na faixa cortada). Construa os visuais sobre isso (HyperFrames, se o usuário tiver, ou o editor deles). A etapa de efeitos precisa de um rosto, então pule-a.

Música de fundo sem licença: se .venv-music/ existir (python install.py --music), crie uma base com .venv-music/<Scripts|bin>/python scripts/music_bed.py work/bed.wav --seconds 30 --seed 1 --prompt "<humor>, sem vocais", escute para ver se há lacunas (tente outra seed se irregular) e defina "music": {"file": "<caminho abs>/work/bed.wav", "db": -22}.

5. Efeitos

  1. PY scripts/effects.py <projeto> plan. Corrija qualquer aviso editando as dicas do script.json.
  2. PY scripts/effects.py <projeto> check, depois OLHE cada work/check/fx_*.png. Texto sobre o rosto, cortado na borda, ilegível: corrija opções (x, y, text mais curto) e verifique novamente.
  3. PY scripts/effects.py <projeto> render. Este é o passo lento (cada frame passa pelo rastreamento facial). Avise o usuário que está em execução.

6. Prévia

  1. PY scripts/finish.py <projeto> -> preview/preview_vN.mp4.
  2. PY scripts/finish.py <projeto> --check <t1,t2,...> no meio de cada efeito e em dois ou três outros momentos. OLHE os PNGs: legendas colidindo com um efeito, texto do gancho ilegível, qualquer coisa sobre o rosto. Corrija antes de mostrar.
  3. Porta: dê ao usuário o caminho da prévia e uma breve lista de edição: takes usados, o que foi cortado, efeitos e onde. Peça notas.

Transformando notas em mudanças

notamudançareexecutar a partir de
"use a outra take da linha 3"choices.json {"take": {"3": 1}}alinhar
"mantenha o que eu disse em 0:14"choices.json {"keep_unmatched": ["u3"]}alinhar
"remova a linha 5"choices.json {"drop_lines": [5]}alinhar
"corte está muito apertado / muito solto"estilo cut.max_gap, cut.post_padalinhar
"nenhum efeito aí" / "palavra maior"script.json efeitosplano de efeitos
aparência da legenda, texto na telaestilo captions / onscreen, ou script onscreenfinalizar
músicascript.json "music": {"file": "...", "db": -22}finalizar

Reexecutar a partir de uma etapa significa que todas as etapas seguintes também serão re-executadas. Reexecutar alinhar ou cortar significa que os efeitos renderizarão novamente (lento), então agrupe as notas primeiro.

7. Final

  1. PY scripts/finish.py <projeto> --final -> final/final.mp4 e final/cover.jpg.
  2. Escreva final/caption.md:
    • Os primeiros ~125 caracteres carregam o gancho; é tudo o que o feed mostra antes de "mais".
    • Uma chamada para ação. Se for "comente PALAVRA-CHAVE", deve coincidir com o vídeo.
    • Máximo de 5 hashtags, específicas ao assunto, no final. No idioma e voz do usuário.
    • Nenhum número inventado. Nenhum "pare de rolar", nenhuma parede de hashtags.
  3. Lembre-os em uma linha: o áudio em tendência é adicionado dentro do Instagram, e eles mesmos publicam.

Regras

  • O .md do estilo é o gosto. Quando estiver em dúvida se deve adicionar algo, não adicione.
  • Nunca cubra o rosto. Nunca zoom além de 2x.
  • Seja direto sobre os limites: o editor escolhe takes e tempos bem; ele não julga a entrega deles. Se um take parecer monótono, diga "verifique a energia da linha 3", não finja que ouviu.
  • Mantenha projects/ fora do git: as gravações brutas são grandes e pessoais.

Habilidades Relacionadas