# Checklist 19 Steps

Project ID: 26052026-001-Ngo-Quyen
Channel: Vet Muc Thoi Gian
Workflow version: v1-19-step-history-video
Current step: 19
Updated at: 2026-05-27T18:40:04

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-27T18:40:04

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] Step 02 - Clean story and split scene/dense plan

Status: done
Completed at: 2026-05-27T18:40:04

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-27T18:40:04

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-27T18:40:04

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] Approved for next step

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

Status: done
Completed at: 2026-05-27T18:40:04

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

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

Validation:
- [x] Required refs generated before scene images
- [x] Refs approved/recorded

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

Status: done
Completed at: 2026-05-27T18:40:04

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:
- [x] All scenes have 16:9 images
- [x] Both thumbnails exist

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

Status: done
Completed at: 2026-05-27T18:40:04

Input:
- script/scenes.json

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

Validation:
- [x] One TTS file per scene
- [x] OmniVoice payload lowercased while subtitles/source keep original casing
- [x] Manifest/log written

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

Status: done
Completed at: 2026-05-27T18:40:04

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

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

Validation:
- [x] Master narration exists
- [x] Timeline is source of truth

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

Status: done
Completed at: 2026-05-27T18:40:04

Input:
- audio/master_narration.wav

Output:
- audio/master_audio_probe.json

Validation:
- [x] Worker probe duration locked

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

Status: done
Completed at: 2026-05-27T18:40:04

Input:
- audio/master_narration.wav

Output:
- subtitles/master_narration_asr_words.json

Validation:
- [x] ASR output has word timestamps

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

Status: done
Completed at: 2026-05-27T18:40:04

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

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

Validation:
- [x] Subtitle text from original narration
- [x] Heading scenes hard cue boundaries

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

Status: done
Completed at: 2026-05-27T18:40:04

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

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

Validation:
- [x] Zero overlaps/invalid cues
- [x] Within master duration

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

Status: done
Completed at: 2026-05-27T18:40:04

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:
- [x] Part audio/subtitles rebased
- [x] Part durations valid

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

Status: done
Completed at: 2026-05-27T18:40:04

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:
- [x] All part MP4s valid
- [x] Exact part audio/subtitle used
- [x] Smooth/crossfade timing compensated

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

Status: done
Completed at: 2026-05-27T18:40:04

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:
- [x] Part order matches part_ranges
- [x] Main has audio/video
- [x] Duration close to sum parts

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

Status: done
Completed at: 2026-05-27T18:40:04

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

Output:
- output/main_story_qa_report.json

Validation:
- [x] Early/mid/late and joins QA report written
- [x] No blocker

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

Status: done
Completed at: 2026-05-27T18:40:04

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

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

Validation:
- [x] Locked intro form metadata respected
- [x] TTS payload lowercase
- [x] Intro audio/video valid

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

Status: done
Completed at: 2026-05-27T18:40:04

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:
- [x] Audio-safe package on worker
- [x] BGM volume default 0.20
- [x] Probe/blackdetect report

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

Status: done
Completed at: 2026-05-27T18:40:04

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

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

Validation:
- [x] Final QA passed
- [x] output/info.json complete
- [x] Hashtags include #vetmucthoigian
