# Godfortune Production Plan

Last updated: 2026-07-14

## Role Split

`youtube-content-ops` plans the content: fortune topic, language, format, script intent, lyrics, channel ref, and publish request.

`studio-core` produces the media: visual style, character consistency, image/video generation, music generation, subtitles, render composition, final MP4 artifact, and YouTube publishing.

## Core Direction

Do not generate the full 45-60 second Short in one AI video call. The safer production model is:

1. Receive content payload from content-ops.
2. Select the style profile.
3. Build a scene manifest.
4. Generate or reuse character and background stills.
5. Generate short image-to-video clips per scene.
6. Generate TTS or music depending on `content_format`.
7. Generate captions and effects.
8. Compose final Shorts MP4 with FFmpeg.
9. Publish with the YouTube adapter.

This keeps character identity, subtitles, timing, and review artifacts controllable.

## Style Profile

Primary profile:

```text
godfortune_2d_song_mascot_v2
```

Prompt direction:

```text
simple Korean 2D web animation mascot,
clean thick outlines and flat readable colors,
stable cute boy-dosa identity,
separate mouth, eye, eyebrow, pose, and effect layers,
exaggerated musical comedy acting,
vertical 9:16 Shorts composition
```

Avoid direct brand-style terms such as `Pixar style` in production prompts.

The older `saju_theater_style` semi-real/2.5D direction is archived. It must not be
mixed into the active mascot because it changes the face geometry and character identity.

## Visual System

Reusable assets:

- `char_godfortune_master`
- `char_fortune_client`
- `zodiac_mini_animals`
- five-elements icons: fire, water, wood, metal, earth
- opening title particle background
- verdict/end-card templates

Default `fortune_skit` or `fortune_tts_short` structure:

- `0-2s`: golden particles and fortune title
- `2-8s`: fortune master appears and presents the question
- `8-25s`: core reading
- `25-40s`: twist, warning, or sharp insight
- `40-55s`: action advice and positive close
- `55-60s`: comment/subscribe CTA

Default `fortune_song_short` structure:

- `0-5s`: hook chant
- `5-18s`: verse
- `18-28s`: pre-chorus
- `28-45s`: chorus
- `45-55s`: verdict line
- `55-60s`: CTA

## Recommended Open-Source Stack

### Visual Generation

First candidate:

- ComfyUI as workflow runner and API backend
- Wan2.1 for initial T2V/I2V testing

Why:

- ComfyUI has workflow JSON and queue APIs that fit the existing port/adapter design.
- Wan2.1 supports T2V/I2V, has ComfyUI integration, and has a lighter 1.3B entry point.

Secondary candidates:

- LTX-Video/LTX-2 for image-to-video if GPU VRAM is sufficient.
- HunyuanVideo for higher quality if hardware allows.
- FramePack for lower-VRAM or longer clip experiments.

Character animation is not delegated to portrait lip-sync engines. The active path is
the `singing_mascot_rig_v2` layered renderer. LatentSync, LivePortrait, and SadTalker
outputs are archived research and are not production fallbacks for this character.

### Music Generation

First candidate:

- ACE-Step for `fortune_song_short`

Why:

- Better aligned with lyrics, vocal style, and short song generation than generic BGM models.
- Fits current fields: `lyrics`, `music_style`, `vocal_style`, `target_duration_seconds`.

Secondary candidates:

- MusicGen for BGM and instrumental loops.
- Stable Audio Open for sound effects and background audio.
- YuE or DiffRhythm for lyrics-to-song experiments.

## Studio-Core Target Ports

- `StyleProfileRepository`
- `CharacterAssetRepository`
- `SceneTemplateRepository`
- `ImageEngine`
- `VideoEngine`
- `MusicEngine`
- `RenderEngine`
- `PublishEngine`

Current implemented stub:

- `MusicEngine`
- `music.generate` step
- `fortune_song_short` routes to music generation and defaults to `review_pending`

## Next Technical Check

Before installing visual or music engines, verify that the VM sees the GPU:

- PCI GPU visible
- NVIDIA driver installed
- `nvidia-smi` available
- CUDA visible to Python/PyTorch
- available VRAM
- disk capacity for model weights

Do not install large models until GPU passthrough and driver state are confirmed.

Current status: GPU passthrough and NVIDIA driver are working in the `studio-core` VM. See `docs/gpu-runtime-status.md`.

The ComfyUI custom-node selection and compatibility gates are tracked in `docs/comfyui-node-compat-plan.md`.

The 2D character automation direction for `fortune_song_short` is tracked in `docs/2d-character-automation-research.md`.
