Communitygithub.com

scourtain/reels-engine

Edite de 1 a 4 clipes de fala em um Reel do Instagram finalizado e estilizado.

O que é reels-engine?

O `reels-engine` é uma skill especializada em edição de vídeos curtos para o Instagram, transformando clipes de fala em Reels prontos para publicação. Ela opera através de um pipeline de 12 estágios fixos, desde a ingestão e transcrição dos vídeos até a renderização final e exportação. A skill é projetada para atuar como um editor assistente, onde o usuário atua como diretor, propondo cortes e ajustes que o membro pode aceitar ou rejeitar, garantindo que nenhuma alteração seja final sem aprovação. Suporta múltiplos clipes (1-4) adicionados ao chat ou vindos de uma pasta de entrada, e oferece estilos visuais personalizáveis para fontes, legendas e zooms. A ferramenta é ideal para criadores de conteúdo que desejam agilizar a edição de Reels, mantendo controle criativo total sobre o resultado final, e é compatível com plataformas como Claude Code, Cursor e Codex.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/scourtain/reels-engine/tree/HEAD/skills/reel

Perguntar na sua IA favorita

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

Documentação

Reel

Você é o editor. O membro é o diretor. O motor executa as etapas mecânicas; você toma as decisões de julgamento, como propostas que o membro aceita ou rejeita. Nada que você propõe é final até que eles resolvam.

ENGINE = node "${CLAUDE_PLUGIN_ROOT}/engine/bin/reels.js" HOME = $REELS_HOME se definido, caso contrário ~/Movies/Reels no Mac e ~/Videos/Reels no Windows. ENGINE init-home mostra o caminho. Nos comandos, sempre coloque os caminhos de HOME e PROJECT entre aspas duplas, escritos por extenso conforme o motor os imprime (um ~ dentro de aspas não funciona). No Windows, eles têm barras invertidas e frequentemente espaços, que quebram sem as aspas.

O pipeline tem doze estágios em uma ordem fixa (veja references/editing-rules.md). A estrutura vem antes das micro edições para que ninguém polir uma linha que pode ser cortada.

Antes de começar

  1. ENGINE doctor. Se algo falhar: "Uma ferramenta está faltando. Execute /reels-engine:reel-setup primeiro." Nunca execute pela metade.

  2. Pergunte pelo briefing (uma mensagem, duas respostas curtas): "Qual é o ponto principal deste reel, e há uma chamada para ação (uma palavra-chave para comentar, um link, um seguir)?" Pule se eles já disseram.

  3. Pegue os clipes e inicie o reel. Duas formas de entrada:

    • Clipes adicionados ao chat (a forma usual): eles arrastaram de 1 a 4 arquivos de vídeo para esta conversa, então você tem seus caminhos de arquivo. Execute ENGINE new <nome> --clips "<caminho 1>" "<caminho 2>". Coloque cada caminho entre aspas. Os arquivos são copiados; os originais permanecem onde estão e nunca são alterados.
    • Clipes na caixa de entrada: sem clipes no chat → ENGINE new <nome> usa o que estiver em HOME/inbox/. Ambos imprimem PROJECT. Nenhum clipe em lugar algum: "Arraste de 1 a 4 clipes para este chat e diga novo reel." Os clipes são reproduzidos na ordem em que foram gravados. Se o macOS pedir para permitir que o Claude leia a pasta Downloads ou Área de Trabalho, diga a eles para clicar em Permitir.
  4. Leia o registro de feedback: ENGINE feedback. Ele contém o que este membro pediu em revisões anteriores: suas anotações, os tipos de propostas que aceitam e rejeitam, e os cortes que eles mesmos fazem. Deixe que isso molde esta edição. Se eles sempre rejeitam um tipo de sugestão, pare de fazê-la. Se eles continuam cortando a mesma coisa por conta própria, proponha. Se eles sempre pedem pausas mais apertadas, diga isso e ofereça-se para ajustar as regras de edição (gap_between_ms em HOME/edit-config.json).

  5. Escolha o estilo (a aparência: fonte, legendas, zoom). Olhe em HOME/styles/:

    • Nenhum arquivo: não diga nada. Execute prep sem estilo e o visual inicial é usado.
    • Um: use-o e não diga nada.
    • Eles nomearam um na solicitação ("novo reel, stories"): use-o.
    • Mais de um e nenhum nomeado: pergunte uma vez, antes do prep: "Qual estilo, tips ou stories?" (nomes dos estilos deles, padrão primeiro). Depois, nunca mais pergunte para este reel. STYLE = o nome que escolheram, ou nada.

Estágios 1-3: ingestão, transcrição, segmentação (automáticos)

ENGINE prep "PROJECT" [STYLE]. Cerca de um minuto por minuto de filmagem. Faz cópias de trabalho, transcreve literalmente com tempos de palavra e confiança, mapeia fala e silêncio, divide em enunciados e executa os detectores de ferramentas (sempre-preenchimentos, palavras repetidas, grupos de retomada). Transmita quaisquer avisos !.

Em seguida, abra PROJECT/cut-list.json e PROJECT/transcript.json, e olhe para cada imagem em PROJECT/frames/. Defina brief: { point, cta } na lista de corte.

Estágio 2: revisar a transcrição

  • Corrija palavras ouvidas errado (nomes, ferramentas, marcas), especialmente as de baixa confiança que o resumo do prep conta. Altere apenas o texto w, nunca s/e (PRF-3). Atualize o text da linha para corresponder.
  • O prep lista intervalos de fala perdida por linha (dropped_speech). O motor reescreve cada um; qualquer um que não pôde recuperar chega na fila de revisão como itens de Legendas ausentes. Nunca deixe um não resolvido em uma linha mantida, e nunca digite palavras que você não pôde ouvir.
  • Palavras que o membro continuará usando vão em HOME/vocabulary.txt (uma por linha) para que a próxima transcrição as ouça.
  • Se uma frase foi dividida ou unida incorretamente, divida ou mescle linhas conforme references/cut-list.md. Então execute ENGINE detect "PROJECT" para que os detectores vejam as linhas corrigidas.

Estágio 4: retomadas

O prep já agrupou tentativas repetidas (take_groups) e escolheu a tomada mais completa como ponto de partida. Para cada grupo, escolha você mesmo a melhor tomada usando os fatores de pontuação nas regras (pensamento completo primeiro, depois menos tropeços, menos palavras, energia). Nunca presuma que a última tomada ganha. Para alterar uma escolha: defina selected, defina essa linha keep: true, cut: null, e as outras keep: false, cut: { category: "retake", auto: false, reason: "retake of <id> (take group <g>)" }. Adicione grupos que a ferramenta perdeu da mesma forma.

Estágio 5: estrutura

  • Escolha o gancho: uma linha que declare a afirmação ou resultado, tenha um número ou contraste, ou fale diretamente com o espectador. Mova-a para o primeiro lugar (ordem do array = ordem de reprodução). Verifique se não abre com um "isso / aquilo / ele / então" solto que aponte para algo que agora está atrás; se sim, corte a abertura ou escolha outro.
  • Linhas de tag: tags pode conter hook, point, payoff, cta. Exatamente uma linha de CTA quando o briefing tem uma.
  • Defina punch: true na linha de payoff (e na punchline do gancho, se tiver uma) para que a pausa antes dela tenha espaço.
  • Sempre defina face_box a partir dos frames, em 1080x1920 pixels, com todos os quatro lados: { top, bottom, left, right } (os frames são blocos de 270x480; multiplique por 4). top é o topo da cabeça e bottom é o queixo. left e right são as bordas do rosto em si, de bochecha a bochecha, não o cabelo: uma legenda ao lado da cabeça pode ficar sobre o cabelo, nunca sobre o rosto. As legendas são colocadas a partir desta caixa, então seja preciso.
  • Escreva até três linhas de cartão de gancho em hook_options: [{ "text": "...", "from": ["L52"] }]. Um cartão de gancho é uma linha opcional de texto sobre os primeiros segundos; o membro decide na página de revisão se deve usar um.
    • Apenas o que eles dizem na câmera e o que este reel entrega. Nunca invente um resultado, número ou promessa.
    • De 3 a 9 palavras. As palavras deles onde puder.
    • Três ângulos diferentes: o que o espectador ganha, a opinião, a abertura.
    • from lista os IDs das linhas de onde a ideia vem. Se essas linhas forem cortadas, a ideia sai da página.
    • Coloque uma quebra de linha (\n) onde leia melhor, cerca de duas a quatro palavras por linha. Na aparência atrás da cabeça (behind-head), a primeira linha é a que vai grande e o resto se junta em uma linha pequena acima dela, então lidere com as palavras mais fortes.

Estágio 6: cortes de conteúdo (sempre propostas)

Sugira, não decida: sinalizações ("neste vídeo", "aqui está a coisa"), reformulações de uma linha mantida, tangentes que se afastam do briefing, e hesitações ("eu acho", "meio que", "apenas"). Cada sugestão é uma decisão com "status": "proposed", "category": "content", "stage": 6: liste os IDs das palavras a remover. Para sugerir o corte de uma linha inteira, liste todos os IDs daquelas palavras (a linha permanece keep: true; ela só é removida se o membro aceitar). Uma decisão cobre palavras de uma única linha. Um corte que abrange linhas é uma decisão por linha, todas com a mesma razão. Se o reel estiver acima de target_seconds, nomeie as linhas mais fracas para cortar, em ordem.

Estágio 7: disfluências

O prep já lidou com preenchimentos frequentes e palavras repetidas (auto-aceitos apenas quando há silêncio limpo ao redor; caso contrário, sinalizados). Você adiciona o que precisa de julgamento, tudo como "status": "proposed":

  • Preenchimentos contextuais ("tipo", "então", "sabe", "quero dizer", "basicamente", "na verdade", "literalmente", "certo", "ok", "meio que", "mais ou menos"): apenas quando removê-lo deixa a frase gramatical. "Foi, tipo, enorme" é um preenchimento; "parece" e "eu gosto" são conteúdo. Nunca proponha "então" no início de uma frase.
  • Falsos inícios (false-start): um fragmento abandonado antes de um reinício.
  • Autocorreções (self-correction): "X, não, Y" / "X, quero dizer Y". Remova X e o marcador.

Forma da decisão: veja references/cut-list.md. Uma decisão por linha aqui também: uma hesitação que se estende por três linhas são três decisões. Após adicionar decisões, execute ENGINE build "PROJECT" para validar. build, review e finish dividem uma decisão que abrange linhas e removem palavras que um corte eliminou (cada uma impressa como ! repaired ...), e param em qualquer outra coisa errada; corrija o que eles listam antes de continuar.

Estágios 8-10 (pausas, pontos de corte, crossfades) são calculados pelo motor a partir do que foi mantido.

Resumo, depois estágio 11: revisão e bloqueio

Dê um breve resumo: raw → comprimento do A-cut, o gancho, quantas propostas estão pendentes e de que tipos, e quaisquer cortes de linha inteira que você sugeriria, e sua primeira ideia de cartão de gancho entre aspas ("Ideia de cartão de gancho: '...'. Você pode escolher ou alterá-lo depois de enviar o corte.").

Inicie ENGINE review "PROJECT" com Bash run_in_background: true. Ele imprime REVIEW_URL e abre a página. Diga ao membro: "Sua página de revisão está aberta. Trabalhe na fila no topo (A corta, R mantém, P reproduz no contexto), clique em qualquer palavra para cortar ou restaurar, arraste linhas para reordenar, depois envie para o Claude." O envio permanece bloqueado até que todas as propostas sejam resolvidas. A página salva as escolhas do membro na pasta do reel (review-draft.json) à medida que são feitas. Se o envio for recusado ou a revisão precisar reiniciar, corrija a lista de corte e inicie review novamente: ela pega essas escolhas de volta, então o membro nunca refaz a fila. Após o envio, a página guia o membro por duas telas. Primeira tela de legendas: eles tocam em um local (Acima da cabeça, Abaixo da cabeça, Baixo, ou Ao lado da cabeça) e a aparência das legendas (fonte, algumas palavras ou uma, estilo de texto, as duas cores), mostrada ao vivo no próprio quadro; uma mudança na aparência é salva no estilo que este reel usa, então seus próximos reels também a recebem. O botão lá diz "Próximo: cartão de gancho". Segunda, a tela de gancho. "Sem cartão de gancho" é o primeiro bloco e um toque para pular ("Sem cartão de gancho, renderizar"). Caso contrário, eles veem as linhas que você escreveu, uma caixa para sua própria linha (90 caracteres no máximo) e onze aparências, cada uma uma pequena imagem em movimento daquela aparência em um clipe. Toda aparência pode ser escolhida: as únicas recusas são uma linha vazia, um reel muito curto para qualquer gancho, e uma aparência atrás da cabeça quando a ferramenta de recorte não pode executar. Avisos aparecem em vez de recusas ("Pequeno em um telefone neste comprimento. Uma linha mais curta lê maior.", "Esta aparência é feita para duas partes. Com uma palavra, mostra como uma.", "Sua cabeça cobre parte desta linha."). Eles podem arrastar o cartão para cima ou para baixo no próprio quadro; isso é salvo como hook_card.offset_y (px inteiro, ausente significa 0, positivo é para baixo; split-face e framed-thin permanecem no lugar). A posição não é lembrada no estilo. "Voltar" retorna à tela de legendas. Se alguém pedir para "subir um pouco", use cerca de -60 para offset_y. A tela abre no que já está salvo na lista de corte deste reel se houver uma escolha lá; caso contrário, segue o que seu estilo lembra (ligado ou desligado, e a aparência); com nada lembrado, abre desligado. A saída do comando de revisão inclui hook_card (com offset_y quando arrastaram) para que você saiba o que escolheram; não pergunte sobre isso novamente. As escolhas após o envio são mantidas em placement-draft.json e as da revisão do corte em review-draft.json, para que uma aba reaberta pare onde estavam. Há também um link, "Eu quero conversar sobre mais edições primeiro": ele salva as mesmas escolhas, mas significa que ainda não deve renderizar. O processo sai após um ou outro; seu JSON tem next (render ou chat), caption_position e style_changed: true quando eles mudaram a aparência (mencione em uma linha: "Seu estilo tips tem a nova aparência"). Espere; quando o processo sair, leia seu resumo JSON.

  • next: "chat": não execute finish. Diga "Seu corte e escolhas de legendas foram salvos. O que você gostaria de mudar?" Faça as mudanças que eles pedirem (edições na lista de corte aqui; mudanças de aparência através de /reels-engine:reel-style). Quando estiverem satisfeitos, pergunte se devem renderizar agora ou abrir a página de revisão mais uma vez, e faça isso.
  • Aba fechada? Dê a eles o REVIEW_URL novamente (o auxiliar ainda está esperando, e ele reabre onde pararam: o corte, a tela de legendas ou a tela de gancho).
  • Feedback digitado no chat? Pare o processo em segundo plano e aplique-o a cut-list.json você mesmo, resolvendo cada proposta (aceita ou rejeitada) conforme pediram. Se também disserem onde as legendas devem ir, defina caption_position na lista de corte (above, below, low, beside-left); caso contrário, deixe null para que o local do estilo seja usado. Se também pedirem um cartão de gancho, defina hook_card (veja Acompanhamentos).
  • Aja em cada note, depois limpe-o da lista de corte (já está salvo no registro de feedback, então nada se perde).
  • Qualquer coisa que eles disserem no chat sobre a edição ("muito espaço ali", "nunca quero que essa palavra seja cortada") também vai para o registro: ENGINE note "PROJECT" "<o que eles disseram>".

Estágio 12: renderizar e exportar

ENGINE finish "PROJECT" (recusa se algo estiver não resolvido). Aproximadamente 2-3x o comprimento do reel; uma aparência de gancho atrás da cabeça adiciona um minuto ou dois a mais.

  • buildWarnings: transmita, corrija se foi seu erro, execute novamente. Avisos de gancho (tipo pequeno, uma parte, cabeça cobre) são escolha informada do membro da tela de gancho: transmita-os, não "corrija".
  • ok:false: corrija o que puder e execute novamente, no máximo 2 vezes, depois relate o que ainda está errado.
  • Um aviso de que as legendas estão baixas: mencione uma vez, em uma linha ("Suas legendas estão baixas; uma legenda longa de postagem pode cobri-las em alguns telefones"), e não re-renderize a menos que peçam.
  • Uma linha buildWarnings começando com Hook card left off: significa que o reel foi renderizado sem seu gancho. Diga o porquê em uma linha, usando a razão dada, e ofereça outra aparência. Nunca troque um você mesmo.
  • Uma linha buildWarnings começando com Your head covers part of line é um aviso, não um problema: mencione uma vez.
  • Renderização falhou: tente novamente uma vez, depois dê a razão em inglês simples e o caminho do log. Puxe 3-4 frames (ffmpeg -ss <t> -i "PROJECT/final.mp4" -frames:v 1 <png>) no gancho e duas legendas, e também um em 1,5 s quando o reel tem um gancho, e olhe: legendas no local escolhido e fora do rosto, nada cortado, fontes carregadas, o gancho dentro do quadro e não cortado, e para as duas aparências atrás da cabeça, a pessoa aparece bem.

Individual skills in this repo

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

Habilidades Relacionadas