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()einkLine(); useglow()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.jsapóstimeline.js, preenchaLY, 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 defeel(). 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. Usehash()para variação estável eboilSeed(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.