Communitygithub.com

Stickman Story Reels

Transforme uma premissa em um vídeo vertical animado de 60–90 segundos com bonecos palito, narração ElevenLabs, legendas sincronizadas, design de som e encerramento com votação interativa.

O que é Stickman Story Reels?

Este skill permite criar reels de histórias curtas no formato vertical (1080×1920 MP4 para Instagram Reels, TikTok e YouTube Shorts) com animações de bonecos palito (stick figures), narração gerada pelo ElevenLabs, legendas com timestamps por palavra, design de som sintetizado e um relógio na tela. Ele é ideal para quem deseja produzir conteúdo viral para redes sociais, seja uma história de terror, suspense, drama ou uma série interativa onde o público vota no próximo passo. O fluxo é determinístico: você escreve um `episode.json` (roteiro, timing e movimentos) e um `scenes.js` (desenhos), e o script `reel.py` cuida de todo o resto (voz → som → construção → verificação → renderização). Sem modelos de imagem, sem banco de imagens, sem ferramentas pagas além da voz. O skill também suporta modo rascunho gratuito (sem voz) para testes e verificação de layout.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/QuantumCoderSys/stickman-story-reels/tree/main

Perguntar na sua IA favorita

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

Documentação

O que Stickman Story Reels faz?

Transforme uma premissa em um reel vertical finalizado de 60–90 s: um roteiro com gancho inicial otimizado para tempo de exibição, cenas de bonecos palito desenhadas em código, narração com legendas sincronizadas por palavra, design de som e uma votação de duas opções que faz o público comentar e voltar para a Parte 2. Construído a partir do fluxo de trabalho das histórias interativas PlotVote (@plotvote).

O pipeline é determinístico: você escreve episode.json (roteiro, timing, movimentação) e scenes.js (desenhos), e scripts/reel.py faz o resto (voz → som → construção → verificação → renderização). Sem modelos de imagem, sem banco de imagens, sem ferramentas pagas, exceto a voz.

Configuração (uma vez por máquina)

Verifique se python3 --version (3.9+), ffmpeg -version e node --version (18+). A primeira renderização baixa o HyperFrames e um Chrome headless via npx; isso é normal e leva um minuto. Para a voz, o usuário coloca ELEVENLABS_API_KEY=... em um arquivo .env na pasta do projeto (ou exporta a variável). Nunca imprima a chave. Sem chave, tudo funciona no modo --draft (silencioso, com temporização em tempo real).

Defina esta função shell uma vez por sessão do terminal (uma função, não uma variável string, para funcionar tanto no zsh quanto no bash). Os comandos abaixo a utilizam:

reel() { python3 "<pasta deste skill>/scripts/reel.py" "$@"; }

Fluxo de Trabalho

1. Entender o pedido

  • "Crie esta história" com uma premissa clara → escreva um roteiro forte e construa.
  • "Me dê opções" ou "ideias de roteiro" → apresente 3 opções completas (veja o playbook §10), deixe a pessoa escolher e depois construa.
  • "Próxima parte" ou "X venceu a votação" → continue a série: comece com a consequência, pague a última pista, dê uma resposta real, escale, nova votação (playbook §9). Leia a bíblia da série, se houver.
  • Apenas roteiro (ou sem shell disponível) → entregue a tabela do roteiro, além de episode.json e scenes.js se a pessoa for renderizar por conta própria.

2. Escrever o roteiro

Leia references/viral-script-playbook.md primeiro, sempre. Ele contém as regras que determinam se as pessoas ficam além dos 3 segundos. Ao inventar uma premissa, série ou temporada, leia também references/story-engines.md.

Escreva o roteiro como uma tabela (# · voz · falado · na tela), com cerca de 210–230 palavras (aproximadamente 85 s no ritmo padrão). Execute a lista de verificação pré-voz do playbook. Os itens que mais erram: o quadro 1 precisa se mover; onde, quando e quem até os 5 s; toda decisão passa no teste do garoto de 12 anos; os personagens revelam suas próprias informações em primeira pessoa; a votação são duas ações físicas de uma palavra com um custo em ambos os lados; uma pista sussurrada após a votação aponta para algo plantado anteriormente.

Se o usuário pediu opções, ou pode querer aprovar antes de gastar créditos, mostre a tabela do roteiro e aguarde. Caso contrário, continue.

3. Estruturar o reel

reel new reels/<slug>-part1 --title "<Título> — Part 1"

Isso cria episode.json e scenes.js a partir de um modelo funcional pequeno. Substitua ambos pela sua história.

4. Desenhar as cenas (scenes.js)

Leia references/drawing-kit.md e abra examples/sundown-part1/scenes.js como biblioteca de padrões (uma criatura se inclinando, um mapa com zoom, uma parede de regras revelada linha por linha, criaturas em stop-motion, uma janela por pouco, um rádio falante, uma lanterna nas árvores, a divisão da escolha, uma capa).

Uma função por cena da sua tabela de roteiro. Cada uma retorna um SVG 1080×1920 construído com ajudantes do kit (defs(), sky(), forest(), cabin(), room(), water(), stick(), kid(), creature(), phone(), radio(), chip(), ring(), splitChoice(), …). Um cenário que o kit não possui (um parque aquático, um trem, um deserto) é normal: desenhe-o com retângulos, paths e os ajudantes, seguindo a seção "Construindo um novo cenário" do kit de desenho. Dê um id a tudo que deve se mover ou aparecer em uma palavra. Mantenha rostos fora da faixa de legendas (y 1180–1380) e dos 140 px à direita. Adicione um mode para a capa (assunto abaixo do título) e para inserções de cartão de voto.

5. Configurar o episódio (episode.json)

Leia references/episode-format.md. Para cada cena: draw, linhas say, kenburns e entradas animate que batem nas palavras faladas ("at": "faster"). Depois: vozes (com fx e tag de legenda para outros personagens), pílulas HUD com um relógio, sfx posicionados manualmente em palavras, dicas de bed, a cena de votação (duas opções, inserções, a linha da pista), cover e post (legenda com {vote_line}, comentário fixado, posts_at). Para vozes, sons e legendas, veja references/sound-voice-posting.md.

6. Passo de rascunho (gratuito)

reel voice reels/<slug> --draft     # silencioso, temporização em tempo real
reel sound reels/<slug>
reel build reels/<slug>
reel check reels/<slug>
reel snap  reels/<slug> --at scenes  # duas imagens por cena (ou --at 0.5,12,30.5 segundos)

Examine todas as imagens em reels/<slug>/snaps/. Corrija o que as regras de legibilidade do kit de desenho alertam: coisas muito escuras para ler, rostos sob legendas, assuntos muito pequenos, uma revelação mal sincronizada. check precisa dizer "Check passed" (all para antes de renderizar se não passar). Estes avisos são esperados e normais: "nested structure", "track too dense", "composition file too large" e inserções "overflowing" seu recorte.

7. Voz e renderização

reel all reels/<slug>               # voz (ElevenLabs) → som → construção → verificação → renderização
reel frames reels/<slug> --every 2  # folha de contato do reel inteiro, para revisão

Verifique a duração impressa (60–90 s; corte a configuração se estiver acima). Olhe renders/review.png: o assunto está legível, as legendas estão claras, a coisa nomeada se move na palavra certa, e o cartão de voto e a inserção da pista aparecem. Ouça a linha 1; se uma palavra puder ser mal interpretada, mude a palavra e refaça a voz (apenas linhas alteradas consomem créditos).

8. Entrega

Entregue ao usuário renders/<slug>.mp4, renders/cover.png e POST.md (legenda, comentário fixado, texto alternativo, hora de fechamento da votação). Para uma série, escreva ou atualize bible.md ao lado da pasta do reel: elenco, regras, cânone, a pista e uma linha por opção de voto de como a próxima parte começa (story-engines §4).

Comandos

ComandoO que faz
reel new <dir> --title "…"Estrutura uma pasta de reel
reel voice <dir> [--draft]Voz + timestamps → timing.json, assets/audio/narration.wav
reel sound <dir>Sintetiza 19 efeitos sonoros + o ambiente de fundo
reel build <dir>Compila index.html, cover/, POST.md
reel check <dir>Lint do HyperFrames, verificação de layout e contraste (saída com erro se falhar)
reel snap <dir> --at scenesImagens PNG da composição, duas por cena (ou --at 1,5.5,9 segundos)
reel render <dir> [--draft]MP4 a −14 LUFS + cover.png + folha de contato
reel all <dir> [--draft]voz → som → construção → verificação → renderização (para se a verificação falhar)
reel frames <dir> --every 2Folha de revisão do MP4 renderizado completo

Solução de problemas

  • "palavra" não é falada aqui: a referência de tempo usa a grafia da legenda e é pesquisada apenas naquela cena; o erro imprime o que a cena diz. Use palavra#1 para a segunda ocorrência, sN:palavra para outra cena, start+0.2 para um deslocamento ou 12.5s para um tempo absoluto.
  • Voz não encontrada: use um nome pré-definido (Liam, Brian, George, Daniel, Callum, Bill, Roger, Chris, Eric, Will, Harry, Charlie, River, Adam, Sarah, Matilda, Jessica, Alice, Lily, Laura, Bella) ou o ID da voz.
  • Créditos acabaram: linhas já dubladas ficam em cache; recarregue e execute voice novamente.
  • Uma cena em branco ou preta: um erro de JavaScript naquele conjunto. check mostra o erro; teste a função reconstruindo após a correção.
  • Mais de 90 s: corte linhas de configuração e adjetivos; mantenha o gancho, a reviravolta, a votação e a pista.
  • Erros de npx ou node: instale Node 18+; na primeira execução, deixe npx baixar HyperFrames e Chrome.

O que está neste skill

  • scripts/reel.py: a CLI. scripts/synth.py: 19 efeitos sonoros e o ambiente (drone, vento, pulso, zumbido, água), todos sintetizados.
  • assets/kit.js: o kit de desenho. assets/runtime.js, assets/base.css: legendas, HUD e o cartão de voto.
  • references/: viral-script-playbook.md (sempre), story-engines.md (premissas, séries, bíblia), episode-format.md (a especificação), drawing-kit.md (desenho), sound-voice-posting.md (vozes, som, legendas, postagem, segurança).
  • examples/sundown-part1/: uma Parte 1 completa de 89 segundos (episode.json + scenes.js). examples/starter/: o modelo de 4 cenas usado por new. examples/script-pitches.md: mais cinco roteiros completos de Parte 1 (THE WHEEL, LAST CAR, LOW TIDE, 3:33, ROW ONE).

Habilidades Relacionadas