# Checklist 19 Steps

Project ID: 28052026-001-Tay-Son-That-Ho-Tuong
Channel: Vet Muc Thoi Gian
Workflow version: v1-19-step-history-video
Current step: 5
Updated at: 2026-05-28T04:46:24

Rule: After completing any step, update this checklist JSON and the Markdown mirror immediately before reporting completion.

## [x] Step 01 - Receive story/input and create project folder

Status: done
Completed at: 2026-05-28T03:00:02

Input:
- story_input
- main_character
- topic

Output:
- project_folder
- checklist_19_steps.json
- checklist_19_steps.md

Validation:
- [x] Project folder exists
- [x] Checklist JSON/MD exists
- [x] Source story saved

## [x] Step 02 - Clean story and split scene/dense plan

Status: done
Completed at: 2026-05-28T03:01:29

Input:
- script/source_story.txt

Output:
- script/cleaned_story.txt
- script/scenes.json
- script/scenes_validation.json

Validation:
- [x] Cleaned story exists
- [x] Scenes valid
- [x] Metadata not turned into scenes

## [x] Step 03 - Create character bible

Status: done
Completed at: 2026-05-28T03:01:29

Input:
- script/cleaned_story.txt
- script/scenes.json

Output:
- script/character_bible.json

Validation:
- [x] Character bible exists
- [x] Main/supporting characters covered

## [x] Step 04 - Create/validate/approve scenes dense plan

Status: done
Completed at: 2026-05-28T03:01:29

Notes: User requested title wording change: Bảy Hổ Tướng Tây Sơn -> Tây Sơn Thất Hổ Tướng. Dense plan updated and still pending approval.

Input:
- script/scenes.json
- script/character_bible.json

Output:
- script/scenes.json approved dense plan

Validation:
- [x] Dense plan has scene_id/summary/narration/visual_prompt
- [x] No duplicate narration
- [x] Approved for next step only after user review

## [x] Step 05 - Generate character references before scene images

Status: completed_pending_user_approval
Completed at: 2026-05-28T04:46:24

Notes: Generated 10/10 character reference images using gen-img-gpt (model cx/gpt-5.5-image). Awaiting user visual approval before Step 6.

Input:
- script/scenes.json
- script/character_bible.json

Output:
- script/character_reference_plan.json
- characters/*_ref.png

Validation:
- [x] Validation pending

## [ ] Step 06 - Generate scene images and final thumbnails

Status: pending

Input:
- approved character refs
- script/scenes.json

Output:
- images/scenes/scene_*.png
- output/thumbnails/thumb_16x9_final.png
- output/thumbnails/thumb_9x16_final.png

Validation:
- [ ] Validation pending

## [ ] Step 07 - Generate TTS audio for each scene

Status: pending

Input:
- script/scenes.json

Output:
- audio/scenes/scene_*.wav
- logs/step_07_tts_manifest.json

Validation:
- [ ] Validation pending

## [ ] Step 08 - Build master narration timeline on worker

Status: pending

Input:
- audio/scenes/scene_*.wav
- script/scenes.json

Output:
- audio/master_narration.wav
- audio/master_narration_timeline.json

Validation:
- [ ] Validation pending

## [ ] Step 09 - Probe real audio durations on worker

Status: pending

Input:
- audio/master_narration.wav

Output:
- audio/master_audio_probe.json

Validation:
- [ ] Validation pending

## [ ] Step 10 - ASR master narration word timestamps

Status: pending

Input:
- audio/master_narration.wav

Output:
- subtitles/master_narration_asr_words.json

Validation:
- [ ] Validation pending

## [ ] Step 11 - Map original narration to ASR word timing

Status: pending

Input:
- script/scenes.json
- subtitles/master_narration_asr_words.json

Output:
- subtitles/master_subtitles.srt
- subtitles/master_subtitles_mapping.json

Validation:
- [ ] Validation pending

## [ ] Step 12 - Clamp subtitle safe gaps and validate no overlap

Status: pending

Input:
- subtitles/master_subtitles.srt
- audio/master_audio_probe.json

Output:
- subtitles/master_subtitles_clamped.srt
- subtitles/master_subtitles_validation.json

Validation:
- [ ] Validation pending

## [ ] Step 13 - Split render into sync-safe parts

Status: pending

Input:
- audio/master_narration.wav
- subtitles/master_subtitles_clamped.srt

Output:
- parts/part_ranges.json
- parts/audio/part_XX.wav
- parts/subtitles/part_XX.srt

Validation:
- [ ] Validation pending

## [ ] Step 14 - Render each part with exact part audio/subtitle on worker

Status: pending

Input:
- parts/part_ranges.json
- parts/audio/part_XX.wav
- parts/subtitles/part_XX.srt

Output:
- render_parts/part_XX.mp4
- render_parts/render_validation.json

Validation:
- [ ] Validation pending

## [ ] Step 15 - Concat rendered parts into main story video on worker

Status: pending

Input:
- render_parts/part_XX.mp4
- render_parts/render_validation.json

Output:
- output/main_story.mp4
- output/main_story_probe.json
- output/concat_report.json

Validation:
- [ ] Validation pending

## [ ] Step 16 - QA early/mid/late main story video

Status: pending

Input:
- output/main_story.mp4
- output/concat_report.json

Output:
- output/main_story_qa_report.json

Validation:
- [ ] Validation pending

## [ ] Step 17 - Create project intro with locked format

Status: pending

Input:
- series/title metadata
- logo
- thumbnail
- voice refs

Output:
- output/intro/intro_audio.wav
- output/intro/intro.mp4
- output/intro/intro_probe.json

Validation:
- [ ] Validation pending

## [ ] Step 18 - Final package intro + main + outro + BGM audio-safe

Status: pending

Input:
- output/intro/intro.mp4
- output/main_story.mp4
- outro asset
- BGM asset

Output:
- output/final/final_video.mp4
- output/final/final_video_probe.json
- output/final/final_package_report.json

Validation:
- [ ] Validation pending

## [ ] Step 19 - QA final, write output/info.json, approve output

Status: pending

Input:
- output/final/final_video.mp4
- thumbnails
- prior reports

Output:
- output/final/final_qa_report.json
- output/info.json

Validation:
- [ ] Validation pending
