/kallaway-edit
원본 클립을 Kallaway 스타일의 완성된 수직 릴(1080×1920, 30fps, -14 LUFS)로 변환합니다. 모든 작업은 사용자의 Mac에서 무료 도구로 실행됩니다. 이 기능을 사용하는 사람은 일반적으로 기술적이지 않습니다: 평범한 영어로 한 번에 하나의 짧은 메시지로 대화하고, 절대 코드를 직접 다루게 하지 마십시오.
SK = ${CLAUDE_SKILL_DIR}, 이 스킬의 폴더입니다 (절대 쓰지 마십시오: 업데이트 시 교체됩니다).
DATA = $HOME/.claude-video-editor, 편집기 자체의 폴더로, 업데이트 간 유지됩니다: 사용자 설정 (DATA/config.json), 편집기의 Python (DATA/venv), 사운드 효과 (DATA/sfx).
ROOT = 프로젝트 폴더 (raw/, exports/ 포함): DATA/config.json의 projectRoot로, 설정 마법사(0단계)에서 저장됩니다. WORK = ROOT/work/<slug>/ (릴당 하나의 폴더; slug는 짧은 케밥 케이스, 예: opus-tips). 모든 경로를 따옴표로 묶으십시오: 공백이 자주 포함됩니다.
모든 스크립트는 다음 두 가지 중 하나를 통해 정확히 작성된 대로 실행하여 사용자 설정을 찾을 수 있도록 하십시오:
PY = VIDEO_EDITOR_DATA="$HOME/.claude-video-editor" "$HOME/.claude-video-editor/venv/bin/python" -I (설정 후)
SETUP = VIDEO_EDITOR_DATA="$HOME/.claude-video-editor" python3 -I "${CLAUDE_SKILL_DIR}/scripts/setup.py"
빌드하기 전에 다음을 읽으십시오: references/style-rules.md (숫자로 표현된 모양), references/graphics-recipes.md (말한 아이디어가 다이어그램이 되는 방법), references/gotchas.md.
엄격한 규칙
- 무료 도구만 사용. ffmpeg, Node 22+, Python, HyperFrames (
npx hyperframes@<pinned>), faster-whisper, HyperFrames의 로컬 배경 제거, 번들된 OFL 글꼴, HyperFrames 미디어 사용의 녹음된 사운드 효과 (설정 시 가져오며, 절대 번들되지 않음: Pixabay 라이선스), Openverse 또는 사용자 자신의 트랙의 CC0/CC BY 음악. 유료 API, HeyGen 로그인, 음악 생성, 저작권 있는 자료는 절대 안 됩니다. - 사용자가 지정할 수 있는 옵션:
music: on|off(기본값: 설정 시 저장된 선택),music: <자신의 트랙 경로>,setup(설정 마법사 재실행). - 절대
npx hyperframes init또는npx hyperframes skills를 실행하지 마십시오 (~/.claude/skills에 스킬이 설치됩니다). 모든 HyperFrames 호출:HYPERFRAMES_SKIP_SKILLS=1 HYPERFRAMES_NO_TELEMETRY=1. 항상snapshot ... --describe false를 사용하십시오 (그렇지 않으면 프레임이 Gemini에 업로드됩니다). - 사용자의 원본 영상을 절대 건드리지 마십시오.
raw/의 복사본으로 작업하십시오. 작업 파일은 WORK에; 완성된 릴만exports/에 넣습니다. 사용자의 파일을 삭제하지 마십시오. - 자막은 실제로 말한 내용을 올바르게 표시합니다 ("Claude", "Opus 5.5"), 숫자는 숫자로 표시합니다.
- 그래픽은 얼굴을 가리지 않습니다; 텍스트는 y 1470 아래 또는 y 1155 아래 오른쪽 100px 안에 배치되지 않습니다.
- 아무것도 밖으로 애니메이션되지 않습니다. 빨간색
#C41514이 유일한 악센트입니다. 제목과 섹션마다 하나의 세리프 이탤릭 단어가 사용됩니다. - 작업 과정을 보여주십시오: 각 단계에서 번호가 매겨진 PNG를
WORK/progress/에 저장합니다 (01-takes-picked.png, ...). - 완료되었다고 말하기 전에
qa.py로 최종 렌더를 전체 크기로 확인하십시오. 일치하지 않는 부분에 대해 정직하십시오.
워크플로우
0. 설정 마법사 (처음 한 번만, 약 5-10분)
DATA/config.json을 읽으십시오. "setupComplete": true이고 projectRoot 폴더가 존재하면 SETUP --check를 실행하십시오 (몇 초, 아무것도 설치하지 않음); READY면 1단계로, NOT READY면 명명된 항목을 수정하십시오 (새 도구 버전이 필요한 업데이트 후에는 SETUP만 다시 실행하면 됩니다: 사용자의 폴더와 선택 사항이 유지됩니다). 그렇지 않으면 (처음 실행 또는 사용자가 "/kallaway-edit setup"을 입력한 경우) 마법사를 실행하십시오. 각 단계를 한 줄로 알리십시오 ("5단계 중 2단계: 도구 확인 중").
- 환영. "Kallaway 편집기에 오신 것을 환영합니다! 설정을 시작하겠습니다. 약 5-10분이 소요되며 한 번만 진행됩니다."
- Claude Code에서 실행 중인가요? 이 기능은 로컬 폴더에서 열린 Claude Code (터미널 앱, Claude 데스크톱 앱의 Code 탭, 또는 IDE 확장)가 필요합니다. 실제 비디오 파일을 편집하기 때문입니다. 셸 명령을 실행하고 로컬 파일을 읽을 수 있다면 맞습니다. 그렇지 않다면 (일반 채팅): "Claude 데스크톱 앱을 열고, Code를 클릭하고, Local을 선택한 다음, 폴더를 선택하거나 (AI video editor라는 폴더를 만드세요), /kallaway-edit을 다시 입력하세요."라고 말한 후 중단하십시오.
- 도구 확인.
SETUP --check. 결과를 짧은 표로 표시하십시오: 도구, 찾음 여부, 용도 (ffmpeg는 자르기와 사운드 믹싱; Node.js는 HyperFrames 실행; HyperFrames는 편집을 비디오로 변환; faster-whisper는 모든 단어 청취; Python은 도우미 스크립트 실행; yt-dlp는 선택 사항, 링크에서 릴 다운로드 및 /new-edit-style 필요). 사용자가 직접 설치해야 하는 항목 (ffmpeg, Node.js, Python)에 대해 한 줄로 수정 방법을 알려주고 붙여넣을 위치를 말하십시오: 터미널 앱 (Mac: Command + Space, Terminal 입력). Mac 비밀번호를 묻는 경우 사용자가 직접 입력해야 하며, 이 채팅에서는 절대 입력하지 마십시오. 완료되었다고 말할 때까지 기다린 후 다시 확인하십시오. "전체 설정이 설치합니다"로 표시된 항목은 사용자의 조치가 필요하지 않습니다. - 파일 위치. 한 번의 메시지로 다음을 물어보고, 각각에 대해 제안된 답변을 함께 제시하십시오:
- "동영상을 어디에 만들까요?" 현재 폴더가 비어 있거나 이미 비디오 폴더인 경우 현재 폴더 (전체 경로 표시)를 제안하고, 그렇지 않으면
~/Desktop/AI video editor를 제안하십시오. - "영상 원본은 보통 어디에 저장하나요?"
~/Downloads(AirDrop이 휴대폰 클립을 넣는 곳) 또는 "제가 직접 raw 폴더에 클립을 넣겠습니다"를 제안하십시오. - "목소리 아래 배경 음악: 켜기 또는 끄기?" 켜기를 제안하십시오 (비디오마다 변경 가능).
그런 다음 폴더를 제안하십시오: "프로젝트 폴더를 설정할까요? raw/ (클립), references/ (스타일이 마음에 드는 비디오), exports/ (완성된 릴), work/ (작업 파일) 및 archive/ (이전 버전)을 만들겠습니다. 이미 있는 것은 그대로 둡니다." 예인 경우:
SETUP --project "<폴더>" --clips-from "<폴더 또는 생략>" --music on|off. 누락된 폴더만 만들고 답변을DATA/config.json에 저장합니다.
- "동영상을 어디에 만들까요?" 현재 폴더가 비어 있거나 이미 비디오 폴더인 경우 현재 폴더 (전체 경로 표시)를 제안하고, 그렇지 않으면
- 설치. "무료 편집 도구를 지금 설치합니다 (한 번, 약 5분: 전사 엔진, 비디오 렌더러, 사운드 효과 및 음성 모델)."
SETUP을 백그라운드에서 실행하고 진행 상황을 평범한 말로 전달하십시오. DATA에만 설치합니다 (전역 또는 스킬 폴더에 설치하지 않으므로 업데이트가 이를 취소하지 않음) 완료되면 설정 완료를 표시합니다. - 완료.
references/filming-guide.md의 4가지 촬영 팁 (고정 카메라, 와이드 샷, 어두운 방에 따뜻한 조명, 문장이 완성될 때까지 반복)을 제공한 다음: "준비되었습니다. 클립을 raw/에 넣거나 (또는 에서 어떤 파일인지 알려주세요) /kallaway-edit을 입력하세요." 이미 클립을 제공했다면 바로 1단계로 진행하십시오.
매 실행 시 수집: 클립은 사용자가 지정한 파일입니다. 그렇지 않으면 clipsFrom에서 가장 최신 비디오 파일을 제공하여 물어보십시오. 복사하여 ROOT/raw/에 넣으십시오 (원본을 이동하거나 변경하지 마십시오). 음악은 사용자가 달리 말하지 않는 한 저장된 music 선택을 따릅니다.
1. 모든 테이크 찾기 (영상 1분당 약 1분)
PY "SK/scripts/takes.py" "WORK" "ROOT/raw/clip1.MOV" "ROOT/raw/clip2.MOV" (--fast를 추가하면 더 빠르지만 덜 정확한 분석). WORK/takes/*.takes.txt를 읽으십시오: 시간 범위와 재시도 표시가 있는 모든 시도. 스크립트가 있으면 클립에서 찾아서 물어보십시오. "클립을 듣고 각 대사의 최고 테이크를 찾는 중입니다."라고 말하십시오.
2. 테이크 선택 및 자르기 (약 1분)
WORK/edl.json 작성 (형식: SK/template/examples/edl.json): 스크립트 순서대로 한 줄에 한 세그먼트, 일반적으로 마지막 완전하고 깨끗한 테이크. {"clip","chunk"} 또는 {"clip","start","end"} 사용 (청크 내의 말 실수 건너뛰기; transcribe.py --range a-b --model medium.en --no-vad로 단어 시간 확인). 목표 20-30초; 약간 초과 (약 38초까지)하는 것이 훅이 한 약속을 깨는 것보다 낫습니다. 요청하지 않는 한 CTA는 건너뛰십시오. 그런 다음 PY "SK/scripts/assemble.py" "WORK": cut.mp4 (CFR, 음성에 맞춤, 압축, -14 LUFS), segments.json, words.json, words.txt. words.txt 읽기: 모든 줄이 의도한 내용을 말해야 합니다.
PY "SK/scripts/qa.py" "WORK" --takes는 progress/01-takes-picked.png를 씁니다.
"컷입니다: <대사>. 초."라고 말하십시오.
그래픽을 빌드하기 전에 컷을 고정하십시오. 나중에 다시 자르는 경우: PY "SK/scripts/reindex.py" "WORK" "WORK/.prev/words.json"는 모든 그래픽을 해당 단어에 유지합니다.
3. 스피커 컷아웃 (약 3-4분, 백그라운드에서 실행)
PY "SK/scripts/cutout.py" "WORK": cutout.webm (프레임 일치, 가장자리 정리) + headtrack.json.
실행 중에 편집을 계획하십시오 (4단계). 그런 다음 검은 배경에 합성된 한 프레임을 보고 헤일로를 확인하고 progress/02-cutout-check.png로 저장하십시오.
3b. 음악 (music: off가 아닌 경우; 약 2-6분, 백그라운드에서 실행)
PY "SK/scripts/music.py" "WORK" (또는 --file "<노래>", 또는 --off). Openverse에서 무료 CC0/CC BY 기악을 선택하고, 보컬을 거부하며, WORK/music-credit.txt를 씁니다. 사용자에게 선택한 내용을 알리고, CC BY의 경우 크레딧 줄이 캡션에 포함된다고 알리십시오.
4. 편집 계획, 한 줄씩
WORK/plan.json 작성 (형식: SK/template/examples/plan.json):
shots: 각 레이아웃이 시작되는 위치 (0,"line:N"= EDL 라인 N의 첫 프레임,"w:N"= 단어 N의 시작). 보여줄 수 있는 것은 무대; 연결/개인적 대사와 페이오프는 풀 (런타임의 16-29%). 무대 장면 간에도 하드 컷. 첫 컷은 약 3.5초.scenes: 어떤 그래픽이 언제 재생되는지 (id,from,to, 선택적src+vars로 하나의 장면 파일을 여러 번 마운트, 예: 반복되는 번호가 매겨진 "홈" 그래픽). 장면은 풀 샷 아래에서 실행되고 다시 돌아올 수 있음 (재방문은 0.6초에 새로운 것을 하나 추가).punch: 닫는 구절에 스냅 펀치인 (x1.19, 라이저 포함), 최대 한두 개.captions:fix(단어 인덱스 -> 올바른 텍스트),emphasis(섹션당 하나의 세리프 단어),keep_together(단어 인덱스 쌍, 예: "Number" + "1,"). graphics-recipes.md 사용: 모든 아이디어는 모양, 제목 (볼드 + 하나의 세리프 악센트, 빨간색 상자에 주장), 그리고 단어에 대한 비트, 약 1초마다 새로운 것을 가집니다. 계획을 한 샷당 한 줄로 말하십시오.
5. 장면 빌드 (약 15-25분)
각 장면은 WORK/scenes/<name>.html이며, SK/template/scene-starter.html 또는 SK/template/examples/ (6개의 실제 장면)에서 가장 가까운 파일로 시작합니다. 키트 (template/kit/kw.css, kw.js)는 무대 모양과 모션 도우미 (KW.title, blurIn, pill, pulse, draw, cam, type, strike, count, scramble; at(i) = 단어 i의 시작)를 제공합니다. 모든 애니메이션은 장면의 <!--KW:SFX [...] --> 주석에 사운드 큐를 가져야 합니다. 예: {"t": "w:24-0.02", "s": "whoosh"}, references/sound-map.md 따름 (카메라 이동 = whoosh, pill = pop, snap/tick = click, 타이핑된 텍스트 = typing, 큰 순간 = impact, 페이오프 = sparkle). Agent 도구가 있고 장면이 약 3개 이상인 경우, 최대 2개의 병렬 에이전트에 장면을 위임하십시오: 정확한 단어 목록 및 시간, 아이디어, 이 스킬의 참조, 그리고 build.py ... --project WORK/project-<letter>와 함께 제공하여 충돌하지 않도록 하십시오.
PY "SK/scripts/build.py" "WORK"는 WORK/project/를 씁니다 (루트: 점선 무대, 페이스 카드, 팝업 레이어, 캡션 트랙, 장면 호스트, SFX 레인, 모두 생성됨). 그런 다음 WORK/project에서: npx -y hyperframes@<pin> lint (0 오류) 및 snapshot --at <times> --no-end --describe false -o snaps/x, PNG를 읽고, 수정하고, 반복하십시오. 각 장면의 시트를 progress/03-scene-.png로 저장하십시오.
6. 렌더링 (약 1분) 및 확인 (약 1분)
PY "SK/scripts/render.py" "WORK" --name draft (빠름), 그런 다음 PY "SK/scripts/qa.py" "WORK" "WORK/renders/draft.mp4"를 실행하고 qa/cuts.png (모든 컷 전후 프레임), qa/beats.png (모든 캡션 청크), qa/report.txt (컷-음성 간격, 음량)를 확인하십시오. 확인: 팝업에 컷 후 헤일로나 드리프트가 없음; 카드에 머리와 어깨가 모두 표시됨 (얼굴 크롭 없음); 얼굴에 캡션 또는 그래픽 없음; 캡션이 단어와 일치함; 모든 대사 컷이 음성 시작 전 0-80ms에 착지함; Instagram 금지 구역에 아무것도 없음. 그런 다음 PY "SK/scripts/audiomap.py" "WORK" --out progress/NN-audio-map.png: 음악 18-24dB 아래 음성, 효과 ~10-16dB 아래 로컬 피크, 이중 히트 없음; 플래그된 큐를 "db": -3으로 수정하십시오.
스타일 일치: PY "SK/scripts/match/fingerprint.py" score "SK/references/style-spec.json" "WORK/renders/draft.mp4" --out "WORK/progress/NN-style-match.md"는 3개의 Kallaway 릴이 측정된 것과 동일한 방식으로 편집을 측정합니다 (컷 속도, 초당 시각적 변화, 레이아웃 점유율, 카드 및 캡션 위치, 캡션 크기 및 속도, 악센트 색상 점유율, 음량, 스테레오 사운드 효과) 각 FAIL에 대해 수정할 사항을 알려줍니다. 편집이 제어하는 것을 수정하십시오; 영상 (가까운 셀카)으로 인한 FAIL은 촬영 노트로 사용자에게 전달하십시오. WORK/progress/의 보고서가 기록입니다 (SK/references/lock-log.md는 스타일의 측정된 기록을 보유합니다; 그대로 두십시오).
수정하고 다시 렌더링하십시오 (재빌드 + 재렌더링은 약 1.5분 소요).
7. 전달
PY "SK/scripts/render.py" "WORK" --final -> exports/<slug>-kallaway-vN.mp4 (1080x1920) + -720p.mp4 휴대폰 복사본. 내보내기에서 qa.py를 실행하십시오. 사용자가 ROOT/references/에 저장한 자신의 Kallaway 릴이 있는 경우 (이 스킬에는 포함되지 않음), 나란히 보기 (--ref <릴> --ref-at <t> --at <t>)를 추가하고 progress/NN-side-by-side.png로 저장하십시오.
말하십시오: 파일 위치, 길이, 장면별 내용, 그리고 여전히 Kallaway처럼 보이지 않는 부분 (구체적이고 정직하게).
소요 시간 (M4 Pro Mac, 약 8분 원본 영상에서 35초 릴 기준)
설정 5분 (처음 한 번) · 테이크 7분 (medium 모델; --fast 약 3) · 컷 1분 · 컷아웃 3.5분 · 음악 2-6분 (백그라운드; Openverse/Freesound는 느릴 수 있음) · 장면 15-25분 · 드래프트 렌더 50초 · 최종 렌더 70초 · 편집 후 재렌더링 약 1.5분.
촬영
촬영 예정인 사람에게 references/filming-guide.md를 제공하십시오: 고정된 와이드 샷 (가로 4K가 가장 좋음), 어두운 방에 따뜻한 키 라이트, 어두운 상의, 머리 뒤의 평범한 배경, 문장이 완성될 때까지 반복.