비디오 편집기
하나의 스킬, 세 부분. 이 파일을 읽은 후 엔진 규칙과 상황에 맞는 하나의 프리셋을 읽은 후에야 영상을 다루십시오.
| 부분 | 읽을 것 | 내용 |
|---|---|---|
| 엔진 | engine/ENGINE.md, engine/helpers/ | 전사(Scribe), takes_packed.md, EDL, render.py, grade.py, timeline_view.py, 12가지 하드 규칙, 요청 → 확인 → 실행 → 자체 평가 루프. browser-use/video-use(MIT)에서 가져와 수정했습니다. |
| Instagram 프리셋 | presets/instagram/PRESET.md | 세로 1080x1920: 안전 영역, Reel 페이스, 자막 스타일(scripts/ig-captions.py), 제목 폰트(assets/fonts/), 컬러 그레이딩 규칙, 무료 음향 효과 규칙 |
| YouTube 프리셋 | presets/youtube/PRESET.md | 16:9 / 4K: 컷 단계(페이퍼 컷, 타이트닝, 슬리버, 엣지 감사, 데드 에어), HyperFrames 컴포저와 약 40개 포맷 라이브러리, 카메라, 사운드, B-롤, Tella, 조립, 검증. WeAreNoCode youtube-edit 키트에서 가져와 수정했습니다. 선택 사항이며 번들로 제공되지 않습니다(presets/youtube/README.md). 거기에 PRESET.md가 없으면 엔진의 자체 컷 규칙을 사용합니다. |
| 공유 | shared/ | luts/(Cine_TealOrange, Cine_Film, Cine_Moody, AppleLog_to_Rec709, AppleLog_Cine_*; make_luts.py로 재구축), sfx/(사운드 효과, -3 dBFS, manifest.json), music/(오디오 트랙), tools/(build-manifest.py, 컷 도구), img/ |
스크립트를 먼저 작성합니다: 사용자에게 아직 스크립트가 없거나 훅, 아이디어, 자막을 요청하면 script-writer 스킬을 사용합니다. 해당 스크립트는 이 스킬이 실행할 편집자 노트로 끝납니다.
프리셋 선택
| 요청 내용 | 사용할 프리셋 |
|---|---|
| Instagram, Reel, 스토리, TikTok, Shorts, 세로 영상, 또는 플랫폼 언급 없이 세로 영상 | Instagram 프리셋 (컷 단계, 포맷, 카메라, 사운드는 YouTube 프리셋을 빌려오며, 그 위치를 명시합니다) |
| YouTube, 훅, 롱폼, 16:9 / 4K, Tella 튜토리얼, 섹션 조립 | YouTube 프리셋 |
| 그 외 (몽타주, 여행, 인터뷰, 일반 16:9 편집) | 엔진 단독 + shared/의 비주얼과 사운드; 적절한 곳에 프리셋 규칙을 빌려씁니다 |
| 하이라이트할 화면 녹화 | 게시될 플랫폼에 맞는 프리셋: 영역 확대, 나머지 부분 흐리게/어둡게, 단어에 박스/밑줄, 클릭 및 타이핑 소리, 개인 정보 흐리게 처리; Reel의 경우 녹화본을 폰이나 브라우저 프레임 안에 배치하거나 중요한 부분만 크롭합니다 |
잘 모르겠다면? 한 번만 물어보세요: "Instagram용인가요, YouTube용인가요?"
경로 (모든 명령에서 사용)
VE=~/.claude/skills/video-editor; VU="$VE/engine"; VU_PY="$VE/.venv/bin/python"
IG="$VE/presets/instagram"; YT="$VE/presets/youtube"; SK="$YT"; SHARED="$VE/shared"
모든 출력물은 <footage folder>/edit/ (엔진의 하드 규칙 12)에 저장됩니다. 규칙, LUT 또는 공유 자산을 의도적으로 저장하는 경우를 제외하고는 $VE 안에 절대 쓰지 마십시오.
모든 것에 적용되는 하드 규칙
- 전사에는 비용(Scribe 크레딧)이 듭니다. 사용자가 영상을 건네주고 편집을 요청하지 않는 한 전사하지 마십시오. 트랜스크립트는 파일 스템별로 캐시됩니다. 플랫 컷을 다시 편집한 후에는 캐시된 JSON을 삭제하십시오.
- 실행 전 전략 수립: 자료를 설명하고, 계획(프리셋, 자막 스타일, 비주얼, 음악, 길이)을 제안하고, 승인을 기다리십시오.
- 자막과 서브타이틀은 가장 마지막에, 모든 오버레이 다음에 추가합니다.
- 비디오당 한 번만 그레이딩하며, 추출 중 세그먼트별로 수행합니다. 피부 톤을 보호하고, before/after 프레임을 확인합니다.
- 렌더링된 파일을 검증(모든 컷에서 프레임 확인, 음량 -14 LUFS, 재생 시간 확인)한 후에야 사용자에게 보여줍니다.
- Python 헬퍼는
$VU_PY로 실행하며, 시스템python3에는 numpy가 없습니다.
컷 유형
shared/references/cuts.md: 10가지 컷(컷, 점프, 매치, J, L, 페이드, 디졸브, 액션 컷, 크로스 컷, 스매시)과 각 컷을 사용해야 하는 시기, 그리고 그 작업을 수행하는 도구(shared/tools/)가 설명되어 있습니다. 프리셋과 영화 스타일 스킬 모두 이 파일을 사용합니다.
모션 그래픽
shared/references/motion-graphics.md: 모든 애니메이션이 확인해야 할 7가지 품질 규칙, 레퍼런스 출처, 학습 루프(레퍼런스 → 수치 → 템플릿 → 노트 → 저장), 템플릿 추적기가 포함되어 있습니다. 애니메이션을 만들기 전에 반드시 읽고, 수동으로 효과를 만들기 전에 HyperFrames 레지스트리를 검색하십시오.
렌더링 사다리 (항상, 모든 비디오)
- 720p 리뷰 렌더링 (빠름; 사용자가 보고 피드백을 주는 용도):
엔진
render.py … --draft(720x1280 / 1280x720), HyperFramesrender … --quality draft(컴포지션 복사본을 720 너비로 또는 기본값에-o review.mp4후scale=720:-2); 자막은ig-captions.py --width 720 --height 1280. 자체 평가는 이 파일을 대상으로 실행됩니다. - 최종본은 사용자가 리뷰를 승인한 후에만 4K로 (남은 피드백 없음):
엔진
render.py … --uhd(2160x3840 세로 / 3840x2160 가로, CRF 18), HyperFramesrender … --resolution portrait-4k --quality high(또는landscape-4k; 1080x1920 컴포지션이 2x DPR로 렌더링되어 텍스트와 그래픽이 진정한 고해상도), 자막ig-captions.py --width 2160 --height 3840(동일한 레이아웃, 스케일 조정), 음악/음량 마스터링은 평소대로(-14 LUFS). 검증:ffprobe가 2160x3840, BT.709 태그를 보여주고 재생 시간이 리뷰와 일치해야 합니다. - 둘 다 함께 제공:
<project>-4k.mp4(마스터 파일, 업로드/YouTube/보관용)와<project>-1080.mp4(4K 마스터에서scale=1080:-2:flags=lanczos로 만든 고비트레이트 1080x1920 복사본, 약 20 Mb/s). 사용자에게 정직하게 알리십시오: Instagram은 Reel을 최대 1080x1920으로 재생하고 모든 업로드를 다시 인코딩하므로, 4K가 인코더에 가장 깨끗한 소스를 제공하여 도움이 되는 것이지(그리고 YouTube/TikTok/향후 재사용을 위해 최고 품질을 유지하기 위함), 실제 4K를 보여주는 것이 아닙니다. Instagram > 설정 > 미디어 품질 > "최고 품질로 업로드"를 켜도록 안내하십시오. 1080p로 촬영된 영상은 4K 마스터에서 업스케일링됩니다(새로운 디테일 없음); 해당하는 경우 이를 명시하십시오. 최종본 이후의 수정 사항은 다시 720p 리뷰 후 4K로 진행됩니다.
머신 설정 (install.sh가 대부분 수행)
| 도구 | 상태 | 확인 |
|---|---|---|
| ffmpeg 풀 빌드 (libass, zscale, lut3d) | ffmpeg-full을 ffmpeg에 연결 | `ffmpeg -filters |
| Python 환경 | $VE/.venv (requests, numpy, pillow, librosa, matplotlib) | cd $VE && uv sync |
| ElevenLabs 키 | $VU/.env (모드 600) | curl -s -o /dev/null -w '%{http_code}' -H "xi-api-key: $(sed -n 's/^ELEVENLABS_API_KEY=//p' $VU/.env)" https://api.elevenlabs.io/v1/user → 200 |
| Node + HyperFrames CLI | Node 26, hyperframes 글로벌 | hyperframes doctor |
| HyperFrames 에이전트 스킬 | CLI가 자체 스킬로 설치 (hyperframes, hyperframes-core, -animation, -keyframes, -registry, media-use, ...) | hyperframes skills check; 컴포지션 계약을 위해 읽으십시오 |
| auto-editor, yt-dlp, Chrome | 설치됨 | auto-editor --version, yt-dlp --version |
| YouTube 프리셋 테스트 (설치된 경우) | 모두 통과 | cd $YT/scripts && $VU_PY -m unittest tests |
스킬을 나만의 것으로 유지하기
- "이것을 스킬에 저장": 해당하는 위치에 일반 규칙 하나로 기록하십시오: Instagram 전용 → Instagram 프리셋; YouTube 전용 → YouTube 프리셋; 둘 다 → YouTube 프리셋의 공유 섹션(Instagram 프리셋이 그곳을 참조함) 또는 라우팅/설정에 관한 경우 이 파일. 새로운 규칙과 모순되는 기존 규칙은 교체하십시오. 둘 다 유지하지 마십시오.
- 새 비주얼:
shared/luts/make_luts.py에서LOOKS를 수정하고,$VU_PY로 실행한 후 Instagram 프리셋의 색상 표에 행을 추가하십시오. 새 자막 스타일: 자막 표의 행 +ig-captions.py의STYLES항목. - 엔진 업데이트: 업스트림 https://github.com/browser-use/video-use 를 어딘가에 클론하고(
git pull),diff -r <clone>/helpers $VU/helpers로 비교한 후 변경 사항을 수동으로 복사하십시오. 엔진 복사본은ENGINE.md에만 로컬 경로 편집이 있습니다.