비디오 편집은(는) 무엇을 하나요?
이 스킬은 누군가가 카메라를 보고 말하는 원본 영상을 ffmpeg, Whisper, Playwright 기반의 번들 명령줄 도구(vedit.py)를 사용하여 완성된 비디오, 일치하는 SRT 자막 파일, 썸네일로 변환합니다. 테이크 선택, 클린 컷, 샷 버라이어티, 그래픽 및 B-롤 배치, 자막, 음량, 썸네일, 최종 QA 등 편집 전반을 자체적으로 처리합니다. 편집할 스크립트와 편집 노트는 video-scripting 스킬, 색상, 글꼴, 규정 준수 텍스트는 brand/brand-profile.md, 정적 이미지는 image-generation 스킬, 독립적 검토는 review-loop 스킬, 게시 일정은 scheduling 스킬에 의존합니다. 여기서는 아무것도 게시하거나 예약하지 않습니다.
권한 순서: brand-profile.md가 브랜드 상수 및 규정 준수 문구에 대해 우선하며, 이 스킬은 방법론을 소유합니다.
시작하기 전에
- 마케팅 작업 공간(기본값
marketing/)을 찾습니다. 없으면 한 줄로 말하고brand-setup스킬을 제안합니다. 도구는 중립적인 모양으로도 작동합니다. - 해당 콘텐츠 폴더
content/<yyyy-mm-dd>-<slug>/를 찾습니다.script.txt(한 줄에 한 문장;[대괄호 안의 노트]와[CHAPTER N • 제목]마커는 절대 말하지 않음)와 이상적으로는edit-notes.txt(HOOK ON SCREEN:,COVER:,OUTCOME:라인) 및sources.txt(화면에 표시되는 유일한 수치)가 있어야 합니다. 스크립트 없이 촬영한 경우 먼저 전사하고 정리된 전사본을 스크립트로 사용합니다. - 브랜드 프로필의
## Visual identity,## Compliance,## Boundaries,## CTA & contact섹션을 읽고, 그래픽 및 썸네일의 단어와 표현을 위해brand/voice-learnings.md를 읽습니다. - 도구가 준비되었는지 확인합니다:
python3 <skill>/vedit.py doctor. 누락된 것이 있으면bash <skill>/setup.sh를 한 번 실행합니다(ffmpeg, Node, Python venv, Whisper, Playwright, 폰트). Whisper의 large 모델은 약 3GB이며 랩톱 CPU에서 클립 길이의 약 1~2배 시간이 걸리므로 긴 단계는 백그라운드에서 시작합니다.
표준
- 각 라인의 깔끔한 읽기 한 번. 완성된 비디오에는 각 라인의 읽기가 정확히 한 번 포함됩니다. 다시 시작, "그, 그", 포기한 테이크의 반쪽 문장, 잘린 단어 끝이 없어야 합니다. 이는 선택 사항이 아닌 차단 조건입니다. 자연스러운 "음" 하나는 남을 수 있지만(사람은 자신처럼 들려야 함), 오프닝 라인에는 절대 없어야 하며 한 라인에 두 번도 안 됩니다.
- 작성된 스크립트가 아닌 실제 말한 대로 따릅니다. 사람들은 말하면서 라인을 개선합니다. 실제 표현 변경은 테이크 파인더에서 누락되거나 낮은 커버리지 라인으로 나타납니다. 이는 실수가 아닙니다. 그들의 버전을 유지하고, 진짜 더듬거림과 다시 시작만 잘라내며, 스크립트에서 작성된 그래픽이나 훅 카드를 실제로 말한 내용에 맞게 수정합니다.
- 비즈니스에 도움이 되는 비트를 유지합니다. 스크립트에 초반 "내가 누구인지" 라인이나 마무리 콜투액션이 있으면 그 자리에 유지합니다.
- 절대 단일 평면 샷을 남기지 않습니다. 모든 컷에서 와이드와 타이트를 번갈아 사용하고, 긴 읽기 내에서 리프레임하고, B-롤로 컷어웨이하고, 모션 그래픽으로 스토리를 전달합니다. 말하는 사람이 중심이지만 전체 비디오가 되어서는 안 됩니다.
- 자막은 완성된 오디오에서 생성되며 스크립트와 대조되어 실제로 들리는 내용과 정확히 일치합니다. 숏츠에는 자막이 영상에 포함되고, 롱폼에는 SRT만 제공됩니다.
- 음량 -14 LUFS, 트루 피크 -1.5 dB로 모든 플랫폼에 적합합니다.
- 실제 프레임 썸네일은 그리드 안전 사각형 안에 헤드라인이 포함되며, 한두 가지 변형으로 제공됩니다.
- QA 게이트가 통과되어야 전달됩니다. 렌더링을 다시 전사하고, 각 컷을 개별적으로 듣고, 모든 컷이 조용한 부분에서 끝나는지 확인합니다.
deliver는 신선한 PASS 없이 거부합니다. - 귀에 대해 솔직합니다. Claude는 들을 수 없습니다. 게이트는 단어와 에너지를 확인할 뿐, 톤, 단어 아래의 기침, 나쁜 룸 톤 스플라이스는 확인하지 못합니다. 인계 시마다 이를 말합니다.
방법
모든 명령은 python3 <skill>/vedit.py <command> <slug>입니다. project.json을 수동으로 편집하기 전에 references/project-config.md를 읽으십시오.
- 먼저 모든 것을 수집합니다. 배치의 모든 클립을 나열합니다. 두 번째 카메라는 소리로 페어링하고(
scripts/sync_cams.py; 실제 매치는 약 0.4~0.55, 비매치는 약 0.03 점수), 드론 같은 무음 카메라는 움직임과 타임스탬프로 동기화합니다(scripts/sync_cams_visual.py). 모든 사진과 짧은 클립의 콘택트 시트를 만들고 B-롤로 사용할 수 있는 것을 기록하며, 폴더에 없는 카메라를 언급하면 즉시 물어봅니다. 자세한 내용은references/multicam-and-long-form.md를 엽니다. - Init.
vedit.py init <slug> --raw <cameraA clip> --pack <content folder> [--long] [--cam B=<clip>]. 스크립트를 복사하고, 편집 노트를 읽고, 브랜드 프로필의 팔레트와 폰트를project.json에 매핑합니다. 그런 다음vocab에 스크립트의 모든 고유 명사(발표자 이름 포함)를 채웁니다. - Prep (느림, 백그라운드):
vedit.py prep <slug>. 카메라의 자체 프레임 속도로 업라이트 마스터, 16kHz 오디오, 추가 카메라 동기화, 두 개의 전사본(large-v3 정확 전사 + medium.en)을 만듭니다. HDR 영상, 잘못된 비율의 영상, 블루투스 마이크의 통화 품질 오디오에서 중단됩니다.references/audio-and-sync.md에 복구 방법이 있습니다. - Takes.
vedit.py takes <slug>는 음성을 텔레프롬프터처럼 스크립트에 정렬합니다. 역방향 점프는 재시작이므로 각 라인의 모든 시도가 점수가 매겨진 테이크가 됩니다. 두 번째 청취는 각 테이크를 개별적으로 다시 들어 필러, 반복, 이중 읽기를 찾습니다.picker/takes_report.txt를 읽으십시오. 그런 다음 신뢰하기 전에 확인하십시오.references/whisper-pitfalls.md를 여십시오. Whisper는 반복되는 거짓 시작을 놓치고, 마지막 단어를 생성하며, 익숙하지 않은 용어를 분할하기 때문입니다. 제안된 재시작 트림은 에너지 맵이 두 번째 음성 폭발을 보여주지 않는 한 그대로 신뢰합니다. - Picks. 사람이 브라우저에서 선택하거나(
vedit.py picker <slug>를 백그라운드에서 실행한 후http://localhost:8765열기), Claude가 선택하도록 요청하면 직접picker/picks.json을 작성하고 기계 선택과 다른 모든 변경 사항에note를 추가합니다. 빨간색 또는 주황색 라인과 그 이유를 알려줍니다. 인접한 라인과 같은 실행에서 나온 읽기를 선호합니다. 컷이 없이 흐릅니다. 기계 선택으로 전달하지 마십시오. - Choreograph (디자인 작업, 먼저
references/style-notes.md읽기). 스크립트,sources.txt, 푸티지에서:edit_notes.hook_on_screen에서 프레임 0에 훅 카드(3~5단어, 약속이지 답변이 아님);graphics.json카드는 필요한 비트용이며sources.txt에 있는 수치만 사용; 라인 또는 말한 단어에 고정된cues(고정 시간이 아님); 동기가 있는 B-롤 컷어웨이(설명하는 단어에서 또는 표정이나 제스처 직후); 한 프레임에서 측정된framing.face_x/eye_y; 퇴장을 위한exit_tail.vedit.py mg-preview <slug>로 그래픽을 스틸로 미리 봅니다. - Build.
vedit.py build <slug> plan은 즉시 실행되며 컷 요약을 출력합니다.build cues는 배치할 수 없는 큐를 나열합니다(수정하십시오, 무시하지 마십시오).build cut과scripts/cut_check.py를 깨끗해질 때까지 반복하고, 썸네일을 만든 후(9단계) 포스터 프레임이 굽혀지도록 한 다음build all을 실행합니다. 빌드가 적용하는 규칙은references/edit-rules.md에 있습니다. - Gate.
vedit.py gate <slug>. 라인이 두 번 읽힌 경우, 남아 있는 더듬거림이나 버려진 시작, 단어 없는 음성 에너지(숨은 재읽기), 컷을 가로지르는 반복 또는 건너뜀이 있는 경우(두 모델이 개별적으로 들음), 컷에서 드롭된 테이크의 잘못된 단어, 소리 위에 끝나는 컷, (멀티카메라이고gaze.json이 있는 경우) 잘못된 카메라에서 실패합니다. 원인을 수정하고, 다시 빌드하고, 다시 게이트를 통과하십시오. 그런 다음 사람 대리 검사를 수행합니다. 렌더링의 콘택트 시트를 보고, 모든 자막을 읽고(vedit.py captions <slug>), 변경한 각 라인에 대해 무엇이 있었고 무엇이 유지되었는지 기록합니다. - Cover.
vedit.py frames <slug> --every 5로 콘택트 시트를 만듭니다. 눈 맞춤, 따뜻한 표정(말하는 중간이 아닌), 선명한 초점, 스토리를 말해주는 소품이 있는 프레임을 선택합니다.cover.frame과 한두 개의variants(2~4단어, 크게, 하나의 강조 단어, 평범하고 진실되게)를 설정한 다음vedit.py cover <slug>를 실행합니다. 모든 텍스트 상자가 그리드 안전 사각형과 얼굴에 대해 확인되고, 프로필 그리드가 표시할 내용을 보여주는grid_tiles.jpg를 기록합니다. - Review. 렌더링의 콘택트 시트, 썸네일, SRT, 컷 목록을
review-loop스킬에 전달합니다. 화면의 수치는 신뢰하지 않고sources.txt와 대조됩니다. - Deliver and release.
vedit.py deliver <slug>는 비디오, SRT, 썸네일, 컷 목록(모든 라인: 테이크, 소스 범위, 트림, 이유가 있는 모든 변경 사항), QA 보고서, 롱폼의 경우youtube-chapters.txt를content/<date>-<slug>/video/에 기록합니다.vedit.py release <slug> --to <folder>는 비디오, SRT, JPG 썸네일을 하나의 파일 이름으로 복사하며, 이는 스케줄러와 YouTube가 기대하는 형식입니다.
배송 전 체크리스트
사람에게 인계할 때 항상 다음을 포함합니다.
- 게이트 PASS, 신선함(렌더링보다 최신).
- 최종 렌더링에서 측정된 립싱크:
scripts/lipsync.py build/final.mp4 <t0> <t1>을 두세 개의 얼굴 대 카메라 구간에서 실행, 각각 ±40ms 이내. - 자막 확인 읽음(
vedit.py captions <slug>,vN-caption-check.txt로 전달): FIX 항목이 타당해 보이고 모든 CHECK가 사람이 들을 라인으로 명명됨. - 런타임 및 음량 명시.
- 선택한 테이크에 대한 모든 변경 사항과 이유, 들어볼 가치가 있는 라인.
- 썸네일 A와 B 비교, 그리드 미리보기.
- "아무것도 게시되거나 예약되지 않았습니다."
- "제가 들을 수 없으니, 배포 전에 들어보십시오."
적용 방법
- 스크립트 없음? 먼저 전사합니다(
prep가 두 전사본을 만듦). 전사본을 한 줄에 한 문장으로 정리하고script.txt로 저장한 후takes를 실행합니다. - 다른 외관: 모든 시각적 요소는
project.json의brand(색상, 폰트)와cover.wordmark(선택적 작은 이름표)를 읽습니다. 스크립트가 아닌 여기서 변경하십시오. - 다른 철자:
captions.localeen-GB(기본값) 또는en-US. - 느린 기계:
project.json에서"whisper": {"large": "small.en", "medium": "base.en"}로 설정하면 정확도 대신 속도를 얻습니다. 게이트는 여전히 실행됩니다. - 규제 산업:
## Compliance의 필수 화면 문구를 그래픽이나 엔드 카드에 넣고, 모든 화면 수치를sources.txt로 유지합니다. - 새 그래픽 템플릿:
scripts/mg/kit.html에 추가하고references/project-config.md에 문서화합니다. - 학습: 사람이 게이트가 놓친 건너뛰기나 반복을 보고하면 비디오를 수정하기 전에 사례를 기록하고, 배운 내용을
brand/performance-learnings.md에 추가합니다. SRT는 자신의 목소리로 전사되므로voice-loop스킬이 배울 수 있습니다.
알려진 한계
- 테이크 파인더는 문구를 많이 변경하는 재시작을 놓칠 수 있습니다. 게이트의 재읽기 규칙이 최후의 보루입니다.
nin또는 트림 변경 후build/edl.json을 읽고 건드린 모든 이음새를 확인하십시오. - 잘못된 단어 검사는 유지된 테이크의 가장자리 단어를 텍스트로 일치시키므로, 버려진 테이크의 단어가 유지된 테이크의 첫 단어처럼 들리면 "애드립" 노트로 통과할 수 있습니다. 각 노트를 수동으로
build/edl.json을 통해 소스 시간에 매핑하십시오. - 게이트에 자동 립싱크 검사가 없습니다. 모든 최종 렌더링에서
lipsync.py를 실행하십시오. - 멀티카메라 촬영의 카메라 선택은
gaze.json을 제공하지 않는 한 수동입니다(picks의"cam").references/multicam-and-long-form.md를 참조하십시오. - 단어별 "노래방" 스타일 자막은 기본으로 제공되지 않습니다. 아이디어로 제안할 수 있지만, 요청 없이 자막 스타일을 변경하지 마십시오.
이 스킬의 파일
| 파일 | 열 때 |
|---|---|
references/project-config.md | project.json, graphics.json, 큐, 썸네일 변형 또는 선택 편집 시 |
references/edit-rules.md | 컷, 자막, 그래픽 또는 썸네일 판단 시 |
references/whisper-pitfalls.md | 테이크, 트림 및 게이트 노트 확인 시 |
references/style-notes.md | 편집 안무(샷 버라이어티, 컷어웨이, 훅 카드, 썸네일) 시 |
references/multicam-and-long-form.md | 두 번째 카메라, 드론, 16:9 롱폼, 챕터 관련 시 |
references/audio-and-sync.md | 나쁜 오디오, 늦은 오디오, 배경 소음, 음량 관련 시 |
references/project-template.json | 시작 project.json |
setup.sh, vedit.py doctor | 기계에서 처음 실행 시 |
더 알아보기
예제가 포함된 더 긴 가이드는 https://builtnotboosted.com/skills/video-editing 에 있습니다.