Communitygithub.com

talking-head-short — 마스터 편집기

세로형 토킹헤드 숏 비디오(Reels, TikTok, Shorts)를 위한 마스터 편집기입니다. 원본 클립 하나를 받아 자동 전사하고, 불필요한 부분과 무음을 제거하며, 장르를 감지한 후 사용자에게 스타일 옵션을 묻고, 최종적으로 황금비율 자막, 의미 기반 모션 그래픽, 라이선스 B-roll, 배경음악, 효과음, 폰트, 색보정 및 QA가 적용된 전문적인 편집 결과물을 제공합니다.

talking-head-short — 마스터 편집기란 무엇인가요?

이 스킬은 사용자가 제공한 하나의 로우(raw) 토킹헤드 영상(예: 셀프헬프, 팟캐스트 클립, 코칭, 창업자 인터뷰, UGC, 설명 영상)을 분석하여 세로형 숏 비디오(Reels, TikTok, Shorts) 형식으로 자동 편집해주는 AI 에이전트용 마스터 편집기입니다. Claude Code, Cursor, Codex 등 명령어 기반 환경에서 실행되며, `spec.json` 파일을 통해 편집 계획을 세우고 수정합니다. 주요 기능으로는 자동 전사(Whisper 모델), 불필요한 부분 및 무음 제거, 24개 장르 기반 스타일 감지, 황금비율 자막 생성, 의미 기반 모션 그래픽, 라이선스 음악/SFX/폰트/B-roll 자산 다운로드, 색보정, 최종 QA 및 `final.mp4` 렌더링이 포함됩니다. 사용자는 스타일, 폰트, 색상 팔레트, 시각적 밀도, 배경음악, B-roll 사용 여부를 선택할 수 있으며, 에이전트는 자산 다운로드 실패 시 자동 대체 소스를 사용하거나 사용자에게 명확한 안내를 제공합니다. 이 스킬은 '바이럴'을 목표로 하는 토킹헤드 영상 편집 요청 시 특히 유용합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/uday629/talking-head-short-skill/tree/HEAD/talking-head-short

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

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

문서

Talking-Head Short — 마스터 편집기

간결한 답변을 작성하세요. 대본이나 긴 로그를 반복하지 마세요. 문제가 있으면 spec.json을 Edit 도구로 편집하고, 다시 작성하지 마세요. 모든 스크립트는 간결한 보고서를 출력합니다. 읽고, 조치하고, 다음 단계로 넘어가세요.

S=<이 스킬 디렉토리>/scripts, WD=<원본 파일 옆 작업 디렉토리>/ths_<이름>.

0. 설정 (머신/샌드박스당 한 번)

bash $S/setup.sh → 출력된 PY=를 사용하세요. PyPI에서 모든 것을 설치하며, 만약 기존 ffmpeg가 없으면 정적 ffmpeg도 포함됩니다. 모든 다운로드에는 자동 대체(fallback)가 있습니다. 샌드박스(claude.ai 코드 실행, 무료 또는 유료)는 일반적으로 HuggingFace, Mixkit 및 Google Fonts API를 차단하지만 GitHub는 허용합니다:

  • 전사 모델: HuggingFace → GitHub 미러 (whisper-base, 그 다음 whisper-tiny)
  • 음악/SFX: Mixkit → GitHub 미러 CC0 팩 (id는 pack:lofi_chill 형태)
  • 폰트: Google Fonts 저장소 → jsDelivr → GitHub 미러 OFL 팩 (32개 패밀리) → 시스템 폰트
  • B-roll: Mixkit → 없음 (카드 사용 또는 사용자에게 클립 업로드 요청) 설정에서 "네트워크 없음"이 출력되거나 pip가 실패하면: 샌드박스의 네트워크 이그레스(egress)가 꺼져 있습니다. 사용자에게 정확히 (한 번의 메시지로) 알리세요: "claude.ai → 설정 → 기능 → 코드 실행 → 네트워크 액세스: 모든 도메인 (또는 추가: pypi.org, files.pythonhosted.org, github.com, objects.githubusercontent.com, release-assets.githubusercontent.com, api.github.com, raw.githubusercontent.com, cdn.jsdelivr.net, huggingface.co, mixkit.co, assets.mixkit.co)으로 설정한 후 새 채팅을 시작하고 /talking-head-short를 다시 실행하세요." numpy/ffmpeg 없이 편집을 시도하지 마세요. 모든 소스가 실패하는 경우에만: 사용자에게 붙여넣은 대본 요청 → $PY $S/align_text.py $WD transcript.txt. 자산은 ~/.ths_assets에 캐시됩니다.

1. 분석

$PY $S/analyze.py RAW $WD 해상도, 시점(eye point), 정리된 길이, 자동 제거된 필러/더듬거림/재시작, CHECK(부드러운 필러, 낮은 신뢰도 단어, 긴 일시정지), 그리고 8단어마다 타임스탬프가 있는 TEXT를 출력합니다.

  • 직접 나쁜 테이크를 판단하세요. 잘못된 시작, 끝나지 않은 문장, "you know like yeah", "kind of" 등을 제거하세요. 수사적 반복은 유지하세요. --remove '[[s,e],...]'(소스 초)로 다시 실행하세요. 전사는 캐시됩니다.
  • $WD/frames.jpg는 시점이나 프레이밍이 의심스러운 경우에만 확인하세요.

2. 브리핑 (머릿속으로, 그런 다음 사용자에게 4줄)

다음을 작성하세요: 주제 · 핵심 메시지 · 감정 곡선(훅 → … → 페이오프) · 장르 행(NICHES에서) · 톤(차분함/균형잡힘/에너제틱) · 로우 프레이밍(와이드 또는 타이트). 그런 다음 $PY $S/style.py RAW "<niche>" --out $WD/style.json을 실행하세요. 이유와 함께 조정된 팔레트, 폰트, MG/B-roll/음악/SFX 방향 및 엄격한 노트를 제공합니다. references/craft.md(규칙)와 references/spec.md(스펙 형식)를 한 번 읽으세요.

3. 빌드 전에 물어보기 (절대 먼저 렌더링하지 않음)

AskUserQuestion을 사용할 수 있으면 사용하고, 그렇지 않으면 하나의 간결한 번호 매기기 메시지를 사용하세요. 매번 옵션 1을 추천하세요.

  1. 스타일: 감지된 장르 + 톤 (예: "Self-help · 차분-사색적") 대 1~2개의 대안.
  2. 폰트: 해당 행의 쌍 대 명확한 스타일 대비가 있는 2개의 대안 (산스 리드 + 세리프/이탤릭 키, 또는 볼드 산스 키 + 이탤릭 세리프 악센트).
  3. 팔레트: 영상에 적응된 행 팔레트 대 영상에서 추출한 팔레트 대 사용자가 제공하는 브랜드 색상.
  4. 시각적 밀도: 최소(자막 + 23개 카드) · 균형(자막 + 46개 카드/B-roll) · 풍부(더 많은 MG + B-roll).
  5. 음악: $PY $S/assets.py music "<mood>"에서 3개의 라이선스 후보 (id · 제목 · 태그), 또는 없음.
  6. B-roll: 예(문장과 일치하는 라이선스 스톡) / 아니오. 사용자가 이미 답변한 질문은 건너뛰세요. 답변을 기다리세요.

4. 자산 수집

  • 폰트: $PY $S/assets.py font "Family" ...
  • 음악, SFX, 비디오: assets.py music|sfx|video "<query>"를 실행하여 목록을 확인하고, assets.py get <kind> <id> $WD를 실행하여 가져오세요.
    • 톤별 SFX: 차분함 → "air woosh", "chime"; 균형 → "whoosh", "pop"; 에너제틱 → "swoosh", "impact" (한 번 사용).
  • 차단된 소스는 자동으로 대체됩니다(팩 id). assets.py pack은 전체 오프라인 CC0 팩을 나열합니다.

5. spec.json, 계획, 스타일프레임 작성

  1. $WD/spec.json(references/spec.md 참조)을 작성하세요: 말하는 순서의 자막, 오른쪽 절(clause)의 카드, 오디오.
  2. $PY $S/engine.py $WD --plan → 모든 ISSUE를 spec을 편집하여 수정하세요(비트를 짧게 하거나 병합하고, 카드 아래 자막을 옮기거나 제거), 그런 다음 ISSUE가 없거나 허용 가능한 것만 남을 때까지 다시 계획하세요.
  3. $PY $S/engine.py $WD --frames t1,...을 10~15개의 시간으로 실행하세요: 모든 카드 중간점과 끝−0.3초, 그리고 모든 자막의 끝−0.1초. $WD/styleframes.jpg를 확인하고 잘리거나, 복잡하거나, 정렬이 잘못되었거나, 팔레트에서 벗어난 것이 있으면 수정하세요.
  4. 사용자에게 스타일프레임을 한 줄("렌더링해도 될까요?")과 함께 보여주세요. 사용자가 지적한 것에 대해서만 반복하세요.

6. 렌더링, 믹싱, QA

  • bash $S/render.sh $PY $WD는 파트를 병렬로 렌더링하고 연결합니다 (노트북에서 비디오 1분당 약 5분). 명령어당 시간 제한이 있는 샌드박스에서는 $PY $S/engine.py $WD --render --part i/N을 파트당 한 번 실행하고, 그다음 --concat N을 실행하세요.
  • $PY $S/mix.py $WD → final.mp4 (음성 정리, 페이오프 정렬이 적용된 덕킹 음악, SFX, -14 LUFS).
  • $PY $S/qa.py $WD → qa_endframes.jpg를 확인하세요. 모든 비트와 카드 끝은 완료된 텍스트와 애니메이션을 보여야 합니다. 플래시 프레임은 없어야 합니다.
  • 파일 경로와 선택한 내용 및 이유에 대한 3줄을 제공하세요. 다운로드할 수 없었던 자산이 있다면 언급하세요.

비협상 조건 (이유: 각각 아마추어처럼 보이는 요소로 지적됨)

  • 자막이 절대 잘리지 않음. 리드(lead)가 키(key) 너비 이하이고 가까이 위치함. 두 가지 대비되는 폰트 스타일을 황금비율로 사용. 필러 단어만으로는 절대 자막을 만들지 않음.
  • 모션 그래픽은 의미를 보여주고, 장면 전환 전에 완료되며, 하나의 시각적 시스템을 유지함. 막대 인간이나 클립 아트 없음.
  • 부드러움: 이징(eased)되고 시선을 고정하는 줌 컷, 플래시 프레임 없음, 다양한 전환.
  • 색보정만 수행. 라이선스 자산만 사용(Mixkit / Google Fonts OFL), LICENSES.txt는 $WD에 보관.

관련 스킬