아키텍처
intro에서 두 트랙과 게이트를 짚었습니다. 여기서는 그게 8 에이전트와 phase 흐름으로 어떻게 생겼는지, 영상 여러 편이 어떻게 격리되는지를 봅니다. 눈여겨볼 건 두 가지입니다. 각 게이트를 단일 에이전트가 담당하고 사용자 승인이 에이전트 간 연결고리라는 것, 그리고 산출물이 채팅이 아니라 _workspace/ 파일로 남는다는 것입니다.
두 트랙 phase 흐름
섹션 제목: “두 트랙 phase 흐름”graph TB start[사용자 입력] start -->|URL 없음, 캐릭터/시나리오| g0[생성형] start -->|URL 첨부| r0[리믹스]
g0 --> ga[Gate A 기획 - plan.md] ga --> gb1[Gate B-1 장면 - scenes.json, 5 구조] gb1 --> gb2[Gate B-2 이미지 - Codex 후보] gb2 --> gc[Gate C 영상 - ffmpeg draft] gc --> gpub[발행 메타 - publish.md]
r0 --> ra[Gate A 분석 - yt-dlp, Whisper, hook] ra --> rb[Gate B 편집 - 자동컷 ffmpeg] rb --> rpub[발행 메타 - publish.md]생성형은 게이트 4개와 발행, 리믹스는 게이트 3개와 발행입니다. 각 게이트에서 사람이 승인하거나 수정하거나 롤백합니다. 발행은 두 트랙 다 자동으로 하지 않습니다(S8).
8 에이전트
섹션 제목: “8 에이전트”| 에이전트 | 트랙 | 책임 |
|---|---|---|
content-strategist | 생성형 | 기획, 채널 전략 |
scene-planner | 생성형 | 장면 분해, 5 구조 슬롯 채우기 |
image-director | 생성형 | Codex 이미지 생성 (Codex 호출은 여기만) |
video-editor | 생성형 | ffmpeg 영상 합성 |
voice-director | 생성형 | 음성 합성 |
source-analyst | 리믹스 | yt-dlp 수집, Whisper 전사, hook 탐지 |
remix-editor | 리믹스 | 자동 편집, 컷 |
publish-copywriter | 공통 | 발행 메타 (자동 발행 금지) |
blog-writer는 생성형 트랙에서 옵션으로 분기하는 자리입니다. Codex CLI 호출은 image-director 한 곳에만 모읍니다(S7). 여러 에이전트가 부르면 스타일이 깨지고 비용 제어가 안 됩니다. 리믹스 트랙은 이미지를 생성하지 않습니다.
fast-preview — 사람 대기 제거
섹션 제목: “fast-preview — 사람 대기 제거”게이트마다 사람이 멈춰 승인하면 실제 compute보다 사람 대기 왕복이 시간을 더 키웁니다. preview 모드의 기본값인 fast-preview는 기획 단계 게이트(A, B-1, B-2)를 자동 통과하고 영상 초안까지 한 번에 달립니다. 사람은 중간 JSON이 아니라 실제 영상을 Gate C에서 한 번만 봅니다.
게이트 철학은 깨지지 않습니다. 산출물은 전부 _workspace/에 남아 Gate C에서 어느 단계로든 롤백할 수 있고(“기획부터 다시”, “장면 3만”, “이미지 다시”), 자동 발행 금지는 그대로입니다. final 렌더에 진입하면 fast-preview는 무시되고, final은 항상 Gate C 명시 승인 후에만 돕니다.
멀티영상 폴더 격리
섹션 제목: “멀티영상 폴더 격리”한 채널에서 여러 영상을 동시에 굴립니다. 영상 한 편당 폴더 하나로 격리되고, 루트의 videos.json이 인덱스입니다.
graph TB idx[_workspace/videos.json - 인덱스 + active_slug] ch[channel.json - 채널 정체성, 전역] cache[.cache/ - 시트/이미지/자막/BGM 해시, 전역 공유] idx --> v1[robot-pov-ep01/ - 생성형] idx --> v2[drama-clip-30s-01/ - 리믹스] v1 --> v1a[plan.md, scenes.json, images/] v1 --> v1b[video_drafts/, publish.md, progress.md] v2 --> v2a[source/ - video, transcript, license.json] v2 --> v2b[publish.md, progress.md, license_responsibility.json]videos.json이 영상 목록과 활성 영상(active_slug)을 들고 있습니다. 모든 에이전트와 스킬은 이 인덱스를 읽어 작업 폴더를 정합니다. “장면 3 이미지 다시”, “후크 다시” 같은 부분 재실행도 활성 영상에 적용됩니다. channel.json(채널 정체성)과 globalization_decision.json(글로벌 친화)은 영상 무관한 전역 자산이고, .cache/는 캐릭터 시트와 이미지, BGM을 영상 간 재활용하는 자리입니다.
디렉토리 계약
섹션 제목: “디렉토리 계약”_workspace/├── videos.json 인덱스 + active_slug├── channel.json 채널 정체성 (전역)├── globalization_decision.json 글로벌 친화 플래그 (전역)├── .cache/ 해시 캐시 (전역 공유)└── {video_slug}/ ├── brief.md Phase 1 요건 ├── plan.md Phase 2 기획 (생성형) ├── source/ 원본 (리믹스 — video, transcript, license.json) ├── scenes.json 장면 분해 (생성형) ├── images/{scene}/candidate_*.png 이미지 후보 (생성형) ├── video_drafts/draft_v{n}.mp4 영상 ├── publish.md 발행 메타 ├── progress.md 진행 정본 ├── timings.json 성능 측정 └── license_responsibility.json 명시 책임 수락 (리믹스)_workspace/ 바깥의 .claude/, AI_AUTOMATION.md는 사람 승인 없이 수정하거나 삭제하지 않습니다(S2).
자동화 진입점은 한 곳을 가리킨다
섹션 제목: “자동화 진입점은 한 곳을 가리킨다”.claude/agents/와 .claude/skills/는 Claude Code용 저장 위치이고, AGENTS.md는 Codex용 진입점입니다. 둘 다 AI_AUTOMATION.md를 읽습니다. 트랙 라우팅, scene type 스펙, videos.json 스키마, license-policy 레벨이 그 한 파일에 모여 있어, 어느 런타임에서 작업하든 phase와 산출물 계약이 같습니다.
다음 섹션은 tracks입니다. 생성형의 template filling과 리믹스의 hook discovery가 어떻게 다른지, 트리거가 어디서 갈리는지를 봅니다.