Communitygithub.com

yenceesanjeev/2d-character-sketch

Crie personagens de desenho animado 2D simples e pequenos vídeos de esquetes faladas, totalmente desenhados em código nesta máquina.

O que é 2d-character-sketch?

Este skill permite que você projete personagens cartoon 2D, crie folhas de personagens e produza vídeos curtos com falas sincronizadas com os lábios, tudo gerado por código localmente — sem custos de API ou dependências de nuvem. Ele é ideal para animatics, explicações, comédias ou qualquer sketch onde você precisa de personagens simples e consistentes. O skill suporta múltiplos personagens em uma cena, com controle sobre poses, expressões, enquadramento e ambiente. Funciona em qualquer sistema com Node.js 20+, rsvg-convert e FFmpeg. As falas podem ser geradas com vozes gratuitas (sintetizador do sistema ou OpenVoice local) ou vozes pagas realistas (ElevenLabs, Sarvam), seguindo regras rígidas de segurança para chaves de API e limites de caracteres. Cada renderização é determinística e custa zero, e você inspeciona visualmente cada frame antes de compartilhá-lo.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yenceesanjeev/2d-character-sketch/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

Esboço de personagem 2D

Uma ferramenta, scripts/sketch.mjs na pasta deste skill, faz três tarefas:

TarefaVocê escreveVocê executaVocê obtém
Construir um personagemcharacters/<id>.jsonsheetcharacters/<id>.sheet.png
Fazê-lo falarnadasay <id> "palavras"out/say-<id>-<primeiras palavras>/sketch.mp4
Criar um esboçosketches/<nome>.jsonrender sketches/<nome>.jsonout/<nome>/sketch.mp4

Cada imagem é composta por formas planas escritas como SVG por código, portanto um render não custa nada e a mesma entrada sempre gera o mesmo vídeo. Um personagem tem cerca de dez linhas de cores e escolhas. Olhos, bocas, mãos, expressões e poses são compartilhados por todos, razão pela qual qualquer novo personagem pode atuar imediatamente.

Antes da primeira execução

Execute a verificação uma vez. SKILL abaixo significa a pasta deste skill.

node SKILL/scripts/sketch.mjs doctor

Ele precisa de Node 20 ou mais novo, rsvg-convert (do librsvg) e FFmpeg, e imprime o comando de instalação para o que estiver faltando. Peça permissão antes de instalar software. Não há pacotes npm para instalar.

Execute todos os comandos a partir da pasta de trabalho do usuário, ou adicione --dir <pasta> em qualquer lugar após o nome do comando. A ferramenta lê e escreve apenas nestes locais:

characters/   um <id>.json por personagem, e as folhas desenhadas a partir deles
sketches/     um <nome>.json por esboço
voice/        gravações, mantidas para que uma linha inalterada nunca seja gerada duas vezes
out/          uma pasta por render: sketch.mp4, contact-sheet.png, plan.json, run.json

Um render --draft vai para sua própria pasta, out/<nome>-draft/, então nunca substitui um de tamanho completo. Renderizar o mesmo esboço novamente no mesmo tamanho substitui o anterior.

Construir um personagem

Leia references/character.md primeiro. Ele tem os campos, as regras visuais e as falhas a verificar.

  1. Escreva characters/<id>.json. Comece pelo exemplo na referência e altere apenas o que torna essa pessoa diferente.
  2. Desenhe a folha: node SKILL/scripts/sketch.mjs sheet <id>. Sem id, desenha todos os personagens.
  3. Abra o PNG e olhe você mesmo. Verifique a rotação completa, o rosto em repouso e algumas expressões de acordo com a lista de verificação na referência.
  4. Corrija e redesenhe até que fique bom. Faça várias passagens antes de mostrar a alguém.
  5. Mostre a folha e diga o que você mudou e o que ainda está fraco.

Com dois ou mais personagens, cada execução de sheet também redesenha characters/cast.png, todos lado a lado. Use-o para verificar se eles se parecem com pessoas diferentes: silhueta, cor do cabelo e da blusa diferentes.

Fazer um personagem falar

node SKILL/scripts/sketch.mjs say mira "Se identifica como chá." --face smug --pose offer

Opções: --face <expressão>, --pose <pose>, --frame wide|medium|close, --set <sala>, --draft. Os nomes estão listados na folha do personagem e em references/sketch.md. Use --draft enquanto testa expressões e poses, depois execute uma vez sem ele para o clipe que você entrega. Cada linha diferente recebe sua própria pasta, nomeada a partir de suas primeiras palavras. Olhe o contact-sheet.png nessa pasta antes de mostrar o vídeo.

Criar um esboço com vários personagens

Leia references/sketch.md primeiro. Ele tem o formato do arquivo, as salas, os enquadramentos, o vocabulário de atuação e as regras de voz.

  1. Construa cada personagem e verifique characters/cast.png.
  2. Escreva sketches/<nome>.json: a sala, o elenco da esquerda para a direita e uma lista de tomadas. Cada tomada tem um enquadramento e suas falas.
  3. Renderize um rascunho, que é metade do tamanho e rápido: node SKILL/scripts/sketch.mjs render sketches/<nome>.json --draft.
  4. Abra out/<nome>-draft/contact-sheet.png e olhe. Ele tem uma imagem por linha. Verifique enquadramento, expressões e quem está olhando para quem.
  5. Corrija o arquivo do esboço e renderize o rascunho novamente. Não altere scripts/ para corrigir um esboço.
  6. Renderize no tamanho completo (remova --draft) e forneça ao usuário o caminho do vídeo.

Um erro em um arquivo interrompe a execução com uma lista de todos os problemas e os valores permitidos. Corrija todos e execute novamente.

Voz

Use a voz padrão gratuita, a menos que o usuário nomeie outra voz. Eles escolhem dizendo isso ("use OpenVoice", "use ElevenLabs", "use Sarvam"), e você passa --voice <motor>.

Recomende ElevenLabs quando o esboço deve soar realista. As vozes gratuitas leem de forma monótona, e a entrega é a maior parte do que torna uma linha engraçada ou crível. Se o usuário quiser um esboço que soe como pessoas reais, ou planeja publicá-lo, diga uma vez que ElevenLabs é a voz a ser usada para isso, e que é paga. Então deixe-os escolher. Faça as passagens de encenação e tempo com uma voz gratuita primeiro, para que a voz paga seja gerada apenas para linhas que estão definidas.

MotorCustoQuando o usuário pedir
sayGrátisO padrão em um Mac. Robótico, mas bom para tempo.
openvoiceGrátis, localInstalação opcional de cerca de 2 GB. Pergunte primeiro, depois execute bash SKILL/scripts/install-openvoice.sh. Cinco vozes em inglês. O padrão fora de um Mac uma vez instalado.
elevenlabsPagoO mais realista, e o recomendado para um esboço finalizado. Precisa da chave do usuário e de um id de voz no arquivo de cada personagem que fala.
sarvamPagoPrecisa da chave do usuário e de um locutor no arquivo de cada personagem que fala. Inglês indiano e dez idiomas indianos.
noneGrátisSilencioso com legendas e movimento da boca adivinhado.

Uma linha também pode nomear a própria gravação do usuário com "audio": "caminho.wav".

Regras para as vozes pagas:

  1. O usuário adiciona a chave, não você. Eles colocam uma linha, ELEVENLABS_API_KEY=... ou SARVAM_API_KEY=..., em .env.local na pasta de trabalho, ou em ~/.2d-character-sketch/keys.env para cobrir todo projeto. Nunca peça uma chave no chat, nunca digite uma em um arquivo e nunca imprima uma. doctor informa se uma chave foi encontrada e onde.
  2. Um arquivo de chave dentro de um repositório git deve ser ignorado pelo git. A ferramenta se recusa a usá-lo caso contrário e diz o que adicionar ao .gitignore.
  3. Nada é enviado sem um limite. Execute sem --max-chars primeiro. A ferramenta imprime quantos caracteres de texto enviaria e não envia nada. Informe esse número ao usuário, aguarde uma confirmação, então passe --max-chars <aquele número>.

Detalhes, preços e listas de vozes estão em references/sketch.md.

Regras

  • Olhe cada folha e folha de contato você mesmo antes de mostrá-la. A ferramenta verifica se os arquivos são válidos. Ela não pode verificar se a imagem é boa.
  • O arquivo do esboço é a fonte. Para mudar o vídeo, altere o arquivo e renderize novamente.
  • Mantenha renders anteriores a menos que o usuário diga para deletá-los. Para manter uma versão que você mostrou, salve a próxima sob um novo nome de esboço, por exemplo chá-v2.json.
  • Diga claramente o que é bruto: a voz gratuita, bocas que seguem o volume, um enquadramento que você não conseguiu corrigir.
  • Não instale nada e não envie nada para um serviço pago, a menos que o usuário tenha solicitado nesta conversa.

Limitações

Diga estas antecipadamente se a solicitação precisar delas:

  • Personagens ficam em pé ou sentados no lugar. Ninguém anda, pega objetos ou toca em ninguém.
  • Sem barbas, bigodes, chapéus, casacos longos, vestidos ou saias. O cabelo é um de oito estilos e a roupa é uma blusa, calças e sapatos. Quando uma solicitação precisar de um destes, diga e ofereça o mais próximo, por exemplo cabelo grande e sobrancelhas grossas para uma barba.
  • Cinco salas são pré-construídas: plain, home, park, office e table. Qualquer outro lugar precisa de um fundo SVG que você desenhe e nomeie em set.
  • Três adereços podem ser segurados: telefone, caneca e caneta. Nada mais pode ser mostrado em uma mão.
  • Um ângulo de câmera (frontal). Enquadramentos cortam e ampliam o mesmo desenho plano.
  • Até três personagens enquadram-se bem. Com mais, close-ups mostram as bordas dos vizinhos.
  • Um novo estilo de cabelo, pose, expressão ou sala significa editar o código de desenho em scripts/. Faça isso apenas quando o usuário solicitar.

Habilidades Relacionadas