/effects
인수: $ARGUMENTS
모든 작업은 이 스킬의 폴더(이 파일이 있는 폴더, 보통 ~/.claude/skills/effects)에서 실행됩니다. 해당 폴더를 SKILL_DIR이라고 부릅니다. 사용자에게는 사용자의 언어로 응답합니다(기본값: 프랑스어).
1. 설치 확인
node SKILL_DIR/scripts/effects.mjs doctor를 실행합니다. ✗가 표시되면 사용자에게 일회성 설치(3–10분, 약 1–2GB 다운로드)임을 알리고 bash SKILL_DIR/setup.sh를 백그라운드에서 실행한 후 doctor를 다시 실행합니다. doctor가 그래픽 카드가 없다고 하면 ✂ 표시된 효과는 느릴 것(이미지당 약 15초)이라고 경고하고 --seconds 5 또는 --fast를 제안합니다.
2. 필요한 것 수집
- 클립: 사용자가 첨부하거나 지정한 비디오(세로 9:16 얼굴 카메라가 가장 좋음; 모든 형식은 1080×1920으로 잘림). 클립이 없으면 요청합니다. 경로를 임의로 만들지 마세요.
- 효과: 첫 번째 인수. 없거나 알 수 없는 경우
node SKILL_DIR/scripts/effects.mjs list를 실행하고 목록을 보여준 후 어떤 효과를 원하는지 묻습니다. "all" / "toutes" / "aperçu" →sheet명령어를 실행합니다(4단계). - 프로필:
SKILL_DIR/profile.json이 없으면 사용자의 이름(또는 브랜드명)과 @를 한 번 물어본 후 다음과 같이 작성합니다:{"name": "Salim", "handle": "@salim", "accent": "#ff2d87"}(accent는 선택 사항). 이후에는 매번 재사용합니다. - 텍스트: 사용자가 제공한 단어가 있으면 그 단어를 사용하고, 그렇지 않으면 기본값을 사용합니다. 각 효과가 읽는 옵션은 아래 표에 나와 있습니다.
3. 체크리스트 표시와 함께 렌더링
스크립트가 ✓ n/5 줄을 출력할 때마다 다음 5단계 작업 목록을 만들고 체크 표시합니다:
- 얼굴 찾음
- 배경에서 분리
- 텍스트를 사용자 뒤에 배치
- 색상 보정
- 4K로 렌더링
node SKILL_DIR/scripts/effects.mjs render <효과> "<클립>" [옵션]
시간이 오래 걸리는 경우(✂ 표시된 효과는 그래픽 카드가 있으면 이미지당 약 1초, 즉 10초 비디오의 경우 약 2~3분) 백그라운드에서 실행하고 진행률 줄을 전달합니다. 출력 파일은 클립과 같은 위치에 <클립>-<효과>.mp4(2160×3840)로 생성됩니다. 사용자에게 해당 경로를 알려줍니다.
유용한 옵션:
| 옵션 | 효과 |
|---|---|
--hd | 4K 대신 1080p, 두 배 빠름 |
--start 3 --seconds 8 | 클립의 일부 구간만 유지 |
--smooth | 15fps 대신 30fps로 컷아웃(두 배 시간 소요, 빠른 움직임에 더 부드러움) |
--fast | 빠르지만 거친 컷아웃(머리카락 주변에 배경 약간 남음) |
--images <폴더> | orbit, phone-fan, profile-wall, tier-list 효과를 위한 릴 스크린샷 |
--grade warm|cool|bw|none | 색상 보정(기본값: warm) |
--accent "#00c2ff" | 주요 색상 |
--props '{"notes":["…"]}' | 기타 속성(JSON) |
긴 ✂ 렌더링 전에 사용자의 텍스트가 길거나 특이한 경우, 먼저 미리보기를 실행(약 30초)하고 확인합니다:
node SKILL_DIR/scripts/effects.mjs still <효과> "<클립>" [동일 옵션]
4. 클립에서 모든 36가지 효과 보기
node SKILL_DIR/scripts/effects.mjs sheet "<클립>" [--name … --handle …]
<클립>-36-effets.jpg(각 효과의 한 프레임)가 생성됩니다. 사용자에게 보여주고 선택할 수 있도록 합니다.
각 효과가 읽는 텍스트
--headline 또는 --title에서 단어를 *별표*로 감싸면 색상이 적용됩니다. \n은 줄 바꿈입니다.
| 효과 | 읽는 옵션(기본값은 대괄호 안) |
|---|---|
| glass-widgets | --name --handle --followers [71K], --props '{"chart":{"values":[…],"labels":[…],"unit":"K"}}' |
| documentary ✂ | --headline ["UN *CLIP.*\n36 EFFETS.\n*ZÉRO* APP."] --name --handle --kicker --word (고스트 텍스트) |
| orbit ✂ | --images |
| kallaway-split | --props '{"chart":{"title":"Mes 7 meilleurs reels\npar *vues*","values":[615,353,…],"labels":["Reel 1",…],"unit":"K"}}' |
| spotlight ✂ | --word [CLAUDIT] (짧은 단어 하나가 가장 좋음) |
| checklist | --props '{"steps":[["Visage trouvé","chaque frame"],…]}' (5쌍) |
| timeline | --title ["Claude *le monte*"] --headline (칩스) |
| lineup | --title |
| shortcut-rain | 없음 |
| red-collage ✂ | --headline --word (배경 텍스트) |
| comment-box | --comment ["claude 🔥"] --handle |
| cover-star ✂ | --name (거대 제목) --headline --handle |
| headline-wall | --props '{"notes":["…","…","…","…"]}' |
| phone-fan | --word [MES REELS] --handle --images |
| rabbit-hole | 없음 |
| profile-wall | --handle --name --followers --images |
| noise | 없음 |
| the-bill | --name --handle |
| split-headline | --title ["Claude *monte* mes reels."] (별표로 감싼 단어가 강조됨) |
| pastel-word ✂ | --word [REELS] |
| tier-list | --title --images |
| polaroid | --title (캡션, 기본값은 이름) |
| filmstrip | 없음 |
| comic-book | --word [BOUM] |
| glitch | --word [GLITCH] |
| duotone | --word [FOCUS] --accent |
| scanline | --title |
| cinema | --kicker [Chapitre I] --title (자막) |
| breaking-news | --headline --word --name --handle |
| quote-card | --title (인용문) --name --handle |
| countdown | --accent |
| progress-ring | --word [regardé] --handle |
| emoji-burst | 없음 |
| neon-frame | --word [live] --accent |
| typewriter | --title 또는 --headline |
| zoom-punch | --title (펀치당 한 단어) |
문제 발생 시
clip introuvable: 경로를 확인하고 공백이 있으면 따옴표로 감쌉니다.- 폰트는 Google Fonts에서 가져오고 Remotion은 첫 번째 렌더링 시 헤드리스 Chrome을 다운로드합니다. 둘 다 인터넷이 필요합니다.
- ✂ 효과에서 사람이 거의 보이지 않거나 여러 명이 있는 경우: 컷아웃은 사람으로 인식되는 모든 대상을 유지합니다. 사용자에게 그렇게 알려줍니다.
- 준비된 파일은
SKILL_DIR/.work/에 캐시됩니다(클립당 하나의 폴더). 디스크 공간을 확보하기 위해 언제든지 삭제할 수 있습니다.