Communitygithub.com

animation-studio

Transforme uma ideia ou roteiro em um vídeo animado completo (história bíblica, tecnologia/programação, matemática/educação ou história/anúncio geral) em um estilo escolhido (stickman, lousa, 2D plano, vetor moderno, storybook, 3D cartoon, 3D cinematográfico) e formato (9:16, 16:9, 1:1, 4:5), após verificar se o computador pode renderizá-lo com segurança.

O que é animation-studio?

O animation-studio é uma skill de IA abrangente que atua como um estúdio de animação completo, transformando ideias e roteiros em vídeos MP4 finalizados. Ela suporta múltiplos pacotes de conteúdo (Bíblia, tecnologia, matemática/educação e história geral/anúncio), estilos de animação (stickman, lousa, 2D plano, storybook, vetor moderno, Manim, 3D cartoon e 3D cinematográfico) e formatos de vídeo (9:16, 16:9, 1:1, 4:5). A skill é projetada como um roteador inteligente: após a coleta de requisitos via perguntas ao usuário, ela realiza uma verificação de hardware para determinar a potência do sistema (LITE, STANDARD ou POWER) e só então carrega os arquivos necessários (pacote de conteúdo, estilo e engine de renderização), evitando sobrecarregar o computador. O fluxo de trabalho inclui geração de roteiro, criação de lista de cenas, produção de locução (via TTS offline Piper ou gravação do usuário), renderização quadro a quadro com estimativa de tempo e espaço, mixagem de áudio com música e efeitos sonoros sintetizados, e finalização com legendas (SRT e queimadas). A skill também oferece suporte a marcas (watermark, lower third, end card), projetos para editores de vídeo (Kdenlive, Shotcut, DaVinci Resolve, Blender VSE) e segue regras de segurança rigorosas, como nunca renderizar sem verificação de hardware e sempre oferecer uma prévia de 5 segundos primeiro.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/blessedsaunyama/animation-studio/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

animation-studio: ideia → roteiro → locução → renderização segura → MP4

Este arquivo é um roteador. Faça as quatro grandes perguntas, verifique o hardware e carregue apenas os arquivos que o trabalho precisa: content/<pacote>.md (regras de escrita e precisão) + styles/<estilo>.md (aparência; seu bloco JSON é o preset que a engine lê) + engines/<engine>/README.md (como renderizar). Ferramentas compartilhadas estão em shared/.

Encontre a pasta da skill (SKILL_DIR) = a pasta que contém este arquivo. Claude Code mostra como o diretório base da skill; outros agentes: a pasta do SKILL.md que lhe foi dito para ler. Sempre chame ferramentas como "$SKILL_DIR/shared/...", com aspas (caminhos geralmente contêm espaços). Encontre um Python 3.10+ (python3, python ou py -3) e chame-o de PY. Após setup_check.py --install, use o python do venv que ele imprimir.

Mantenha o usuário informado com uma lista de tarefas. Escreva cada entregável em videos/<slug>/ na pasta de trabalho do usuário (slug = nome curto em minúsculas com hífen). Explique em linguagem simples.

O que funciona nesta versão

ParteStatus
Pacotes de conteúdo✅ Bíblia (content/bible.md) · ✅ Tecnologia (content/tech.md) · ✅ História/anúncio geral (content/general-story.md) · ✅ Matemática/educação (content/education-math.md)
Estilosengine A: ✅ Stickman · ✅ 2D Plano · ✅ Storybook · ✅ Lousa · ✅ Vetor moderno — engine B: ✅ Manim (+ Cores de Lousa / Vetor moderno) — engine C: ✅ 3D Cartoon — engine D: ✅ 3D Cinematográfico
Engines✅ A py2d (Python 2D) · ✅ B Manim (LaTeX opcional) · ✅ C 3D Cartoon (lento: limitado por tier) · ✅ D Blender (previews Eevee, finais Cycles no POWER)
Formatos✅ 9:16 · ✅ 16:9 · ✅ 1:1 · ✅ 4:5
Legendas✅ .srt sempre + queimadas com destaque de palavra (shared/captions.py)
Locução✅ gravação do usuário · ✅ Piper TTS (shared/voice.py, gratuito, offline)
Música/EFX✅ sintetizada (shared/sound.py) · ✅ arquivo de música licenciado pelo usuário
Projetos de editor✅ Kdenlive · ✅ Shotcut · ✅ DaVinci Resolve (FCPXML) · ✅ Blender VSE · 🧪 OpenShot (experimental) · ✅ pacote de editor (CapCut, qualquer editor)
Kit de marca✅ marcas salvas (pasta do usuário), marca d'água, lower third, end card da marca, cores da marca em qualquer estilo (shared/brand.py, docs/branding.md)
Instalações de software✅ um registro verificado (shared/tools.yaml) com comandos para Windows, macOS e cada família Linux; nunca instala sem um sim

Se o usuário escolher um item 🚧, diga claramente, ofereça a opção ✅ mais próxima e ainda assim entregue o pacote de roteiro.

Etapa 1: Coleta (AskUserQuestion, no máximo 4 perguntas por chamada; pule o que já foi respondido)

Chamada 1

  1. Conteúdo: História bíblica · Tecnologia/programação · Matemática/educação · História/anúncio geral
  2. Estilo: ofereça o padrão para o conteúdo primeiro (Bíblia → Storybook · Tecnologia → Vetor moderno · Matemática → Manim · Geral → 2D Plano), depois 2–3 outros. Mencione Stickman para peças rápidas e leves.
  3. Formato(s) (multiSeleção): 9:16 1080x1920 (TikTok/Reels/Shorts) · 16:9 1920x1080 (YouTube/projetor) · 1:1 1080x1080 · 4:5 1080x1350. PY shared/formats.py table imprime a tabela de plataformas.
  4. Qualidade: Prévia (rápida, 720p) · Final (1080p). Recomende sempre uma Prévia de 5 s primeiro.

Chamada 2 (apenas o que se aplica) 0. Marca? Nenhuma · Usar marca salva (lista de PY "$SKILL_DIR/shared/brand.py" list) · Criar nova marca. Criar nova: pergunte cada campo UM de cada vez, todos opcionais (nome, slogan, site, arquivo de logotipo, telefones, WhatsApp, e-mails, redes sociais, cores, fonte OFL, CTA) e salve cada um com brand.py set (ele valida formatos de telefone/e-mail/URL/cor); logotipo via brand.py logo, fonte via brand.py font. Nunca invente detalhes de contato: apenas o que o usuário fornecer (ou confirmar do próprio site). Em seguida, as opções, com padrões de docs/branding.md: marca d'água (anúncio/promoção LIGADO; Bíblia, tecnologia e matemática DESLIGADO), canto/tamanho/opacidade/logotipo ou logotipo+nome · lower third (quando, por quanto tempo) · end card com CTA + contatos (anúncio/promoção LIGADO) e sua duração · recorar o estilo com as cores da marca (sim/não). 5. Tópico/história e duração (30 s · 60 s · 90 s · 2–3 min; outras durações via "Outro"). Pacotes de conteúdo adicionam os seus (Bíblia: público). 6. Locução: Minha própria gravação (padrão) · Piper TTS (gratuito, offline; voz padrão en_US-ljspeech-medium, dados de domínio público). Piper precisa de uma instalação única (setup_check.py --tts --install) e download de voz (voice.py --download, ~60 MB): pergunte primeiro. 7. Legendas queimadas? Sugira Sim para 9:16 e 1:1 (a maioria assiste sem som), Não para 16:9. Um arquivo .srt é sempre criado. 8. End card "Feito com animation-studio"? Desligado por padrão; apenas opt-in. Nunca adicione marca d'água. 9. Saída: MP4 finalizado · Arquivo de projeto para um editor · Ambos.

Escolha do editor (apenas se a saída incluir um arquivo de projeto): execute PY "$SKILL_DIR/shared/tools.py" status --kind editor e mostre a lista numerada COMPLETA (✅ instalado + versão · ❌ não instalado · ⚠️ não suportado aqui, por exemplo, editores desktop em um servidor headless). O usuário escolhe exatamente um (AskUserQuestion: até 4 opções com editores instalados primeiro; o restante pode ser digitado em "Outro"). Se a escolha for ❌, mostre PY "$SKILL_DIR/shared/tools.py" flow <editor> palavra por palavra (o que é, o comando de instalação para ESTE SO/distro/shell, o link oficial) e pergunte: Instalar agora (eu executarei) · Eu mesmo instalarei, depois diga "pronto" · Escolher outro editor · Pular, entregue MP4 + pacote de editor. "Instalar agora" → tools.py install <editor> --yes (diga primeiro se o Windows mostrará um aviso de permissão ou se uma etapa precisar de sudo; etapas sudo são passadas ao usuário como ! sudo ...). Após qualquer instalação ou "pronto": execute status novamente, confirme ✅, continue de onde parou. CapCut e editores não suportados recebem o pacote de editor. Detalhes: docs/editors.md.

Registre as respostas em videos/<slug>/brief.md.

Etapa 2: Verificação de hardware (antes de qualquer renderização; nunca pule)

Execute PY "$SKILL_DIR/shared/hwcheck.py" e mostre sua tabela e tier em uma mensagem curta. Ele também salva o perfil do sistema (SO + versão, WSL, Apple Silicon, distro Linux e família, gerenciadores de pacotes, shell, display) que toda etapa posterior lê. Todo comando de instalação que você mostrar ou executar vem de PY "$SKILL_DIR/shared/tools.py" cmd <ferramenta> (combinado com este SO, distro e shell); nunca digite um de memória. Sem display (headless) → apenas renderização: sem aplicativos de editor.

TierRegraEnginesLimites
LITE< 12 GB RAM ou < 4 threads de CPUA, BApenas 720p; 3D Cartoon e Blender bloqueados (ofereça imagens estáticas)
STANDARDentreA, B completo; C ≤ 5 s prévia (mais longo apenas com confirmação + retomada); D Eevee ≤ 5 s a 720p, amostras baixas1 trabalho de renderização; workers = threads − 2
POWER≥ 32 GB RAM + GPU dedicada ≥ 6 GB VRAMtodos, Cycles na GPUworkers = threads − 1
Se o laptop estiver na bateria, avise antes de qualquer renderização com mais de um minuto. Se a RAM livre estiver abaixo de 25%, peça ao usuário para fechar aplicativos grandes.

Etapa 3: Escolher a engine (estilo → engine), depois carregar arquivos

EstiloEngineCarregar
Stickman, 2D Plano, Storybook, Lousa, Vetor modernoA engines/py2dstyles/<estilo>.md, engines/py2d/README.md
Manim (matemática, algoritmos, diagramas); cores de Lousa/Vetor moderno também funcionam aquiB engines/manimstyles/manim.md (ou o estilo escolhido), engines/manim/README.md
3D CartoonC engines/toon3d (uma pasta de projeto com story.js + world.js)styles/toon-3d.md, engines/toon3d/README.md
3D CinematográficoD engines/blender (scene.json, Z up)styles/cinematic-3d.md, engines/blender/README.md
Se o tier bloquear a engine, explique o porquê e ofereça: a mesma história em um estilo da engine A, ou apenas algumas imagens estáticas. O usuário pode substituir um limite somente após um aviso claro ("isso pode travar ou superaquecer seu computador; salve seu trabalho primeiro").

Em seguida, carregue content/<pacote>.md e siga suas etapas de pesquisa e escrita.

Etapa 4: Pacote de roteiro (regras do pacote de conteúdo), então PARE

Cada pacote entrega: a narração em um bloco copiável (≈ 3,7 palavras/s a menos que o pacote diga o contrário) com contagem de palavras e duração → script.txt; uma lista de cenas → shotlist.md; extras do pacote (Bíblia: tabela de fidelidade, notas de estudo, descrição); e fontes no final. Nunca invente versículos, citações, APIs, flags, versões ou fatos: busque ou execute-os, caso contrário, marque NÃO VERIFICADO. Em seguida, entregue a locução (gravação do usuário: mp3/wav, sem música) e aguarde o áudio. Se o usuário queria apenas o roteiro, pare aqui.

Etapa 5: Produção

  1. Setup: PY "$SKILL_DIR/shared/setup_check.py" --engine <engine> → tabela ✅/❌. Uma ferramenta ausente (Blender, Manim, Node, LaTeX, Inkscape...) usa o mesmo fluxo que os editores: mostre tools.py flow <ferramenta> --for engine, depois Instalar agora · Eu mesmo instalarei, depois diga "pronto" · Escolher outro estilo · Pular (apenas roteiro, lista de cenas e referências); verifique novamente. Pacotes Python vão apenas para o próprio .venv da skill (--install, após um sim).
  2. Locução + tempo. Piper: PY "$SKILL_DIR/shared/voice.py" script.txt voice.wav --timing work --speed 0.85 (tempos de frase exatos, sem adivinhação). Gravação do usuário: PY "$SKILL_DIR/shared/timing.py" voice.mp3 script.txt --out work. Ambos escrevem work/words.json + work/phrases.json.
  3. Cena: engine A: videos/<slug>/scene.json; engine B: uma cena Manim .py que começa com from studio import *; engine C: videos/<slug>/story.js + world.js; engine D: um scene.json do Blender (formatos nos READMEs das engines). Uma cena por frase; mantenha rostos, texto e props chave dentro da zona segura de cada formato escolhido (shared/formats.md).
  4. Verificação visual: renderize 3–6 imagens estáticas por formato (--frames 0,60,...), faça uma folha de contato (PY "$SKILL_DIR/shared/sheet.py" sheet.jpg <dirs> --safe <fmt>), mostre-a e verifique contra as regras do pacote de conteúdo (Bíblia: reverência + violência). Corrija antes de renderizar.
  5. Estimativa: PY "$SKILL_DIR/shared/estimate.py" --engine <engine> scene.json --fmt <fmts> --quality <q> (Manim: --engine manim scene.py --name SceneName --timing work/phrases.json; 3D Cartoon: --engine toon3d <pasta do projeto>; Blender: --engine blender scene.json) → DECISION: OK renderizar · ASK informar ao usuário "~X min, Y GB" e perguntar (ofereça a prévia de 5 s) · REFUSE disco insuficiente (precisa de 2× a estimativa): peça ao usuário para liberar espaço.
  6. Renderize um formato de cada vez (nunca dois trabalhos ao mesmo tempo). Renderizações longas são executadas em segundo plano; a engine executa com baixa prioridade, retoma do último quadro salvo se reexecutada e pausa a si mesma (código de saída 4) se a RAM livre cair abaixo de 15%. Avise o usuário que ele pode continuar trabalhando.
  7. Áudio: música PY "$SKILL_DIR/shared/sound.py" music music.wav --seconds <duração do vídeo> --mood warm|calm|tense|tech|playful, EFX ... sfx sfx.wav --seconds <len> --cues cues.json (pop, whoosh, type, chime, success, swell, rain, soft thunder), depois PY "$SKILL_DIR/shared/mix.py" voice.wav music.wav sfx.wav --music-db -12 --sfx-db -10 --seconds <len> (música nunca mais alta que −6 dB abaixo da voz; −9 a −12 para vídeos com muita fala ou reverentes). Um arquivo de música fornecido pelo usuário substitui music.wav: lembre-o uma vez de que ele deve ter os direitos. 7b. Marca (se escolhida): recolorir antes de renderizar (brand.py recolor <marca> --style <estilo> --out style_<marca>.md, use-o como o estilo da cena); após a renderização, brand.py apply <marca> frames_<fmt> branded_<fmt> --fmt <fmt> [--watermark tr,9,90,logo] [--lower-third a,b] [--end-card 2.5 --cta "..."] [--captions] e use branded_<fmt> daqui em diante. Com um end card, misture o áudio com --seconds <nova duração>.
  8. Legendas + finalização + QA: PY "$SKILL_DIR/shared/captions.py" work out/<Título> --style <estilo> --fmt <fmt> --quality <q> (→ .srt + _<fmt>.ass), depois PY "$SKILL_DIR/shared/finish.py" frames_<fmt> out/<Título>_<fmt>.mp4 --audio mix.wav --quality <q> [--ass out/<Título>_<fmt>.ass] --srt out/<Título>.srt [--end-card apenas se optou por ele]. Verifique as linhas de QA (trechos pretos/parados, cerca de −14 LUFS) e observe a folha _qa.jpg.
  9. Projeto do editor (se escolhido): PY "$SKILL_DIR/shared/editors.py" prepare --frames frames_<fmt> --shots "<f0>-<f1>:<nome>,..." --final out/<Título>_<fmt>.mp4 --voice voice.wav --music music.wav --sfx sfx.wav --srt out/<Título>.srt --out videos/<slug>/editor depois ... export videos/<slug>/editor/timeline.json --editor <kdenlive|shotcut|openshot|resolve|blender-vse|pack>. Mostre sua tabela de verificação (o tempo deve corresponder ao MP4; Kdenlive/Shotcut também recebem uma renderização melt de 2 s). Avise o usuário como abri-lo (docs/tools/.md).
  10. Entregue o(s) MP4(s), o .srt, o projeto do editor, se houver, e uma linha por cena descrevendo o que ela mostra. End card opcional apenas se o usuário optou por ele.

Regras de segurança (sempre)

  • Nunca inicie uma renderização sem a Etapa 2 e a etapa 5 (estimativa). Sempre ofereça "Prévia de 5 s primeiro".
  • Respeite os limites do tier; substituições apenas após um aviso claro e um sim.
  • Um trabalho pesado por vez. Nunca exclua ou sobrescreva os arquivos do usuário sem perguntar (re-renderizar em uma pasta de quadros existente retoma; --force sobrescreve, portanto, pergunte).
  • Se uma ferramenta estiver faltando ou o usuário recusar instalações, ainda assim entregue o roteiro, a lista de cenas e as referências.

Créditos e licenças

Código: MIT (veja LICENSE). Código de terceiros incluído está listado em THIRD_PARTY_NOTICES.md. A skill não inclui fontes, músicas ou imagens: ela usa fontes do sistema e som sintetizado. Os vídeos dos usuários são deles: sem marca d'água forçada; o end card é opt-in.

Habilidades Relacionadas