Communitygithub.com

anime-reels

Crie um episódio de anime com personagens originais desenhados em código, com sincronização labial a partir de um roteiro e arquivos MP3 de voz. Ideal para gerar reels no formato 9:16 ou vídeos 16:9 para YouTube.

O que é anime-reels?

Esta skill transforma um roteiro e arquivos MP3 de voz em episódios completos de anime, com personagens originais e sincronização labial precisa. O processo é totalmente baseado em código: o design, a animação e a renderização são feitos via canvas HTML, headless Chrome e ffmpeg, sem uso de bancos de imagens ou geradores visuais externos. A skill suporta plataformas como Claude Code, Cursor e Codex, e exige a presença de ferramentas como Node.js, Puppeteer, TorchAudio e uroman. Ela divide o roteiro em planos (shots), alinha cada palavra com MMS_FA, aplica truques de anime (speedlines, impactos, shakes, chibi) e gera uma folha de contato para aprovação antes da renderização final. O resultado são dois vídeos: um no formato 9:16 (para reels) e outro em 16:9 (para YouTube), além de uma cópia em 720p com menos de 20 MB para WhatsApp. O áudio original permanece intacto, e o usuário pode revisar e corrigir a lista de planos antes da renderização completa.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add akokbaba195-bot/anime-reels

Perguntar na sua IA favorita

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

Documentação

anime-reel

Entrada: um roteiro + um arquivo MP3 de voz por linha (o usuário anexa ambos). Saída: um reel 9:16 e uma cópia 16:9, cada um com o áudio original, além de uma cópia em 720p com menos de 20 MB para WhatsApp.

Regras rígidas (a cada execução)

  • Desenhe tudo em código: canvas HTML, renderizado quadro a quadro em headless Chrome, codificado com ffmpeg. Nada de imagens de banco de imagens ou geradores de imagem. Use engine/ como base; estenda-o, não o substitua, para que o visual permaneça sempre o mesmo.
  • Cronometre cada palavra com alinhamento forçado (torchaudio MMS_FA via scripts/align.py). Nunca adivinhe os tempos. Se o alinhamento falhar para uma linha, pare e informe o usuário o motivo; não recorra a espaçamento uniforme.
  • Exiba uma folha de contato com os quadros-chave antes da renderização completa e aguarde a aprovação.
  • Pergunte antes de sobrescrever qualquer arquivo existente. encode.sh se recusa a sobrescrever e termina com código 2; repasse isso ao usuário.
  • Mantenha o áudio original intacto no MP4 final (as linhas de voz são apenas colocadas em uma linha do tempo, nunca reprocessadas). Nenhuma música de fundo, a menos que o usuário solicite.

Método

  1. Configuração. Execute bash scripts/check_setup.sh (ffmpeg, Node, puppeteer, torch/torchaudio, uroman). Corrija qualquer pendência antes de continuar. Execute bash scripts/sfx.sh <projeto>/sfx para sintetizar sons de impacto/ataque/arremesso/pop com ffmpeg.
  2. Divida o roteiro em planos. Um plano por linha de voz. Para cada um, escreva: id, speaker, text (exatamente o que o MP3 diz), audio (caminho), place (rooftop, office, street, bedroom, sky, ou adicione um novo ramo drawPlace), camera (static|push|pull|pan + amount), cast, slots (left/center/right) e fx. Salve como shots.json (esquema em scripts/build_timeline.py). Mostre a lista de planos e permita que o usuário a corrija se estiver ambígua.
  3. Personagens. Defina cada um em characters (nome, skin, hair, hairStyle spiky|bob|long|short, eye, outfit, accent, color = cor da legenda daquele personagem). Eles devem ser originais, nunca copiados de animes existentes. Visual de anime: olhos grandes com brilho, contornos grossos e limpos, cor plana com exatamente um tom de sombra. Renderize a ficha do personagem e mantenha o JSON como fonte única da verdade, para que os personagens nunca mudem entre os planos: node scripts/render_frames.mjs sheet timeline.json landscape out/character_sheet.png
  4. Alinhe e sincronize os lábios. python3 scripts/build_timeline.py shots.json timeline.json work executa MMS_FA por linha (tempos das palavras) e constrói a curva de abertura de boca de cada personagem a partir da intensidade sonora daquela linha de voz (mouth.py). Piscadas e movimentos de espera são incorporados no mecanismo. Para linhas não-inglesas, align.py romaniza com uroman mantendo a grafia original na tela.
  5. Truques de anime em linhas-chave (adicione em fx, tempos em segundos a partir do início do plano): speedlines em revelações e determinação, impact (quadros brancos/pretos, com sfx: "impact") na linha mais importante, shake em golpes, chibi (+ who, sfx: "pop") em reações cômicas. Use com moderação: aproximadamente um truque a cada 2-3 planos, para que ainda tenham impacto.
  6. Legendas e som. Legendas de 2-3 palavras já são tratadas pelo mecanismo, com a palavra falada na cor do falante e o restante em branco. Efeitos sonoros ficam nas mesmas marcações dos impactos visuais (através de fx[].sfx). Misture com python3 scripts/build_audio.py timeline.json work/audio.wav.
  7. Folha de contato, depois aprovação. Selecione cerca de 12 momentos distribuídos pelo episódio, incluindo cada truque: node scripts/render_frames.mjs stills timeline.json portrait work/stills 0.5,2.0,... bash scripts/contact_sheet.sh work/stills out/contact_sheet.png Exiba out/contact_sheet.png e pare. Não renderize o vídeo completo até que o usuário aprove.
  8. Renderize após aprovação, para cada orientação (portrait = 1080x1920, landscape = 1920x1080, 30 fps): node scripts/render_frames.mjs video timeline.json portrait work/reel_silent.mp4 bash scripts/encode.sh work/reel_silent.mp4 work/audio.wav out/<nome>_9x16 Repita para landscape com out/<nome>_16x9. encode.sh multiplexa AAC 256k de áudio e grava a cópia _720p.mp4 (alvo ~17 MB, sempre abaixo de 20 MB). Verifique os tamanhos com ls -lh e informe-os.

Configurações de renderização

  • 9:16: 1080x1920, 30 fps, H.264 yuv420p, CRF 16, AAC 256k, faststart. 16:9: 1920x1080, mesmas configurações.
  • Cópia para WhatsApp: 720p (720x1280 ou 1280x720), taxa de bits calculada a partir da duração para ficar abaixo de 20 MB.
  • As legendas ficam a aproximadamente 68% da altura no 9:16 (fora da área superior de 250 px e inferior de 420 px da interface do app) e aproximadamente 86% no 16:9.

Arquivos desta skill

  • engine/engine.js, engine/index.html: mecanismo de canvas (personagens, cenários, speed lines, quadros de impacto, shake, chibi, legendas, emblema).
  • scripts/: check_setup.sh, sfx.sh, align.py, mouth.py, build_timeline.py, build_audio.py, render_frames.mjs, contact_sheet.sh, encode.sh.

Habilidades Relacionadas