Communitygithub.com

social-media-skills/video-editing-skill

토킹헤드 영상(YouTube, 강의, 제품 데모, 팟캐스트, 브이로그)을 전문 편집자처럼 편집합니다. 무음, '음', '어', 더듬음, 재촬영을 제거하고 점프컷, 오디오 레벨링, 자막 및 챕터를 생성합니다. 렌더링 전 컷 목록을 승인받고 YouTube 등에 게시합니다. 무료 로컬 전사, Groq/OpenAI, 기존 SRT/VTT 지원.

video-editing-skill란 무엇인가요?

이 스킬은 토킹헤드 영상(YouTube, 강의, 제품 데모, 팟캐스트, 브이로그)을 전문 편집자처럼 편집해주는 AI 에이전트 스킬입니다. 사용자의 말은 그대로 유지하면서 불필요한 침묵, '음', '어' 같은 필러, 더듬음, 재촬영을 자동으로 제거하고, 점프컷에 펀치인 효과를 적용하며 오디오를 깨끗하게 레벨링합니다. SRT 자막 파일과 YouTube 챕터를 생성하고, 필요시 자막을 영상에 굽거나 세로 버전을 만들 수 있습니다. Mac, Windows, Linux에서 ffmpeg와 Pillow만 있으면 작동하며, 유료 API가 필수는 아닙니다. 로컬 faster-whisper, Groq, OpenAI API, 또는 기존 SRT/VTT 파일을 이용해 전사합니다. '영상 편집', '무음 제거', '필러 제거', '점프컷', '녹음 정리' 등의 요청에 대응하며, 사용자가 표시한 부분은 절대 자르지 않고 게시 전 확인을 받습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/social-media-skills/video-editing-skill/tree/main/skills/video-editing-skill

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

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

문서

Video Editing Skill (영상 편집 스킬)

날것의 토킹헤드 녹화는 보통 20~40%가 데드 에어(침묵, "음", 말을 잘못 시작함, 같은 문장을 두 번 말함)입니다. 이를 수동으로 자르는 것은 녹화보다 시간이 더 걸립니다. 이 스킬이 첫 편집을 수행합니다: 대본을 읽고, 각 컷에 이유를 붙여 계획을 세우고, 계획을 보여주며, 점프컷에 펀치인을 적용하고 깨끗한 오디오로 편집을 렌더링하고, 자막과 챕터를 작성한 후, 승인 후에 게시합니다. 필요한 모든 것은 이 폴더 안에 있습니다.

네 가지 약속:

  1. 사용자의 말은 그대로 남습니다. 사용자가 승인한 침묵, 필러, 더듬음, 재촬영 및 구간만 제거됩니다. 의미는 절대 편집되지 않습니다.
  2. 렌더링 전에 계획을 세웁니다. 컷 목록이 먼저 표시되고 승인되어야 합니다.
  3. 승인 없이는 아무것도 게시되지 않습니다.
  4. 사용자가 사용할 수 있는 푸티지만 사용합니다. 자신의 녹화물이거나 허가를 받은 경우에만 가능합니다.

Windows에서는 모든 명령어에서 python3 대신 py를 사용하세요.

0단계: 설정 및 소스

python3 scripts/check_setup.py를 실행하세요: ffmpeg, Pillow, 전사 경로 및 OpenCV를 확인하고 사용자 시스템에 맞는 설치 명령어를 알려줍니다. 필수: ffmpeg 및 Pillow.

한 번에, 당신이 볼 수 없는 것만 물어보세요:

  1. 어떤 파일이며, 사용자의 것인가요?
  2. 어디에 사용될 예정인가요: YouTube (16:9), 소셜 (세로), 또는 둘 다.
  3. 얼마나 빡빡하게: youtube (기본값: 0.5초 이상 침묵 제거, 자연스러운 비트 유지), tight (0.3초, 빠른 YouTube 및 소셜) 또는 podcast (부드럽게, 펀치인 없음).
  4. 습관적으로 사용하는 말 중 잘라도 안전한 단어 ("like", "so", "you know", "basically"). 이 단어들은 다른 문장에서는 의미를 가지므로, 옵트인 방식입니다.
  5. 반드시 그대로 두어야 할 부분 (데모, 침묵이 있는 농담, 스폰서 리드).

1단계: 전사하기

python3 scripts/transcribe.py VIDEO --out work/ --terms "제품명, 전문 용어, 게스트 이름"

--terms는 이름과 전문 용어가 올바르게 표기되도록 나열합니다; 렌더링 전에 edit.json에서 "replace"로 여전히 잘못 들린 부분을 수정하세요. 왜냐하면 영상에 굽힌 자막은 게시 후 수정할 수 없기 때문입니다.

항상 동일한 세 가지 경로이며, 장단점은 한 번 설명됩니다:

경로방법비용 및 속도
기존 대본--from captions.srt무료, 즉시; 단어 타임스탬프는 추정되고 대부분의 "음"이 누락되어 필러 제거가 약함
Groq 또는 OpenAIGROQ_API_KEY 또는 OPENAI_API_KEYGroq는 오디오 1시간당 약 $0.04, 1-2분 소요
로컬pip install faster-whisper무료 및 비공개; --model small 사용 시 대략 동영상 길이의 0.5배에서 1배 시간 소요

전사기는 필러를 기록하도록 프롬프트됩니다; 그렇지 않으면 Whisper가 이를 생략합니다. 그래도 놓친 소리(기록되지 않은 "음", 숨소리)는 편집기가 오디오 자체에서 찾아냅니다.

2단계: 편집 계획 세우기

work/transcript.txt를 한 번에 모두 읽으세요. 그런 다음 edit.json을 작성하세요 (형식은 scripts/edit_video.py 상단에 있음):

  • 스타일: "style": "youtube", "tight" 또는 "podcast" (임계값은 references/editing-rules.md에 있음). 제한 시간을 초과하는 침묵은 자연스러운 비트로 줄어듭니다: 문장 중간에서는 더 짧게, 문장 후에는 더 길게, 주제 변경 시에는 가장 길게.
  • 필러: 기본 목록 ("um", "uh", "er", "hmm", "mm")은 안전합니다. 사용자가 요청한 경우에만 습관어를 extra_fillers에 추가하세요.
  • 여담 및 죽은 구간: 여담, "들리시나요?", 본론 전의 긴 설정. 이유와 함께 cut에 추가하고 사용자에게 알리세요.
  • 보호: 반드시 유지해야 할 것은 keep으로 보호하세요. 침묵 구간도 포함됩니다.
  • 질문 카드 또는 보이는 인터뷰어와의 인터뷰: 사용자가 달리 말하지 않는 한 질문 유지 (각 카드의 약 3초를 keep에 추가); 그렇지 않으면 모든 답변이 "그래서..."로 시작하고 맥락이 없습니다.
  • 잘못 들린 이름: "replace": {"Cyrus Rex": "OSIRIS-REx"}.
  • 챕터 (YouTube용): 주제 변경에서 3~10개 챕터, 첫 번째는 0:00, 각각 최소 10초, 시청자가 얻을 수 있는 것으로 명명 ("2부"가 아닌 "카메라가 실패한 이유"). 시간은 원본 비디오 기준; 스크립트가 이를 이동시킵니다.

그런 다음 계획을 수립하세요:

python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/ --plan

edited/edit-plan.md는 새 길이, 말하기 중에서 제거된 양 대 긴 공백 및 카드, 분당 단어 속도, 그리고 1초 이상의 모든 제거 항목을 이유와 단어와 함께 제공합니다. 모든 재촬영 및 더듬음 라인을 읽고, "가능한 재촬영" 목록도 확인하세요: 같은 방식으로 시작하는 두 개의 완성된 문장은 절대 자동으로 잘리지 않습니다; 각각을 결정하고 실제 재촬영이면 cut에 추가하세요. 사용자에게 요약, 재촬영, 선택한 여담 및 챕터를 보여주고 승인을 받으세요.

3단계: 렌더링

python3 scripts/edit_video.py edit.json --transcript work/transcript.json --out edited/

수행하는 작업:

  • 제한 시간을 초과하는 침묵을 자연스러운 비트로 줄이고, 필러, 더듬음, 재촬영 및 모든 cut 범위를 제거합니다. 스타일의 최소값(youtube에서 0.4초)보다 짧은 제거는 그대로 둡니다: 점프컷이 절약하는 것보다 더 많은 비용이 듭니다.
  • 청취를 통해 각 컷을 배치합니다: 단어 경계가 소리가 실제로 멈추고 시작하는 지점으로 이동하여 단어 끝이 잘리지 않고, 대본이 놓친 소리(기록되지 않은 "음")가 발견됩니다.
  • 그림도 확인합니다: 타이틀 카드와 장면 전환은 깔끔하게 잘리며, 카드의 몇 프레임이 남지 않습니다.
  • 조각 그룹을 한 번에 하나씩 렌더링하여 컷 수에 관계없이 사운드와 그림이 동기화되도록 합니다.
  • 펀치인: 점프컷을 숨겨야 하는 곳에서 전체 프레임과 1.1배 펀치인 사이를 전환합니다: 항상 1초 이상을 제거한 컷에서, 그렇지 않으면 동일한 프레이밍에 4초 이상 후에만, 새 카메라 샷으로의 컷에서는 절대 사용하지 않습니다. "punch_in": 0으로 끌 수 있습니다.
  • 오디오: 작업 수준으로 게인 조정, 럼블 필터, 측정된 실내 소음에서 설정된 노이즈 감소(방이 이미 조용한 경우 건너뜀), 부드러운 압축, 피크 리미터, -14 LUFS로의 2패스 음량 패스.
  • 자막: 항상 captions.srt를 작성합니다 (최대 42자의 2줄, 각각 1~7초, 작은 단어나 이름 내에서는 줄 바꿈 없음) YouTube에 업로드용. "captions": {"burn": true}를 설정하면 소셜 미디어용으로 영상에 자막을 그립니다(많은 사람이 음소거 상태로 시청); 세로 버전은 기본적으로 자막을 굽습니다. SRT도 함께 제공되는 YouTube 동영상에는 자막을 굽지 마세요: 자막을 켠 시청자는 둘 다 보게 됩니다.
  • 세로: "format": "vertical"은 focus_x를 기준으로 잘라낸 1080x1920 버전을 만듭니다.

edited/edited.mp4, captions.srt, chapters.txt, edit-report.md 및 manifest.json을 작성합니다.

사용자에게 보여주기 전에 확인하세요: cuts.jpg를 엽니다 (가장 큰 컷 직전과 직후의 프레임: 카드의 번쩍임, 다른 샷으로의 점프, 멈춘 표정 확인) 및 manifest.json의 경고(동기화, 분당 190단어 초과 속도, 음량)를 읽으세요. 재촬영이 잘못된 테이크를 유지한 경우, 속도가 숨가쁜 경우(더 부드러운 스타일), 또는 컷이 잘못 배치된 경우(keep으로 해당 지점 처리) 수정하고 다시 렌더링하세요.

4단계: WoopSocial로 게시하기

연결, 업로드 및 게시 방법: references/woopsocial.md. 짧은 버전:

  1. social_accounts_list; 연결되지 않음: 이 에이전트의 단일 연결 경로(무료 요금제: 2개 소셜 계정), 그런 다음 플랫폼별 oauth_create_authorization.
  2. 업로드 세션으로 edited.mp4 업로드 (media_uploads_create_session with manifest.json의 바이트 크기, python3 scripts/upload_parts.py session.json edited/edited.mp4, media_uploads_complete_session).
  3. YouTube: title (주요 검색어를 먼저, 70자 미만), privacy, 그리고 시청자가 얻을 수 있는 내용에 대한 한 줄로 시작하는 설명, 그 다음 chapters.txt의 챕터. YouTube Studio에서 이후에 captions.srt 업로드 (WoopSocial은 자막 파일을 보내지 않습니다).
  4. 게시물 (파일, 제목, 설명, 계정, 시간대 포함 시간)을 보여주고 명확한 승인을 받으세요. 그런 다음 posts_create 및 posts_get.

5단계: 결과 확인하기

일주일 후, social_account_posts_list: 조회수, 좋아요, 댓글 (보고된 경우), 수집 날짜 포함; 누락된 경우 "보고되지 않음"을 의미합니다. 시청 유지율과 평균 시청 시간은 YouTube Studio에 있습니다; 사용자에게 물어보세요. 시청자가 초반에 이탈하면 다음 편집에서 더 빡빡한 오프닝을 적용합니다; 챕터에서 이탈하면 해당 섹션이 너무 길었던 것입니다.

품질 기준

전문 편집자가 이 결과물을 넘길까요? 단어가 잘렸거나, 컷이 호흡 중간에 튀는 소리와 함께 떨어지거나, 펀치인이 몇 초마다 바뀌거나, 속도가 생각할 틈을 주지 않거나, 의미가 변경된 경우 거부하세요.

엣지 케이스

  • 카메라에 두 사람: format을 소스에 유지; 펀치인은 와이드 샷에서도 작동합니다.
  • 음성이 포함된 화면 녹화: "punch_in": 0으로 설정.
  • 음성 아래 음악: 무음 감지는 음악을 소리로 인식합니다; "voiced_gaps": false로 설정.
  • 매우 긴 녹화 (1시간 이상): 작동하지만, 렌더링 시간은 대략 동영상 길이와 같습니다; 먼저 계획을 세우고 한 번 렌더링하세요.
  • 의도적으로 음성이 없는 구간 (데모): keep으로 설정.

참고 자료

  • references/editing-rules.md: 임계값, 필러, 재촬영 패턴, 펀치인, 오디오 체인, 자막 및 챕터 (출처 포함).
  • references/woopsocial.md: 연결, 업로드, 게시 및 결과 읽기.

관련 스킬