Communitygithub.com

Habilidade de Desenho à Mão do GPT para Codex

Crie vídeos animados curtos, videoclipes, vídeos com letras e loops animados no estilo pintado à mão (aquarela e nanquim) usando o mecanismo p5.js/p5.brush integrado, Chrome headless e FFmpeg.

O que é Habilidade de Desenho à Mão do GPT para Codex?

Esta habilidade permite que um agente de IA (como Codex) crie animações 2D no estilo de pintura à mão (aquarela e nanquim) diretamente no ambiente de desenvolvimento, sem depender de APIs pagas, modelos de geração de imagem ou runtime do Claude. Ela utiliza o motor p5.js/p5.brush para gerar cada quadro como uma função determinística do tempo, renderiza-os em um Chrome headless e os codifica em MP4 com FFmpeg. O fluxo de trabalho é ideal para produtores de conteúdo, músicos e artistas que desejam vídeos animados com uma estética artesanal. A habilidade suporta a criação de projetos a partir de um template, a definição de storyboards, a implementação de cenas, a medição de batidas musicais para sincronização e a renderização eficiente com suporte a workers paralelos. Inclui também um personagem opcional chamado Clawd e oferece referências detalhadas para videoclipes e limitações de runtime.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/chao69782/gpt-hand-drawing-skill/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

O que Habilidade de Desenho à Mão do GPT para Codex faz?

Crie um projeto de animação funcional e o MP4 ou loop solicitado. Os quadros são funções determinísticas do tempo, pintados pelo p5.brush no Chrome e codificados pelo FFmpeg. Nenhum runtime do Claude, API paga ou modelo de geração de imagem é necessário. Clawd é um personagem integrado opcional; siga o elenco e estilo escolhidos pelo usuário.

Iniciar um projeto

Resolva o diretório desta habilidade a partir da localização do SKILL.md carregado. Não codifique um diretório Claude. Execute:

python "<skill-dir>/scripts/new_project.py" "<project-dir>"

O inicializador multiplataforma copia template/, desconecta o demo, instala dependências travadas com npm ci e relata ferramentas. Use --keep-demo apenas para um demo ou verificação do motor, --skip-install apenas para scaffolding, ou --npm-cli /path/to/npm-cli.js quando o Node estiver disponível, mas o npm não estiver no PATH. NPM_CLI_JS é uma substituição de ambiente equivalente. Ele não sobrescreverá um projeto não vazio.

Leia o ANIMATION_GUIDE.md gerado por completo antes de projetar. Inspecione docs/emotions.jpg e docs/views.jpg com um visualizador de imagens disponível (por exemplo view_image através das ferramentas de execução). O guia contém a API do motor e do personagem. Leia references/music-video.md para MV ou vídeos com mais de cerca de 20 segundos. Leia references/codex-runtime.md para problemas de runtime, comandos da plataforma e limitações do renderizador.

Planejar e construir

Use as escolhas existentes do usuário. Pergunte apenas por informações faltantes que afetem materialmente o trabalho; não repita perguntas já respondidas. Para um MV, colete o áudio e a fonte de temporização. Um vídeo com letras precisa de letras fornecidas com timestamps LRC ou equivalente; não invente letras faltantes. Um MV instrumental não precisa de LRC. Quando a direção criativa estiver faltando, uma pergunta opcional pode cobrir história, clima, imagens recorrentes e coisas a evitar. Se o usuário delegar a direção, proponha e prossiga com uma interpretação coerente.

Meça a música com python "<skill-dir>/scripts/beat_grid.py" song.mp3 --from=0 --to=30 --lrc=song.lrc (requer NumPy e FFmpeg). Trate o tempo como uma estimativa com ambiguidade de metade/dobro; o áudio fornecido e os timestamps definem a temporização. O LRC geralmente marca linhas, então o preenchimento por caractere do karaokê é uma aproximação, a menos que a temporização em nível de palavra seja fornecida. Não alegue alinhamento forçado.

Escreva STORYBOARD.md: logline, arco do mundo e paleta, motivo visual, arco emocional, e cenas com intervalos de tempo, ação, leitura do espectador e transições. Compartilhe a direção para revisão quando útil; se o usuário pediu para você prosseguir, continue. O exemplo completo é examples/xiaozhen/STORYBOARD.md, com seus arquivos de cena ao lado.

Defina duration, bpm, offset e audio opcional em src/config.js. Implemente cenas como IIFEs em src/scenes/, registre shots([[t0, fn], ...]), e inclua seus scripts em studio.html. Bloqueie poses legíveis primeiro. Use um elenco comum, paleta e motivos recorrentes entre as cenas.

Renderizar e inspecionar

A partir do diretório do projeto, renderize quadros selecionados, uma tira de movimento curta e detalhes quando necessário:

node render.mjs --sheet=0.1,0.8,1.6,2.4 --cols=4 --w=480 --out=out/check/poses.jpg
node render.mjs --strip=2.1:2.6 --out=out/check/motion.jpg
node render.mjs --sheet=2.3 --crop=760,420,500,400 --w=500 --out=out/check/face.jpg

Abra as imagens geradas. Verifique o evento e tempo de leitura de cada cena, rostos, contato de objetos, tamanho do personagem, transições e paleta. Inspecione o movimento em torno de ações-chave e emendas. Corrija os problemas observados e, em seguida, inspecione os quadros afetados novamente. Uma folha de contato verifica poses e continuidade; inspecione uma prévia curta codificada para temporização de movimento importante. Não alegue revisão visual apenas a partir do código-fonte.

Use ms/quadro medido e contagem de quadros para estimar o custo final. Este ambiente de desktop é local: uma solicitação para criar um vídeo normalmente autoriza a renderização local. Respeite uma escolha explícita local/nuvem; não adicione um gate de aprovação de localização obrigatório ou use um serviço pago/nuvem sem autorização. Se o trabalho for realmente remoto e a localização da renderização for relevante, esclareça antes de uma renderização completa. Preserve um projeto executável e prévias se o usuário solicitar apenas código-fonte ou comandos locais.

node render.mjs --clip --out=out/video.mp4
node render.mjs --frames --workers=4
node render.mjs --encode --audio=assets/song.mp3 --out=out/video.mp4

Use o mesmo --fps na renderização de quadros e codificação. Os arquivos de quadros são retomáveis, mas os quadros em cache devem ser removidos para intervalos de tempo alterados antes de re-renderizar. --encode consome quadros a partir de zero; um intervalo parcial começando mais tarde precisa de seu próprio número inicial do FFmpeg e corte de áudio correspondente (consulte a referência de runtime).

Verifique a duração, resolução, fps e áudio codificados com ffprobe e inspecione o resultado. Retorne os caminhos do vídeo e do projeto, o desempenho medido e quaisquer limitações reais. Mantenha node_modules, caches de quadros e arquivos temporários fora dos arquivos fonte portáteis.

Invariantes visuais e do motor

  • Pinte com paint() e inkLine(); use glow() para luz aditiva. Vistas-chave 2D planas desenhadas, paleta suave, tinta fervente. Estes são padrões de estilo; requisitos explícitos do usuário têm prioridade.
  • Evite texto desnecessário; karaokê de letras e letras solicitadas são suportados. Carregue src/karaoke.js após timeline.js, preencha LY, e mantenha a ação acima de sua faixa inferior. Verifique a fonte real e os glifos chineses.
  • Cada cena precisa de um evento, causa seguida de reação, e significado mantido legível. Anime rostos através de emotions() e pausas através de feel(). Adapte as transições à história e conecte o final à abertura quando apropriado.
  • Cada quadro é uma função pura de t: sem simulação acumulada, Math.random() sem semente ou dependência da ordem de renderização. Use hash() para variação estável e boilSeed(key) por elemento independente.
  • Mantenha auxiliares em IIFEs de cena para evitar colisões de nomes globais do p5. Proteja contra geometria degenerada e NaN. Mascare conteúdos de portas/janelas com molduras de primeiro plano; reduza o peso do contorno sob zoom próximo.
  • O desempenho depende de preenchimentos e traços do pincel. Meça alguns quadros representativos antes de escalar; reduza geometria excessiva e número de workers quando a memória GPU estiver apertada. --soft-gl é um fallback lento, não uma otimização padrão.
  • Implemente capítulos sequencialmente, a menos que o usuário peça explicitamente por agentes. Workers de renderização paralela são um recurso do renderizador e não requerem subagentes.

Fonte e licença: references/upstream.md. Retenha ambos os avisos MIT incluídos ao redistribuir o motor ou a habilidade.

Habilidades Relacionadas