Communitygithub.com

comfy-h3-video-producer

로컬 ComfyUI에서 대본을 영상으로 자동 제작하는 파이프라인(MiniMax H3). 사용자가 대본을 주고 ComfyUI로 스토리보드 영상을 요청하거나, '1차/2차 채취/초해상도/반장 키트/CSGlide/워크플로우로 영상 생성'을 언급할 때 사용합니다. 워크플로우 핸드셰이크, 감독 스케줄링 및 세그먼트 계획, H3 프롬프트 작성, 제출 및 자동 모니터링, 1차 채취 이중 검사 게이트, 파일 수거 및 배경음 제거와 편집, 중단 지점부터 재생산을 포함합니다.

comfy-h3-video-producer란 무엇인가요?

이 스킬은 로컬 ComfyUI 환경에서 MiniMax H3 모델을 사용하여 대본을 고품질 영상으로 자동 변환하는 엔드투엔드 파이프라인입니다. 사용자가 대본을 제공하면, 감독 엔진이 자동으로 스토리보드를 생성하고, 각 컷에 대한 프롬프트를 컴파일하며, 비디오 생성을 제출하고, 완료를 모니터링하고, 최종 파일을 수집 및 편집하여 완성된 영상을 제공합니다. 이 파이프라인은 특히 초해상도, 얼굴 고정, 오디오 믹싱 등 산업적 품질 문제를 해결하기 위해 설계된 고급 기능을 포함합니다. 주요 기능으로는 워크플로우 핸드셰이크(노드 번호를 하드코딩하지 않음), 감독 스케줄링 및 세그먼트 계획, H3 프롬프트 작성, 제출 및 자동 모니터링, 1차 채취 이중 검사 게이트, 파일 수거 및 배경음 제거와 혼합, 중단 지점부터 재생산을 지원합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/abserari/drama-production-skills/tree/HEAD/skills/comfy-h3-video-producer

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

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

문서

ComfyUI H3 대본-영상 변환 (v5.0 감독급 시청각 언어 및 산업 공학화 규범판)

v5.0 주요 이정표 업데이트 (2026-11, 시청각 언어 산업화 및 7대 실전 문제점 전면 해결)

  • 1. 스토리보드 키프레임 사전 생성 공정 (I2V 장면/캐릭터/소품 공동 키프레임): 키프레임 없이 T2V 블라인드 생성 완전 종결. 각 컷은 비디오 샘플링 전에 이미지 생성 모델이 컷의 카메라 위치, 캐릭터 3면도, 소품 설정을 결합하여 16:9 공동 첫 프레임 키프레임(keyframe_segXX.png)을 생성합니다. 품질 검사 및 확정 후 I2V 노드에 공급하여 0번째 프레임의 뼈대 기하학, 옷감 질감, 소품 윤곽을 고정합니다.
  • 2. 단일 인물 발화 잠금 및 전원 침묵 억제 프로토콜 (Speaker Lock & Mouth Suppression): 모든 인물이 대사에 맞춰 입을 움직이는 인형극 참사 완전 제거. [Subject 1]에서 유일한 주 발화자를 명확히 지정하고, [Action 1]에서 주어-동사 동작 분리를 강제하며, 비발화 캐릭터에 대해 침묵 억제 절대 조항(lips tightly sealed, completely silent, showing tense glare without mouth movement)을 추가합니다.
  • 3. 전역 스타일 바이블 (Global Style Bible) 및 사전 스타일 고정 게이트: 에피소드마다 무작위로 스타일이 달라지는 현상 거부. 제작 시작 전에 전역 Style Bible(visual_genre, environment_base, lighting_base, color_palette, quality_base 명시)을 확립하고, 4가지 다른 구도의 스타일 샘플을 생성하여 수동 확인 후 전체 제작에 상속합니다.
  • 4. 숏폼 드라마 최적 발화 속도 및 밀도 조절 (Pacing & Density Normalization): 인물 발화가 느리고 음을 늘리는 문제 해결. 175프레임(7.29초) 표준 시퀀스에서 대사는 엄격히 20~28개의 순수 한자(숏폼 드라마 최적 속도 3.2~4.0자/초)와 일치해야 하며, [Audio 1]에서 spoken crisply and rapidly without dragging syllables를 명시적으로 선언합니다. 처음 4.5초는 빠르게 말하고, 나머지 2.8초는 차가운 응시와 동작 반응으로 전환합니다.
  • 5. 6가지 영화급 다이나믹 카메라 움직임 및 동선 스케줄링 라이브러리 (Director Camera & Blocking): 두 인물이 정면에서 마주 보고 서서 대화하는 장면 연속 사용 금지! 6가지 다이나믹 카메라 스케줄링 강제 도입: ① 동선 교차 슬로우 푸시, ② 소품 클로즈업에서 눈동자로 포커스 전환, ③ 더치 앵글 사선 압박, ④ 뒤돌아서 차갑게 돌아보기, ⑤ 귀에 바짝 다가가 압박, ⑥ 측광 실루엣 대치.
  • 6. 순수 표준 중국어 발음 규약 및 ASR 언어 드리프트 차단 게이트 (Mandarin Purity & Language Gate): 대사 전체를 순수 중국어로 정규화(아라비아 숫자를 한자로 변환, 영어 약어 및 불법 기호 제거); [Audio 1]에 Strict Mandarin Chinese dialogue only, standard native Chinese accent, zero foreign tone을 강제 추가; Whisper ASR 언어 감지를 통합하여 비중국어 자막 및 언어 드리프트를 자동 차단합니다.
  • 7. 엔지니어링 마스터 메인 스케줄링 파이프라인 폐쇄 루프: scripts/director_engine_v3.py를 구현하여 컷 테이블, 프롬프트 컴파일, 발화 속도 및 밀도 계산, 발화 주체 잠금의 전 과정 자동화를 실현합니다.

v4.1 업데이트 (2026-11, 공식 v2.2 프롬프트 규약 및 175프레임 시퀀스 심화)

  • 프롬프트 표준 v2.2로 업그레이드:
    • MiniMax 공식 프롬프트 가이드(references/official/base-en.txt, ref-en.txt) 연동;
    • 카메라 움직임 3요소(유형+진폭+속도)를 자연어 문장으로 샷 내부에 작성, 샷 끝에 태그 쌓기 금지;
    • 소재 권한에 원본 이미지 구도 및 점유 비율을 복사하지 않음을 명시;
    • 복잡도 예산 엄격 준수: 단일 세그먼트(175프레임/7.29초) 최대 3개의 주체 + 1개의 대사.
  • 세그먼트 길이를 주력 175프레임(7.29초)으로 고정:
    • 243프레임은 공식적으로 폐기, 상한선을 192프레임(8.00초)으로 설정, 생산 주력은 175프레임으로 통일 고정, 세그먼트 끝에 1.0~1.2초의 침묵 버퍼 확보;
    • 스케줄링 계층 준수 금지 영역(원거리 샷은 공간 구축 및 얼굴 인식 후 중근거리 샷으로 전환, 후방 당김 및 창문 통과 비활성화).
  • Windows UTF-8 전 터미널 방어:
    • force_utf8_stdio()로 stdout/stderr를 UTF-8로 통일 재설정, GBK/CP936 인코딩 예외 충돌 방지.
  • 품질 검사 및 원거리 얼굴 보정 도구 체인 확장:
    • Whisper ASR 대사 품질 검사(scripts/check_dialogue_asr.py), 마지막 샷 광학 흐름 및 이음새 품질 검사(scripts/sop_check.py), 이어지는 마지막 세그먼트 공백 면제(--tail-exempt) 및 중원거리 적응형 얼굴 보정(scripts/face_refine_pipeline.py) 도입.

v4.0 업데이트 (2026-10, 산업용 첫 프레임 얼굴 고정 변형 방지 및 영화 음악 이중 혁명)

  • 첫 프레임 이미지 생성 검증 + I2V 기하학적 얼굴 고정 철칙 (순수 텍스트-비디오 T2V의 얼굴 변형 및 소프트 소재 문제 완전 해결): 단일 텍스트-이미지 생성은 5~15초만 소요, 만족스럽지 않으면 초 단위로 재생성; 첫 프레임을 결정하지 않고 8분짜리 T2V 블라인드 생성 금지! 사후 자동 품질 검사는 소 잃고 외양간 고치는 식이며, 고비용 재생성은 임시방편일 뿐입니다. 인물 클로즈업이나 핵심 소품 상호작용이 있는 경우, 반드시 먼저 첫 프레임을 결정하고 first_frame을 주입하여 I2V 모드로 전환, 0번째 프레임의 해부학적 기하학 및 소품 회로를 고정, H3는 시퀀스 역학과 립싱크만 담당, 얼굴 변형률을 30%에서 2% 미만으로 급감시킵니다. 자세한 내용은 references/keyframe_i2v_guide.md를 참조하십시오.
  • 영화급 배경 음악 융합 및 음성 지능형 회피 (Audio Ducking): 프롬프트에서 H3 자체 생성 왜곡 배경음을 완전히 금지; 대사 및 액션 사운드 정리 후, 전체 영상에 통일된 고충실도 독립 BGM 배치, FFmpeg 네이티브 sidechaincompress 동적 사이드체인 회피 적용: 음성 시작 시 순간 -14dB로 하강, 대사 종료 후 0.3~0.5초에 걸쳐 부드럽게 상승, 상업용 숏폼 드라마 시청각적 쾌감 창출. 새로운 도구 scripts/cinematic_audio_mixer.py 추가.
  • 첫 프레임 게이트 도구 scripts/keyframe_gate.py 새로 추가: 엔지니어링 수준의 첫 프레임 상태 검사, ComfyUI 창고 동기화 및 I2V 노드 안전 주입 지원.

v3.2 업데이트 (2026-10-25)

  • §13 이 스킬을 업데이트해야 하는 경우 새로 추가: 6가지 트리거 조건, 포함해서는 안 되는 4가지 파일 유형, 마이그레이션 3가지 질문, 배치 규칙, 수정 후 3단계 자체 점검
  • 한 줄 규율: '대본을 바꾼 후에도 성립하는' 메커니즘과 판단 기준만 침전시키고, 프로젝트 파일은 절대 스킬에 포함시키지 않음

v3.1 업데이트 (2026-10, 13개 세그먼트 / 86초 완성본 실측 침전)

  • §4.1 H3 준수 경계 새로 추가 (후방 당김 실패, 창문/문 통과, 창문 밖 움직임 생성 안 됨, 구도 잠금, 부정형 샷 명령)
  • §5.1 VRAM 회수 새로 추가 (한때 한 세그먼트를 5분에서 33분으로 늘렸던 문제)
  • §8 의사 결정 트리에 6개 항목 추가 (끝 동작 선점, 한 박자에 너무 많은 동작, Foley이 배경음으로 깔림, quiet-gain 부작용, F0 오판)
  • §12 대사 위치 4가지 버전 그라데이션, cont off의 trim 기록 추가
  • §3 세그먼트 길이 권장을 175프레임으로 변경 (원래 124/243으로 작성되었으며, 이미 구식)
  • 프롬프트 표준에서 오해를 불러일으킬 수 있는 두 가지 오래된 예시 수정: '대사를 마디 끝에 작성'은 마디 맨 앞이어야 함; '가슴이 2.5초마다 오르내림'은 발성 명령으로 해석되어 호흡음 생성되므로 삭제

대본을 완성 영상으로: 핸드셰이크 → 감독 스케줄링 → 첫 프레임 검증(I2V) → 프롬프트 → 제출 → 모니터링 이중 검사 → 파일 수거 → 회피 믹싱 및 편집.

v4의 핵심 인식: '생성된 비디오에 운을 맡기고 사후 품질 검사로 재생성'을 '저비용 사전 이미지 제어 + I2V 얼굴 고정 실행 + 영화급 회피 믹싱'으로 업그레이드합니다.

한 가지 철칙: 하나의 작업 = 하나의 로컬 프로젝트 디렉토리 + 하나의 감독대 프로젝트 이름(h3_chain/<프로젝트 이름>). 이 두 가지는 첫 번째 세그먼트가 결정된 순간부터 concat이 끝날 때까지 바꿀 수 없습니다. 바꾸는 것은 '파일을 잘못 넣은 것'이 아니라 이어서 제작하는 것이 바로 끊어지는 것입니다: 후속 촬영 세그먼트는 chain.order[k-1]을 통해 이전 세그먼트를 찾는데, 프로젝트 이름이 바뀌면 찾을 수 없으며, 해당 세그먼트는 조용히 첫 번째 세그먼트로 간주되어 다시 그려지고, 완성된 영상은 다른 영상의 디렉토리로 이동됩니다. 바인딩은 project.json의 chain 필드에 기록되며, submit할 때마다 비교하고, 일치하지 않으면 직접 거부(경고가 아님)합니다. 변경하려면 전체를 새로 바꿔야 합니다: 새 프로젝트 + 새 감독대 프로젝트 이름, 첫 번째 세그먼트부터 다시 시작합니다. 전체 규칙은 §10.1을 참조하십시오.

0. 실행 계약 (먼저 누가 무엇을 담당하는지 명확히)

누구담당
Agent (완전 자동)대본 읽기, 감독 스케줄링, 첫 프레임 검증, 프롬프트 작성, preflight, 제출, 모니터링, 이중 검사, 파일 수거, 배경음 제거, 배경 음악 회피 믹싱, 편집, 납품, 대장 작성
사용자 (세 가지만 함)① ComfyUI를 열고 워크플로우를 로드한 후 '준비'라고 말하기 ② 대본/스타일/첫 프레임 후보의 일회성 결정 ③ 영상 보고 승인

Agent가 하지 말아야 할 일곱 가지

  1. 워크플로우 핸드셰이크가 완료되지 않았을 때(wf_map.json이 존재하지 않을 때) 제출하지 말 것.
  2. gate(1차 채취 이중 검사)를 건너뛰고 finish하지 말 것 — 스크립트가 거부하므로 우회하려 하지 말 것.
  3. state/프레임 추출/임시 wav를 스킬 디렉토리에 쓰지 말 것(paths.py에 하드 가드 있음).
  4. '이전 노드 번호'에 의존하여 배선을 변경하지 말 것 — 세 가지 데이터만 주입하고, 초해상도/최종 노드의 연결선을 절대 건드리지 말 것.
  5. 인물 클로즈업이나 핵심 소품 상호작용이 있을 때, 첫 프레임 검증을 건너뛰고 순수 텍스트-비디오(T2V) 블라인드 생성하지 말 것 — 정적 이미지 생성 검증은 5~15초면 충분하며, 만족스럽지 않으면 초 단위로 재생성; 8분짜리 T2V를 실행한 후 사후 품질 검사하는 것은 고비용 자살 행위입니다. 반드시 먼저 첫 프레임을 결정하고 first_frame을 주입하여 I2V로 얼굴 및 소품을 고정하십시오!
  6. 프레임을 추출하여 화면을 보지 않고 다음 세그먼트를 제출하지 말 것 — preflight는 텍스트 구조만 확인하고 화면은 확인하지 않습니다. 디스크에 저장된 후 먼저 4~6프레임을 추출하여 콜라주 이미지를 확인한 후 다음 세그먼트를 제출하십시오; 이는 '두 세그먼트를 너무 빨리 제출하여 VRAM이 더러워지는 상태'를 방지하는 데도 도움이 됩니다(§5.1 참조).
  7. 해당 프로젝트 파일을 무조건 skill에 넣지 말 것 — 영화 제목/캐릭터 이름/세그먼트 번호/plan.json/assets/*.json/특정 세그먼트 프롬프트 원문/해당 trim 기록/블랙리스트 시드는 모두 프로젝트 디렉토리에 남겨둡니다. '대본을 바꾼 후에도 성립하는' 메커니즘, 판단 기준, 작성법만 침전시킵니다. 판단 기준과 배치 규칙은 §13을 참조하십시오.

다음 네 가지 경우에만 멈춰서 사용자에게 묻습니다: 대본에 모호함이 있어 스토리보드 구조에 영향을 미치는 경우 / 스타일 또는 화면 비율 결정 / 소재가 부족하고 텍스트로 정의할 수 없는 경우 / 동일한 세그먼트를 3번 재생성해도 통과하지 못한 경우.

1. 핵심 도구 모음 (완전한 생산 도구 체인)

도구기능주요 서브 명령
scripts/h3wf.py워크플로우 핸드셰이크: ComfyUI에서 실제로 실행된 그래프를 읽고 자동으로 노드 역할 인식sync show doctor
scripts/sop_run.py생산: 제출(preflight 포함), 자동 모니터링, 최종 파일 대기submit watch final abort
scripts/h3proj.py프로젝트 및 게이트: 대장, 1차 채취 이중 검사, 시각적 서명, 파일 수거, 편집, 잔여물 정리new status gate review finish concat residue
scripts/keyframe_gate.py첫 프레임 검증 및 I2V 주입: 첫 프레임 상태 검사, ComfyUI 창고 동기화, first_frame 주입--project --seg --sync
scripts/face_refine_pipeline.py외부 원거리 얼굴 보정 워크플로우: 중원거리 조건부 얼굴 보정, 오디오 원본 바이패스, 사용자 정의 노드 부재 시 부드러운 다운그레이드--input --output --char-ref --dry-run
scripts/cinematic_audio_mixer.py영화급 배경 음악 지능형 회피 믹싱: 외부 독립 BGM, sidechaincompress 자동 음성 회피--input --output --bgm --volume
scripts/check_dialogue_asr.py대사 ASR 자동 비교: VAD 음성 구간 위치 파악 → Whisper 전사 → <d> 원문과 비교--file --text --seg
scripts/sop_check.py마지막 샷 동작 에너지 및 이음새 유사도 품질 검사: 8프레임 연락처표, 동작 광학 흐름 비율, 핀 프레임 비교--video --seg
scripts/shisei_pose.py(선택 사항) 격투/대치 자세: 다중 시점 자세 검색 및 선화 추출--search --duo --get --view

인터프리터는 cv2가 포함된 venv로 고정: C:/Users/windows/.workbuddy/binaries/python/envs/default/Scripts/python.exe (이하 PY)

2. 0단계: 워크플로우 핸드셰이크 (작업 시작 시 매번 첫 번째로 수행해야 하며, 건너뛸 수 없음)

왜 고정할 수 없는가: 사용자의 워크플로우는 업데이트될 수 있고(3차 채취 추가, 초해상도 크기 변경, 출력 접두사 변경), 노드 번호가 변경되면 하드코딩된 '배선 수정'은 정상 작동하던 경로를 망가뜨립니다 — 이것이 v2의 모든 오류의 근본 원인이었습니다.

핵심 관점: 사용자는 언제든지 캔버스에서 매개변수를 조정(초해상도 크기 변경, 모델 교체, 샘플링 단계 수 조정)할 수 있으며, 생성은 반드시 그의 현재 값을 사용해야 합니다. submit은 호출될 때마다 먼저 캔버스 저장 버전(h3wf.refresh_if_stale)을 확인합니다: 파일 mtime이 변경되면 그래프를 다시 읽고, 변경된 매개변수를 하나씩 출력합니다([wf] N개 매개변수 변경 감지). rack/desk/cast의 h3_data, seed, filename_prefix는 런타임에 주입되는 값이며 사용자 변경 사항으로 간주되지 않으므로 제외됩니다.

하지만 API 수준에서 우회할 수 없는 한 가지 제한이 있으며, 사용자에게 적극적으로 알려야 합니다: ComfyUI의 캔버스 상태는 워크플로우를 저장(Ctrl+S)한 후에만 ComfyUI/user/default/workflows/*.json에 기록되며, 저장되지 않은 캔버스 변경 사항은 어떤 인터페이스로도 읽을 수 없습니다. 따라서 작업을 시작할 때마다 사용자에게 한마디 해야 합니다: 매개변수를 변경했으면 Ctrl+S를 누르십시오. 사용자가 변경한 후 Queue를 한 번이라도 눌렀다면, 해당 실행 그래프는 /history에 들어가므로 두 번째 판단 기준으로 포착될 수 있습니다.

동작:

  1. 먼저 사용자에게 알립니다: ComfyUI 데스크톱 프로그램을 열고, 이번에 사용할 워크플로우를 로드한 후, '준비'라고 말할 때까지 기다립니다.
  2. 전제 조건: sync는 ComfyUI /history에서 가장 최근에 성공적으로 실행된 비디오 작업을 읽습니다.
    • 방금 워크플로우를 변경/설치한 경우 → 사용자에게 인터페이스에서 수동으로 한 번 실행(어떤 세그먼트든 상관없음, 통과만 하면 됨)을 요청한 후 sync를 수행합니다.
    • 한 번도 성공적으로 실행된 적이 없는 경우 → 인터페이스 파일로 대체: h3wf.py sync --from-ui "<워크플로우>.json" (ComfyUI가 실행 중이어야 함).
  3. 활성 확인 + 인식:
    $PY scripts/h3wf.py show      # 인식 결과만 확인
    $PY scripts/h3wf.py sync      # 인식 통과 후 이번 생산의 기준으로 디스크에 저장
    
  4. 출력 해석: rack/desk/cast/seed/final 다섯 가지 필수 역할이 모두 값이 있어야 함; 없으면 워크플로우가 노드 클래스 이름을 변경한 것이므로, 이 줄을 사용자에게 보여주고 스스로 추측하지 말 것. [note]에는 다중 후보를 어떻게 선택했는지 기록됩니다. 동일한 출력은 세 가지 항목을 더 제공하며, 하나라도 없으면 이후 단계에서 문제가 발생합니다:
    • 프로젝트 이름(감독대 chain.name): submit은 이를 사용하여 완성된 영상이 h3_chain/의 어떤 디렉토리로 이동할지 결정하며, 첫 번째 submit 시 이를 project.json.chain에 바인딩으로 기록합니다. '—'로 표시되면 감독대에 프로젝트 이름이 입력되지 않은 것이며, 이 경우 submit은 스킬 프로젝트 이름으로 대체하고 경고를 발생시킵니다 — 이는 별도의 영화를 시작하는 것과 같으며(바인딩은 기록되지 않음). 바인딩 후 이름을 변경하면 거부됩니다. §10.1 참조.
    • 1차 채취 접두사: watch/gate --latest는 이 접두사를 사용하여 1차 채취 파일만 인식합니다. '—'로 표시되면 전체 접두사로 대체되며, 전체 체인을 실행한 후 초해상도/최종 파일을 1차 채취로 잘못 인식하여 이중 검사할 수 있습니다.
    • [WARN] 파일 수거 경로: '세그먼트 끝 귀환' 또는 그 '순서 앵커'가 연결되어 있지 않으면 완성된 영상이 감독대로 돌아오지 않아 다음 세그먼트가 연결되지 않습니다.
  5. ComfyUI가 열려 있지 않은 경우 헤드리스 시작 허용(포트 8188, 데스크톱 프로그램에 영향 없음):
    cd "D:/Comfy-Desktop/ComfyUI-Installs/ComfyUI (1)/ComfyUI"
    ".venv/Scripts/python.exe" main.py --port 8188 \
      --input-directory "D:/Comfy-Desktop/ComfyUI-Shared/input" \
      --output-directory "D:/Comfy-Desktop/ComfyUI-Shared/output" \
      --enable-assets --disable-auto-launch
    
    하지만 사용자가 직접 연 것을 우선 사용하며, 노드 상태는 그의 인터페이스를 기준으로 합니다.

워크플로우가 변경된 경우: h3wf.py doctor는 '노드 번호 변경됨 / 접두사 변경됨 / 프로젝트 이름 변경됨 / 역할 누락'을 나열합니다. 의도적인 업데이트로 확인된 경우 → h3wf.py sync --force로 다시 핸드셰이크를 수행하면 이후 모든 제출이 자동으로 새 그래프를 사용합니다. submit은 호출될 때마다 지문을 재확인하며, 확인되지 않은 드리프트는 직접 거부됩니다(밤새도록 이전 그래프를 몰래 사용하지 않음). 핸드셰이크 시 history_seq 워터마크가 기록됩니다: 이보다 이른 실행 그래프는 드리프트로 간주되지 않으며(/history가 지워지기 전에 남은 이전 기록), 핸드셰이크 이후에 새로 생성된 그래프가 다른 경우에만 거부됩니다.

3. 1단계: 감독 스케줄링 (필수, 대본을 받으면 가장 먼저 할 일)

대본을 받은 후 바로 프롬프트를 작성하는 것을 허용하지 않음. 먼저 director-advisor 스킬을 로드하여 완전한 스토리보드 방안을 생성합니다:

  1. 5가지 요소 분해: 감정 톤 / 드라마틱 비트 / 인물 관계 / 공간 / 동작
  2. 리듬 골격 결정: 샷 수, 긴장 곡선(최고점은 하나만), 오프닝 샷과 마무리 샷
  3. 샷별 설계: 구도=감정 거리, 카메라 움직임=감정 이동, 한 샷에 하나의 동작 단위, 지속 시간 1~3초(최대 5초), 각 샷에 설계 이유 한 줄 포함
  4. 실제 영화 사례 앵커 1~2개 연결(director-advisor/references/master_cases.md에서만 가져올 것)

그런 다음 references/directing_bridge.md에 따라 H3 세그먼트로 변환하고, 세그먼트 계획표를 디스크에 저장합니다:

{"name": "영화 제목", "segs": [
  {"seg": "seg01", "length": 175, "shots": "1-4", "dialogue": false,
   "hook": "첫 번째 세그먼트: 풀 샷으로 공간 구축", "sfx": true, "event": "그녀가 석조 주택으로 걸어 들어가 등을 내려놓는다"}
]}
  • length: 175(≈7.29초, 3-4샷)이 권장값; 124(≈5.17초, 1-2샷) / 243(≈10.13초, 2-4샷)도 사용 가능. 핵심 공식: 순수 새 프레임 = length − cont_frames. cont_frames=5일 때, 175프레임은 순수 170프레임(7.08초), 124프레임은 순수 85프레임(3.54초) — 동일한 연결 오버헤드에서 175의 순수 출력이 두 배이며, 렌더링 시간은 4~4.5분으로 가성비가 가장 좋습니다. 대사가 있는 세그먼트도 175를 사용하고, 243을 사용하지 마십시오: 세그먼트가 길수록 대사가 세그먼트 끝까지 밀릴 가능성이 높아집니다(§12 대사 타임라인 철칙 참조).
  • hook: 이전 세그먼트와의 연결(자세/시선/조명 연속), hook을 작성할 수 없으면 세그먼트를 잘못 나눈 것입니다.
  • dialogue/sfx: 오디오 게이트가 어떤 항목을 검사할지 결정(대사 없는 세그먼트는 무음 검사, 폴리 없는 세그먼트는 --fx 해제).
  • 검증: $PY scripts/h3proj.py plan --check

하나의 세그먼트 = 하나의 이벤트, 세그먼트 내에서 여러 샷 가능([비트 N]이 샷 위치이며, '하드 컷 투...'라고 쓰면 H3가 그대로 컷함); 공간(맵)과 주요 이벤트는 변경할 수 없음. 컷 지점은 반드시 동작 위에 있어야 하며, 시간에 따라 균등 분할해서는 안 됩니다.

스토리보드를 작성할 때 동시에 두 가지 내용 점검을 수행합니다(자세한 내용은 references/vividness.md 참조):

  • 논리 4가지 질문: 이 순간 인물은 무엇을 하고 싶은가? 그는 어디에 있으며 누구를 향하고 있는가? 시간/조명이 연속적인가? 이전 동작의 인과 관계가 끊어지지 않았는가?
  • 생동감 3종 세트: 각 비트에 최소한 '동작 원인 + 환경 반응 + 재료 촉감'을 하나씩 제공해야 하며, '서서 말하기'만으로는 안 됩니다.

3.1 선택적 강화: 고품질 격투 및 이인 대치 자세 파이프라인 (Shisei Pose Guidance)

대본이 근접 격투, 무기 교차, 이인 양방향 대치 또는 복잡한 사지 얽힘을 포함하는 경우, 비디오 모델의 일반적인 '동작 약화, 해부학적 변형, 정면이 뒷면으로 바뀜(180° 축선 뒤집기)'을 방지하기 위해 로컬 Shisei 자세 가이드를 장착합니다(자세한 내용은 references/shisei_combat_pipeline.md 참조):

  • 자세 검색: 로컬 검색 스크립트를 사용하여 55개의 이인 대치 동작과 288개의 단인 동작을 조회:
    python scripts/shisei_pose.py --duo --search "근접"
    
  • 다중 시점 선화 추출: 감독의 카메라 위치에 따라 5가지 주요 시점(front 정면 / side 측면 / diag 45° 사각 / above 조감 / below 앵글)의 선화를 프로젝트 디렉토리로 내보내기:
    python scripts/shisei_pose.py --get D001 --view diag --out references/poses
    
  • 첫 프레임 골격 앵커링: 추출된 자세 선화와 캐릭터 카드(sal_character_sheet.jpg 등)를 이미지 생성 엔진(Imagen / Qwen)에 공동으로 주입하여 100% 구도가 정확한 첫 프레임을 생성한 후, MiniMax H3에 주입하여 공간 드리프트와 약한 동작을 완전히 방지합니다.

3.2 강제 공정: 스토리보드 첫 프레임 이미지 생성 검증 및 I2V 기하학적 얼굴 고정 (Keyframe Gate)

산업 철칙 (최고 우선 순위 인식): 인물 정면/반신 클로즈업이나 핵심 소품 상호작용(예: 시계 분해, 총 잡기, 돈 세기, 도장 찍기)이 있는 세그먼트의 경우, 순수 텍스트-비디오(T2V) 블라인드 생성 완전 금지! '첫 프레임 이미지 생성 검증 ➔ 이미지-비디오(I2V) 얼굴 고정 변형 방지'를 반드시 실행해야 합니다.

  1. 핵심 논리:
    • 정적 이미지 생성은 5 ~ 15초/장만 소요되며, 모든 잠재 공간 해상도를 얼굴 특징, 머리카락, 소품 미세 구조에 집중할 수 있고, 만족스럽지 않으면 초 단위로 재생성;
    • 비디오 렌더링은 단일 세그먼트당 4 ~ 8분이 소요됩니다. 순수 텍스트-비디오는 물리적 앵커 포인트가 없어 해부학적 드리프트가 발생하기 쉬우며, 사후 '자동 품질 검사' 재생성 비용은 40배 더 비싸고 근본적인 해결책이 아닙니다;
    • 선택된 첫 프레임 이미지를 MiniMaxH3ImageToVideo의 first_frame 포트에 주입하면, 0번째 프레임이 기하학적 진리값으로 고정되어 모델이 구조를 상상할 필요 없이 모든 주의력을 '동작 구동 및 입술 모양 정렬'에 할당하므로 얼굴 변형률이 30%에서 2% 미만으로 급감합니다!
  2. 실행 흐름:
    • G0 캐릭터 에셋 카드: 작업 시작 전에 references/character_sheet_standard.md에 따라 2+3 머리 분리형 캐릭터 설정 카드를 준비;
    • G1.5 첫 프레임 이미지 생성 검증: 스토리보드 작성 후, 이미지 생성 도구를 사용하여 빠르게 16:9 첫 프레임 영화 스틸을 생성하고, 얼굴 특징, 시선 초점 및 소품 정확성을 확인;
    • 확정 디스크 저장: 검증 통과 후 <프로젝트>/segments/<seg_id>_keyframe.png(또는 .jpg)로 저장;
    • 자동 인식 및 I2V 마운트: 파이프라인이 첫 프레임 이미지가 존재함을 감지하면 scripts/keyframe_gate.py를 통해 자동으로 ComfyUI에 동기화하고 first_frame 포트를 연결합니다. 감지되지 않으면 자동으로 순수 텍스트 기반으로 부드럽게 다운그레이드됩니다. 자세한 내용은 references/keyframe_i2v_guide.md를 참조하십시오.

4. 2단계: 프롬프트 작성 (표준 = references/prompt_standard_v2.md)

  • 7개 섹션 구조, [비트 N], <Audio N> 음성 카드, overall_soundscape 3계층 사운드, 세그먼트 이름을 한 글자도 바꾸지 말 것.
  • 프롬프트는 segments/<seg>.txt에 작성(순수 프롬프트 본문, 코드 블록으로 감싸지 말 것).
  • 음성 카드: 프로젝트의 voice_card.json을 우선 사용(h3proj.py new가 이미 템플릿을 복사함), 세그먼트 간에 글자 단위로 일관성 유지.
  • preflight는 별도로 실행할 필요 없음: submit 내부에서 check_prompt_v2.check()를 호출하며, FAIL이 있으면 직접 거부됩니다. 미리 별도로 확인하려면: $PY scripts/check_prompt_v2.py --file segments/seg01.txt --length 243

형식 요점 빠른 참조(세부 사항은 규범 문서 기준): <Subject N>에 모두 권한= 포함; 감정 단어 불허용; 각 비트 음향: 항목별로 지목 + '오직 이 N종만, 다른 소리 없음' 마감; 대사 종료 지점에서 세그먼트 끝까지 ≥1.0초; 한 세그먼트에 한 줄의 대사.

부정어 역효과 (실측, 두 번 경험): H3는 금지어의 개체명을 긍정적 힌트로 간주하여 그림에 그려냅니다. 방지 오류 제약에서 '물 용오름, 물기둥, 분수 생성 엄금'이라고 쓰면, 화면에 하얀 물기둥이 하나 생깁니다; 동작 설명에서 '헬멧 앞쪽 가장자리가 위로 올라간다'고 쓰면, 주인공 머리 위에 투명한 헬멧이 생깁니다. 규칙: 어떤 것을 등장시키지 않으려면, 그 이름을 문장에서 완전히 삭제하고, 진정으로 원하는 화면을 긍정적으로 설명하십시오 (예: '수직 아래로 내려다보며, 원형 함몰과 물에 잠긴 검은 인영만 있음'), 'X가 아님, X를 하지 마십시오'와 같이 쓰지 말 것. 방지 오류 제약에는 추상적인 제약만 남깁니다(워터마크 없음/자막 없음/기형 손 없음/화염 광효과 없음).

연속 잠재는 첫 비트의 인물을 비틀 수 있음 (이 프로젝트에서 5회 재현, 가장 비싼 함정): --cont가 있는 세그먼트의 첫 비트는 안정적으로 검은색 긴 로브를 입고 긴 머리를 푼 키 큰 뒷모습을 생성합니다. 비록 이전 세그먼트의 마지막 프레임이 '물 표면 내려다보기 + 물에 떨어진 검은 그림자'(seg02)이거나 '첸모 얼굴 클로즈업, 검은 티셔츠'(seg03)이더라도, 참조 이미지가 올바르게 주입되었고([rack] 소재 1개: 첸모→첸모.png), 텍스트가 옷을 자세히 설명했음에도 모두 무시됩니다. 동일한 프롬프트, 동일한 참조 이미지, 동일한 seed 구간에서 --cont off로 변경한 후 두 번 모두 정상으로 돌아왔습니다 (seg02 첫 비트는 검은 티셔츠에 짧은 머리의 첸모로 돌아감; seg03 첫 비트는 순수 빈 공간 도시 조감도로 돌아감).

판단 및 처리:

  • 이 프로젝트 결론: 연속은 유지하되, 5프레임만 고정(project.json의 cont_frames: 5, 즉 0.21초). 사용자가 원하는 것은 '몇 프레임으로 컨텍스트 일관성을 보장하는 것'이며, 39프레임(1.625초)은 너무 낭비이고, 후반에 세그먼트별로 잘라내야 합니다. 순수 하드 컷(해변 → 문 밖과 같은 대본 자체의 장소 점프)인 경우 --cont off를 사용합니다. 앵커 오염이 5프레임에서도 여전히 발생하는지 실측 기록이 필요합니다; 첫 비트의 인물이 맞지 않으면 먼저 --cont off를 시도합니다.
  • 일반 판단 기준: 연속은 '동일한 공간, 동일한 카메라 위치, 동작이 직접적으로 연속'되는 경우에만 유용할 수 있습니다; 첫 비트의 인물 의상/체형/헤어스타일이 맞지 않으면 먼저 --cont off로 한 번 테스트(1차 채취는 2분만 소요)하는 것이 텍스트를 변경하는 것보다 훨씬 빠르며, 텍스트 변경은 효과가 없습니다.
  • 연속을 활성화하면 [cont] clip_xxxx(...) 연결이 출력됩니다; 첫 프레임을 확인한 후 유지 여부를 결정하십시오.

4.1 H3 준수 경계 (프롬프트 작성 전 필독)

다음은 실측을 통해 확인된 하드 경계이며, 텍스트를 변경해도 소용없고 seed를 변경해도 소용없으며, 작성법으로 우회할 수밖에 없습니다. 모든 내용은 13개 세그먼트 / 86초 완성본의 연속 기록에서 비롯된 것이며, 추측이 아닙니다.

당신이 시키려는 것실측 결과대체 작성법
후방 당김 / 멀어짐 / 푸시 인 (변위형 카메라 움직임)4번 모두 실패. '막대기가 보일 때까지만 뒤로 물러나서 멈춤'이라고 써도 여전히 창문 밖으로 나가 다른 내벽이 드러남순수 팬(동일 카메라 위치에서 각도만 변경: 먼저 아래로 팬하여 바닥, 그런 다음 다시 위로 팬)으로 전환하거나, 직접 하드 컷 사용
카메라가 창문/구멍을 통과하여 내부 진입문이 열리게 됩니다. '문은 계속 닫힌 상태를 유지하고, 빈 창문 구멍으로만 진입'이라고 써도 소용없음세그먼트 내 하드 컷으로 내부 진입, 조립 시 세그먼트 시작을 컷 지점까지 자름; 어떤 카메라 움직임 전환보다 안정적
창문 밖 풍경이 움직임 (차량 주행 중)생성되지 않음. '흰색 점선이 초당 3개씩 다가옴'으로 변경해도 소용없음(창문 영역 프레임 간 차이: 정지 1.26 / 움직임 작성 4.15, 육안으로도 움직임을 볼 수 없음)주행감은 후반 작업으로 엔진음 + 약한 차체 흔들림으로 보완하고, 생성에 의존하지 말 것
'구도 변경 없음 / 푸시 인 없음 / 푸시-풀 없음'준수도 낮음, 후반부에도 여전히 푸시 인 발생긍정적 설명으로 변경: '화면에 항상 전체 X가 들어맞음(문틀 상단에서 발판까지)' — '반드시 포함해야 하는 것'으로 제어
'X가 나타나지 않도록 / X가 아님'역효과 발생, X가 오히려 그려짐 (위의 부정어 역효과와 동일)X의 이름을 문장에서 완전히 삭제
동일한 비트에서 2개 이상의 동작각각 절반만 수행하거나 가장 '재미없는' 것을 건너뜀(문 닫기가 '두 손을 운전대에 올림'에 밀림)한 비트에 최대 두 개의 동작; 네 개의 동작이면 비트를 나누거나 삭제
'약 X초에 말을 마침 / N번째 비트 시작 부분에 발생'시간 설명 완전히 무효H3의 타임라인은 텍스트 이벤트 순서로 결정되며, 블록의 순서 위치만 조정 가능
단일 세그먼트에 여러 시간대의 카메라 움직임 작성 (0-3초 푸시, 3-5초 정지)Qwen3-VL이 중간에 카메라 위치가 바뀐 것으로 오인, 세그먼트 내 화면 플래시 컷 유발단일 [Shot 1]에 엄격히 처음부터 끝까지 관통하는 카메라 움직임 명령 하나만 작성
중근거리 샷에 일어나기(rises from chair) 작성인물 머리가 화면 프레임 상단 가장자리를 벗어나 머리 절반이 잘림폭발적인 장면은 leans sharply forward across table with veins bulging(격노하여 앞으로 몸을 기울이며 테이블을 짚음)으로 대체
측면 샷에 복수 얼굴 특징 (brows/eyes) 또는 부정문 작성모델이 양안을 그리거나 부정어 역효과로 인해 강제로 카메라를 향해 고개를 돌림복수 얼굴 특징 및 turn/camera 단어를 엄격히 금지, 순수하게 긍정적인 측면 정적 설명 사용, 끝부분에 TailLock 잠재 변수 클램프로 고정
평온한 음성 파형으로 절정 장면에서 외침이 나오지 않음참조 오디오의 평온한 억양이 오디오 잠재 공간 에너지를 고정함T8mars 프로토콜 사용: 대사에 포효 부언어 접두사 추가, 0.4초에 물리적 충격 순간 Foley를 주입하여 음향 에너지 폭발(+10dB)

한마디로: H3는 '화면에 반드시 있어야 하는 것'은 듣고, '카메라가 하지 말아야 하는 것'은 듣지 않습니다; '이벤트 순서'는 듣고, '초'는 듣지 않습니다.

연속 세그먼트에는 또 하나의 전용 경계가 있습니다: 연속 쓰기 블록이 끝나는 프레임에서 모델이 참조 이미지 구도로 '재설정'될 가능성이 가장 높습니다. 이때가 하드 컷이면, '다른 샷을 시작'할 기회를 갖게 됩니다 — 실측에서 seg02 첫 번째 버전의 처음 38프레임은 완벽하게 연결되었지만, 39프레임이 끝나자마자 인물 전체가 사라지고 참조 이미지의 무인 풀 샷으로 점프했습니다. 따라서: 연속 세그먼트에는 하드 컷을 작성하지 말고, 원샷 원테이크 + 동일한 카메라 위치가 가장 안정적입니다; 샷 전환이 필요하면 별도의 세그먼트로 만드십시오.

5. 3단계: 생성, 모니터링, 파일 수거 (하나의 명령으로 한 가지 작업)

# ① 제출 (preflight + 프로젝트 등록 + 연속 + seed 선택 + 기준선 기록)
$PY scripts/sop_run.py submit --seg seg01 --assets 소재.json [--length 243] [--silent]
#    소재.json: {"캐릭터1":"cglide/<프로젝트>/캐릭터1.png", "장면":"cglide/<프로젝트>/장면.png"}
#    --dry-run        조립만 하고 제출 안 함 (새 세그먼트 등록 안 함, 프로젝트 파일 건드리지 않음), ComfyUI가 그래프의 필수 항목을 검증하도록 함
#    --chain <프로젝트 이름>  핸드셰이크 그래프의 chain.name을 재정의 (바인딩된 값과 같아야 함, 그렇지 않으면 거부)
#    --rebind         실제로 감독대 프로젝트를 변경해야 할 때만 사용 (바인딩 재설정, 연속이 여기서 끊어짐)
#    --cont auto|off|<연속 촬영 세그먼트 경로>   기본 auto=이전 세그먼트에 연결, off=첫 번째 세그먼트로 간주
#    --allow-nocont   이 세그먼트가 실제로 독립적으로 시작해야 할 때 사용: '연속 촬영 세그먼트를 찾을 수 없음' 허용

# ② 모니터링 (백그라운드에서 실행 권장: 이 단계는 1차 채취가 디스크에 저장될 때까지 기다렸다가 즉시 이중 검사 수행)
$PY scripts/sop_run.py watch --seg seg01 --timeout 3600

**실패 판단 시 즉시 GPU를 양보해야 함**. 1차 채취가 디스크에 저장되면 2차 채취가 시작됨; 전체 품질 검사(프레임 추출 + 시각적 정량화,
십여 초)의 결론을 기다렸다가 중단하면, 3차 채취/초해상도가 이미 실행 중일 수 있어 컴퓨팅 파워가 낭비됨. 따라서 `watch`는 이제 두 단계로 나뉩니다:
- **디스크 저장 즉시 오디오 빠른 검사**(`_fast_audio_gate`)

...

[내용이 번역을 위해 잘렸습니다]

Individual skills in this repo

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

comfy-h3-render-core

短剧工业化管线·第 3 工序:H3 物理视频渲染与防翻车调度。负责与本地 ComfyUI 服务交互,调度 MiniMax H3 进行 Turbo 8-step 视频生成。硬核沉淀:Windows WDDM 驱动锁防御、潜空间 32 整除铁律、单人发音锁定与全员闭嘴抑制指令装配、首帧 I2V 安全注入、分镜间显存防泄漏。

drama-audio-soundstage

短剧工业化管线·第 4 工序:声音工程与智能避让配乐。负责 H3 视频生成后的声音精修。硬核沉淀:谱减法音频门控(消灭风噪/电流床音)、Whisper ASR 纯普通话语种漂移拦截、FFmpeg 原生侧链动态避让混音(Sidechain Ducking,台词开口 BGM 瞬降 -14dB,闭嘴扬起)。

drama-director-staging

短剧工业化管线·第 1 工序:编剧与导演分镜调度。负责将剧情大纲或小说文本转化为符合短剧视听规律的工业级分镜。内置:6 大动态运镜轮换决策树、台词纯中文汉字归一化(数字大写)、短剧快节奏 20~28 字密度调控、单人发言与旁观者闭嘴标注。

drama-finishing-upscaler

短剧工业化管线·第 5 工序:终期成片与 1080p 超分增强。负责全集分镜无损拼接与院线级 1080p 超分辨率放大。硬核沉淀:FFmpeg concat 零损耗直拼、RealESRGAN x2plus GPU 独占 FP16 批量超分(~4.8fps)、原生高质量避让音轨无损混流、ffprobe 工业级物理参数验收。

drama-keyframe-forge

短剧工业化管线·第 2 工序:分镜定帧与资产一致性。负责在视频渲染前,建立全局风格母卡 (Style Bible),并为每个分镜前置生成“场景+人物+道具”三合一的 16:9 高清定帧垫图。彻底根治 T2V 盲跑带来的人脸变形、角色换脸、场景变色与道具软化。

관련 스킬