Curta de cartoon: ideia → roteiro → narração → MP4 finalizado
O visual: personagens cartoon 2D estilo "bean-head" com contornos grossos em preto, desenhados como "cartas" em um canvas, em um mundo 3D colorido com contornos a tinta preta, texturas pintadas, profundidade de campo e câmeras deslizantes. A saída é 1080×1920, 30 fps, exatamente com a duração da narração. A voz do usuário permanece inalterada. A música de fundo e os efeitos sonoros são sintetizados: música 16 dB abaixo da voz, efeitos sonoros a 50% do volume da voz ou menos. Comprovado em "The Soldier Who Never Left" (19,7 s, 8 cenas).
Se esta habilidade chegou como arquivos no chat
O usuário pode enviar SKILL.md e cartoon-short-kit.zip e dizer algo como "leia esta habilidade, instale-a e use-a" (اقرأ هذه المهارة، وثبّتها، واستخدمها). Então:
- Leia este arquivo inteiro e siga-o. Não explique o que é uma habilidade e não faça perguntas de configuração.
- Descompacte o kit em uma pasta gravável (veja 4.0). Confirme que
engine/main.jsevendor/three.module.jsestão lá. - Se este ambiente tem uma pasta pessoal de habilidades (por exemplo
~/.claude/skills/), copieSKILL.mde o kit paracartoon-audio-short/lá. Se não tiver nenhuma, não diga que está instalado permanentemente: diga em uma linha curta que está pronto para este chat e que os dois arquivos precisam ser enviados novamente em um novo chat. - Responda em uma linha curta e vá direto para a Etapa 1.
Idioma: Árabe ou Inglês
- Chat: responda no idioma das mensagens do usuário desde a primeira resposta. Se eles escreverem em árabe ou pedirem árabe, cada mensagem é em árabe: perguntas, rótulos de opções e descrições, a lista de tarefas, ideias, notas de progresso, erros e a nota de entrega. Use palavras simples do dia a dia e corresponda ao dialeto deles se escreverem em um. O inglês permanece apenas para nomes de arquivos e comandos, em sua própria linha para que o texto da direita para a esquerda não os embaralhe.
- Roteiro: o idioma do roteiro segue o chat, a menos que peçam o contrário. "أريد أفكار بالعربي" digitado em qualquer pergunta significa Etapa 2, em árabe.
- Variedade árabe: escreva em árabe padrão simples, a menos que eles escrevam ou peçam um dialeto (iraquiano, egípcio, do Golfo, levantino e assim por diante). Não pare para perguntar. Termine a resposta do roteiro com uma linha: "تريده بلهجة ثانية؟ اكتب اللهجة وسأعيد كتابته." Nunca misture padrão e dialeto em um roteiro, a menos que eles peçam.
- Perguntas fixas em árabe. Use esta redação:
- "من أين نبدأ؟"
- "الصوت جاهز": ارفع الملف الصوتي، ومعه النص إن وُجد، وسأصنع الفيديو.
- "عندي نص": سأحسّنه وأعطيك نصائح للتسجيل، ثم أصنع الفيديو بعد رفع الصوت.
- "أحتاج إلى أفكار ونص": سأقترح عشر أفكار أصلية، ثم أكتب النص للفكرة التي تختارها.
- "كم مدة الفيديو؟"
- "من 20 إلى 30 ثانية (مُوصى به)": نحو 40 إلى 60 كلمة.
- "من 30 إلى 45 ثانية": نحو 60 إلى 90 كلمة.
- "من 45 إلى 60 ثانية": نحو 90 إلى 120 كلمة.
- "من أين نبدأ؟"
Regras
- Histórias, personagens e cenas são sempre originais. Nunca recrie o vídeo de outro criador cena por cena. Ofereça uma abordagem original sobre a mesma ideia.
- Nenhuma pessoa real viva nomeada como personagem, e nenhum mascote de marca ou logotipo.
- Sem legendas, a menos que o usuário peça. Texto diegético (uma mensagem esculpida, uma placa) é aceitável, e deve ser lido corretamente (não espelhado). Placas, etiquetas e manchetes usam o idioma do roteiro: um vídeo em árabe recebe "بِيعَ", não "SOLD". Desenhe-as como em 4.3.
- Nunca edite ou reajuste o tempo da voz. A imagem é sincronizada com ela, e cada reação visual ocorre 0-3 frames antes de sua palavra.
- Níveis de áudio: a música de fundo fica 16 dB abaixo da voz (RMS com porta), para que a narração permaneça clara. Os efeitos sonoros ficam a 50% ou ligeiramente menos, com picos limitados para que nenhum som se destaque sobre a narração. Sempre faça a mixagem com
mix.py, nunca manualmente. Não use ducking ou compressão que altere essa proporção; apenas um ganho linear mais um limitador de pico é aplicado a toda a mixagem. - Mantenha o usuário informado com uma lista de tarefas. Envie uma folha de contato de imagens fixas antes da renderização longa.
Etapa 1: Captação (sempre primeiro)
Se um arquivo de áudio já estiver anexado, pule para a Etapa 4. Se um roteiro também foi fornecido, use-o para o tempo. Caso contrário, faça uma AskUserQuestion (ou texto simples se essa ferramenta estiver faltando): "De onde você está partindo?"
- Narração pronta: peça para enviá-la, junto com o texto do roteiro se tiver (o roteiro torna o tempo exato). Vá para a Etapa 4 quando chegar.
- Tenho um roteiro, preciso da narração: aperfeiçoe o roteiro conforme a Etapa 3, se necessário, devolva-o com dicas de gravação, peça o upload e vá para a Etapa 4.
- Preciso de ideias de vídeo e um roteiro: vá para a Etapa 2. Pergunte também a duração alvo se eles não disseram. O padrão é 20-30 s; 45-60 s é permitido. Em um chat em árabe, use a redação sob Idioma.
Etapa 2: 10 ideias de vídeo
Dê exatamente 10 ideias em uma resposta, numeradas, e peça ao usuário que responda com um número (ou "mais"). Cada ideia recebe:
- Título (5-8 palavras, que desperte curiosidade, por exemplo, "O Soldado Que Nunca Partiu").
- Linha de gancho: a primeira frase falada, um paradoxo apresentado como fato ("Um homem vendeu a Torre Eiffel. Duas vezes.").
- A reviravolta em uma linha (a consequência irônica que encerra o vídeo).
- Por que anima bem: os 2-3 grandes momentos visuais (um colapso, uma revelação, uma perseguição).
- Verdade ou lenda: diga claramente se é história documentada, um relato contestado ou folclore.
O que torna uma ideia "perfeita" para este formato:
- Uma história surpreendente com uma causa e efeito físicos que você pode mostrar.
- Um personagem comum claro, riscos que aumentam e uma reviravolta na última linha.
- Um cenário que pode ser construído a partir de formas 3D simples mais cartas de cartoon (cidades, pontes, navios, castelos, desertos, laboratórios, palácios).
- Misture as 10 entre épocas e temas: antigo, medieval, 1800s, moderno, ciência, animais, invenções, desastres, leis estranhas, acidentes de sorte.
- Para qualquer coisa apresentada como verdadeira, verifique os fatos principais com uma pesquisa na web antes de oferecê-la. Não apresente uma lenda viral como fato. Se o usuário quiser de qualquer forma, enquadre-a como "a lenda diz".
- Nenhuma pessoa real viva como alvo de uma piada, nada gráfico e nada político.
Para ideias em árabe:
- Escreva o título, gancho, reviravolta e notas em árabe. Escreva o gancho como uma frase árabe natural, não uma tradução. Dê a nomes estrangeiros sua grafia árabe usual.
- Misture histórias da história e ciência árabe e islâmica com histórias mundiais, para que a lista pareça feita para este público.
- Pesquise em árabe também, além de inglês. Histórias árabes populares também se espalham sem fontes, então rotule-as com Verdade ou lenda da mesma forma.
- Nunca mostre profetas, seus companheiros ou outras figuras sagradas como personagens. Não faça piadas sobre religião, seitas, tribos ou nacionalidades.
Etapa 3: Roteiro (após a escolha)
Escreva apenas a narração (sem instruções de cena no texto falado). O inglês tem cerca de 3,7 palavras/s: 20 s ≈ 75 palavras, 30 s ≈ 110, 60 s ≈ 220. O árabe é mais lento, cerca de 2 palavras/s: 20 s ≈ 40 palavras, 30 s ≈ 60, 60 s ≈ 120. As palavras árabes têm mais sílabas, e vozes árabes reais medidas deram 1,6-2,1 palavras/s. Fórmula:
- Gancho (frase 1, sem introdução): o fato absurdo.
- Cenário em 1-2 linhas: quando, onde, quem, um detalhe concreto.
- Escalada, 2-4 batidas, cada uma maior. Outros duvidam ou zombam. Use uma piada de exagero.
- Mistério ou pivô: "Mas quando..." / "Veja," apresenta o mecanismo real, frequentemente com uma analogia cotidiana.
- Reviravolta / consequência: curta, irônica e as últimas palavras do vídeo. Use inglês falado simples, contrações, frases de cerca de 8-15 palavras e números escritos por extenso. Nunca descreva o que o espectador já vê.
Para um roteiro em árabe:
- Mantenha as frases com cerca de 6-12 palavras e use a mesma fórmula de cinco partes. Pivôs como "لكن عندما…" e "والسبب؟" funcionam bem.
- Escreva números e anos por extenso (ألف وتسعمئة وأربعة وتسعون), e soletre palavras estrangeiras e nomes de marcas em letras árabes, para que a voz os leia corretamente.
- Pontue para a voz: "،" e "." para pausas, "…" para uma pausa antes de uma revelação e "؟" para perguntas. O tempo também usa esta pontuação.
- Dê um bloco de voz copiável pronto para colar no gerador de voz:
- Tashkeel em cada palavra, o que ajuda mais em nomes e palavras com mais de uma leitura. Deixe de fora as terminações de caso que um narrador não diria e escreva o dialeto como é falado. Se pedirem para não usar tashkeel, ou soar errado, remova-o.
- Tags de áudio para Eleven v3 em inglês, como [excited], [curious], [serious], [whispers], [warmly]. Use uma ou duas por grupo de frases no máximo, apenas onde as palavras as justificam.
- "g" iraquiano: escreva گ e چ onde o som falado precisar deles (تِگْدَر, لْگِيت), já que ك lê-se como "k".
- Partes: para um roteiro com mais de cerca de 700 caracteres, divida-o em partes numeradas no final das frases.
- A contagem de palavras e a duração usam a taxa árabe acima, com tags e tashkeel ignorados.
Em seguida, responda com:
- O roteiro em um bloco copiável, com a contagem de palavras e duração estimada.
- Um plano visual de um parágrafo (as cenas que você animará).
- Dicas de gravação: uma voz de narrador estável e calorosa; ElevenLabs funciona bem (uma voz de narrador grave, velocidade cerca de 1,05-1,1, estabilidade cerca de 45-55%). Mp3 ou wav é aceitável. Deixe pausas naturais no final das frases. Exporte sem música.
- Dicas de gravação em árabe: use Eleven v3, porque modelos mais antigos leem as [tags] em voz alta. Comece com Estabilidade em Natural e velocidade cerca de 0,95, e tente as primeiras frases antes de gerar tudo. Com outro gerador, exclua as tags primeiro. A própria voz deles funciona também, sem as tags ou tashkeel.
- O pedido: "Envie a narração quando estiver pronta e eu farei o vídeo completo." Mantenha o texto final do roteiro. Ele impulsiona o tempo na Etapa 4, portanto nenhum reconhecimento de fala é necessário. Se gravaram uma versão alterada, peça o texto final.
Etapa 4: Construir o vídeo (após o upload da narração)
Faça tudo daqui em diante sem parar. Faça perguntas apenas se o tempo não puder ser resolvido.
4.0 Obter o kit
O kit de código contém o mecanismo, ferramentas, exemplo prático, three.js r160 fornecido, a biblioteca toon.ts Pen de github.com/mromidev/claude-animated-shorts (ambos MIT) e a fonte árabe Lalezar (SIL OFL). Encontre-o nesta ordem e trate-o como somente leitura:
- Uma pasta
kit/ao lado desteSKILL.md, encontrada comfind / -name SKILL.md -path "*cartoon-audio-short*" 2>/dev/null. - Uma pasta
cartoon-short-kitjá descompactada. cartoon-short-kit.zipentre os arquivos enviados neste chat:find / -name "cartoon-short-kit*.zip" 2>/dev/null, depois descompacte-o para~/cartoon-short-kit-src/. O kit é a pasta dentro dela que contémengine/.
Depois execute bash <kit>/tools/setup.sh ~/shorts/<slug>. Ele copia o mecanismo e as ferramentas para o projeto, instala o three.js fornecido, remove os tipos de toon.ts com Node 22 module.stripTypeScriptTypes e vincula o Playwright. Nenhuma rede é necessária. Se os arquivos fornecidos estiverem faltando, ele recorre ao npm ou a um clone git.
- Requisitos: Node 22.6+, Python 3 com numpy + Pillow, ffmpeg e Playwright com Chromium (
npm i -g playwright && npx playwright install chromiumse estiver faltando). - Se os registros de pacotes estiverem bloqueados, o git via GitHub geralmente funciona. Nunca desabilite TLS ou desvie do proxy.
- Chromium: use o navegador Playwright pré-instalado com
--use-angle=swiftshader --enable-unsafe-swiftshader --ignore-gpu-blocklist. Isso fornece WebGL de CPU a cerca de 3-10 s por frame.
4.1 Tempo
Execute python3 timing.py voice.mp3 script.txt --out work. Adicione --lang ar para árabe se não houver roteiro. O roteiro pode ser o bloco de voz exato: ele remove [tags] e tashkeel, e também divide frases na pontuação árabe.
- Com whisper ou faster-whisper instalados, ele usa timestamps de palavras. Para árabe, usa um modelo multilíngue e mantém as próprias palavras do roteiro, para que uma palavra de dialeto ouvida incorretamente não possa alterar o texto.
- Caso contrário, ele alinha frases do roteiro (divididas por pontuação) a segmentos de fala detectados por silêncio, com um DP que corresponde sílabas à duração e penaliza finais de frase dentro de um segmento e grandes lacunas dentro de uma frase.
- Sem ASR e sem roteiro, peça o roteiro. Claude não pode ouvir áudio.
- Verifique
work/phrases.json: as pausas devem cair no final das frases. Quadros totais = round(duração × 30).
4.2 Plano de cenas (work/PLAN.md antes do código)
Faça uma linha por cena: quadros, palavras, cenário, luz, movimento de câmera, personagens/poses/expressões, efeitos e indicação de SFX.
- O quadro 0 já é a imagem do gancho.
- Geralmente uma cena por frase. Mescle frases pequenas na próxima cena.
- Ilustre cada frase literalmente. Os adereços carregam as piadas.
- Varie os tamanhos de cena: gancho em PMC → plano amplo de revelação → plano de dois → close-up de inserção no objeto-chave → close-up de reação → movimento de ambiente para a consequência.
- Use luz para as batidas: dia para normal, dourado para declínio ou drama, azul noturno para explicação. Um salto no tempo recebe um flash branco de 6 quadros.
- A linha de reviravolta recebe um sting (música para, batida baixa, push-in com rotação). A consequência física da última cena chega na palavra final.
4.3 Mundo (web/main.js)
Mantenha as seções do mecanismo: materiais toon, contorno a tinta, add/tbox, céu, luzes, cartas, alvos de renderização/pós, applyLight, drawActors, swapForNd, renderFrame. Substitua o mundo de exemplo entre // ---------- world ---------- e // ---------- cards ----------, mais as partes de história de worldState().
- Construa a partir de primitivas com texturas de canvas pintadas (
paint.js: tábuas, vigas, madeira podre, pedra, musgo/heras, grama, terra, gesso, telhas, mármore, faixas, texto esculpido). Escreva novos pintores no mesmo estilo plano com costuras escuras. - Use
tboxpara densidade constante de texel, um gradiente toon de 2 etapas e névoa = cor do horizonte. - Fundo: colinas (esferas meio enterradas), montanhas (cones + tampas de neve), ciprestes/pinheiros, casas distantes, placas de nuvens pintadas.
- Peças de cenário (colapsos, quedas, portas) são grupos pivotados impulsionados por progresso 0..1 de
worldAt(f), com partes suavizadas e escalonadas. - Texto diegético curvo usa UVs planares. Verifique se não está espelhado.
- Texto árabe em qualquer coisa: use
P.signCanvas(text, opts)comP.tex()para placas e tags,P.drawText()em seu próprio canvas, ouP.carvedText()para gravação. Eles carregam a fonte fornecida, configuram da direita para a esquerda e desenham strings inteiras. Nunca desenhe uma letra árabe por vez.
4.4 Cartas de personagens (cards/)
Desenhe personagens como cartas planas com contorno grosso. A pasta tem modelos de exemplo. Copie-os e troque as imagens. Os tamanhos padrão são 300×500 px, a 150 DPI, com uma máscara "pegajosa" que cola a carta ao chão.
4.5 Renderização de cena
Execute cada cena com python3 render.py work/scene_*.json work/ ou através do script principal. Verifique as imagens de saída em work/frames/.
4.6 Mixagem de áudio
Use mix.py para combinar narração, música e SFX nos níveis especificados (música 16 dB abaixo, SFX a 50%). Gere o áudio final em work/audio.mp3.
4.7 Montagem final
Combine quadros e áudio com ffmpeg:
ffmpeg -r 30 -i work/frames/frame_%04d.png -i work/audio.mp3 -c:v libx264 -pix_fmt yuv420p final_video.mp4
Etapa 5: Entrega
Envie o final_video.mp4 para o usuário com uma nota curta e a lista de tarefas concluída.