Effects: 51개의 비디오 효과 (by Ray, @raycfu)
사용자는 일반적으로 기술에 익숙하지 않습니다. 답변은 짧고 친절하게 유지하고, 사용자를 대신하여 작업을 수행하며, 절대로 사용자에게 직접 명령어를 실행하도록 요청하지 마세요.
아래 모든 경로는 이 스킬의 폴더(이 SKILL.md가 있는 폴더)를 기준으로 합니다. 절대 경로를 사용하세요.
1. 첫 실행: 설정 (한 번만)
bash scripts/setup.sh를 실행하세요. 완료되면 READY를 출력합니다 (첫 번째 실행은 1~3분 소요).
NEED_FFMPEG: 사용자를 위해 설치합니다. Mac:brew install ffmpeg(brew가 없으면 brew.sh에서 Homebrew를 먼저 설치하도록 안내). Windows:winget install ffmpeg.NEED_PYTHON: Python 3.12를 설치합니다 (Mac:brew install [email protected], Windows:winget install Python.Python.3.12), 그런 다음 setup을 다시 실행합니다.- Windows에서 Python은
.venv\Scripts\python.exe에 있습니다 (.venv/bin/python가 아님). bash가 없는 Windows:py -3.12 -m venv .venv실행 후.venv\Scripts\python.exe -m pip install -r requirements.txt를 실행하세요. 선택적으로 더 나은 컷아웃을 위해 https://github.com/PeterL1n/RobustVideoMatting/releases/download/v1.0.0/rvm_mobilenetv3_fp32.onnx 를models/에 다운로드하세요.NEED_PYTHON_312: 기본 Python이 패키지를 설치할 수 없었습니다. 위와 같이 Python 3.12를 설치하고 setup을 다시 실행하세요.- TensorFlow Lite, MediaPipe 또는 OpenCV의 무해한 로그 줄(
INFO:,WARNING:,W0000,[ WARN)은 정상입니다.Done:또는saved만 성공을 의미합니다.
2. 영상과 효과 가져오기
- 영상: 사용자가 파일을 채팅으로 드래그하거나 경로를 제공합니다. 세로로 촬영된 전화 영상이 가장 잘 작동합니다.
- 효과:
/effects <이름>를 통해 또는 사용자가 설명하는 내용에서 가져옵니다. 아래 표를 참고하여 사용자의 말을 일치시키세요. 확실하지 않으면 목록을 보여주세요. - 이름과 핸들: 프로필을 표시하는 효과(glass-widgets, comment-box, pastel-word, profile-wall, headline-wall 등)는 기본값으로 Ray / @raycfu를 사용합니다. 사용자에게 한 번 물어보고 모든 효과에
name과handle을 전달하세요.
3. 타이밍 찾기
- 사용자가 "X라는 단어에서" 또는 "...라고 말할 때"라고 말하면
.venv/bin/python scripts/words.py <video>를 실행하고 해당 시간을 사용하세요. - 타이밍을 지정하지 않으면 전체 클립에 효과를 적용하거나, 어느 부분인지 짧게 물어보세요.
- 짧은 창이 가장 좋아 보입니다: 효과당 1.5~4초.
4. 초안, 확인, 렌더링
- 영상 옆에
<video-name>_effects.json계획을 작성하세요:{"effects": [ {"fx": "orbit", "start": 3.2, "end": 6.0}, {"fx": "backdrop-word", "start": 14.0, "end": 16.3, "text": "CLAUDE"} ]} - 먼저 프레임을 빠르게 확인하세요:
.venv/bin/python scripts/fx.py --plan <plan.json> <video> <folder>/check.png --still 4.5,15.2, 각 효과의 중간 시간을 사용합니다. PNG를 직접 확인하세요. 텍스트, 타이밍 또는 옵션이 잘못된 경우(얼굴 가림, 가장자리 잘림, 읽기 어려움) 수정하세요. - 렌더링:
.venv/bin/python scripts/fx.py --plan <plan.json> <video> <video-name>_effects.mp4. 출력물은 원본 오디오를 유지합니다. 기본적으로 1080p로 렌더링되며--width 2160을 추가하면 4K로 렌더링됩니다 (느림). - 파일 위치를 알려주세요. 게시하기 전에 시청하라고 한 줄로 상기시키세요: 초안을 작성하고 사용자가 승인합니다.
단일 효과는 계획이 필요 없습니다: .venv/bin/python scripts/fx.py orbit <video> <out.mp4> --start 3 --end 6 --text "..." --opt key=value.
51가지 효과
| # | fx 이름 | 기능 | 옵션 (모두 선택 사항) |
|---|---|---|---|
| 1 | noise | 0.25초마다 릴이 머리 뒤에 쌓입니다 | images (스크린샷 또는 클립 폴더), size |
| 2 | lineup | 번호가 매겨진 타일이 머리 위에 아치형으로 펼쳐집니다 | text (타일 이름, |로 연결) |
| 3 | locked-on | 모서리 브래킷이 얼굴에 고정되고, 카메라가 따라다닙니다 | zoom (기본값 1.35), text (태그) |
| 4 | orbit | 릴이 머리 주위를 원형으로 회전합니다: 앞쪽은 아래, 뒤쪽은 위 | images, count, speed, size |
| 5 | lean-in | 한 단어에 빠르게 확대됩니다 | zoom (기본값 1.45, 최대 2), speed |
| 6 | backdrop-word | 거대한 단어가 뒤에서 떨어집니다 | text, color (hex), font (bold 또는 serif) |
| 7 | spotlight | 조명을 끄고, 당신만 밝게 유지합니다 | text (뒤에서 빛나는 단어), color, push |
| 8 | the-bill | 머리 위 벽에 영수증처럼 지침을 출력합니다 | text (줄, |로 연결) |
| 9 | moody | 분위기 있는 색상 그레이딩 | grade (moody, bw, warm, cool, pop) |
| 10 | swipe | before/after 슬라이더가 당신을 가로질러 스와이프됩니다 | grade ("after" 모양) |
| 11 | todo | 머리 옆 체크리스트 카드가 말할 때마다 체크됩니다 | text (항목, |로 구분), ticks (비디오 초, |로 구분), title |
| 12 | comment-box | Instagram 댓글 바가 단어를 입력하고 게시합니다 | text (기본값 EFFECTS) |
| 13 | tap | Follow 버튼이 나타나고 Following으로 전환됩니다 | at (전환되는 비디오 초), x, y (0~1), color |
| 14 | pause-point | 프레임을 멈추고 손으로 그린 화살표로 당신을 가리킵니다 | text (라벨), color, label_x |
| 15 | uninstall | 글리치한 제거 바가 프레임을 분해합니다 | text |
| 16 | reel-frame | 영상이 Instagram 릴 카드로 축소됩니다 | text (핸들) |
| 17 | shortcut-rain | 키보드 키가 뒤에서 비처럼 내립니다 | text (키, |로 구분), count |
| 18 | reject-stamp | 큰 빨간 도장이 화면에 찍힙니다 | text, color, angle, y |
| 19 | countdown-flip | 머리 위에 3, 2, 1 플립 시계 | from |
| 20 | rabbit-hole | 프레임이 터널처럼 안으로 들어가며 회전합니다 | ratio, speed, spin |
| 21 | cover-star | 당신이 잡지 표지가 됩니다, 제목은 머리 뒤에 | text (제목), lines (|로 구분), issue, color |
| 22 | scribble | 마커 낙서가 당신 주위에 그려집니다 | text (라벨), color |
| 23 | glass-widgets | 프로스트 유리 위젯과 미니 아티팩트가 머리 주위를 떠다니고, Edited by Claude 알약이 함께 표시됩니다 | text (큰 숫자), name, handle, look (simple은 3-위젯 버전) |
| 24 | red-collage | 흑백의 당신, 뒤에 거대한 빨간 단어, 세 줄이 슬램인됩니다 | text (빨간 단어), lines (|로 구분), tag |
| 25 | split-headline | 헤드라인 카드가 아래로 미끄러지며 당신을 하단 절반으로 밀어냅니다 | text (줄, |로 구분), hl (강조 표시된 단어), pill |
| 26 | pastel-word | 라벤더 방, 뒤에 거대한 단어, 프로필 카드가 팔로우됩니다 | text, name, handle |
| 27 | check-pills | 모눈종이 방, 뒤에 릴 보드, 커서가 파란 알약을 클릭합니다 | text (알약, |로 구분), images |
| 28 | timeline | 어두운 빨간색 필름 그레이딩, 편집 타임라인, REC 타임코드, 빛나는 플레이헤드 | text (제목), sub, tc |
| 29 | headline-box | 두 줄 헤드라인이 있는 확대 효과, 두 번째 줄은 흰색 상자 안에 | text (줄, |로 구분), zoom |
| 30 | profile-wall | 당신의 릴 그리드가 뒤 벽을 채우고 카운터가 올라갑니다 | images, count, label |
| 31 | tier-list | 티어 목록이 나타나고 Claude가 S 티어로 날아갑니다 | title, item, others |
| 32 | broll-split | 상단에 B-롤과 가격표 스티커, 아래에 당신 | images, text (태그) |
| 33 | phone-fan | 당신의 릴이 헤드라인 아래에서 핸드폰 카드처럼 펼쳐집니다 | images, text (줄, |로 구분) |
| 34 | dot-reveal | 당신의 샷이 빛나는 점들로 만들어지다가 전체 그림으로 스냅됩니다 | color, cell |
| 35 | headline-wall | 당신의 헤드라인이 머리 뒤에 쌓이고, 합계가 앞에 나타납니다 | text (headline::meta|...), total, label |
| 36 | checklist | 턱 아래 Claude 작업 목록: 각 단계가 회전한 후 녹색으로 체크됩니다 | text (step::meta|...), title |
| 37 | liquid-glass-graph | 턱 아래 액체 유리 카드: 녹색 그래프가 상승하고 숫자가 카운트업됩니다 | text (라벨), from, to (예: 197K, 59%), color |
| 38 | carousel-spin | 당신의 릴이 3D 회전목마처럼 주위를 돌다가 천천히 멈춥니다 | images, count, size, turns |
| 39 | match-cut | 뉴스 페이지가 한 단어로 잘리며, 머리 뒤 빨간 상자에 고정됩니다 | text (단어, 기본값 Claude), color |
| 40 | apple-toggles | 턱 아래 iPhone 설정 카드가 한 줄씩 스위치를 켭니다 | text (행, |로 구분), ticks (초, |로 구분), color |
| 41 | led-sign | 조명이 내려가고 빛나는 LED 간판이 뒤에서 타이핑됩니다 | text (줄, |로 구분), color, push |
| 42 | slow-push | 얼굴로 천천히 영화 같은 푸시인, 방이 초점 밖으로 녹습니다 | zoom (기본값 1.6), blur |
| 43 | over-the-shoulder-zoom | 카메라가 한쪽 상단 모서리로 푸시인되고 투명 액체 유리 그래프가 머리 옆에 나타나며(선 상승, 숫자 카운트업), 다시 뒤로 물러난 후 다른 쪽 모서리에 두 번째 관련 막대 그래프가 표시됩니다. 머리는 앞에 유지됩니다 | text (두 라벨, |로 구분), to (두 숫자, |로 구분, 예: 197K|672K), zoom (기본값 2.0) |
| 44 | messages | iMessage 알림이 하나씩 나타나며, 부드러운 광택이 있는 크리미한 유리 스타일, 프레임 하단 위로 쌓입니다 | text (메시지, |로 구분), title (기본값 Messages), y |
| 45 | place-in-grid | 프로스트 유리의 3x3 프로필 그리드 중앙 타일로 축소된 후, 8개의 릴이 주위에 나타나며 각 타일에는 Instagram 조회수가 표시됩니다 | images (릴 또는 커버 폴더), views (9개 조회수, |로 구분, 9번째는 당신의 것) |
| 46 | tape-label | 노란 테이프 조각에 당신의 문구가 가슴에 붙고, 얼굴을 피합니다 | text |
| 47 | select-resize | 핸들이 있는 파란색 선택 상자가 머리 위 숫자를 잡고 커서가 더 크게 드래그합니다 | text (기본값 2X) |
| 48 | wave-trim | 머리 위 어두운 패널에 음성이 표시되고 양쪽 끝의 빨간 점선 무음 부분이 축소되어 말만 남습니다 | 없음 |
| 49 | huge-strike | 큰 세리프 단어 하나가 머리 뒤로 스와이프되고 빨간 선이 그어집니다 | text, at (효과 시작 후 취소선이 나타나는 초, 기본값 0.6) |
| 50 | crayon-write | 빨간 크레용이 머리 뒤에 단어를 쓰고 밑줄을 긋고 날아갑니다 | text |
| 51 | fan-build | 릴 커버가 머리 뒤에서 한 장씩 부채처럼 펼쳐집니다 | images (커버 폴더), count (기본값 13) |
명명된 룩 (동일 효과, 더 화려한 버전; 개수에 포함되지 않음):
glitter-spotlight=look=sparkle이 있는spotlight: 방이 어두워지고, 금빛 광선이 머리 뒤에서 터져 나오며, 큰 금색 단어에 광택 스윕, 반짝이는 스파클과 주변에 글로우가 생깁니다.text(단어),color,push.look=editorial이 있는cover-star: 부드럽고 따뜻한 필름 룩, 머리 뒤에 클래식한 세리프 마스트헤드, 이슈 라인과 우아한 커버 라인.text(마스트헤드),issue,lines(3줄,\|로 구분),right(줄,\|로 구분),color,accent,lines_y,right_y.look=bento가 있는liquid-glass-graph: 상승 그래프가 머리 뒤의 스모크 유리 화면으로 이동하고, 앞에는 유리 벤토 타일(도넛, KPI, 막대)이 있습니다.text,from,to,donut(29%::label),kpi(672K::label),bars(197\|140\|124::label).apple-toggles는 이제 위에 위치하며 머리 뒤에 배치되고 부드러운 줌이 적용됩니다 (pos=below는 이전 턱 아래 카드용;overlap,zoom).
별칭도 작동합니다: bill, to-do, follow, stamp, countdown, cover, rain, pause.
규칙
- 절대 얼굴을 가리지 마세요. 모든 것은 사람 뒤에 가거나 자동으로 얼굴을 피해야 합니다. 확인 프레임에서도 얼굴 위에 텍스트가 보이면 이동(
x,y)하거나 텍스트를 줄이세요. - 효과는 나열된 순서대로 실행됩니다. 다른 효과와 겹칠 경우 카메라 효과(
locked-on,lean-in,spotlight)를 먼저 배치하세요. - 줌은 2배를 넘지 않아야 영상이 선명하게 유지됩니다.
- 이 스킬은 시각적 요소만 추가합니다. 음향 효과와 자막은 사용자가 알아서 처리합니다 (CapCut이 잘 작동합니다).
- 이들은 초기 버전입니다. 사용자가 본 릴과 비교할 경우 이 점을 솔직하게 알리세요.
추가 옵션 (Ray's 에디션)
실제 영상에서 어색해 보이는 부분을 수정하기 위해 기본 효과 위에 추가된 옵션입니다. 다른 옵션과 같이 전달하세요 (계획에서 "key": "value" 또는 --opt key=value).
| 효과 | 옵션 | 기능 |
|---|---|---|
| 모든 카드/orbit 효과 | play=1 | images 폴더의 각 비디오를 정지 이미지 대신 카드 내에서 재생합니다 |
liquid-glass-graph | pos=behind | 그래프를 가슴 대신 머리 뒤의 어두운 유리 화면에 배치합니다 |
liquid-glass-graph | smoke=0.5..0.85 | 투명 액체 유리 대신 어두운 스모크 유리 사용 (몸이 번져 보이지 않음) |
liquid-glass-graph, over-the-shoulder-zoom | to=$32,000 | 통화 접두사와 천 단위 구분 기호가 올바르게 카운트업됩니다 |
checklist | smoke, scale=0.86, bottom=0.95, guard=0 | 어둡고 읽기 쉬운 카드, 더 작게, 낮게 위치하여 얼굴에 닿지 않음 |
checklist | span=2.9 | 체크가 도착하는 시간(초), 마지막 체크가 사용자의 제스처와 맞춰짐 |
spotlight | flicker=0, lift=0.8 | 네온 깜박임 효과를 끄거나 단어를 낮춰 머리가 일부를 가리도록 함 |
cover-star | mast_y=0.15 | 고정된 마스트헤드 높이 (더 좁은 크롭과 함께 사용하여 머리가 겹치도록 함) |
comment-box | lock=1, avatar_color=#FDB827 | 댓글 시트를 고정하고 아바타 색상을 설정 (글자는 handle에서 가져옴) |
카드 앞에 손이 있는 경우: 효과를 렌더링한 후 .venv/bin/python scripts/hands_front.py <original> <with_effect> <out>를 실행하세요.
컷아웃 품질: models/rvm_mobilenetv3_fp32.onnx가 존재하면 모든 효과가 Robust Video Matting을 사용하여 인물 컷아웃을 수행합니다 (더 깔끔한 머리카락, 깜박임 없음). 원래 MediaPipe 세그멘터를 사용하려면 FX_MATTE=mp를 설정하세요.