---
name: drama-character-swap-shorts
description: "원본 실사 영상(드라마·예능·인터뷰 등) 1개와 캐릭터 사진(또는 인물 시트) 1장만 받아서, 영상 속 지정 인물 한 명을 그 캐릭터로 바꾸고 원본 대사·립싱크·다른 인물·컷 구성은 그대로 둔 16:9 최종본과 9:16 쇼츠까지 처음부터 끝까지 만드는 절차. 피드백 반영도 포함. 트리거 예: 이 영상 속 여자를 유정이로 바꿔줘, 립싱크 그대로 인물 교체, 싱크 100% 얼굴만 바꿔, 립싱크 안 맞다 피드백 반영, 쇼츠로 만들어줘, 원본이랑 사진 줄게 만들어줘. English: replace one person in this clip with my character keeping lip sync, then make a 9:16 short."
---

# 실사 영상 인물 교체 → 피드백 → 쇼츠 (원본 + 캐릭터만으로)

적용 조건: 원본 실사 영상에서 **지정한 인물 한 명만** 캐릭터로 바꾸고, 원본 소리·다른 인물·컷 구성은 그대로 두는 요청. 춤 영상은 dance-character-swap, 탈것 영상은 vehicle-character-swap을 쓴다.

## 시작 전에 사용자에게 묻기
이 스킬의 목적은 예시와 똑같은 영상을 다시 만드는 것이 아니라, 사용자만의 영상을 만드는 것이다. 작업을 시작하기 전에 아래 질문을 한 번에 묶어 묻는다.
- 요청에 이미 답이 있는 항목은 묻지 않는다.
- 사용자가 "알아서", "기본값으로"라고 하면 괄호 안 기본값으로 진행한다.
- 아이디어가 없어 보이면 예시와 다른 선택지 2–3개를 짧게 제안한다.
- 답을 받으면 확정한 내용을 한 줄로 요약해 보여 주고 시작한다.

1. 원본 영상과 바꿀 인물을 알려 주세요. 옷·머리·위치로 구별하면 됩니다.
2. 어떤 캐릭터로 바꿀까요? 인물 시트나 사진을 알려 주세요.
3. 결과물은 16:9 최종본만 만들까요, 9:16 쇼츠까지 만들까요? (기본: 둘 다)
4. 쇼츠 위아래 검정에 제목이나 자막을 넣을까요? (기본: 넣지 않음)
5. 예산은요? (기본: 견적 합계를 먼저 보여 주고 진행)

## 0. 입력과 기본값
- 필수 입력: ① 원본 영상 파일 ② 캐릭터 이미지(얼굴 정면 포함 시트 권장) ③ 바꿀 인물 지정(옷·머리·위치로 구별).
- '시작 전에 사용자에게 묻기'에서 답하지 않은 항목은 아래 기본값으로 진행한다. 바꿀 인물이 화면에서 둘 이상으로 해석되면 다시 확인한다.
  - 예산: 사용자가 안 정했으면 견적 합계를 먼저 보여 주고 진행(자동 승인 모드면 1,000 이하에서 진행).
  - 영상 모델: Kling 3.0 Omni, 720p, 4초(컷이 길면 5–8초), 16:9, generateAudio false.
  - 이미지 모델: Nano Banana Pro.
  - 쇼츠: 1080×1920, 가운데 맞춤, 위아래 검정.
- 원본 편집본·원본 파일은 절대 수정하지 않는다. 결과는 새 파일(_v1, _v2 …)로만 남긴다.
- 원본에 방송사 로고 등 권리 표시가 있으면 보고 끝에 권리 확인 필요를 적는다.
- 모든 생성은 견적 → 생성 → 실제 청구액 기록. 누계를 프로젝트 메모리에 남긴다.

## 1. 준비 (크레딧 0)
1. 폴더 두 개를 만든다: `{작업명}_AI생성`(참조·생성물), `{작업명}_최종`(내보낸 결과).
2. 16:9(1920×1080, 30fps) **새 편집본**을 만들고 원본을 V1(영상)·A1(소리)에 0초부터 넣는다.
3. 원본 화면 형태를 캡처로 확인해 기록한다.
   - 화면 전체가 그림인가, 4:3 그림 + 좌우 검정 여백인가(쇼츠 배율에 쓴다).
   - 편집기에 넣은 원본 배율(예: 1.5)도 기록한다.
4. **컷 표**를 만든다. 원본을 0.5초 간격으로 훑어 캡처하고, 바꿀 인물이 나오는 컷만 적는다.

   | 컷 | 시작–끝(초, 30fps 프레임 경계) | 인물 크기 | 대사 | 핵심 시점(입 모양·손·소품) |
   |---|---|---|---|---|

   - 컷 경계는 1프레임(0.0333초) 단위로 앞뒤를 캡처해 확정한다.
   - 핵심 시점은 컷마다 3개 이상 고른다: 웃음, 둥근 "오", 크게 벌린 입, 눈 크게 뜸, 손·젓가락 위치.

## 2. 컷별 교체 — 검증된 방법 (립싱크 우선)
컷 하나씩 끝까지 통과시킨 뒤 다음 컷으로 간다.

### 2-1. 실시간 참조 영상 만들기 (크레딧 0)
1. 같은 16:9 편집본의 빈 시간대(예: 원본 끝 + 여유, 40초 이후)에 원본을 한 번 더 넣는다.
2. 그 클립을 해당 컷 구간만 남게 트림한다. **배속은 1.0 그대로** 둔다(느리게 늘린 참조는 입 타이밍이 어긋난다).
3. 컷이 생성 길이(4초)보다 짧으면, 컷 마지막 프레임을 `현재 프레임 저장`으로 PNG로 저장해 바로 뒤에 붙여 남은 시간을 채운다.
4. 그 구간만 `export_draft`(시작·끝 지정)로 `_AI생성` 폴더에 내보낸다.
   - 이름 예: `{작업명}_참조컷NN_원속도_{시작}-{끝}s+홀드{x}s.mp4`
   - 참조 길이 R(예: 4.0초)을 기록한다.
5. 작업용으로 넣은 클립·PNG는 내보낸 뒤 편집본에서 지운다.

### 2-2. 첫 프레임 저장 (크레딧 0)
- 컷 시작 시점으로 이동 → 내보내기 → `현재 프레임 저장` → `_AI생성` 폴더.
- 이때 위 트랙의 다른 클립은 불투명도 0으로 숨겨 **원본 화면만** 저장한다.

### 2-3. 첫 프레임 얼굴 합성 (Nano Banana Pro, 첨부: 원본 프레임 + 캐릭터)
프롬프트 뼈대:
"Edit image 1. Replace ONLY the [인물 설명] woman's identity with the person in image 2 ([캐릭터 특징: 나이, 머리, 얼굴형, 피부, 눈, 입술]). Her face must clearly be image 2's person. Keep EVERYTHING else identical to image 1: same 16:9 framing and black side bars, same crop, same head tilt, same expression and eye direction, same hands and props at the same place, same clothes, same hair length and silhouette, same background, same lighting and broadcast image quality, same logo unchanged. Do not add or remove anything."
- 결과를 열어서 확인한다: 얼굴이 캐릭터인가, 포즈·손·소품·로고가 원본과 같은가. 다르면 프롬프트를 고쳐 1회만 다시 만든다.

### 2-4. 영상 편집 생성 (Kling 3.0 Omni)
- 첨부: [실시간 참조 영상, 합성 첫 프레임, 캐릭터 이미지]
- 설정: resolution 720p, durationSeconds = 참조 길이, generateAudio false, aspectRatio 16:9
- 프롬프트 뼈대:
"Edit the input video so the [인물 설명] becomes the person shown in the first image (edited first frame) and the character sheet. Use that face for EVERY frame; the original actor's face must never appear. Keep everything else from the input video unchanged and frame-accurate: identical timing, head movement, blinks, hand and prop motion, and identical mouth shapes at identical moments so the lips stay in sync with the original dialogue. Same framing, black bars, background, lighting, clothes and logo. One continuous shot, no cuts, no added motion."
- 견적 → 생성 → 완료까지 상태 조회(같은 요청 반복 금지).

### 실패했을 때 (같은 방법으로 두 번 실패하면 방법을 바꾼다)
| 증상 | 원인 | 대응 |
|---|---|---|
| 입 모양이 대사보다 빠르거나 늦음 | 느리게 늘린 참조, Seedance 키프레임 생성 | 배속 1.0 실시간 참조 + Kling Omni 편집 |
| 립·동작은 맞는데 원래 배우 얼굴 그대로 | Kling 편집에 캐릭터 이미지만 넣음 | 2-3 합성 첫 프레임을 함께 넣는다 |
| 중간에 원래 얼굴로 돌아옴 | 참조 얼굴이 새어 들어옴 | 첫 프레임 합성 + 프롬프트에 "never the original actor" 강조 |
| 다른 인물·가짜 컷이 끼어듦 | 참조에 컷 경계가 포함됨 | 참조 구간을 컷 안으로 줄이고 마지막 프레임으로 채운다 |

## 3. 배치 (이론적으로 정확하게)
1. 생성 결과를 **V3**에 컷 시작 시각으로 넣는다.
2. `get_editor_context`의 sourceDuration으로 실제 길이 D를 읽는다(4.033, 4.042초처럼 매번 다르다).
3. 배속 = D ÷ R (예: 4.0417 ÷ 4.0 = 1.0104). 소수 6자리까지 넣는다.
4. 끝을 컷 끝 시각으로 트림한다.
5. 배율: 720p 결과 → 1920×1080 편집본이면 1.5. 원본 클립과 같은 배율·위치를 쓴다.

## 4. 컷 검수 (컷마다 필수)
1. 핵심 시점마다 이동 → 캡처(교체본).
2. 교체 클립 불투명도 0 → 같은 시점 캡처(원본) → 다시 1.
3. 합격 기준: 얼굴이 캐릭터이고, 입 모양·머리 위치·손·소품 각도가 원본과 같다. 컷 앞뒤 1프레임에서 튀지 않는다.
4. 합격하면 V2의 같은 구간으로 옮긴다. 이전 클립이 있으면 지우고 V3는 비운다. 생성 파일 이름에 결과를 붙인다(`_채택`, `_얼굴미교체불량` 등).

## 5. 16:9 최종본 내보내기
1. 모든 컷이 합격하면 `{작업명}_최종_v1.mp4`로 `_최종` 폴더에 내보낸다(구간 0 – 원본 길이).
2. 결과 파일을 빈 V 트랙에 잠시 올려(아래 트랙 불투명도 0) 컷마다 핵심 시점 1개씩과 교체하지 않은 컷 1개를 캡처한다. 확인 후 지우고 되돌린다.
3. 상태를 "검토 필요"로 둔다. "승인됨"은 사람만 정한다.

## 6. 피드백 반영
1. 댓글의 시간 구간·내용·드로잉을 읽는다.
2. 해당 컷만 2–4단계로 다시 만든다. 다른 컷은 건드리지 않는다.
3. `_v{n+1}`로 내보내고 5단계로 검수한다.
4. 원 댓글에 답글을 단다: "[에이전트] 반영함 — 무엇을 어떻게 바꿨는지 / 원본과 비교한 시점 / 확인 위치: 파일명 mm:ss–mm:ss"
5. 새 버전 상태는 "검토 필요".

## 7. 쇼츠 (9:16, 위아래 검정, 가운데 맞춤) — 크레딧 0
1. **새 편집본**을 9:16(1080×1920)으로 만든다. 16:9 편집본은 그대로 둔다.
2. 최신 16:9 최종 파일을 V1에 0초부터 넣는다(소리는 A1).
3. 배율(이 편집기는 배율 1 = 원본 픽셀 크기 그대로):
   - 화면 전체가 16:9 그림: 1080 ÷ 1920 = **0.5625**
   - 16:9 안에 4:3 그림 + 좌우 검정 여백: 1080 ÷ 1440 = **0.75**(여백은 화면 밖으로 빠짐)
   - x 0.5, y 0.5
4. 내보낸 16:9 파일이 원래 길이보다 몇 프레임 길면 끝을 원래 길이로 트림한다(영상·소리 함께).
5. 넓은 컷, 교체 컷, 로고가 보이는 컷을 캡처해 잘림이 없는지 확인한다.
6. `{작업명}_쇼츠_9x16_v1.mp4`로 `_최종` 폴더에 내보낸다. 결과 파일을 V2에 잠시 올려 V1을 0으로 숨긴 채 확인하고, 지운 뒤 V1을 되돌린다. 상태 "검토 필요".
7. 위아래 검정에 제목·자막을 넣을지는 사용자에게 물어보고, 넣는다면 편집기 텍스트로 넣는다(AI로 글자를 그리지 않는다).

## 8. 보고 형식
- 결과물: 16:9 최종 파일, 쇼츠 파일 이름·폴더·상태
- 확인: 컷별 원본 비교 시점과 결과(표)
- 비용: 시도별 모델·결과·실제 청구 크레딧, 누계와 예산
- 사람이 볼 부분: 실제 속도로 소리와 함께 재생해 립싱크 확인, 컷 시작 프레임, 원본 권리
- 프로젝트 메모리: 폴더 ID, 편집본 ID(16:9·9:16), 채택 파일 ID, 컷별 배속·배율, 크레딧 누계
