Communitygithub.com

Motion Craft Pro · 动效工坊 Pro

Motion Craft Pro é um conjunto programático de motion graphics inspirado na pilha de direção de luz do Remotion: storyboard em JSON, easing com spring, helpers de cena, Edge TTS com legendas word-boundary, renderização em Canvas 1080p e mixagem com FFmpeg. Estética calmante de Claude Opus: tipografia editorial sóbria, espaçamento generoso, spring suave. Não é vídeo AI fotorrealista.

O que é Motion Craft Pro · 动效工坊 Pro?

Motion Craft Pro é uma skill especializada para agentes de IA (como Claude Code, Cursor, Codex) que desejam criar motion graphics programáticos de alta qualidade, seguindo a abordagem estética de Claude Opus 5.5: primeiro o storyboard, depois a narração, depois os quadros-chave, e por fim a renderização completa. Diferente de soluções de geração de vídeo por IA como Kling ou Jimeng, Motion Craft Pro desenha cada quadro quadro a quadro no Canvas via código, garantindo controle artístico absoluto. A skill suporta plataformas como Node.js 18+, Python 3.9+, Puppeteer-core com Chrome/Chromium e FFmpeg completo, e oferece um fluxo de trabalho rigoroso: escrever um storyboard JSON estruturado, gerar TTS com Edge TTS (incluindo legendas word-boundary), definir cronograma realista, renderizar frames individuais via render.js e compor o vídeo final com compose.py. O resultado são vídeos 1080p com tipografia editorial, spring suave (overshoot mínimo), amplo espaçamento e uma atmosfera calma e profissional — ideal para conteúdo explicativo, apresentações, ou qualquer narrativa visual que exija precisão técnica e estética refinada. O mecanismo de verificação de qualidade exige a geração de pelo menos 4 quadros-chave e um relatório QA antes da entrega final, garantindo que cada detalhe esteja alinhado com a visão original.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/songyuqiang55-create/motion-craft-pro/tree/master/skills/motion-craft

Perguntar na sua IA favorita

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

Documentação

O que Motion Craft Pro · 动效工坊 Pro faz?

Motion graphics programável. Inspirado na estética e hábitos do Claude Opus 5.5 de escrever código para fazer filmes: storyboard primeiro, narração depois, quadros-chave, renderização completa.

Não é vídeo gerado por AI como Kling/Jimeng. A imagem é desenhada quadro a quadro pelo código no Canvas.

Localize o diretório da skill (obrigatório sempre)

engine.js / scenes.js / render.js / compose.py / tts.py / film.html / storyboard.json todos no mesmo nível da SKILL.md (plano, sem subpastas).

<diretório_da_skill> = caminho absoluto do diretório pai deste arquivo.

# Auto-verificação do caminho
python "<diretório_da_skill>/compose.py" --check

Proibido depender de caminhos relativos como python scripts/compose.py — o ambiente de revisão não encontrará.

Dependências

DependênciaUso
Node 18+render.js
puppeteer-coreDriver do Chrome local
Chrome / ChromiumRenderização
Python 3.9+tts / compose
edge-ttspip install edge-tts
FFmpeg completoMixagem (não usar versão simplificada do Playwright)

Critérios de qualidade (seguir para ser "Pro")

  1. Padrão 1920×1080 (também suporta 1440×1080 / 1080×1920 / 1080×1080)
  2. Uma coisa por tela; fade entre cenas; segurar por mais tempo, entrada curta
  3. Spring com overshoot leve (damping≈16–18, proibido exagero elástico pela tela)
  4. Espaçamento: margem externa ≥ 8% do lado menor; texto quente-claro #f4f1ea, cor de destaque contida (bronze padrão #c4a574)
  5. Título com espaçamento entre letras; diferença de tamanho hierárquico ≥ 1,5×
  6. Narração primeiro + exportar legendas WordBoundary sempre que possível
  7. Exportar ≥4 quadros fixos para verificação antes da renderização completa
  8. renderFrame(t) função pura: proibido Date.now() / Math.random()

Fluxo de trabalho (seguir rigorosamente)

1. Escrever storyboard JSON (antes de qualquer código)

Copie storyboard.json, preencha conforme storyboard.schema.json:

  • meta: proporção, duração, texto completo da narração, voz
  • beats[]: id, start, end, type, copy, visual
  • Tipos de cena: TitleBeat / BulletReveal / StatCounter / CompareBars / QuoteCard / EndCard

Use números, não adjetivos. Exemplo: título 86px, entrada 0,9s, segurar 2,2s — não escreva "mais impactante".

2. TTS → duração real → reescrever cronograma

python "<diretório_da_skill>/tts.py" \
  --text-file narração.txt \
  --out "<diretório_de_trabalho>/voice.mp3" \
  --voice zh-CN-YunxiNeural \
  --rate=-6% \
  --captions-json "<diretório_de_trabalho>/captions.json" \
  --captions-vtt "<diretório_de_trabalho>/captions.vtt"

Use a duração real do voice.mp3 para ajustar beats[].start/end e meta.duration. Não primeiro fixar o tempo e depois adicionar narração.

Observação sobre legendas: se o Edge TTS retornar limites de palavra (WordBoundary), agrupe por caractere; atualmente a maioria das vozes chinesas tem apenas limites de frase (SentenceBoundary), o script dividirá por vírgulas ou travessões em legendas de nível de frase VTT.

3. Preencher film.html (ou modificar a partir do modelo)

  • Referências no mesmo diretório: engine.js, scenes.js (não ../assets/)
  • Incorpore o storyboard na página ou mantenha sincronizado com storyboard.json
  • Chame MCScenes.drawScene(...); decorações à direita podem ser manuais, mas o conteúdo deve usar componentes de cena sempre que possível

4. Inspeção de quadros fixos (obrigatório)

Primeiro renderize uma amostra curta ou arraste t no navegador, ou renderize 1 fps nos pontos-chave. Pelo menos verificar: abertura, meio, dados/comparação, fechamento.

Verifique: sobreposição, texto estourado, muito escuro, alinhamento, legibilidade de legendas.

5. Renderização completa

node "<diretório_da_skill>/render.js" \
  "<diretório_de_trabalho>/film.html" \
  "<diretório_de_trabalho>/frames" \
  30 \
  18

6. Mixagem

python "<diretório_da_skill>/compose.py" \
  --frames "<diretório_de_trabalho>/frames" \
  --voice-file "<diretório_de_trabalho>/voice.mp3" \
  --captions "<diretório_de_trabalho>/captions.vtt" \
  --out "<diretório_de_trabalho>/out.mp4" \
  --duration 18 \
  --width 1920 --height 1080

Opcional: --bgm music.mp3 (narração com ducking), --burn-captions, ou --text para compose gerar TTS inline.

7. Ler qa-report.json + quatro qa-stills

Se não passar, altere storyboard/layout, re-renderize — não entregue sem qualidade.

API do motor (engine.js)

const {
  Ease, spring, springSeg, seg, lerp, beatAlpha,
  glow, beam, drawBackdrop, createParticles, drawParticles,
  drawGrain, drawVignette, drawColorGrade,
  drawTracked, wrapCN, camera, transition, applyWipe,
  divider, card, ring, bars,
  drawCaptions, captionsFromWordBoundaries, layoutGrid, Palette
} = MC;

const { TitleBeat, BulletReveal, StatCounter, CompareBars, QuoteCard, EndCard, drawScene } = MCScenes;

Parâmetros sugeridos para Spring (estética Claude)

UsodampingstiffnessovershootClamping
Entrada de título16–18140–160false (permite leve overshoot)
Itens de lista18145true
Números animados14120false

Proporções

UsoTamanho
Paisagem padrão1920×1080
Slides / 4:31440×1080
Retrato1080×1920
Quadrado1080×1080

Use layoutGrid(W,H) para obter margens e colunas duplas.

Entregáveis

  • storyboard.json
  • film.html (re-renderizável)
  • voice.mp3 + captions.vtt / captions.json
  • out.mp4 (nível 1080p)
  • qa-report.json + qa-stills/*.png ≥ 4

Limites

  • Produz motion graphics, não filmagem real, nem vídeo de difusão
  • 3D complexo / animação de personagens / fluido estão fora do escopo
  • Edge TTS não é voz humana real; capacidade emocional limitada
  • Projeto completo do Remotion (ecossistema React, cluster de renderização server-side) não está incluído; este pacote é uma pilha de direção leve pronta para lançamento

Habilidades Relacionadas