Communitygithub.com

비디오 편집

ffmpeg와 Whisper를 사용하여 촬영된 인물 인터뷰 영상을 릴리스 가능한 세로형 숏츠(1080x1920)와 16:9 유튜브 롱폼으로 편집합니다. 각 스크립트 라인의 깔끔한 읽기 한 번만 유지하고, 단일 샷을 남기지 않으며(펀치인, 리프레임, B-롤, 모션 그래픽), 완성된 오디오에서 자막을 생성하고, 음량을 -14 LUFS로 정규화하며, 실제 프레임 썸네일을 만들고, 렌더링을 재전사하여 통과할 때까지 전달을 거부하는 QA 게이트를 실행합니다.

비디오 편집란 무엇인가요?

이 스킬은 `vedit.py`라는 명령줄 도구를 사용하여 원본 영상을 완성된 비디오, SRT 자막 파일, 썸네일로 변환하는 포괄적인 비디오 편집 워크플로우입니다. ffmpeg, Whisper, Playwright를 기반으로 구축되었으며, 클린 테이크 선택, 샷 버라이어티, 그래픽 및 B-롤 배치, 자막, 음량, 썸네일, 최종 QA를 포함한 전체 편집을 자체적으로 처리합니다. 이 스킬은 `video-scripting` 스킬의 스크립트와 편집 노트, `brand/brand-profile.md`의 브랜드 정보, `image-generation` 스킬의 정적 이미지, `review-loop` 스킬의 독립적 검토, `scheduling` 스킬의 게시 일정에 의존합니다. Claude Code, Cursor, Codex와 같은 AI 에이전트에서 사용할 수 있으며, 사용자가 '내 영상 편집해줘', '이 클립을 잘라줘', '리테이크 제거해줘', '버벅임 편집해줘', '자막 추가해줘', '이 영상으로 숏츠 만들어줘', '두 카메라 싱크 맞춰줘', '썸네일 만들어줘'라고 요청하거나 원본 영상과 스크립트를 건넬 때 활성화됩니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/builtnotboosted/built-not-boosted-skills/tree/HEAD/plugins/built-not-boosted/skills/video-editing

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

비디오 편집은(는) 무엇을 하나요?

이 스킬은 누군가가 카메라를 보고 말하는 원본 영상을 ffmpeg, Whisper, Playwright 기반의 번들 명령줄 도구(vedit.py)를 사용하여 완성된 비디오, 일치하는 SRT 자막 파일, 썸네일로 변환합니다. 테이크 선택, 클린 컷, 샷 버라이어티, 그래픽 및 B-롤 배치, 자막, 음량, 썸네일, 최종 QA 등 편집 전반을 자체적으로 처리합니다. 편집할 스크립트와 편집 노트는 video-scripting 스킬, 색상, 글꼴, 규정 준수 텍스트는 brand/brand-profile.md, 정적 이미지는 image-generation 스킬, 독립적 검토는 review-loop 스킬, 게시 일정은 scheduling 스킬에 의존합니다. 여기서는 아무것도 게시하거나 예약하지 않습니다.

권한 순서: brand-profile.md가 브랜드 상수 및 규정 준수 문구에 대해 우선하며, 이 스킬은 방법론을 소유합니다.

시작하기 전에

  1. 마케팅 작업 공간(기본값 marketing/)을 찾습니다. 없으면 한 줄로 말하고 brand-setup 스킬을 제안합니다. 도구는 중립적인 모양으로도 작동합니다.
  2. 해당 콘텐츠 폴더 content/<yyyy-mm-dd>-<slug>/를 찾습니다. script.txt(한 줄에 한 문장; [대괄호 안의 노트]와 [CHAPTER N • 제목] 마커는 절대 말하지 않음)와 이상적으로는 edit-notes.txt(HOOK ON SCREEN:, COVER:, OUTCOME: 라인) 및 sources.txt(화면에 표시되는 유일한 수치)가 있어야 합니다. 스크립트 없이 촬영한 경우 먼저 전사하고 정리된 전사본을 스크립트로 사용합니다.
  3. 브랜드 프로필의 ## Visual identity, ## Compliance, ## Boundaries, ## CTA & contact 섹션을 읽고, 그래픽 및 썸네일의 단어와 표현을 위해 brand/voice-learnings.md를 읽습니다.
  4. 도구가 준비되었는지 확인합니다: python3 <skill>/vedit.py doctor. 누락된 것이 있으면 bash <skill>/setup.sh를 한 번 실행합니다(ffmpeg, Node, Python venv, Whisper, Playwright, 폰트). Whisper의 large 모델은 약 3GB이며 랩톱 CPU에서 클립 길이의 약 1~2배 시간이 걸리므로 긴 단계는 백그라운드에서 시작합니다.

표준

  1. 각 라인의 깔끔한 읽기 한 번. 완성된 비디오에는 각 라인의 읽기가 정확히 한 번 포함됩니다. 다시 시작, "그, 그", 포기한 테이크의 반쪽 문장, 잘린 단어 끝이 없어야 합니다. 이는 선택 사항이 아닌 차단 조건입니다. 자연스러운 "음" 하나는 남을 수 있지만(사람은 자신처럼 들려야 함), 오프닝 라인에는 절대 없어야 하며 한 라인에 두 번도 안 됩니다.
  2. 작성된 스크립트가 아닌 실제 말한 대로 따릅니다. 사람들은 말하면서 라인을 개선합니다. 실제 표현 변경은 테이크 파인더에서 누락되거나 낮은 커버리지 라인으로 나타납니다. 이는 실수가 아닙니다. 그들의 버전을 유지하고, 진짜 더듬거림과 다시 시작만 잘라내며, 스크립트에서 작성된 그래픽이나 훅 카드를 실제로 말한 내용에 맞게 수정합니다.
  3. 비즈니스에 도움이 되는 비트를 유지합니다. 스크립트에 초반 "내가 누구인지" 라인이나 마무리 콜투액션이 있으면 그 자리에 유지합니다.
  4. 절대 단일 평면 샷을 남기지 않습니다. 모든 컷에서 와이드와 타이트를 번갈아 사용하고, 긴 읽기 내에서 리프레임하고, B-롤로 컷어웨이하고, 모션 그래픽으로 스토리를 전달합니다. 말하는 사람이 중심이지만 전체 비디오가 되어서는 안 됩니다.
  5. 자막은 완성된 오디오에서 생성되며 스크립트와 대조되어 실제로 들리는 내용과 정확히 일치합니다. 숏츠에는 자막이 영상에 포함되고, 롱폼에는 SRT만 제공됩니다.
  6. 음량 -14 LUFS, 트루 피크 -1.5 dB로 모든 플랫폼에 적합합니다.
  7. 실제 프레임 썸네일은 그리드 안전 사각형 안에 헤드라인이 포함되며, 한두 가지 변형으로 제공됩니다.
  8. QA 게이트가 통과되어야 전달됩니다. 렌더링을 다시 전사하고, 각 컷을 개별적으로 듣고, 모든 컷이 조용한 부분에서 끝나는지 확인합니다. deliver는 신선한 PASS 없이 거부합니다.
  9. 귀에 대해 솔직합니다. Claude는 들을 수 없습니다. 게이트는 단어와 에너지를 확인할 뿐, 톤, 단어 아래의 기침, 나쁜 룸 톤 스플라이스는 확인하지 못합니다. 인계 시마다 이를 말합니다.

방법

모든 명령은 python3 <skill>/vedit.py <command> <slug>입니다. project.json을 수동으로 편집하기 전에 references/project-config.md를 읽으십시오.

  1. 먼저 모든 것을 수집합니다. 배치의 모든 클립을 나열합니다. 두 번째 카메라는 소리로 페어링하고(scripts/sync_cams.py; 실제 매치는 약 0.4~0.55, 비매치는 약 0.03 점수), 드론 같은 무음 카메라는 움직임과 타임스탬프로 동기화합니다(scripts/sync_cams_visual.py). 모든 사진과 짧은 클립의 콘택트 시트를 만들고 B-롤로 사용할 수 있는 것을 기록하며, 폴더에 없는 카메라를 언급하면 즉시 물어봅니다. 자세한 내용은 references/multicam-and-long-form.md를 엽니다.
  2. Init. vedit.py init <slug> --raw <cameraA clip> --pack <content folder> [--long] [--cam B=<clip>]. 스크립트를 복사하고, 편집 노트를 읽고, 브랜드 프로필의 팔레트와 폰트를 project.json에 매핑합니다. 그런 다음 vocab에 스크립트의 모든 고유 명사(발표자 이름 포함)를 채웁니다.
  3. Prep (느림, 백그라운드): vedit.py prep <slug>. 카메라의 자체 프레임 속도로 업라이트 마스터, 16kHz 오디오, 추가 카메라 동기화, 두 개의 전사본(large-v3 정확 전사 + medium.en)을 만듭니다. HDR 영상, 잘못된 비율의 영상, 블루투스 마이크의 통화 품질 오디오에서 중단됩니다. references/audio-and-sync.md에 복구 방법이 있습니다.
  4. Takes. vedit.py takes <slug>는 음성을 텔레프롬프터처럼 스크립트에 정렬합니다. 역방향 점프는 재시작이므로 각 라인의 모든 시도가 점수가 매겨진 테이크가 됩니다. 두 번째 청취는 각 테이크를 개별적으로 다시 들어 필러, 반복, 이중 읽기를 찾습니다. picker/takes_report.txt를 읽으십시오. 그런 다음 신뢰하기 전에 확인하십시오. references/whisper-pitfalls.md를 여십시오. Whisper는 반복되는 거짓 시작을 놓치고, 마지막 단어를 생성하며, 익숙하지 않은 용어를 분할하기 때문입니다. 제안된 재시작 트림은 에너지 맵이 두 번째 음성 폭발을 보여주지 않는 한 그대로 신뢰합니다.
  5. Picks. 사람이 브라우저에서 선택하거나(vedit.py picker <slug>를 백그라운드에서 실행한 후 http://localhost:8765 열기), Claude가 선택하도록 요청하면 직접 picker/picks.json을 작성하고 기계 선택과 다른 모든 변경 사항에 note를 추가합니다. 빨간색 또는 주황색 라인과 그 이유를 알려줍니다. 인접한 라인과 같은 실행에서 나온 읽기를 선호합니다. 컷이 없이 흐릅니다. 기계 선택으로 전달하지 마십시오.
  6. 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>로 그래픽을 스틸로 미리 봅니다.
  7. Build. vedit.py build <slug> plan은 즉시 실행되며 컷 요약을 출력합니다. build cues는 배치할 수 없는 큐를 나열합니다(수정하십시오, 무시하지 마십시오). build cut과 scripts/cut_check.py를 깨끗해질 때까지 반복하고, 썸네일을 만든 후(9단계) 포스터 프레임이 굽혀지도록 한 다음 build all을 실행합니다. 빌드가 적용하는 규칙은 references/edit-rules.md에 있습니다.
  8. Gate. vedit.py gate <slug>. 라인이 두 번 읽힌 경우, 남아 있는 더듬거림이나 버려진 시작, 단어 없는 음성 에너지(숨은 재읽기), 컷을 가로지르는 반복 또는 건너뜀이 있는 경우(두 모델이 개별적으로 들음), 컷에서 드롭된 테이크의 잘못된 단어, 소리 위에 끝나는 컷, (멀티카메라이고 gaze.json이 있는 경우) 잘못된 카메라에서 실패합니다. 원인을 수정하고, 다시 빌드하고, 다시 게이트를 통과하십시오. 그런 다음 사람 대리 검사를 수행합니다. 렌더링의 콘택트 시트를 보고, 모든 자막을 읽고(vedit.py captions <slug>), 변경한 각 라인에 대해 무엇이 있었고 무엇이 유지되었는지 기록합니다.
  9. Cover. vedit.py frames <slug> --every 5로 콘택트 시트를 만듭니다. 눈 맞춤, 따뜻한 표정(말하는 중간이 아닌), 선명한 초점, 스토리를 말해주는 소품이 있는 프레임을 선택합니다. cover.frame과 한두 개의 variants(2~4단어, 크게, 하나의 강조 단어, 평범하고 진실되게)를 설정한 다음 vedit.py cover <slug>를 실행합니다. 모든 텍스트 상자가 그리드 안전 사각형과 얼굴에 대해 확인되고, 프로필 그리드가 표시할 내용을 보여주는 grid_tiles.jpg를 기록합니다.
  10. Review. 렌더링의 콘택트 시트, 썸네일, SRT, 컷 목록을 review-loop 스킬에 전달합니다. 화면의 수치는 신뢰하지 않고 sources.txt와 대조됩니다.
  11. 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.locale en-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.mdproject.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 에 있습니다.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

builtnotboosted/image-generation

Produces finished social images with any image model (Google Gemini image, "Nano Banana", as the worked example) - feed statics, carousel slides, short-form video covers, YouTube and article thumbnails, local listing cards and animated statics. Bakes the headline into the scene instead of pasting text on top, keeps text inside the profile-grid safe zone, locks the likeness of real people to their reference photos, hits exact platform sizes, writes alt text and re-judges every re-roll on the filed file. Use when someone says "make an image for this post", "create a thumbnail", "make a cover from my video", "design a carousel", "animate this static", "the image model won't do 4:5", "my headline is getting cut off in the grid", or when a content pack needs its visuals.

builtnotboosted/review-loop

The quality gate every piece of content passes before it is filed, scheduled or posted. Runs a self-critique, then an independent review by a fresh subagent that sees only the finished work and the criteria (never the builder's reasoning), then fix and re-judge until there is a clean pass. Covers what to do when a piece can't pass unattended (hold, flag, ship the rest). Use when someone says "review this", "check this before it goes out", "QA the pack", "is this ready to post", "get a second pair of eyes on this", "proofread the captions", or when any other Built Not Boosted skill hands work over for checks.

builtnotboosted/scheduling

Gets finished posts into a social media scheduler (or posted by hand) safely. Queue-only with explicit timezone offsets, live dedup against scheduled and already-published posts, media readiness checks, correct post types (shorts, reels, carousels, first comments, manual-posting reminders), alt text, a link gate that sends copy back for a rewrite rather than stripping it, and confirmation before anything goes live. Writes and keeps a scheduling manifest for each pack. Works with any scheduler; Publer is the worked example. Use when someone says "schedule this", "queue these posts", "put this in Publer", "book in this week's content", "post this on Tuesday at 7", "move that post", "what's already scheduled", or hands over a finished content pack to go out.

builtnotboosted/video-scripting

Writes video scripts that sound like the person who will say them, for shorts (Reels, TikTok, YouTube Shorts) and long-form YouTube. Warm hook rather than a shout, who-am-I and follow early, a retention shape that delays the answer, a soft earned close, length that follows the story, real-problem substance, reactive scripts for news and data releases. Output is teleprompter-ready (think-breaks, shot reminders) with short edit notes for the video-editing skill. Use when someone says "write me a script", "script a reel about", "I need a short on", "plan a YouTube video", "turn this post into a video", "react to today's news on video", "what should I say on camera", or before a filming session.

관련 스킬