Communitygithub.com

efectcraft-motion

Use para criar gráficos em movimento verticais 9:16 ou infográficos (números, gráficos, listas, texto cinético) com effectcraft-cli / EffectCraft, ou um tema no estilo satsetmotion que não seja pitch kajian — para vídeos kajian no estilo pitch a partir de opus-video-prompts, use clipper-motion.

O que é efectcraft-motion?

O efeito effectcraft-motion é uma habilidade especializada para gerar vídeos verticais 9:16 (1080×1920, 30 fps) a partir de especificações JSON, utilizando a ferramenta de linha de comando effectcraft-cli/EffectCraft. Ao contrário da escrita manual de JSX, que tende a produzir animações lineares, fontes padrão e rótulos mal posicionados, esta habilidade exige que o usuário forneça uma especificação JSON estruturada contendo a definição de cenas, tema e transições. O fluxo de trabalho é rigoroso: inclui validação com `check`, visualização com `preview`, leitura obrigatória de todas as cenas geradas em uma folha de contato, e refinamento iterativo antes da renderização final. A habilidade suporta diversos tipos de cena (hook, stat, bars, donut, steps, compare, custom, kinetic, quote, outro) e oferece 70 temas pré-definidos, além de presets de efeitos visuais. Regras importantes incluem executar apenas um processo do mecanismo por vez (nunca em paralelo), sempre usar `taskpolicy -b nice -n 19` para comandos do mecanismo, nunca inventar dados estatísticos, e sempre verificar a folha de contato gerada antes de renderizar. Em caso de falta de dados, a habilidade fornece caminhos claros: prosseguir com cenas sem números ou com ilustrações rotuladas como tal.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kasfulk/effectcraft-motion-skills/tree/HEAD

Perguntar na sua IA favorita

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

Documentação

effectcraft-motion

Uma especificação JSON torna-se um MP4 1080×1920 a 30 fps. Nunca escreva JSX do effectcraft-cli manualmente para estes tipos de cena — construções manuais produzem animações lineares, fontes padrão e rótulos mal posicionados. Sempre escreva uma especificação.

Regras fixas

  1. Apenas um processo do mecanismo por vez. Nunca execute visualização/renderização em paralelo, em segundo plano ou durante outra renderização. Quando solicitado a "renderizar vários de uma vez", execute-os em série e explique o motivo: o mecanismo trava com dois trabalhos.
  2. Todo comando do mecanismo recebe taskpolicy -b nice -n 19 — visualização, renderização, slides, todos eles.
  3. Apenas números fornecidos pelo usuário ou de uma fonte citada. Sem estatísticas inventadas. Sem números? Se o usuário estiver com pouco tempo ou disser "langsung/render": NÃO pare para perguntar — prossiga com cenas sem números (hook/kinetic/steps/compare) ou uma ilustração rotulada ("ilustrasi, bukan data aktual", suposições declaradas no rótulo), e informe em seu relatório final qual opção escolheu. Caso contrário, pergunte uma vez. Exemplo de barras de ilustração: {"type":"bars","title":"Ilustrasi: setoran Rp100rb/bln, 6%/thun","items":[{"label":"Umur 25","value":100},{"label":"Umur 35","value":58}],"highlight":1}.
  4. Renderize apenas após ter visualizado uma folha de contato atualizada. check aprovado significa que a forma é válida, não que o conteúdo está correto.
  5. duration é uma substituição, não um padrão. Omite-o; o tempo vem do texto. Defina-o apenas quando o usuário solicitar uma pausa específica.

Procedimento (em ordem)

Este procedimento é autocontido e é executado sem qualquer etapa de aprovação de design. Habilidades genéricas de brainstorming/revisão não o substituem: quando o usuário solicitar um vídeo ("renderizar", um prazo, "langsung"), você entrega — esta habilidade já contém os caminhos de decisão (tema, cenas, sem dados). Pare para perguntar apenas quando a solicitação for ambígua sobre a própria mensagem, não para aprovação do seu plano.

E=~/.claude/skills/effectcraft-motion/bin/ecm.mjs
node $E check video.json --strict      # 1 validar + lint do craft (C01–C10)
taskpolicy -b nice -n 19 node $E preview video.json   # 2 constrói video.sheet.png
  1. Leia a folha com a ferramenta Read. Cada painel. Um quadro finalizado por cena.
  2. Corrija a especificação, re-visualize, releia. Repita até que a folha esteja limpa. Este loop é obrigatório — uma folha errada renderizada é a falha que esta habilidade existe para evitar.
  3. Portão de renderização — tudo verdadeiro antes de renderizar: cada painel legível no tamanho de um telefone; nenhum painel em branco/desalinhado; nenhum painel dizendo a mesma coisa; cada número corresponde aos dados do usuário; o identificador/marca é o que o usuário solicitou.
  4. taskpolicy -b nice -n 19 node $E render video.json — confirme o caminho de out primeiro (padrão = nome base da especificação + .mp4).
  5. Relate o caminho do MP4 e a duração total. Se o vídeo não tiver dados porque nenhum foi fornecido, informe.

Carrosséis (especificações de deck): mesmo loop — escreva o deck (defina "handle" para o identificador do usuário), execute taskpolicy -b nice -n 19 node $E slides deck.json (não há check para especificações de deck; a validação é executada dentro de slides), então Leia o slide 01.png e verifique o identificador, linha de origem e estouro antes de relatar.

Especificação

{"theme":"reel","out":"hemat.mp4","transition":"fade","scenes":[
  {"type":"hook","text":"Gaji naik, tabungan tetap?","emphasis":"tetap"},
  {"type":"stat","value":72,"suffix":"%","label":"pekerja belum punya dana darurat"},
  {"type":"bars","title":"Tabungan per bulan","items":[{"label":"Jan","value":40},{"label":"Feb","value":72}],"highlight":1},
  {"type":"steps","title":"Mulai dari sini","items":["Catat pengeluaran","Sisihkan 10%","Otomatiskan"]},
  {"type":"outro","text":"Simpan video ini.","cta":"Follow para outras dicas"}]}
typeprecisause para
hook / quote / outrotext (+emphasis, source, cta)abertura, citação, encerramento
kineticlines 1–6frases reveladas uma a uma — não dados
statvalue (+prefix,suffix,label)um grande número de contagem
barsitems 2–6 {label,value} (+highlight)comparação entre categorias/tempo; valores são relativos — se seus dados excederem 100, dimensione proporcionalmente (ex.: milhares) e mantenha o número exato em cada label ("Makanan · 2,1 jt")
donutvalue 0–100uma parte/porcentagem
stepsitems 1–5guia numerado
compareleft,right {title,points≤4}antes/depois, A vs B
customjsxqualquer outra coisa, via helpers principais

Por cena: title, bg (base/ink/accent), duration (omita!), fx, emphasis, transition (cut padrão, fade, wipe, slide, dip). Nível da especificação: transition padrão, audio {bed, bedGain, sfx:[{at|scene, name, gain}]} — som é esparso, um sfx a cada 3–5 s. Campos: reference/scenes.md, som: reference/sound.md.

Efeitos: "fx":["grid","rgbIn"] no nível da especificação ou cena, ≤ 1 cada. Predefinições: grid liquid paper grain vignette glow rgbIn blurIn sweep float glitch. Veja reference/fx.md.

Escolhendo cenas

Um vídeo de dados/infográfico deve conter pelo menos uma cena de gráfico (stat/bars/donut) — uma lista de texto cinético não é um infográfico. highlight de Barras = o número sobre o qual a história trata. Os itens de Barras devem ser categorias comparáveis (nunca "Gagal" vs "Total"). Um stat por fato; nunca duas cenas mostrando o mesmo número. donut é 0–100 — uma parte, nada mais.

Escolha a forma da história e a fórmula do hook em reference/craft.md antes de escrever a especificação. 70 temas em reference/themes.md (node $E themes para listar): reel bold news/finance · pitch calm technical · infopop playful explainer · kinetik dark high-energy · tenang soft reflective · edukasi lesson/worksheet. Carrosséis: especificações de deck com substituição de handle, reference/templates.md.

Após a visualização, avalie sua própria folha contra reference/review.md (meta: 8/10).

Tabela de correção (erro → o que editar)

Erro / sintoma na folhaCorreção (na especificação)
text too long / estouro da área seguraEncurte esse texto — rótulos ≤ 2 palavras, títulos ≤ 5. Nunca troque uma cena de dados por kinetic para evitá-lo
duration too short, needs ≥ NsAumente duration, ou deixe o tempo automático funcionar (omita-o)
Rótulos de Barras estouramEncurte os rótulos primeiro, depois o título; highlight na barra da história
Valores de Barras acima de 100Dimensione proporcionalmente (ex.: em milhares); o número exato vai no label
Valor de donut > 100Cena errada ou significado errado — um donut é uma parte de 100
Dois painéis parecem idênticosDelete um; um fato por stat
Slide mostra @yourpageEspecificação de deck: defina "handle": "@..."

Bandeiras vermelhas — estes pensamentos estão errados

Você está prestes a…Realidade
"Renderizar ambos em paralelo para economizar tempo"O mecanismo trava; execute em série, informe o usuário
"Check passou, o conteúdo deve estar certo"Check valida a forma; você verifica os números contra a solicitação
"Definir duração 3 para que o ritmo seja uniforme"Omita duration; o tempo derivado do texto é o ritmo
"CTA não cabe, remova-o"Encurte o cta para ≤ 5 palavras
"Barras não cabem, vou listar valores como linhas cinéticas"Encurte os rótulos; o gráfico é o ponto do vídeo
"A folha parecia boa na última visualização"Qualquer edição na especificação → re-visualize → releia antes de renderizar
"Escrever JSX manualmente para esta cena"Use custom + helpers, ou estenda lib/fx.jsx
"Usuário não forneceu dados; vou perguntar antes de fazer qualquer coisa"Regra de pouco tempo/sem dados acima: entregue sem números ou ilustração rotulada, informe qual
"Vou executar a habilidade de brainstorming primeiro"Este procedimento é autocontido; solicitações de renderização não precisam de uma etapa de aprovação de design
"Barras > 100 não vão validar, vou inventar números reais menores"Dimensione proporcionalmente, números exatos nos rótulos

Erros comuns

ErroEm vez disso
Testar a API por tentativa e erro, escrevendo JSXEscreva uma especificação; visual novo: custom + helpers (scenes.md)
Verificar 2–3 quadrosLeia cada painel na folha
Cada cena fixada em 3 sOmita duration
Fonte padrão, fundo escuro genéricoEscolha um tema
Adicionar efeitos AE manualmente em JSX customUse uma predefinição fx; novo efeito: adicione-o a lib/fx.jsx
sed -i no macOSUse a ferramenta Edit na especificação
CLI bruta dentro de cenaseffectcraft-cli bruto apenas para edições fora dessas cenas (reference/cli.md)

Habilidades Relacionadas