Go to file
hehihoho3@gmail.com 678d3f20e5 유튜브 구간 탭에 분석→추천→빌드 3단계 서버 흐름 추가, 옛 단일 엔드포인트 제거
붙여넣기 탭(Task 3)과 같은 구조로 /yt/analyze·/yt/stream/{aid}·/yt/build를
추가해 다운로드 전에 댓글 매칭 검토가 가능하게 한다. bg_analyze/bg_draft로
쪼개고 state["places"]/state["ranges_sec"]로 압축·원본 두 좌표계를 분리해
recommend.cuts_from_state에 넘겼다. 옛 /yt/comments·/youtube는 새 흐름이
대체하므로 삭제.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-05 11:48:08 +09:00
assets chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
capcut_agent cuts_from_state: sec를 압축 길이 기준으로 고정, 순환 임포트 주석 정정 2026-08-05 10:39:11 +09:00
docs/superpowers docs: 2~4단계 구현 계획 — 세 탭 모두 받아쓰기 후 댓글 매칭 2026-08-05 10:25:19 +09:00
server 유튜브 구간 탭에 분석→추천→빌드 3단계 서버 흐름 추가, 옛 단일 엔드포인트 제거 2026-08-05 11:48:08 +09:00
참고/ytcut chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
프롬프트 컷별 댓글 추천 프롬프트 파일 로더 구현 2026-08-04 11:50:12 +09:00
.gitignore chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
ARCHITECTURE.md 문서: 파이프라인 analyze/draft 분할과 컷별 댓글 추천 근거를 ARCHITECTURE.md에 반영 2026-08-04 17:46:06 +09:00
build_bg_template.py chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
build_jumpcut.py chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
build_letterbox.py chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
build_shortform.py chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
build_template.py chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
CLAUDE.md chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
README.md chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
requirements.txt chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
SETUP.md 문서 3개를 실제 동작에 맞게 고침 2026-08-04 14:16:45 +09:00
레이어_삐짐_수리.md chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
배경.png chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
숏폼_편집_지침서_v13.7_capcut2연동판.md chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
작업기록_2026-07-27~31.md chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00
캡컷_에이전트_구간합치기.bat chore: git 저장소 초기화 (기존 코드 스냅샷) 2026-08-04 11:36:05 +09:00

캡컷 에이전트 · 구간합치기 (v2)

유튜브 영상 → 무음컷 · 자막 · 배경 템플릿이 박힌 편집 가능한 CapCut 드래프트를 자동 생성하는 로컬 웹앱. 특히 한 URL의 여러 구간을 이어붙이고, LLM이 만든 편집안(컷+자막)을 JSON 붙여넣기로 한 번에 처리합니다.


1. 처음 실행 (이 PC)

  1. 캡컷_에이전트_구간합치기.bat 더블클릭
  2. 잠시 후 브라우저가 http://127.0.0.1:8001 로 자동으로 열림
  3. 이 검은 창은 켜두세요 (닫으면 서버가 꺼짐)

코드를 수정했으면 반드시 창을 닫고 .bat 을 다시 실행해야 반영됩니다.


2. 세 가지 입력 방법 (탭)

📋 붙여넣기 (기본 탭) — 추천

LLM이 만든 편집안 JSON을 붙여넣으면 컷·자막을 그대로 사용합니다. (무음컷·받아쓰기 없음)

▶ 유튜브 구간

한 URL + 여러 구간( 구간 추가) → 이어붙여 무음컷 + 자동 자막(Whisper).

📁 파일

로컬 영상 파일 → 무음컷 + 자동 자막.

세 방법 모두 아래 영상 옵션을 함께 적용합니다.


3. 붙여넣기 JSON 형식 (핵심)

아래 JSON 하나만 붙여넣으면 됩니다. 배치 시간·SRT 타임코드는 넣지 마세요 — 앱이 컷을 순서대로 이어붙이며 자동 계산합니다.

{
  "url": "https://www.youtube.com/watch?v=영상ID",
  "title_top": "서브제목",
  "title_main": "메인제목",
  "channel": "@채널명",
  "cuts": [
    {"start":"0:01.0","end":"0:03.5","bottom":"하단 자막 윗줄\n하단 자막 아랫줄","effect":"효과자막"},
    {"start":"2:33.5","end":"2:36.5","bottom":"다음 컷 자막","effect":"공포의통계"}
  ]
}
필드 설명
url 실제 영상 주소 (브라우저에서 열리는 것). LLM이 지어낸 가짜 ID 금지
cuts[].start / end 원본 영상 타임스탬프. 분:초.밀리 또는 시:분:초.밀리 (밀리초 생략 가능)
cuts[].bottom 하단 자막. \n 이 있으면 같은 자리에서 시간을 반씩 나눠 윗줄→아랫줄 순서로 표시
cuts[].effect 중앙 효과 자막(녹색). 짧게
title_top / title_main / channel 선택. 비우면 안 들어감(채널은 유튜브에서 자동)

LLM 에게 요청할 때 (이대로 복사)

아래 스키마의 JSON 하나로만 출력해. 설명·마크다운 금지.

  • url 은 내가 준 이 주소를 그대로 써라(임의 생성 금지): 여기에_실제_URL
  • start/end 는 원본 영상 타임스탬프(분:초.밀리).
  • 배치 시간은 계산하지 마라. 앱이 순서대로 이어붙인다.
  • bottom 은 2줄(\n), effect 는 짧은 한 마디.
  • 모든 컷은 start < end.

💡 자막이 안 쪼개지고 \n 글자가 그대로 보여도 앱이 알아서 처리합니다(\n·\\n 모두 인식).


4. 영상 옵션 (공통)

  • 영상 확대 — 기본 144%. 슬라이더로 조절(캡컷에서 다시 조정 가능)
  • 좌우반전(미러) — 영상만 좌우 뒤집기
  • 장면분할 — 화면이 확 바뀌는 지점마다 컷 자동 분할(캡컷에서 개별 편집 가능). 시간이 더 걸림
  • 완료되면 CapCut 자동 실행 — 체크 시 결과 후 캡컷 자동 오픈

자막 위치·색은 코드 기본값(하단자막 CapCut Y=-559, 효과자막 Y=866·녹색 #0dff63).


5. 다른 PC 에서 실행

capcut2 폴더를 통째로 복사한 뒤(.downloads·.cache·.uploads 캐시는 빼도 됨 — 자동 생성):

  1. Python 3.10+ 설치 — https://python.org (설치 시 Add to PATH 체크)
  2. 이 폴더에서 패키지 설치:
    python -m pip install -r requirements.txt
    
  3. ffmpeg / ffprobe 설치(PATH 필요) — winget install Gyan.FFmpeg
  4. Node.js 설치 — https://nodejs.org (yt-dlp 유튜브 추출용 JS 런타임)
  5. CapCut 설치
  6. 캡컷_에이전트_구간합치기.bat 실행

코트라 볼드체: 새 PC의 CapCut 에서 그 폰트를 한 번 사용하면 캐시가 생겨 자동 적용됩니다. 없으면 기본 폰트로 나옵니다(에러 아님). 드래프트 저장 위치: 그 PC의 CapCut 프로젝트 폴더를 자동 인식합니다. .gemini_key: '파일'·'유튜브 구간' 탭 자막 교정용. 붙여넣기 탭만 쓰면 없어도 됩니다.


6. 문제 해결

증상 해결
수정한 게 반영 안 됨 검은 창 닫고 .bat 재시작
python not found Python 재설치 시 PATH 체크 후 재부팅
유튜브 Video unavailable 영상이 실제 공개인지 확인 → python -m pip install -U yt-dlp
다운로드가 자꾸 깨짐 python -m pip install -U yt-dlp (유튜브가 가끔 바뀜)
자막이 밀림 붙여넣기 탭은 컷·자막을 그대로 쓰므로 안 밀림. 파일/유튜브 탭은 Whisper 타이밍 사용
자막 \n 이 글자로 박힘 .bat 재시작하면 해결(앱이 \n·\\n 자동 분할)
폰트가 다르게 나옴 CapCut 에서 코트라 볼드체 한 번 사용해 캐시 생성

7. 폴더 구조 (참고)

capcut2/
├─ 캡컷_에이전트_구간합치기.bat   실행 파일(포트 8001)
├─ 배경.png                      배경 템플릿(검정-흰-검정)
├─ requirements.txt              파이썬 패키지 목록
├─ .gemini_key                   (선택) Gemini 키
├─ server/
│  ├─ app.py                     FastAPI 서버 (/upload /youtube /paste /stream)
│  └─ static/index.html          웹 UI
└─ capcut_agent/
   ├─ pipeline.py                처리 파이프라인(다운로드→컷→자막→드래프트)
   ├─ youtube.py                 유튜브 구간/다중/정밀 다운로드·병합
   ├─ paste.py                   붙여넣기 JSON 파서
   ├─ draft.py                   CapCut 드래프트 생성(pycapcut)
   ├─ scene.py                   장면전환 감지·분할
   ├─ silence.py                 무음 감지
   ├─ transcribe.py              Whisper 받아쓰기(파일/유튜브 탭)
   ├─ correct.py                 Gemini 자막 교정(선택)
   ├─ highlight.py               자막 청킹
   ├─ media.py                   프레임/오디오 처리
   └─ probe.py                   영상 메타 조회