/effects
Argumentos : $ARGUMENTS
Tudo é executado a partir da pasta deste skill (a pasta que contém este arquivo, geralmente ~/.claude/skills/effects). Chame-a de SKILL_DIR. Responda ao usuário no idioma dele (português por padrão).
1. Verifique se está instalado
Execute node SKILL_DIR/scripts/effects.mjs doctor. Se algo mostrar ✗, informe ao usuário que é uma instalação única (3–10 min, baixa ~1–2 GB) e execute bash SKILL_DIR/setup.sh em segundo plano, depois execute doctor novamente. Se doctor informar que não há placa gráfica, avise que os efeitos marcados com ✂ serão lentos (~15 s por imagem) e sugira --seconds 5 ou --fast.
2. Reúna o que precisa
- O clipe: o vídeo que o usuário anexou ou nomeou (câmera facial 9:16 vertical funciona melhor; qualquer formato é cortado para 1080×1920). Se não houver, peça. Nunca invente um caminho.
- O efeito: o primeiro argumento. Se estiver faltando ou for desconhecido, execute
node SKILL_DIR/scripts/effects.mjs list, mostre a lista e pergunte qual. "all" / "toutes" / "aperçu" → execute o comandosheet(passo 4). - O perfil dele(a): se
SKILL_DIR/profile.jsonnão existir, pergunte uma vez pelo primeiro nome ou marca e pelo @, depois escreva:{"name": "João", "handle": "@joao", "accent": "#ff2d87"}(accent opcional). Reutilize-o sempre depois disso. - Textos: use as palavras do usuário se ele deu alguma, caso contrário os padrões estão bons. Qual opção cada efeito lê está na tabela abaixo.
3. Renderize, mostrando a checklist
Crie uma lista de tarefas com estes 5 passos e marque-os conforme o script imprime suas linhas ✓ n/5:
- Rosto encontrado
- Recortado do fundo
- Texto colocado atrás de você
- Cores calibradas
- Renderizado em 4K
node SKILL_DIR/scripts/effects.mjs render <efeito> "<clipe>" [opções]
Execute-o em segundo plano quando for longo (efeitos marcados ✂ precisam de ~1 s por imagem com placa gráfica, então ~2–3 min para 10 s de vídeo) e repasse as linhas de progresso. A saída é gerada ao lado do clipe como <clipe>-<efeito>.mp4 (2160×3840). Forneça esse caminho ao usuário.
Opções úteis:
| Opção | Efeito |
|---|---|
--hd | 1080p em vez de 4K, duas vezes mais rápido |
--start 3 --seconds 8 | manter apenas uma seção do clipe |
--smooth | recorte a 30 fps em vez de 15 (duas vezes mais longo, mais suave em movimentos rápidos) |
--fast | recorte rápido, mas mais grosseiro (pedaços do fundo ao redor do cabelo) |
--images <pasta> | capturas de tela dos reels deles para orbit, phone-fan, profile-wall, tier-list |
--grade warm|cool|bw|none | gradação de cor (warm por padrão) |
--accent "#00c2ff" | cor principal |
--props '{"notes":["…"]}' | qualquer outra propriedade (JSON) |
Antes de uma renderização ✂ longa, se os textos do usuário forem longos ou incomuns, execute uma prévia primeiro (~30 s) e dê uma olhada:
node SKILL_DIR/scripts/effects.mjs still <efeito> "<clipe>" [mesmas opções]
4. Veja todos os 36 no clipe deles
node SKILL_DIR/scripts/effects.mjs sheet "<clipe>" [--name … --handle …]
Ele gera <clipe>-36-effets.jpg (um quadro de cada efeito). Mostre ao usuário para que ele possa escolher.
Textos que cada efeito lê
Use *estrelas* ao redor de uma palavra em --headline ou --title para colori-la. \n para uma quebra de linha.
| Efeito | Opções que lê (padrões entre colchetes) |
|---|---|
| glass-widgets | --name --handle --followers [71K], --props '{"chart":{"values":[…],"labels":[…],"unit":"K"}}' |
| documentary ✂ | --headline ["UM *CLIPE.*\n36 EFEITOS.\n*ZERO* APP."] --name --handle --kicker --word (texto fantasma) |
| orbit ✂ | --images |
| kallaway-split | --props '{"chart":{"title":"Meus 7 melhores reels\npor *visualizações*","values":[615,353,…],"labels":["Reel 1",…],"unit":"K"}}' |
| spotlight ✂ | --word [CLAUDIT] (uma palavra curta funciona melhor) |
| checklist | --props '{"steps":[["Rosto encontrado","cada frame"],…]}' (5 pares) |
| timeline | --title ["Claudio *edita*"] --headline (chips) |
| lineup | --title |
| shortcut-rain | nenhum |
| red-collage ✂ | --headline --word (texto de fundo) |
| comment-box | --comment ["claudio 🔥"] --handle |
| cover-star ✂ | --name (título gigante) --headline --handle |
| headline-wall | --props '{"notes":["…","…","…","…"]}' |
| phone-fan | --word [MEUS REELS] --handle --images |
| rabbit-hole | nenhum |
| profile-wall | --handle --name --followers --images |
| noise | nenhum |
| the-bill | --name --handle |
| split-headline | --title ["Claudio *edita* meus reels."] (a palavra com estrelas fica destacada) |
| pastel-word ✂ | --word [REELS] |
| tier-list | --title --images |
| polaroid | --title (legenda, padrão é o nome) |
| filmstrip | nenhum |
| comic-book | --word [BOUM] |
| glitch | --word [GLITCH] |
| duotone | --word [FOCO] --accent |
| scanline | --title |
| cinema | --kicker [Capítulo I] --title (subtítulo) |
| breaking-news | --headline --word --name --handle |
| quote-card | --title (a citação) --name --handle |
| countdown | --accent |
| progress-ring | --word [assistido] --handle |
| emoji-burst | nenhum |
| neon-frame | --word [ao vivo] --accent |
| typewriter | --title ou --headline |
| zoom-punch | --title (uma palavra por golpe) |
Se algo falhar
clipe introuvable: verifique o caminho, coloque entre aspas se tiver espaços.- As fontes vêm do Google Fonts e o Remotion baixa um Chrome headless na primeira renderização: ambos precisam de internet.
- Um efeito ✂ com uma pessoa pouco visível ou várias pessoas: o recorte mantém todos que vê como pessoa. Informe isso ao usuário.
- Os arquivos preparados são armazenados em cache em
SKILL_DIR/.work/(uma pasta por clipe). Pode ser excluído a qualquer momento para liberar espaço.