# GIÁO ÁN 30 NGÀY — TẠO VIDEO AI LOCAL TRÊN DGX SPARK

> **Giáo án cá nhân hóa** — soạn ngày 2026-08-26, dựa trên khảo sát trực tiếp máy của bạn.
> Mục tiêu: từ số 0 → tự sản xuất được series video AI ngắn (60–90s) có nhân vật nhất quán,
> âm thanh, color, xuất bản đa nền tảng — toàn bộ chạy local trên chính thiết bị này.

---

## 1. HỌC VIÊN & THIẾT BỊ (đã kiểm chứng trực tiếp)

| Hạng mục | Giá trị thực tế trên máy của bạn |
|---|---|
| Máy | NVIDIA DGX Spark — GB10 (SM 12.1), ARM64, Ubuntu 24.04 (Cụm 2× Spark sẵn sàng qua QSFP 200 Gb/s) |
| Bộ nhớ hợp nhất | 121.6 GiB unified, bandwidth ~273 GB/s |
| Ổ đĩa trống | ~1.9 TB NVMe |
| ComfyUI | **0.33.0** tại `~/comfy/ComfyUI`, venv Python 3.11, port 8188 |
| Node tùy chỉnh | ComfyUI-KJNodes, ComfyUI-LTXVideo ✅ |
| **LTX-2.5 (workhorse)** | ✅ Đủ bộ: transformer INT8 ConvRot 21GB + Gemma4 TE 15GB + latent upscaler + video/audio VAE |
| **MiniMax H3 (nhân vật + audio)** | ✅ Đủ bộ: fl2va + ref2va INT8 pruned (20GB mỗi chiếc) + Qwen3-VL TE + video/audio VAE |
| Wan 2.2 (lane chất lượng) | ❌ Chưa tải — Ngày 15 sẽ tải (script có sẵn URL) |
| FLUX.2 (lane tạo ảnh — keyframe) | ❌ Chưa có model ảnh nào — Phụ lục H có lệnh tải (Dev FP8 + Klein 9B) |
| Dựng phim | Kdenlive ✅, Blender ✅, OBS ✅, Audacity ✅, ffmpeg 6.1 ✅ |
| Workflow mẫu | `workflows/official/` có H3 t2v/i2v/r2v + Wan2.2 + Hunyuan 1.5 (JSON hợp lệ) |
| Script hỗ trợ | `scripts/launch_comfy_video.sh`, `download_video_models.sh`, `preflight_video_node.sh`, `scaffold_project_structure.sh`, `dual_node_batch_dispatcher.py` |

**Hệ quả máy học của bạn (ghi nhớ suốt khóa):**
- Unified memory lớn nhưng **băng thông thấp** → chậm ở số bước DiT, không phải ở kích thước file. Chiến lược: **LTX-2.5 two-stage (low-res → upscale latent → refine)** là pháo chủ lực hằng ngày; H3 chỉ dành cho nhân vật/tiếng; Wan 2.2 cho shot đẹp nhất.
- Cụm **2× DGX Spark (bộ nhớ gộp 243.2 GiB)**: Mở khóa 3 mô hình vận hành chuyên nghiệp (Tháng 9/2026): (1) **Decoupled Two-Pass** (Spark 1 sinh H3 544p + audio → Spark 2 upscale LTX-2.5 22B lên 1080p); (2) **Ulysses SP=2 Model Parallel** qua fabric 200G với FastH3 / VDN-H3 (tăng tốc 75×–90×, sinh nhanh hơn thời gian phát); (3) **Director + Renderer** (Spark 1 chạy Qwen3.8 Flash NVFP4 1M context làm đạo diễn kịch bản, Spark 2 render ComfyUI).
- ARM64 Linux → **không chạy được DaVinci Resolve**. Editor chính của khóa = **Kdenlive** (đã cài).
- Benchmark cộng đồng trên đúng GB10: LTX-2.5 two-stage ≈ **62s** cho clip 5s @1280×704 có tiếng; H3 stock ≈ **866s** (chậm ~14×). Với FastH3 + TAEH3 trên 2× Spark: rút xuống chỉ còn **119s** (5s@480p) và **195s** (5s@768p). Đặc biệt: với **Sol-H3 chính thức từ NVIDIA Research NVLabs** (09/2026), H3 768p kèm audio stereo trên 1 Spark duy nhất chỉ còn đúng **56 giây** (56.17s E2E latency) nhờ VAE Adapter và pipeline coarse-to-fine resident 116.9 GiB! Ngày 10 bạn sẽ tự đo lại trên máy mình.

---

## 2. CÁCH HỌC — QUY TẮC KHÔNG THAY ĐỔI

**Mỗi ngày = 90 phút, chia 4 pha:**

| Pha | Thời gian | Việc |
|---|---|---|
| <span class="phase">Xem</span> | 20' | Xem video ở tốc độ 1.25–1.5×, dừng lại khi gặp thao tác trên ComfyUI |
| <span class="phase">Chép tóm tắt</span> | 10' | Tự viết 3–5 dòng tóm tắt vào Obsidian/vault (đừng chép lại của giáo án — viết bằng ngôn ngữ của bạn) |
| <span class="phase">Thực hành</span> | 50' | Làm bài thực hành trên máy — **ngày nào cũng ra sản phẩm** |
| <span class="phase">Log</span> | 10' | Ghi seed, prompt, thời gian render, lỗi gặp phải vào bảng theo dõi |

**4 quy tắc:**
1. Không xem video mà không thực hành trong cùng ngày. Kiến thức không dùng trong 24h là mất.
2. Mỗi tuần 1 mốc (milestone) có sản phẩm xem được. Trượt ngày thường → đền gấp đôi cuối tuần.
3. Lỗi là bài học: mọi lỗi copy vào file `notes_errors.md` kèm cách sửa.
4. Ngày 20 & 29 là **ngày đệm** — dùng để bù debt nếu trượt, hoặc đi sâu hơn nếu xong sớm.

**Mục tiêu cuối khóa (Ngày 30):** xuất bản Tập 1 của series AI có nhân vật riêng — 60–90s, 9:16 + 16:9, có voice over, nhạc, caption, thumbnail — cùng hệ thống batch tự động để ra các tập sau mỗi tuần.

---

## 3. BẢN ĐỒ TỔNG THỂ

```
TUẦN 1 (N1–7)   NỀN MÓNG: ComfyUI + LTX-2.5 + ngôn ngữ điện ảnh + Kdenlive
                ★ Mốc 1 (N7): Teaser 30s 9:16 hoàn toàn local
TUẦN 2 (N8–14)  NHÂN VẬT & TIẾNG: MiniMax H3 R2V + voice over + retention editing
                ★ Mốc 2 (N14): Tập pilot 60s có nhân vật nhất quán
TUẦN 3 (N15–21) CHẤT LƯỢNG & QUY MÔ: Wan 2.2 + upscale/VFI + color + batch API
                ★ Mốc 3 (N21): Cảnh 3-shot điện ảnh hoàn chỉnh
TUẦN 4 (N22–30) SẢN XUẤT SERIES: kịch bản → batch → dựng → master → xuất bản
                ★ Mốc 4 (N30): CAPSTONE — Tập 1 lên sóng + pipeline tự động
```

---

# TUẦN 1 — NỀN MÓNG: COMFYUI, LTX-2.5, NGÔN NGỮ ĐIỆN ẢNH

## Ngày 1 — Khởi động studio: chạy render AI đầu tiên

<span class="goal">Hiểu cấu trúc project, khởi động được ComfyUI, render được clip đầu tiên bằng LTX-2.5.</span>

 **Video:**
- ComfyUI Beginner Tutorial 2026: Full Installation & Setup Guide — https://www.youtube.com/watch?v=RkxonDA9fH0 *(máy bạn đã cài sẵn — chỉ xem từ phần giao diện trở đi, 15 phút đầu bỏ qua)*
- Get Started in ComfyUI w/ Max Novak — https://www.youtube.com/watch?v=kqVlmscvuNc *(cách nạp workflow mẫu, thư mục models)*

 **Tóm tắt nhanh:**
- ComfyUI = canvas nối node: **model → điều kiện (prompt) → sampler → VAE decode → video out**.
- Workflow mẫu là file JSON — kéo–thả vào trình duyệt là nạp; node đỏ = thiếu model, trỏ đúng đường dẫn là hết.
- Máy bạn: khởi động bằng `~/Documents/Vid/scripts/launch_comfy_video.sh` → mở `http://localhost:8188`.

 **Thực hành:**
1. `bash ~/Documents/Vid/scripts/scaffold_project_structure.sh` (nếu chưa có) — kiểm tra thư mục `labs/` có sẵn `day01_sample_project`.
2. Chạy preflight: `bash ~/Documents/Vid/scripts/preflight_video_node.sh` — đọc output, hiểu nó check gì (swap, memory).
3. Launch ComfyUI: `bash ~/Documents/Vid/scripts/launch_comfy_video.sh &` rồi mở browser.
4. Vào **Workflows → Video** trong ComfyUI, tìm template **LTX-2.5** (hoặc kéo JSON từ https://docs.comfy.org/tutorials/video/ltx/ltx-2-5 ). Model đã nằm sẵn trong `models/diffusion_models/` — chỉ cần chọn đúng file trong node.
5. Render 1 clip T2V 5s @ 640×352, prompt bất kỳ. Ghi lại thời gian render lần đầu (cold) và lần hai (warm).

 **Giao nộp:** 1 file mp4 đầu tiên + ghi chú thời gian cold/warm vào log.
✅ **Checklist:** [ ] ComfyUI chạy ổn định [ ] Render xong không OOM [ ] Hiểu 5 node chính của workflow LTX.

---

## Ngày 2 — Đọc & dựng lại node graph bằng tay

<span class="goal">Không copy template: hiểu từng node, tự dựng workflow T2V từ trắng.</span>

 **Video:**
- ComfyUI Tutorial for Beginners: Full Node Graph Basics (2026) — https://www.youtube.com/watch?v=TQhIYT1ZYGQ *(xem hết, đây là video quan trọng nhất tuần 1)*
- Sê-ri miễn phí chính thức: https://comfy.org/learning/ (bookmark, dùng suốt khóa)

 **Tóm tắt nhanh:**
- Luôn có 4 khối: **UNet/DiT loader → Text Encoder (LTX dùng Gemma4) → Sampler (+scheduler, steps, CFG) → VAE (video + audio)**.
- LTX-2.5 distilled: **CFG=1, schedule cố định 8 bước** — đừng chỉnh lung tung, để nguyên như template.
- Organize graph: nhóm node theo trục dọc/ngang, đổi tên node, dùng reroute — graph sạch = debug nhanh.

 **Thực hành:**
1. Mở workflow Ngày 1 → xóa dần và dựng lại từng khối, nối tay từ đầu.
2. Đổi seed 3 lần → quan sát khác biệt. Đổi steps 8→4 → ghi nhận chất lượng + thời gian.
3. Lưu workflow của chính bạn ra `workflows/my_ltx_t2v_v1.json`.

 **Giao nộp:** workflow JSON tự dựng + 3 render cùng prompt khác seed.
✅ **Checklist:** [ ] Dựng lại từ trắng không nhìn template [ ] Giải thích được từng dây nối.

---

## Ngày 3 — Ngôn ngữ điện ảnh 1: loại shot & khung hình

<span class="goal">Nắm từ vựng shot — thứ bạn sẽ dùng làm prompt và làm shotlist suốt khóa.</span>

 **Video:**
- Ultimate Guide to Camera Shots: Every Shot Size Explained (StudioBinder, Shot List Ep.1) — https://www.youtube.com/watch?v=AyML8xuKfoc
- Camera Framing: Shot Composition & Cinematography Techniques (Ep.2) — https://www.youtube.com/watch?v=qQNiqzuXjoM

 **Tóm tắt nhanh:**
- 6 cỡ shot: **EWS → WS → MS → MCU → CU → ECU**. Cỡ shot = khoảng cách cảm xúc với nhân vật.
- Framing: rule of thirds, headroom, look-room (khoảng trống phía nhân vật nhìn).
- Mô tả shot trong prompt luôn theo mẫu: *shot size + góc máy + chủ thể + hành động*.

 **Thực hành:**
1. Xem xong, vẽ/mind-map 6 cỡ shot + 3 góc máy vào vault.
2. Mở 1 bộ phim ngắn bất kỳ trên YouTube, dừng ở 10 khung hình khác nhau, tự gọi tên loại shot (bài tập "shot call").
3. Chạy `python3 ~/Documents/Vid/scripts/generate_framing_test_guides.py` — tạo overlay 9:16, mở file PNG xem vùng an toàn.

 **Giao nộp:** bảng 10 shot-call (khung hình → tên shot) + file overlay 9:16 đã tạo.
✅ **Checklist:** [ ] Gọi đúng ≥8/10 shot [ ] Nhớ 3 vùng an toàn của 9:16 (top/bottom UI).

---

## Ngày 4 — Prompt engineering cho video AI

<span class="goal">Viết prompt có cấu trúc — kỹ năng chuyển prompt thành đúng shot trong đầu.</span>

 **Video:**
- The Prompt Engineering Framework to Generate PERFECT AI Videos — https://www.youtube.com/watch?v=cIySbq74jnI
- How to Master AI Video Prompting (Full Guide) — https://www.youtube.com/watch?v=2BpCk4d2Cc0

 **Tóm tắt nhanh — công thức 6 lớp (thứ tự cố định):**
1. **Subject** — ai/cái gì (mô tả cụ thể: tuổi, trang phục, chất liệu)
2. **Action** — động tác 1 câu, hiện tại tiếp diễn
3. **Camera** — cỡ shot + chuyển động (dolly in, handheld, static)
4. **Lighting** — nguồn sáng + mood (golden hour, neon rim light…)
5. **Environment** — bối cảnh + thời gian + khí quyển
6. **Style** — lens/film look (`shot on 35mm, shallow depth of field, cinematic color grade`)
- Negative prompt ngắn; dài quá phản tác dụng. LTX distilled không cần CFG cao — đầu tư vào prompt chính.

 **Thực hành:**
1. Viết prompt 6 lớp cho 6 shot cùng 1 nhân vật: EWS, MS, CU, ECU, low angle, over-the-shoulder.
2. Render 6 clip T2V LTX (4–5s mỗi clip) trên chính workflow Ngày 2.
3. Chấm mỗi clip thang 1–5: đúng shot size? đúng camera move? đúng ánh sáng?

 **Giao nộp:** file `prompts_day04.md` (6 prompt) + 6 clip + bảng tự chấm.
✅ **Checklist:** [ ] ≥4/6 clip khớp ý định prompt [ ] Có 1 clip fail — viết 1 dòng vì sao fail.

---

## Ngày 5 — LTX-2.5 chuyên sâu: I2V, first-last frame, multi-shot

<span class="goal">Bật chế độ mạnh nhất của LTX: từ ảnh tĩnh → video, kiểm soát điểm đầu–cuối.</span>

 **Video:**
- Master LTX 2.5 in ComfyUI: Multi-Shot, First-Last Frame & 2K Workflows — https://www.youtube.com/watch?v=6B9WSxi6j8E *(video trọng tâm ngày hôm nay)*
- LTX 2.5 Just Dropped — I Tested EVERYTHING in ComfyUI — https://www.youtube.com/watch?v=8_HwLqYRzVw *(nhìn tổng quan năng lực)*
- I2V tiết kiệm VRAM (tham khảo thêm) — https://www.youtube.com/watch?v=bTsreljvFQc

 **Tóm tắt nhanh:**
- **I2V** = ảnh làm frame đầu → kiểm soát composition tốt hơn T2V. Quy trình chuẩn: gen ảnh trước (hoặc dùng ảnh có sẵn) → animate.
- **First-Last Frame**: cho khung đầu + khung cuối → model tự đi đường. Dùng cho transition trong 1 cú cut liên tục.
- **Two-stage** là mặc định hợp máy bạn: gen low-res → upscale latent 2× → 3 bước refine = nhanh hơn ~1.74× so với full-res.
- Multi-shot trong 1 lần gen: có khi ra cut nội bộ, có khi liền mạch — luôn render thử trước khi tính vào kịch bản.

 **Thực hành:**
1. Tạo 3 ảnh nguồn bằng **FLUX.2** (lane ảnh — cài theo Phụ lục H nếu chưa có, ~15 phút): thử bố cục bằng Klein 9B (~10s/ảnh trên máy bạn), render bản final bằng Dev FP8/NVFP4 (28 bước, guidance 4, 1024²).
2. Chạy I2V trên cả 3 — so sánh chất lượng chuyển động với T2V Ngày 4.
3. Thử 1 workflow First-Last Frame: chọn 2 ảnh có bố cục giống nhau.

 **Giao nộp:** 3 clip I2V + 1 clip first-last + 1 dòng nhận xét mỗi clip.
✅ **Checklist:** [ ] Hiểu khi nào dùng T2V, khi nào dùng I2V [ ] Two-stage chạy đúng pipeline.

---

## Ngày 6 — Kdenlive: dựng phim cơ bản

<span class="goal">Cắt ghép các clip AI tuần này thành video có nhịp — mở editor địa phương.</span>

 **Video:**
- Kdenlive Tutorial for Beginners (Kevin Stratvert, 2025) — https://www.youtube.com/watch?v=YnSE9qgGui4 *(video chính — xem hết)*
- Learn Kdenlive in 30 Minutes — https://www.youtube.com/watch?v=zYD0b8LpiQA *(tăng tốc nếu còn thời gian)*

 **Tóm tắt nhanh:**
- Vòng đời: **import → proxy (4K mượt) → cắt trên timeline → text/music → fade → export**.
- Phím tắt sống còn: `S` cắt, `Space` play, `Z`/`Shift+Z` zoom timeline, `Del` xóa (ripple), `Ctrl+Z` thôi.
- Export H.264: preset chất lượng cao, 2 pass cho bản cuối; 9:16 cần project setting 1080×1920.

 **Thực hành:**
1. Tạo project Kdenlive mới 1080×1920 (9:16) — đặt proxy bật ON.
2. Import toàn bộ clip tuần 1 (thư mục `03_GRAPHICS` hoặc `01_FOOTAGE` trong lab) → dựng 1 teaser ~30s: chọn 8–10 take đẹp nhất, cắt nhịp theo cảm giác.
3. Thêm 1 dòng text tiêu đề + 1 nhạc nền (file audio nào đó có sẵn, hoặc để trống — Ngày 11 sẽ có voice).

 **Giao nộp:** file dự án Kdenlive `.kdenlive` + bản render nháp 30s.
✅ **Checklist:** [ ] Biết dùng proxy [ ] ≥8 cut [ ] Xuất được file không lỗi codec.

---

## Ngày 7 — ★ MỐC 1: Teaser 30s 9:16 hoàn chỉnh

<span class="goal">Tổng hợp tuần 1 thành sản phẩm duy nhất, có tiêu chuẩn chất lượng.</span>

 **Video:** không video mới — hôm nay làm lại từ kiến thức đã có (ngày tổng hợp không học cái mới).

 **Tóm tắt nhanh — rubric Mốc 1:**
- Đúng 9:16, caption/subtitle không lọt vùng UI.
- ≥1 lần cắt mỗi 4s trung bình; mở đầu bằng take đẹp nhất, không intro.
- Không có frame lỗi (méo mặt, artifact nặng) — take lỗi phải cắt hoặc thay.
- Xuất 2 bản: YouTube Shorts (≤60s) và file gốc chất lượng cao lưu kho.

 **Thực hành:**
1. Review lại toàn bộ clip tuần 1, chọn 10 take tốt nhất theo rubric.
2. Hoàn thiện teaser 30s: nhịp, text, fade, export H.264 1080×1920.
3. Viết postmortem 5 dòng: điều bất ngờ / điều làm sai / điều ngày mai làm khác.

 **Giao nộp:** teaser 30s + postmortem vào vault.
✅ **Checklist:** [ ] Đủ 5 rubric [ ] Đăng lên 1 kênh riêng tư (unlisted) xem trên điện thoại — kiểm tra crop/caption.

---

# TUẦN 2 — NHÂN VẬT & TIẾNG: MINIMAX H3, VOICE OVER, RETENTION

## Ngày 8 — MiniMax H3: lane thứ hai của bạn

<span class="goal">Chạy được H3 T2V + I2V local (model đã tải sẵn 40GB trên máy).</span>

 **Video:**
- How to Run MiniMax H3 Locally — T2V + I2V Setup Guide — https://www.youtube.com/watch?v=r1PhGv-HDhA *(bám theo cấu trúc — bạn bỏ qua phần download, model đã có)*
- MiniMax H3 — Full ComfyUI Workflow Tutorial — https://www.youtube.com/watch?v=lcmzsy5CdYc

 **Tóm tắt nhanh:**
- H3 = model 33B "omni": sinh **hình + tiếng stereo đồng thời** trong 1 lần chạy — dialogue, SFX, nhạc nền.
- Workflow chính thức: `workflows/official/video_minimax_h3_t2v.json` và `..._i2v.json` — kéo vào ComfyUI.
- Model node cần 3 thứ: diffusion model (`minimax_h3_fl2va_pruned_int8_convrot.safetensors`) + text encoder Qwen3-VL + 2 VAE (video fp16, audio fp32) — tất cả đã nằm đúng thư mục.
- **Tăng tốc bắt buộc (Fast Path cho GB10 & Cụm 2× Spark):**
  1. **6–8 bước Turbo LoRA v4** (`minimax_h3_turbo_v4_step600_ema.safetensors`, 780MB): điểm ngọt chất lượng/tốc độ (~1.5–2.5 phút @480p trên Spark, 4 bước ~1 phút chỉ dùng preview).
  2. **FastH3 4-step Local (FastVideo / Hao AI Lab 09/2026):** Recipe tối ưu riêng cho DGX Spark:
     - **GPU-Direct DiT Loader:** Cắt thời gian nạp model vào VRAM từ **445 giây xuống 39 giây**.
     - **TAEH3 Preview VAE (~9MB):** Rút thời gian VAE decode từ ~100s xuống **~1 giây** (@480p).
     - **Đo thực trên 2× Spark (SP=2 pair):** 5s@480p chỉ tốn **119 giây** (trên 1 Spark là **134s**); nháp 768p tốn **195s** trên 2 Spark.
     - *Lưu ý:* FastH3 v1 là T2VA thuần text cho B-roll cực nhanh; muốn khóa nhân vật nhất quán Ref2VA vẫn dùng Turbo LoRA v4 hoặc VDN-H3.
  3. **Video Delta Net (VDN-H3 / OpenVDN 09/2026):**
     - Đột phá kiến trúc lớn nhất: Thay thế Softmax attention nặng nề (>85% runtime) bằng **Video Delta Attention (VDA)** kết hợp 8 bước DMD2 distillation.
     - Tăng tốc **75×–90×** so với H3 gốc, đạt mốc **nhanh hơn thời gian phát thực tế** (14.3s video 768p sinh trong 11.23s trên cluster).
     - Hỗ trợ nguyên bản **Ulysses sequence parallelism** chia nhỏ token qua mạng RoCEv2 của cụm 2× Spark (`github.com/OpenVDN/vdn-minimax-h3`).
  4. **Kỹ thuật Two-Pass Decoupled (Chiến lược hàng đầu cho Cụm 2 máy):**
     - **Pass 1 (Spark A):** H3 sinh ở 960×544 (hoặc 640×360) lấy diễn xuất nhân vật, camera motion và âm thanh stereo native (~1.5–2 phút).
     - **Pass 2 (Spark B):** Dùng **LTX-2.5 22B Pixel Spatial Generative Upscaler 2×** nâng lên 1920×1088 (~1 phút) mà không làm biến dạng khuôn mặt.
     - Toàn bộ pipeline 1080p có tiếng hoàn thành chỉ trong ~2.5 phút/clip thay vì 14+ phút khi render native.
  5. **Mẹo 6× nhanh trên 1 máy:** Sinh ở **640×360** (hoặc 864×480) rồi chạy **RealESRGAN 2×** (Ngày 17) ra 720p ≈ **~2 phút 25 giây** (thay vì 14 phút 35 giây khi render thẳng 720p native).
  6. **Đột phá Sol-H3 chính thức (NVIDIA Research NVLabs 09/2026 — `nvlabs.github.io/Sana/Sol-Engine/Sol-H3-Spark/`):**
     - Đưa toàn bộ pipeline H3 768p (1344×768) 5s có audio về mốc **56 giây (56.17s E2E)** trên 1 máy Single DGX Spark duy nhất (nhanh gấp 6.7× so với 4-step LoRA 374s).
     - **Cơ chế:** Coarse-to-fine 2 giai đoạn (H3 384p draft 4-step → learned **VAE Adapter** map thẳng sang LTX space không qua pixel decode, tiết kiệm 24s → LTX-2.5 3-step refine 768p với prompt conditioning cache).
     - **Bộ nhớ thường trực (Resident):** Cả hai giai đoạn nằm gọn trong **116.9 GiB**, chừa 2.8 GiB headroom trong pool 119.68 GiB của Spark. Trên cụm 2× Spark chạy dual-lane độc lập, throughput đạt **~28s / 1 clip 768p** có tiếng hoàn chỉnh!
  7. **Sol stack (SM121-patched):** Sol-Attn + FirstBlockCache + Spectrum kéo baseline 312s xuống ~202s (1.54×).
  8. ⚠️ **Cảnh báo sm_121 & Cụm 2 máy:** **KHÔNG bật `--use-sage-attention` mặc định với H3** trên Spark (sinh noise); `flex_attention` lỗi trên SM12.1 → chỉ dùng Triton kernel đã patch; nếu nối 2 Spark phải cấu hình QSFP RoCE MTU 9000 + FastVideo Ray SP=2 (tránh để rơi về TCP fallback 5.5 GB/s).
  9. Giữ 20 bước dense chỉ khi chốt shot cuối.

 **Thực hành:**
1. Nạp workflow H3 T2V, render 1 clip 5s 480p có tiếng. Ghi thời gian.
2. Chạy I2V với 1 ảnh từ Ngày 5.
3. Nghe kỹ audio: nhạc/SFX do model tự nghĩ — ghi nhận cái hay/cái dở.

 **Giao nộp:** 2 clip H3 (T2V + I2V) + log thời gian.
✅ **Checklist:** [ ] Không OOM với H3 20GB [ ] Audio xuất đúng stereo [ ] Đã chạy 1 clip với Turbo LoRA 4 bước và ghi thời gian.

---

## Ngày 9 — Nhân vật nhất quán: R2V (reference to video)

<span class="goal">Khóa nhân vật — năng lực lõi để làm series có cast cố định.</span>

 **Video:**
- MiniMax H3 is Insane! 2K AI Video Model — Full Tutorial & Workflow — https://www.youtube.com/watch?v=a2IJ-sfI5Sg *(phần reference/character)*
- MiniMax H3 FREE AI Video with Audio Workflows — https://www.youtube.com/watch?v=Idg1PqBcr5c *(tham khảo thêm cấu trúc workflow)*

 **Tóm tắt nhanh:**
- **R2V** = cho model 1+ ảnh tham chiếu → nhân vật/giọng nhìn bị "khóa" qua các shot.
- Character DNA sheet: 1 ảnh gốc + mô tả cố định (khối, trang phục, giọng) — tái sử dụng nguyên văn trong mọi prompt.
- Quy tắc: 1 nhân vật = 1 ảnh reference chuẩn (ánh sáng đều, mặt chiếm ≥1/3 khung). Đổi trang phục → mô tả trong prompt, không đổi reference.

 **Thực hành:**
1. Tạo/thiết kế nhân vật của bạn (ảnh gốc bằng image model hoặc ảnh thật của bạn).
2. Mở rộng thành **reference pack 4 ảnh** bằng FLUX.2 Dev multi-reference (kho nhất ở giữ người/vật qua nhiều ảnh — xem Phụ lục H), mỗi ảnh 1 vai trò: ① chính diện mặt ② 3/4 ③ toàn thân đứng trung tính ④ cận trang phục/phụ kiện — cùng ánh sáng dịu, cùng tạo hình (4 ảnh 1 diễn viên = 1 chủ thể, không phải 4 reference riêng).
3. Viết `character_dna.md`: identity block (chỉ đặc điểm ổn định: tượng, mắt, tóc, vóc dáng, trang phục, 1–2 phụ kiện bất biến) — dán nguyên văn vào mọi prompt; mỗi shot chỉ đổi 1 biến.
4. **Keyframe trước, animate sau:** tạo ảnh tĩnh cho từng shot → R2V animate từ keyframe đó (không improvising từng clip độc lập — nguyên nhân số 1 gây drift). Khử da nhựa AI và nắn hướng đèn chuẩn Scene Bible bằng bộ node `ComfyUI_LC123` (Skin Beauty + Lighting Control — xem Phụ lục H4).
5. Render 3 shot (WS/MS/CU) qua R2V → frame đẹp nhất đưa ngược vào reference pack (chain forward).
6. Test clip 4–5s trước chuỗi dài; prompt gọi vai trò từng ảnh theo vị trí ("Picture 1 là gương mặt, Picture 2 là trang phục").

 **Giao nộp:** character sheet + ảnh reference + 3 clip cùng nhân vật.
✅ **Checklist:** [ ] 3 clip nhận ra cùng 1 người [ ] Trang phục không đổi bất ngờ [ ] Reference pack có 4 ảnh đúng vai trò [ ] Đã dùng keyframe tĩnh cho ≥1 shot [ ] Có 1 frame tốt được chain lại vào pack.

> **Nâng cao (khi cần bám sát hơn):** IC-LoRA Ingredients của LTX-2.5 (1 sheet điều khiển nhiều nhân vật + bối cảnh), extension `ComfyUI-LTX2.5-MSR` (5 ảnh độc lập cho 5 chủ thể), hoặc train character LoRA riêng (15–30 ảnh, weight 0.7–0.9) — để sau capstone.

---

## Ngày 10 — Benchmark chính máy: chọn đúng lane cho đúng việc

<span class="goal">Ngày "kỹ sư": đo dữ liệu thật của máy bạn, thay lý thuyết bằng con số của chính mình.</span>

 **Video:** xem lại 10 phút workflow nào còn vướng (không học mới). Ngày thực hành thuần túy.

 **Tóm tắt nhanh:**
- Benchmark = tách **cold-load** (lần đầu) khỏi **compute** (các lần sau). Chỉ so compute với compute.
- Ma trận quyết định của máy bạn: **LTX-2.5 two-stage** = mặc định; **Sol-H3 chính thức (56s @ 768p)** hoặc **H3 + Turbo LoRA** = nhân vật + tiếng (đã nhanh, dùng thoải mái); **Wan 2.2** (tuần 3) = hero shot; upscale/VFI = hậu kỳ.
- Mỗi dòng trong bảng phải có: thời gian, độ phân giải, steps, bước nào quyết định thời gian (sampler hay VAE).

 **Thực hành:**
1. Đo bằng `time` (hoặc log ComfyUI) cho: LTX T2V 5s@640×352, LTX two-stage 5s@1280×704, H3 T2V 5s@480p. Mỗi cấu hình chạy 3 lần sau lần warm-up.
2. Điền bảng benchmark vào vault (`benchmarks.md`), tính clip-phút/giờ cho từng lane.
3. Rút ra "menu giá": clip 5s đẹp nhất tốn bao nhiêu phút máy trên từng lane.

 **Giao nộp:** bảng benchmark 3×3 + 1 đoạn kết luận 5 dòng.
✅ **Checklist:** [ ] Số liệu 3 lần chênh <10% [ ] Kết luận nói được: episode 60s 6 hero-shot mất bao lâu.

---

## Ngày 11 — Âm thanh 1: thu & làm sạch voice over

<span class="goal">Có giọng đọc chuyên nghiệp cho video — bằng Audacity đã cài sẵn.</span>

 **Video:**
- How to Use Audacity for Beginners: Record & Edit Audio | Full Tutorial 2026 — https://www.youtube.com/watch?v=PI0Stixht3Y
- Make your voice over recording better from home using Audacity (2026) — https://www.youtube.com/watch?v=9hJR9mVo9D8

 **Tóm tắt nhanh — chuỗi xử lý voice over chuẩn:**
1. Thu trong phòng êm nhất (chăn/gối quanh mic nếu cần), khoảng cách miệng–mic ~15cm, gain để peak ~ −12dB.
2. Chuỗi sạch: **Noise Reduction (lấy noise profile 2s) → Filter Curve EQ (cut <80Hz, nhẹ −3dB @200Hz "boxy", nhẹ +2dB @5kHz "presence") → Compressor (tỉ lệ 3:1) → Limiter −1dB**.
3. Xuất WAV 48kHz cho dựng; loudness chuẩn platform ~ −14 LUFS (làm ở master sau).
- Nếu muốn dùng AI voice thay mặt đọc: đó là chủ đề nâng cao — khóa này ưu tiên giọng thật (an toàn monetization hơn).

 **Thực hành:**
1. Thu 1 đoạn script 30 giây (dùng template AV có sẵn: `templates/day03_av_script_template_vi.md`) — thu 3 take, chọn take tốt nhất.
2. Áp chuỗi 4 bước xử lý ở trên trong Audacity.
3. Xuất WAV 48kHz mono → để dành cho Mốc 2.

 **Giao nộp:** file WAV đã xử lý + 1 dòng so sánh trước/sau.
✅ **Checklist:** [ ] Không còn noise nền nghe được [ ] Peak ≤ −1dB [ ] Đọc không vấp.

---

## Ngày 12 — Âm thanh 2: audio native của H3 + sound design trong Kdenlive

<span class="goal">Ghép 3 lớp tiếng: dialogue (voice over) + sound effects + music.</span>

 **Video:**
- Xem lại phần audio workflow H3 trong https://www.youtube.com/watch?v=Idg1PqBcr5c (10 phút cuối về audio)
- Kdenlive audio mixing cơ bản — mục Audio trong https://www.youtube.com/watch?v=YnSE9qgGui4 (xem lại phần tương ứng)

 **Tóm tắt nhanh:**
- Kdenlive: mỗi lớp audio 1 track; Keyframe volume bằng cách double-click đường gain trên clip; auto-fade 5–10 khung ở mọi điểm cắt nhạc.
- Quy tắc trộn: **voice luôn nổi nhất**; music hạ −15dB khi voice lên tiếng (ducking bằng tay); SFX là "gia vị" — từng tiếng 1 phải có lý do.
- Audio từ H3 dùng được ngay nhưng thường cần lọc/EQ nhẹ trong Kdenlive (Bass & Treble hoặc EQ filter).

 **Thực hành:**
1. Lấy project teaser Ngày 6 (bản Mốc 1). Thêm voice over Ngày 11 vào.
2. Thêm 3–5 SFX (ffmpeg tìm trong `/usr/share/sounds` hoặc nguồn free như freesound.org).
3. Thêm music track, duck xuống khi voice nói. Mix tay từng keyframe.

 **Giao nộp:** teaser 30s bản 3 lớp âm thanh.
✅ **Checklist:** [ ] Voice nghe rõ mọi câu [ ] Không có clip nhạc cắt giữa chừng (fade đủ) [ ] Xuất file audio không méo rè.

---

## Ngày 13 — Retention editing: kỹ thuật giữ chân người xem

<span class="goal">Học ngôn ngữ cắt giữ chân — biến video "xem được" thành video "xem hết".</span>

 **Video:** hôm nay là bài đọc nhanh (ngắn hơn video, hiệu quả hơn cho chủ đề này):
- Retention-first editing: 12 cuts to boost watch time — https://faceless.so/blog/retention-first-editing-12-cuts-to-boost-watch-time
- Retention editing: keep viewers watching — https://zellahq.com/blog/retention-editing-keep-viewers-watching/
- Video pacing & retention — https://slidycreator.com/blog/video-pacing-retention/

 **Tóm tắt nhanh — 6 vũ khí chính:**
1. **Hook 0–3s**: mở bằng kết quả/cao trào, không intro, không logo.
2. **Cắt tàn nhẫn**: bỏ mọi khoảng lặng, "ừm", câu lặp. Nếu phân vân → cắt.
3. **Đổi hình 2–4s/lần**: jump cut, zoom nhẹ, b-roll, màn hình khác.
4. **Caption từ giây đầu** — 60% người xem tắt tiếng.
5. **Pattern interrupt** mỗi 5–7s: SFX, meme cutaway, đổi nhạc, overlay.
6. **Kết = loop**: câu cuối nối tự nhiên về câu đầu để replay.

 **Thực hành:**
1. Lấy teaser 30s Mốc 1 → recut theo 6 vũ khí trên (bản B).
2. Side-by-side tự chấm: đếm số cut/phút bản A vs bản B; đo bằng mắt tốc độ đổi hình.
3. Ghi 3 quyết định "đã cắt gì và vì sao" vào vault.

 **Giao nộp:** teaser bản B + bảng so sánh A/B (số cut, độ dài take trung bình).
✅ **Checklist:** [ ] Bản B có ≥12 cut/30s [ ] Hook nằm trong 3s đầu [ ] Caption on từ giây 0.

---

## Ngày 14 — ★ MỐC 2: Tập pilot 60s có nhân vật

<span class="goal">Tổng hợp tuần 2: nhân vật R2V + voice over + retention editing = tập pilot thật.</span>

 **Video:** không học mới — ngày sản xuất.

 **Tóm tắt nhanh — cấu trúc 60s chuẩn:**
- 0–3s hook | 3–15s setup | 15–45s giá trị chính (4–6 shot) | 45–55s cao trào | 55–60s CTA/loop.
- Ngân sách máy (từ benchmark Ngày 10): 4–6 hero shot H3/LTX + b-roll LTX rẻ.
- Pilot này = "tập thử nghiệm" — ngày 30 sẽ làm bản đẹp hơn cho chính chủ đề này.

 **Thực hành:**
1. Viết kịch bản 60s (~130–150 từ tiếng Việt hay tiếng Anh tùy đối tượng) theo cấu trúc trên — dùng `templates/day03_av_script_template_vi.md`.
2. Sinh 4–6 shot nhân vật qua H3 R2V (chạy queue, dùng thời gian chờ để dựng khung timeline).
3. Dựng hoàn chỉnh trong Kdenlive: picture + voice + SFX + music + caption. Recut theo bài học Ngày 13.

 **Giao nộp:** pilot 60s 9:16 + kịch bản + postmortem 5 dòng.
✅ **Checklist:** [ ] Nhân vật nhất quán 100% shot [ ] Hook 3s có force [ ] Voice rõ, mix 3 lớp đúng.

---

# TUẦN 3 — CHẤT LƯỢNG & QUY MÔ: WAN 2.2, UPSCALE, COLOR, BATCH

## Ngày 15 — Wan 2.2: lane chất lượng cao

<span class="goal">Tải và chạy được Wan 2.2 14B fp8 trên máy — lane cho shot đẹp nhất.</span>

 **Video:**
- Generate AI Videos for FREE — ComfyUI + Wan 2.2 Tutorial (2026) — https://www.youtube.com/watch?v=sUMTvhDrjYw
- Wan 2.2 Full Installation Guide for ComfyUI Step-By-Step — https://www.youtube.com/watch?v=7hUO6KhUsvQ
- WAN2.2 Rapid AIO 14B — Fast, Smooth, Less VRAM — https://www.youtube.com/watch?v=S4koFRZg8pE *(phương án 4-step LoRA cho tốc độ)*

 **Tóm tắt nhanh:**
- Wan 2.2 14B dual-model (high-noise → low-noise) + **lightx2v 4-step LoRA** = nhanh gấp nhiều lần, hợp bandwidth thấp của Spark.
- Máy bạn đã có workflow chính thức: `workflows/official/video_wan2_2_14B_t2v.json`; tài liệu: https://docs.comfy.org/tutorials/video/wan/wan2_2
- Tải bằng `scripts/download_video_models.sh` (đã xác minh URL 2026-08-20); một số LoRA nằm repo gated — script đã ghi resolve URL còn sống.

 **Thực hành:**
1. Tải Wan 2.2 (14B fp8 high/low + umt5 fp8 + VAE + lightx2v LoRA) — ~45GB, chạy nền trong lúc làm việc khác.
2. Khi xong: nạp workflow, render 1 clip 5s T2V nguyên bản steps đầy đủ → ghi thời gian.
3. Render lại cùng prompt với 4-step LoRA → so sánh chất lượng/thời gian, chọn cấu hình mặc định của bạn.

 **Giao nộp:** 2 clip Wan (full steps vs 4-step) + số liệu thời gian.
✅ **Checklist:** [ ] Models load hết (không node đỏ) [ ] Có quyết định cấu hình mặc định bằng số liệu.

---

## Ngày 16 — World Models & Camera Control: điều khiển cú máy 6-DoF & không gian 3D (Wan 2.2 Camera + SANA-WM)

<span class="goal">Làm chủ cú máy chuẩn điện ảnh — chuyển từ "đoán mò chuyển động" sang "mô phỏng thế giới thực" với 6 bậc tự do (6-DoF), không lo méo phòng khi lia máy.</span>

 **Video & Tài liệu:**
- ComfyUI Wan 2.2 Fun Camera Control Tutorial: https://docs.comfy.org/tutorials/video/wan/wan2-2-fun-camera
- SANA-WM (NVIDIA NVlabs) 2.6B World Model (Minute-scale 720p 6-DoF): https://nvlabs.github.io/Sana/WM/
- Generate Infinite Length Videos with Wan 2.2 I2V | ComfyUI Workflow — https://www.youtube.com/watch?v=0CFt5GnOKAw

 **Tóm tắt nhanh — Bí quyết World Model (học từ Runway GWM Worlds 2):**
- **Video Generator vs World Model:** Video generator thông thường chỉ suy đoán pixel ngẫu nhiên, nên khi lia máy qua góc khác rồi quay lại, đồ vật và vách tường sẽ bị biến dạng (morph/drift). World Model mô phỏng *hình học 3D, ánh sáng và vật lý* của cả không gian.
- **Wan 2.2 Fun Camera Control (`Wan2.2-Fun-A14B-Control-Camera` / `5B`):** Đưa đường ray máy quay (Pan, Tilt, Zoom, Dolly, Orbit, Crane) trực tiếp vào ComfyUI qua Camera Control Codes. Bạn vẽ đường ray máy quay như đạo diễn thực thụ, model giữ nguyên cấu trúc bối cảnh.
- **SANA-WM (NVIDIA 2.6B):** World model mã nguồn mở chuyên biệt — chỉ cần **1 ảnh Genesis + đường ray 6-DoF** là sinh video **720p dài tới 60 giây liên tục**, không gian nhất quán, chạy cực nhẹ và siêu tốc trên DGX Spark.
- **Kỹ thuật "infinite length" & 2-Spark Ray SP=2:**
  - Trên 1 máy: dùng first-last frame chain từng nhịp 5s (frame cuối làm input đoạn sau).
  - Trên 2 máy: FastVideo Ray SP=2 render liên tục tới **14.4s (345 frames @ 24fps)** ở 768×1344 trong 587s.

 **Thực hành:**
1. Nạp workflow Wan 2.2 Fun Camera Control trong ComfyUI với 1 ảnh chụp bối cảnh từ Ngày 5.
2. Thiết lập 2 cú máy có kiểm soát: (A) Slow Dolly-In 2m vào chủ thể, (B) Orbit 45° quanh căn phòng.
3. So sánh với cú máy sinh bằng prompt text thông thường: nhận diện sự khác biệt về độ méo cửa sổ và vách tường khi camera di chuyển.

 **Giao nộp:** 2 clip camera control (Dolly + Orbit) + 1 ghi chú so sánh độ ổn định không gian.
✅ **Checklist:** [ ] Cú máy đi đúng hướng mong muốn [ ] Kiến trúc tường/cửa sổ không bị uốn lượn khi camera di chuyển.

---

## Ngày 17 — Hậu kỳ AI: upscale & frame interpolation (RIFE/FILM)

<span class="goal">Biến clip 480–720p thành 1080p mượt 60fps — tăng chất lượng cảm nhận giá trị.</span>

 **Video/Tài liệu:**
- RIFE chính thức (đọc nhanh README + phần usage): https://github.com/hzwer/ECCV2022-RIFE
- ComfyUI có sẵn node frame interpolation + `models/frame_interpolation/` (FILM/RIFE có URL trong `scripts/download_video_models.sh`)

 **Tóm tắt nhanh:**
- Hai lớp hậu kỳ AI: **upscaler** (RealESRGAN/4x-UltraSharp — chi tiết) và **VFI** (RIFE/FILM — sinh frame giữa, 24→48/60fps).
- Trên máy bạn: model nhỏ (vài trăm MB), chạy nhanh — luôn làm ở bước CUỐI pipeline, sau khi chọn take.
- Cẩn trọng: VFI làm mượt chuyển động nhanh dễ ra "morphing"; upscale model mạnh quá dễ "phá" da/bề mặt AI — luôn so sánh trước/sau từng take.

 **Thực hành:**
1. Tải FILM + RIFE + 4x-UltraSharp + RealESRGAN từ script (chỉ vài trăm MB).
2. Lấy clip đẹp nhất Mốc 2 → chạy upscale 2× rồi VFI 2×. Xuất trước/sau.
3. Xem song song 2 bản, quyết định: dùng VFI toàn bộ hay chỉ take chuyển động chậm.

 **Giao nộp:** 1 clip trước/sau hậu kỳ + quyết định pipeline mặc định.
✅ **Checklist:** [ ] Không thấy artifact mới sau hậu kỳ [ ] 60fps mượt không morph.

---

## Ngày 18 — Color correction & grading trong Kdenlive

<span class="goal">Da đẹp, tông thống nhất — bước làm video "trông có tiền".</span>

 **Video:**
- Video Editing with Kdenlive (Creative Freedom Summit) — https://www.youtube.com/watch?v=J4JmEFNFYqQ *(phần timing & colour)*
- Color Correction | Kdenlive Tutorial — https://kp.odysee.tv/@nuxttux:c/color-correction-kdenlive-tutorial:7 *(exposure → white balance → saturation)*
- Tài liệu LUT chính thức: https://docs.kdenlive.org/en/effects_and_filters/video_effects/color_image_correction/applylut.html

 **Tóm tắt nhanh — thứ tự không được đảo:**
1. **Correct** trước: exposure (waveform chuẩn), white balance (vector scope về tâm), saturation vừa phải.
2. **Grade** sau: LUT (`.cube`) hoặc chọn tông thủ công. LUT đắp lên footage chưa correct = rác.
3. Clip AI có ưu điểm: độ phơi sáng ổn định → match clip giữa các take dễ; lưu ý banding — tăng nhẹ grain/noise để che.
- Quy trình trong Kdenlive: correct trên clip → copy effect sang mọi clip cùng take → grade toàn timeline bằng adjustment layer.

 **Thực hành:**
1. Lấy 3 clip khác lane (LTX + H3 + Wan) → correct từng clip cho khớp nhau (số liệu scope).
2. Tải 2–3 LUT free (từ thư viện LUT của Kdenlive/rocketstock) → thử trên adjustment layer.
3. Xuất 1 still frame trước/sau — chênh phải "nhìn thấy tiền".

 **Giao nộp:** 3 clip đã match + 1 bản có grade + still trước/sau.
✅ **Checklist:** [ ] Da không xanh/tím [ ] Không clip nào "tự khác" giữa chuỗi [ ] Đã dùng scope, không trust mắt trần.

---

## Ngày 19 — Batch tự động: ComfyUI API + dispatcher

<span class="goal">Ngủ để máy làm việc: hàng loạt shot chạy qua API không chạm tay.</span>

 **Video/Tài liệu:**
- Không cần video mới — đây là ngày code. Tham khảo docs: https://docs.comfy.org/essentials/comfyui-api (tổng quan API workflow)

 **Tóm tắt nhanh:**
- Mọi workflow ComfyUI đều chạy được qua HTTP: bật **Dev Mode** → Save (API format) → POST JSON tới `/prompt` → poll `/history/{prompt_id}` → tải kết quả.
- **Tùy chọn nâng cao (Headless vLLM-Omni daemon):** Nếu muốn render batch qua đêm không cần mở giao diện ComfyUI, có thể chạy **vLLM-Omni** với recipe chính thức cho Spark (`MiniMax-H3-Spark-GB10.md`): load model resident trong 128GB RAM, online FP8, pipeline uint8 GPU output preparation + direct planar H.264 muxing, bắn job qua `curl -X POST /v1/videos/sync`.
- Máy bạn có sẵn công cụ: `scripts/dual_node_batch_dispatcher.py` (dispatcher round-robin — chạy được trên 1 node), `scripts/launch_comfy_video.sh`.
- Quy tắc batch an toàn: mỗi job ghi `prompt_id`, seed, prompt, cấu hình vào CSV — để truy vết và tái lập.

 **Thực hành:**
1. Lưu workflow LTX hai-stage ở API format → viết script Python nhỏ (~40 dòng) đọc 1 file `jobs.csv` (prompt, seed) → POST từng job → tải mp4 về `06_EXPORTS/batch/`.
2. Tạo 6 job khác seed/prompt (b-roll chủ đề của bạn) → chạy qua đêm hoặc giờ thấp điểm.
3. Sáng hôm sau (hoặc khi xong): rà 6 kết quả, chấm nhanh 1–5.

 **Giao nộp:** script batch + 6 clip tự động + jobs.csv log.
✅ **Checklist:** [ ] Script chạy hết queue không treo [ ] Mỗi clip truy ngược được seed/prompt.

---

## Ngày 20 — Ngày đệm 1: kho asset & chuẩn hóa pipeline

<span class="goal">Trượt ở đâu bù ở đó; xong sớm thì chuẩn hóa — ngày không có bài mới bắt buộc.</span>

 **Video:** tùy chọn — xem lại video nào bạn còn "lơ mơ" trong 3 tuần.

 **Việc thực hành (chọn theo nhu cầu):**
1. Chuẩn hóa kho: mọi clip đặt tên `YYYYMMDD_lane_shot_desc_seed.mp4`; prompt lưu kèm file `.txt` cùng tên.
2. Làm sạch ComfyUI: dọn output cũ, kiểm tra dung lượng NVMe, lưu lại 5 workflow "production-ready" vào `workflows/my/`.
3. Hoàn thành bất kỳ giao nộp nào còn thiếu của tuần 1–3.
4. **(Nâng cao nếu vận hành 2× DGX Spark):** Thiết lập mạng QSFP MTU 9000 giữa 2 máy (`spark_pair_env.sh`), thử nghiệm recipe **FastVideo FastH3 2-Spark Pair** (`basic_fasth3.py --num-gpus 2 --execution-backend ray --vsa-kernel triton --no-fa4 --parallel-vae`) để kiểm chứng render clip dài 14.4s (345 frames) hoặc giảm thời gian 768p xuống 292s.

 **Giao nộp:** cây thư mục kho asset gọn gàng + danh sách checklist còn thiếu = 0.
✅ **Checklist:** [ ] Không file "untitled" [ ] 5 workflow production đã lưu [ ] Tất cả mốc trước có sản phẩm.

---

## Ngày 21 — ★ MỐC 3: Cảnh 3-shot điện ảnh hoàn chỉnh

<span class="goal">Tổng hợp cả khóa kỹ thuật: 3 shot đẹp nhất từ 3 lane, hậu kỳ đầy đủ.</span>

 **Video:** không học mới — ngày sản xuất đỉnh của tuần 3.

 **Tóm tắt nhanh — rubric Mốc 3:**
- Cảnh 15–20s gồm 3 shot (VD: WS dọc hành lang → MS đối thoại → CU phản ứng) cùng 1 nhân vật R2V.
- ≥1 shot từ Wan 2.2 (hero), nhân vật từ H3 R2V, b-roll từ LTX.
- Upscale/VFI → color match → âm thanh 3 lớp. Thước đo: người ngoài xem phải thấy "1 cảnh phim", không phải "3 clip AI ghép".

 **Thực hành:**
1. Kịch bản cảnh 3 shot (1 trang). Render batch qua API Ngày 19 với nhiều seed mỗi shot, chọn take.
2. Hậu kỳ full: upscale, VFI, color match, audio.
3. Tự chấm rubric + mời 1 người khác xem blind (không giải thích) — ghi 1 phản hồi. Chạy thêm **checklist continuity Phụ lục G5** (đây là lần đầu áp dụng Scene Bible đầy đủ).

 **Giao nộp:** cảnh 3-shot 15–20s + rubric tự chấm + phản hồi khách quan.
✅ **Checklist:** [ ] 3 lane cùng xuất hiện [ ] Color khớp [ ] Audio phục vụ cảnh.

---

# TUẦN 4 — SẢN XUẤT SERIES & XUẤT BẢN (N22–30)

## Ngày 22 — Kịch bản series 5 tập

<span class="goal">Định hình sản phẩm dài hạn: series AI của bạn có format lặp lại được.</span>

 **Video:**
- How To Start A YouTube Channel With AI in 2026 (Faceless) — https://www.youtube.com/watch?v=Sj4r28PR84E *(phần chọn niche/format)*
- How To Grow A Faceless Youtube Channel In 2026 | FULL COURSE — https://www.youtube.com/watch?v=Bbjv9-00tv0 *(xem dần, dùng suốt tuần 4)*

 **Tóm tắt nhanh:**
- Series sống nhờ **format lặp**: same cast + same structure + varied topic. Người xem quay lại vì quen.
- Chọn niche có RPM cao (tech, finance, education) + giọng kể riêng — AI chỉ là công cụ, "real editorial point of view" mới giữ kênh sống (YouTube xử phạt AI slop hàng loạt từ 7/2025).
- Mỗi tập = 1 episode brief (template có sẵn `templates/episode-brief.md`): mục tiêu, hook, CTA, ngân sách shot.

 **Thực hành:**
1. Chọn 1 niche + tên series + nhân vật (tái dùng character DNA Ngày 9).
2. Viết brief 5 tập theo template — mỗi tập 1 dòng hook + 3 dòng nội dung + CTA.
3. Tập 1 chọn đề tài dễ sinh hình nhất (bám thế mạnh pipeline của bạn).

 **Giao nộp:** 1 trang định vị series + 5 episode brief.
✅ **Checklist:** [ ] Format có yếu tố lặp rõ [ ] Tập 1 có hook viết ra lời cụ thể.

---

## Ngày 23 — Storyboard & shotlist tập 1

<span class="goal">Dịch kịch bản thành danh sách shot có ngân sách — kế hoạch sản xuất thật.</span>

 **Video:** dùng lại kiến thức Ngày 3 (Shot List Ep.1–2) — xem lại đoạn nào cần. Tài liệu template: `templates/day03_storyboard_spec.md`, `templates/episode-shotlist.csv`.

 **Thực hành:**
1. Đổ kịch bản tập 1 vào storyboard grid (`templates/day03_storyboard_grid.csv`): mỗi panel = 1 shot với cỡ shot + camera + prompt nháp.
2. Gắn lane cho từng shot: [LTX-broll | H3-character | Wan-hero] và ngân sách thời gian máy (từ benchmark).
3. Duyệt shotlist 1 lượt "editor mác": shot nào không phục vụ câu chuyện → xóa (tiết kiệm giờ render).
4. **Sinh keyframe tĩnh cho từng shot bằng FLUX.2 Dev** (keyframe-first — Phụ lục H3): mỗi panel 1 ảnh, dùng làm input I2V/R2V ở Ngày 24 thay vì sinh text-to-video trực tiếp.

 **Giao nộp:** shotlist CSV hoàn chỉnh tập 1 (8–12 shot).
✅ **Checklist:** [ ] Mỗi shot có lane + prompt + seed dự kiến [ ] Tổng thời gian máy ≤ 1 đêm batch.

---

## Ngày 24 — Sản xuất hàng loạt: đêm render đầu tiên

<span class="goal">Chạy toàn bộ shot tập 1 qua pipeline batch — giống ngày sản xuất thật.</span>

 **Video:** không cần. Hôm nay là ngày vận hành hệ thống đã xây (Ngày 19).

 **Thực hành:**
1. Từ shotlist → tạo `jobs.csv` đầy đủ prompt + seed + lane + cấu hình render.
2. Chạy dispatcher: LTX trước (b-roll, ~62s); H3 hero shot chạy cấu hình nhanh (**640×360 + 6–8 bước Turbo → upscale 2×**, ~2.5 phút/shot) để chọn take; chỉ shot chốt cuối mới đẩy 20 bước dense. Theo dõi lỗi, có fail → sửa prompt → re-queue.
3. Riêng shot nhân vật: chạy R2V trước, soi kỹ mặt; hỏng 1 lần là re-run ngay, đừng để gom cuối.

 **Giao nộp:** ≥80% shot tập 1 render xong + log CSV.
✅ **Checklist:** [ ] Không job nào mất dấu [ ] Shot hero có ≥3 take để chọn.

---

## Ngày 25 — Dựng tập 1 hoàn chỉnh

<span class="goal">Từ raw shot → episode có nhịp: đây là ngày tốn nhiều giờ ngồi nhất — đúng thế.</span>

 **Video:** không học mới. Áp dụng tổng hợp Kdenlive (N6, N12, N13, N18).

 **Thực hành:**
1. Xếp timeline theo storyboard, chọn take, cắt retention-style (đổi hình 2–4s, hook 3s).
2. Thu voice over riêng cho tập 1 (chuỗi Audacity Ngày 11), mix 3 lớp + ducking.
3. Caption từng câu (đúng chính tả, trong vùng an toàn).

 **Giao nộp:** cut nháp hoàn chỉnh 60–90s của tập 1.
✅ **Checklist:** [ ] Đúng storyboard 90% [ ] Nhịp không take nào >4s tĩnh [ ] Voice sync picture.

---

## Ngày 26 — Master: color + loudness + export đa nền tảng

<span class="goal">Bản master đạt chuẩn kỹ thuật platform — không bị nén thảm hại.</span>

 **Video:** xem lại phần color Ngày 18 nếu cần; tài liệu chuẩn loudness: https://www.youtube.com/watch?v=qagiYvb_98o (workflow LUFS trong Audacity).

 **Tóm tắt nhanh — chuẩn xuất:**
- Loudness: **−14 LUFS** tổng, true peak ≤ −1dB (YouTube/TikTok đều ổn với mức này).
- 9:16: 1080×1920 H.264 CRF 18–20, 30fps (hoặc 60 nếu đã VFI); 16:9: 1920×1080 cùng thông số.
- Xuất từ Kdenlive; dùng ffmpeg batch cho bản phụ ( `-c:v libx264 -crf 19 -preset slow -c:a aac -b:a 192k` ).

 **Thực hành:**
1. Color grade cuối toàn tập (adjustment layer) + kiểm scope.
2. Chuẩn hóa loudness: kiểm bằng ffmpeg `loudnorm` (phân tích rồi áp 1 lần — không áp 2 lần liên tiếp).
3. Xuất 2 bản: 9:16 + 16:9. Xem trên điện thoại thật trước khi duyệt.

 **Giao nộp:** 2 file master + bảng thông số xuất.
✅ **Checklist:** [ ] −14 LUFS ±1 [ ] Không banding ở nền tối [ ] Caption không bị UI che.

---

## Ngày 27 — Thumbnail, tiêu đề, metadata

<span class="goal">Gói bọc sản phẩm: thứ quyết định 80% tỉ lệ nhấp trước cả chất lượng video.</span>

 **Video:**
- Xem lại phần branding/metadata trong https://www.youtube.com/watch?v=Bbjv9-00tv0 (FULL COURSE — phần tối ưu kênh)

 **Tóm tắt nhanh:**
- Tiêu đề: từ khóa thật + lợi ích/curiosity trong 60 ký tự; không clickbait lừa (retention sẽ trừng phạt).
- Thumbnail 16:9 (1280×720): 1 chủ thể + ≤4 chữ; với Shorts thì thumbnail ít quan trọng hơn 3 giây đầu.
- Mô tả: 2 dòng đầu nói thẳng giá trị; tag không cần nhiều; playlist series ngay từ tập 1.

 **Thực hành:**
1. Làm thumbnail từ 1 frame đẹp nhất tập 1 (chèn chữ bằng Kdenlive hoặc Blender/GIMP).
2. Viết tiêu đề (3 phương án, chọn 1) + mô tả + tag cho cả bản Shorts & dài.
3. Chuẩn bị kênh: avatar/banner/tên kênh nếu chưa có.

 **Giao nộp:** bộ metadata hoàn chỉnh + thumbnail.
✅ **Checklist:** [ ] Tiêu đề ≤60 ký tự [ ] Thumbnail đọc được ở 120px [ ] Playlist đã tạo.

---

## Ngày 28 — Xuất bản & pipeline upload

<span class="goal">Lên sóng tập 1 — ngày quan trọng nhất không phải là render đẹp nhất mà là "giao hàng".</span>

 **Video:** xem lại phần policy/monetization trong https://www.youtube.com/watch?v=Bbjv9-00tv0 + đọc nhanh: https://virvid.ai/blog/monetize-faceless-ai-content-complete-guide-2026

 **Tóm tắt nhanh:**
- Quy trình upload: private → kiểm tra trên điện thoại → schedule/public. Đăng giờ khung vàng đối tượng của bạn.
- Chính sách cần biết: YouTube từ 7/2025 gỡ kiếm tiền nội dung AI hàng loạt không giá trị; nội dung của bạn phải có giọng kể + giá trị thật. Thu âm giọng thật (Ngày 11) là lợi thế.
- Không ôm 1 platform: đăng đồng thời Shorts + TikTok + Reels (nội dung 9:16 dùng chung).

 **Thực hành:**
1. Upload tập 1 (cả 2 bản) đúng metadata. Tự xem trọn 1 lần như người xem lạ.
2. Ghi lại toàn bộ quy trình upload thành checklist dùng lại được (file `upload_sop.md`).
3. Lên lịch tập 2 (kịch bản đã có brief).

 **Giao nộp:** link tập 1 (ít nhất private/unlisted) + upload_sop.md.
✅ **Checklist:** [ ] Không lỗi audio/video sau khi platform xử lý [ ] Caption/caption kiểm tra trên mobile.

---

## Ngày 29 — Ngày đệm 2: postmortem + thư viện prompt + benchmark tổng

<span class="goal">Đóng khoảng cách giữa "làm được 1 lần" và "làm được mỗi tuần".</span>

 **Video:** tùy chọn — rà lại bất kỳ video nào trong khóa theo nhu cầu.

 **Thực hành:**
1. Viết postmortem toàn khóa: 3 điều hiệu quả nhất / 3 điều lãng phí thời gian nhất / 1 quy trình sẽ cố định.
2. Gom prompt tốt nhất vào `prompts_library.md`: phân loại [nhân vật | b-roll | hero | transition] kèm seed + cấu hình.
3. Cập nhật bảng benchmark Ngày 10 với số liệu cuối; ghi quyết định cấu hình mặc định cho các tập sau.

 **Giao nộp:** postmortem + prompts_library.md + benchmark cuối.
✅ **Checklist:** [ ] Có 1 SOP sản xuất 1 trang viết xong (từ kịch bản → xuất bản).

---

## Ngày 30 — ★★ CAPSTONE: xuất bản tập 1 công khai + kế hoạch 90 ngày

<span class="goal">Kết thúc = bắt đầu: khóa học xong khi bạn có hệ thống chạy đều được.</span>

 **Video:** không. Hôm nay bạn là giáo viên của chính mình.

 **Thực hành:**
1. Công khai tập 1 (public) — nêu đích: ≥3 platform, 1 playlist series.
2. Bắt đầu sản xuất tập 2 bằng SOP Ngày 29 (đo thời gian thực tế so với kế hoạch).
3. Viết kế hoạch 90 ngày: 12 tập đầu, ngày đăng, tiêu chí đánh giá (retention ≥50%, CTR thumbnail), mốc kiếm tiền (YPP 1000 sub / 4000 giờ — hoặc monetization guide trong repo `monetization_strategy.md`).

 **Giao nộp cuối khóa:**
1. Tập 1 public + playlist series
2. SOP sản xuất 1 trang
3. prompts_library + benchmarks + postmortem
4. Kế hoạch 90 ngày
✅ **Checklist tốt nghiệp:** [ ] Đã xuất bản [ ] Tập 2 trong sản xuất [ ] Mỗi tuần sau có lịch render cố định.

---

# PHỤ LỤC

## A. Cheat sheet lệnh máy của bạn

```bash
# Khởi động ComfyUI (mặc định port 8188, bind LAN)
bash ~/Documents/Vid/scripts/launch_comfy_video.sh &

# Preflight ổn định (swap, clock, memory)
bash ~/Documents/Vid/scripts/preflight_video_node.sh

# Tải models (Wan 2.2, RIFE, FILM, upscale...)
bash ~/Documents/Vid/scripts/download_video_models.sh

# Chuẩn hóa loudness 1 bước (kiểm tra trước khi áp)
ffmpeg -i master.mp4 -af loudnorm=I=-14:TP=-1.5:LRA=11 -f null -
# áp: ffmpeg -i master.mp4 -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=summary -c:v copy out.mp4
```

### Công thức tốc độ tối đa (Fast Path) trên GB10 & Cụm 2× Spark

1. **Đỉnh cao Sol-H3 (Official NVLabs 09/2026 — Siêu tốc 1 máy):** **56 giây (56.17s E2E)** cho clip 5s @ 1344×768 (768p) có audio native (384p draft 4-step FastH3 → VAE Adapter chuyển thẳng latent không qua pixel decode, tiết kiệm 24s → LTX 3-step refine 768p với prompt generic cache). Toàn bộ pipeline thường trực trong **116.9 GiB RAM** (dư 2.8 GiB headroom). Trên cụm 2 máy chạy song song: **~28s/clip**!
2. **H3 Hero Shot (Nhân vật/Voice kiểu truyền thống):** `640×360` + **6–8 bước Turbo LoRA v4** + Sol stack → **RealESRGAN 2×** ra 720p ≈ **~2m25s** (nhanh gấp 6× so với render 720p native ~14m35s, giữ vững khóa nhân vật Ref2VA).
3. **H3 B-roll T2VA thuần text:** **FastH3 4-step Local** (FastVideo / Hao AI Lab) ≈ 4 bước DiT, GPU-Direct DiT load chỉ 39s, chỉ dùng cho cảnh vật/bối cảnh không có nhân vật cố định.
4. **LTX B-roll:** Two-stage 8 bước low-res + 3 refine ≈ **~62s** / clip 5s.
5. **Draft/Previs siêu tốc (FastH3 + TAEH3):** 4-step FastH3 + **TAEH3 preview VAE (~9MB)** decode chỉ ~1s → toàn bộ clip 5s@480p xong trong **134s (~2.2 phút)** trên 1 Spark (hoặc **119s** trên 2 Spark). Nháp 768p chỉ mất **224s (~3.7 phút)** trên 1 máy, **195s** trên 2 máy. Chỉ bật Full VAE khi đã chốt take ưng ý.
6. **Đột phá Video Delta Net (VDN-H3 / OpenVDN 09/2026):** Thay Softmax attention bằng Video Delta Attention (VDA) + 8-step DMD2 distillation → tăng tốc **75×–90×**, đưa render video về mốc nhanh hơn thời gian phát thực tế (14.3s video 768p trong 11.23s trên cluster), hỗ trợ Ulysses SP=2 cho cụm 2 máy.
7. **4 Chế độ vận hành Cụm 2× DGX Spark:**
   - **Chế độ 0 (Dual-Lane Sol-H3 — Nhanh nhất & Tối ưu nhất):** Mỗi máy chạy độc lập 1 instance Sol-H3 56s → Throughput đạt **~28s / 1 clip 768p** kèm tiếng hoàn chỉnh, hoàn toàn độc lập, không phụ thuộc fabric mạng.
   - **Chế độ A (Decoupled Two-Pass — Khuyên dùng cho chất lượng điện ảnh 1080p):**
     * **Spark 1 (Core Motion & Audio):** Chạy H3 / FastH3 ở 960×544 (hoặc 640×360) sinh nhân vật, hành động và âm thanh stereo native (~1.5–2 phút).
     * **Spark 2 (Spatial Upscale):** Nhận latent/clip từ Spark 1, chạy **LTX-2.5 22B Pixel Spatial Generative Upscaler 2×** nâng lên 1920×1088 (~1–1.5 phút).
     * **Hiệu năng:** Pipeline gối đầu liên tục, trung bình cứ ~2 phút xuất xưởng 1 clip 1080p có tiếng sắc nét, không bị trần thời gian render native 14 phút của H3.
   - **Chế độ B (Model Parallel SP=2 qua Fabric 200G RoCEv2 — Ultra-fast / Cú máy dài):**
     * FastVideo FastH3 Ray SP=2 hoặc OpenVDN Ulysses SP=2 (`--vsa-kernel triton --no-fa4 --parallel-vae`):
     * 5s (124 frames) @ 768×1344: **195s** (với TAEH3) / **292s** (với Full VAE).
     * 14.4s (345 frames @ 24fps - giới hạn tối đa `17n+5`): **587s (~9.8 phút)** @ 768×1344 (1 máy sẽ OOM do activation memory).
   - **Chế độ C (Director + Producer — Tự động hóa Studio):**
     * **Spark 1 (AI Director):** Chạy **Qwen3.8 Flash NVFP4** (MiaLab 09/2026, 1M context, 1.4M KV cache, TP=1, 37 tok/s decode, 1500-2000 tok/s prefill) làm đạo diễn phân cảnh, mở rộng prompt chuyên sâu và phê bình hình ảnh/video trực tiếp qua visual tokens.
     * **Spark 2 (Render Engine):** Nhận prompt tự động từ Spark 1 nạp vào ComfyUI queue qua API headless (`dual_node_batch_dispatcher.py`) render liên tục ngày đêm.
8. **Quy tắc phần cứng SM12.1:** Không bật `--use-sage-attention` với H3 (sinh noise); chỉ dùng Triton kernel đã patch SM121; trên GB10 chạy FastVideo bắt buộc dùng `--vsa-kernel triton --no-fa4` (không có sm_100a hay FlashAttention-4).

## B. Ma trận lane (quyết định nhanh khi đứng trước 1 shot)

| Nhu cầu | Lane | Vì sao |
|---|---|---|
| **Siêu tốc 768p có tiếng (1 máy = 56s, 2 máy = 28s)** | **Sol-H3 (Official NVLabs 09/2026)** | 56.17s E2E latency cho 5s 768p (1344×768) có audio; VAE Adapter tiết kiệm 24s; resident 116.9 GiB chừa 2.8 GiB headroom. |
| B-roll nhanh, nhiều take | **LTX-2.5 two-stage** (hoặc **H3 FastH3 + TAEH3**) | LTX: ~62s/clip 5s@1280×704. FastH3 + TAEH3: ~134s cho 5s@480p có tiếng trên 1 máy, ~119s trên 2 máy (TAEH3 decode ~1s, T2VA thuần text). |
| Nhân vật nhất quán / có tiếng (1 máy) | **H3 R2V / I2V + Turbo LoRA v4** | 6–8 bước @480p ≈ 1.5–2.5 phút; mẹo **360p + RealESRGAN 2×** ra 720p ≈ **2.5 phút** (nhanh 6× so với 720p native, khóa mặt ổn định). |
| Chuẩn xuất sắc 1080p có tiếng (2 máy) | **Decoupled Two-Pass (H3 544p → LTX 2.5 22B Upscale 2×)** | Spark 1 sinh H3 544p + tiếng stereo; Spark 2 upscale LTX 2.5 22B lên 1080p. Pipeline liên tục ~2.5 phút/clip. |
| Denoising siêu tốc (Next-Gen) | **Video Delta Net (VDN-H3 / OpenVDN)** | Video Delta Attention 8 bước, tăng tốc 75×–90×, nhanh hơn thời gian phát, hỗ trợ Ulysses SP=2 trên cụm 2 máy. |
| Shot đẹp nhất, chuyển động phức tạp | **Wan 2.2 (+lightx2v LoRA)** | Chất lượng cao nhất, Apache 2.0. |
| Cú máy 6-DoF / Không gian 3D nhất quán | **Wan 2.2 Fun Camera Control** (hoặc **SANA-WM 2.6B**) | World Model: khóa hình học 3D, điều khiển chính xác Pan/Tilt/Zoom/Orbit/Dolly; SANA-WM sinh tới 60s 720p từ 1 ảnh. |
| Nối cảnh liền mạch | Wan First-Last Frame | Frame cuối = frame đầu cảnh sau. |
| Keyframe / ảnh nguồn / reference pack | **FLUX.2 Dev NVFP4/FP8 (draft: Klein 9B) + LC123 Suite** | Prompt adherence + multi-reference; khử da nhựa bằng LC Skin Beauty & chỉnh đèn bằng LC Lighting Control — Phụ lục H. |
| Dài >5s | **1 máy:** Chain I2V (frame cuối → input) · **2 máy:** FastVideo Ray SP=2 hoặc VDN Ulysses SP=2 render liên tục tới 14.4s (345f @ 768p, 587s). | Kỹ thuật infinite length hoặc Ray sequence parallel qua QSFP 200 Gb/s. |

## C. Mẫu prompt 6 lớp (kính gửi người tương lai của bạn)

```
[SHOT SIZE + ANGLE] of [SUBJECT: chi tiết cố định từ character DNA],
[ACTION: 1 câu hiện tại tiếp diễn], [CAMERA MOVE],
[LIGHTING], [ENVIRONMENT + THỜI GIAN], [STYLE: lens, film look].
Negative: [3–5 từ, ngắn].
```

## D. Xử lý sự cố thường gặp trên GB10

| Triệu chứng | Nguyên nhân thường gặp | Xử lý |
|---|---|---|
| OOM khi load model | Model khác đang resident | Restart ComfyUI giữa 2 lane; load 1 lane 1 lúc |
| Chậm bất thường lần đầu | Cold load + page cache | Đo compute từ lần thứ 2 trở đi |
| Codec lỗi khi xuất H3 | Mismatch codec | Chọn codec tường minh trong SaveVideo node; smoke render trước batch |
| ComfyUI treo khi batch dài | Reserve RAM không đủ | Đảm bảo chạy với `--reserve-vram 8` (script đã có) |
| Nhân vật đổi diện mạo | Reference ánh sáng khác shot | Chuẩn hóa ảnh reference; prompt ánh sáng cố định |

## E. Rubric tự chấm mỗi sản phẩm (in ra, dán cạnh màn hình)

1. Hook 3 giây có lý do để ở lại? — ☐
2. Không take nào ≥4s không đổi hình? — ☐
3. Voice rõ, music duck, SFX có lý do? — ☐
4. Color khớp giữa các shot, da không lệch? — ☐
5. Xuất đúng chuẩn (−14 LUFS, đúng tỉ lệ, caption trong vùng an toàn)? — ☐

## F. Danh mục video đã nhúng trong giáo án (kiểm chứng link 2026-08-26)

| Chủ đề | Video |
|---|---|
| ComfyUI cơ bản | RkxonDA9fH0 · kqVlmscvuNc · TQhIYT1ZYGQ · comfy.org/learning |
| LTX-2.5 | 6B9WSxi6j8E · 8_HwLqYRzVw · bTsreljvFQc · docs.comfy.org/tutorials/video/ltx/ltx-2-5 |
| Wan 2.2 | sUMTvhDrjYw · 7hUO6KhUsvQ · S4koFRZg8pE · 0CFt5GnOKAw · docs.comfy.org/tutorials/video/wan/wan2_2 |
| MiniMax H3 | r1PhGv-HDhA · lcmzsy5CdYc · a2IJ-sfI5Sg · Idg1PqBcr5c · d_wEd-fZcdg |
| Prompt | cIySbq74jnI · 2BpCk4d2Cc0 |
| Điện ảnh | AyML8xuKfoc · qQNiqzuXjoM · hUmZldt0DTg · 7LcjkrThtY8 |
| Kdenlive | YnSE9qgGui4 · zYD0b8LpiQA · nwl6RzymZVg · J4JmEFNFYqQ · kp.odysee.tv/@nuxttux |
| Audacity | PI0Stixht3Y · yzJ2VyYkmaA · 9hJR9mVo9D8 · qagiYvb_98o |
| Kênh & tiền | Bbjv9-00tv0 · Sj4r28PR84E · virvid.ai monetization 2026 |
| VFI | github.com/hzwer/ECCV2022-RIFE |

*Video là sản phẩm YouTube — nếu 1 link chết vì xóa/đổi, tìm tiêu đề trong bảng trên trên YouTube là ra bản tương đương; giáo án không phụ thuộc 1 kênh duy nhất.*

## G. Scene Continuity Playbook — bộ phim liền mạch (khóa người + số người + bối cảnh)

> Dùng từ Ngày 21 (Mốc 3) trở đi. Nguyên tắc gốc: **mỗi cảnh có 1 Scene Bible, mọi shot sinh ra từ nó.**

### G1. Scene Bible — 4 file bắt buộc trước khi render bất kỳ shot nào
1. **Establishing Frame**: 1 ảnh bối cảnh chuẩn (ánh sáng ổn định) — là reference "diễn viên thứ N" trong mọi shot.
2. **Anchor terms**: 2–3 chi tiết bất biến của bối cảnh, xuất hiện nguyên văn trong mọi prompt.
3. **Lighting contract**: 1 dòng mô tả ánh sáng cố định cho cả cảnh (hướng sáng phải khớp giữa các góc quay — não cảm nhận "sai" trước khi thấy méo).
4. **Character packs**: mỗi nhân vật 1 pack 4 ảnh đúng vai trò (mặt chính diện / 3/4 / toàn thân / phụ kiện) + identity block riêng.

Trộn reference trong R2V: gọi vai trò theo vị trí ("Picture 1–3 = Lan, Picture 4–5 = Hùng, Picture 6 = căn phòng"). LTX-2.5: dùng **IC-LoRA Ingredients** (1 sheet: hàng nhân vật + dải bối cảnh full-width) hoặc **MSR** (5 slot độc lập) để mọi shot cùng sinh từ 1 thế giới.

### G2. Đa nhân vật — quy tắc sắt
- **Tối đa 2–3 nhân vật tương tác / shot AI.** Nhiều hơn → mặt trộn lẫn (cross-contamination).
- Dùng coverage thay vì wide dài: **MASTER wide tĩnh → OTS từng người → CU khi thoại đắt**. Mỗi shot AI chỉ cần giữ đúng 1 gương mặt chính; vai/lưng người kia gần như không bao giờ méo đáng kể.
- Nhân vật không hoạt động trong shot → không cần reference của họ trong shot đó.

### G3. Chống méo/morph bối cảnh — 4 nguyên nhân, 4 cách trị
| Nguyên nhân | Cách trị |
|---|---|
| Camera move quá đà | Chỉ dùng static / slow push-in / handheld nhẹ. Cấm orbit, whip, dolly nhanh |
| Shot quá dài | 4–5s mỗi shot, nối trong edit. 15s liên tục là đủ thời gian mắt bắt lỗi |
| Turbo quá đà | Shot có kiến trúc phức tạp → 6–8 bước; chỉ CU đơn giản mới 4 bước |
| Quá nhiều biến động | 1 shot = 1 hành động. Hai người đi + xe chạy + cửa mở cùng shot = chắc chắn vỡ |

- Neo 2 đầu shot bằng **first-last frame** khi nối 2 góc cùng vị trí.
- Upscale/VFI không cứu được cấu trúc vỡ — **sàng take trước hậu kỳ**, take sạch mới đi tiếp.

### G4. Edit — lớp che cuối cùng
- Nhịp 2–4s/shot: mắt không kịp kiểm kê căn phòng giữa các lần đổi khung.
- **Occlusion cut**: chuyển cảnh khi có vật chắn qua khung — lỗi nhỏ ở điểm cắt biến mất tự nhiên.
- **180° rule / screen direction**: A luôn nhìn cùng một bên khung trong mọi shot; đảo chiều = cảm giác đổi phòng.
- Color match + ambience audio thống nhất giữa các take.

### G5. Checklist continuity trước khi duyệt cảnh (chạy 1 lượt mỗi cảnh)
- [ ] Mọi shot dùng cùng establishing frame / sheet làm reference?
- [ ] Anchor terms + lighting contract xuất hiện nguyên văn trong mọi prompt?
- [ ] Hướng ánh sáng khớp giữa các góc quay? (cửa sổ trái trong shot wide thì vẫn trái ở CU)
- [ ] Screen direction nhất quán theo 180° rule?
- [ ] Số nhân vật trong khung khớp shot liền trước (không ai tự biến mất)?
- [ ] Không shot nào ≥5s? Không camera move quá đà?
- [ ] Ambience/tông màu liền mạch qua các điểm cắt?

### G6. Phương pháp WorldPrompt — Chuẩn hóa kịch bản kiểu World Model (Học từ Runway GWM Worlds 2)
Runway GWM Worlds 2 thành công nhờ tách quy trình làm video thành 3 luồng dữ liệu độc lập. Áp dụng trực tiếp vào kịch bản AV Script để triệt tiêu hiện tượng méo không gian:
1. **Persistent World Context (Genesis):**
   - *Genesis Frame:* Ảnh gốc chuẩn hóa từ FLUX.2 Dev (khóa góc nhìn khởi đầu).
   - *Genesis Prompt:* Mô tả cố định toàn bộ vật liệu, địa hình, nguồn sáng và quy luật vật lý (trọng lực, hướng gió, phản xạ mặt nước).
2. **Timestamped Event Stream:**
   - Liệt kê các hành động và âm thanh gắn mốc thời gian tuyệt đối thay vì viết văn xuôi:
     - `00:00 - 00:03`: Nhân vật tiến về phía bàn gỗ bên cửa sổ.
     - `00:03 - 00:05`: Tiếng sấm chớp ngoài trời, đèn dầu bập bùng.
     - `00:05 - 00:08`: Lời thoại phát ra (sync audio).
3. **Camera Trajectory (Đường ray 6-DoF):**
   - Tách riêng chuyển động của máy quay khỏi chuyển động của nhân vật. Dùng **Wan 2.2 Fun Camera Control** hoặc **SANA-WM** để nạp file quỹ đạo camera (Pan/Tilt/Zoom/Orbit/Dolly) — không để model AI tự "bịa" góc máy ngẫu nhiên.

## H. Lane tạo ảnh — FLUX.2 stack & tích hợp pipeline

> Máy bạn hiện **không có model ảnh nào** — lane này lấp khoảng trống đó. Chạy được trên bất kỳ máy GB10 nào (Spark hoặc GX10 thứ hai — cùng stack).

### H1. Bộ cài khuyến nghị cho GB10

| Model | Dùng cho | Tốc độ đo trên GB10 |
|---|---|---|
| **FLUX.2 Dev FP8 mixed** (~32–40GB) | Ảnh final: keyframe, character sheet, establishing frame | chậm hơn NVFP4 ~3× |
| **FLUX.2 Dev NVFP4** (nếu có trên repo) | Final + nhanh — tận dụng tensor core FP4 của GB10 | ~45s @1024²·28 bước (BF16 ~2.3') |
| **FLUX.2 Klein 9B** | Draft/preview, thử prompt & bố cục | 8 bước ≈ **10s** @1024² (fp16 warm); Nunchaku quantize 2.5× |
| **FLUX.2 Klein 4B distilled** | Draft cực nhanh | ~1–4s |

### H2. Lệnh cài (copy-paste)

```bash
# 1) Tải stack FLUX.2 Dev chính thức (template ComfyUI dùng đúng 3 file này)
pip install -U "huggingface_hub[cli]"
MSC=~/comfy/ComfyUI/models
huggingface-cli download Comfy-Org/flux2-dev \
  split_files/diffusion_models/flux2_dev_fp8mixed.safetensors \
  split_files/text_encoders/mistral_3_small_flux2_bf16.safetensors \
  split_files/vae/flux2-vae.safetensors \
  --local-dir /tmp/flux2
mv /tmp/flux2/split_files/diffusion_models/*.safetensors $MSC/diffusion_models/
mv /tmp/flux2/split_files/text_encoders/*.safetensors  $MSC/text_encoders/
mv /tmp/flux2/split_files/vae/*.safetensors            $MSC/vae/

# 2) Klein 9B (draft) — tải theo đúng danh sách file tại:
#    https://docs.comfy.org/tutorials/flux/flux-2-klein
# 3) Trong ComfyUI: Workflows → Browse Templates → Image → Flux → Flux.2 Dev
#    Tài liệu chính thức: https://docs.comfy.org/tutorials/flux/flux-2-dev
```

*Nếu 401/404: mở repo `Comfy-Org/flux2-dev` trên HF để lấy đúng đường dẫn (repo chính thức đã xác minh 2026-08-26).*

### H3. Tích hợp vào pipeline video (đây là mục đích chính)

```
Klein 9B (thử 20–50 bố cục, ~10s/ảnh)
   ↓ lấy prompt/seed tốt
FLUX.2 Dev NVFP4/FP8 (final, 28 bước, guidance 4)
   ↓
┌─ Keyframe cho I2V (Ngày 5, 16, 24) ──→ LTX/Wan animate
├─ Character reference pack 4 ảnh (Ngày 9) ──→ H3 R2V
├─ Establishing frame bối cảnh (Phụ lục G1) ──→ mọi shot của cảnh
└─ Multi-reference prompt: "Use the face from image 1,
   the outfit from image 2, the pose from image 3,
   the lighting from image 4, place in <bối cảnh Scene Bible>"
   ↓
Hậu kỳ: upscale (Ngày 17) → color match
```

- **Steps:** test 16–20 · bình thường 28 · final 32–40 · 50 chỉ khi soi pixel.
- **Guidance:** 4.0 (khuyến nghị chính thức BFL).
- FLUX.2 hiểu lens/light/material/màu rất tốt — dùng đúng cấu trúc 6 lớp prompt Ngày 4 cho ảnh.
- Batch ảnh qua API giống Ngày 19; có thể dồn lane ảnh sang máy GB10 thứ hai (GX10) để 2 lane song song.
- Chiếm RAM lớn (~80GB cùng lúc Dev FP8 + TE bf16): **đóng lane video trước khi chạy Dev**, hoặc dùng NVFP4 (~19GB) cho nhẹ.

### H4. Bộ công cụ Photorealism & Relighting Keyframe (LC123 Suite)

Chất lượng video AI bị giới hạn bởi chất lượng của ảnh Keyframe (Garbage In = Garbage Out). Để tránh video sinh ra bị biến thành hoạt hình nhựa sáp, ảnh Genesis Keyframe cần được xử lý qua bộ công cụ photorealism:

1. **Cài đặt vào ComfyUI:**
   ```bash
   cd ~/comfy/ComfyUI/custom_nodes
   git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes.git
   ```
   *(Bộ node viết thuần bằng Python, PyTorch CUDA và OpenCV, tương thích 100% với Linux ARM64 / GB10 trên DGX Spark mà không cần phụ thuộc binary Windows).*

2. **3 Node "vũ khí" cắm sau bước gen FLUX.2:**
   - **`LC Skin Beauty ✨`:** Xử lý da trong không gian màu CIELAB — triệt tiêu hoàn toàn lớp bóng nhựa/sáp thường thấy của ảnh AI, bảo tồn chân thực kết cấu da và lỗ chân lông.
 - **`LC Lighting Control `:** Tái tạo ánh sáng (Relighting) bằng Normal Map + Depth Map (Depth Anything V2). Xoay nguồn sáng (Key light, Rim light) và bóng đổ khớp chuẩn xác với **Lighting Contract trong Scene Bible (Phụ lục G1)** mà không cần render lại ảnh.
 - **`FLUX.2 Klein 9B Refiner Pass `:** Chạy 1 lượt sampler thứ hai qua Klein 9B (denoise 0.25–0.35, chỉ mất ~4–10s trên GB10) để tăng độ nét vi mô và khử artifacts trước khi đưa sang I2V/R2V.
 - **`LC Photo Style `:** Ép tông màu giả lập color science của máy ảnh thực tế (Canon R5, Nikon Z7 II, Apple Log), giúp toàn bộ các shot có cùng phong cách quang học.

---

## I. Stack thương mại — khi nào thuê ngoài & map theo từng bước pipeline

> Giáo án này là local-first. Nhưng production thương mại (khách hàng, deadline, chất lượng đồng nhất) có lúc local chưa đủ — biết chỗ nào nên thuê là kỹ năng của producer, không phải sự phản bội tinh thần local 🦊.

### I1. Khi nào nên thuê API thương mại

| Việc | Local đủ tốt | Nên thuê |
|---|---|---|
| B-roll, ambient, phong cảnh | LTX-2.5 / Wan 2.2 ✅ | — |
| Hero shot có người + chuyển động phức tạp | yếu nhất | **Seedance 2.5 / Kling / Veo** |
| Voice over tiếng Việt | Qwen-TTS/CosyVoice tạm ổn | **ElevenLabs v4** (clone + cảm xúc tốt hẳn) |
| Nhạc nền | ACE-Step (Music track) ✅ | ElevenMusic (khi cần master sẵn) |
| Đồ họa text/lower-third | Remotion/HTML render ✅ miễn phí tuyệt đối | — (không cần AE bao giờ) |

### I2. Map pipeline kiểu "One Person · One Day · Claude Code" (case phim tài liệu Bruce McLaren, 10 phút, 1 ngày)

Kiến trúc: **coding agent (Claude Code/Hermes) điều phối 5 bước, gọi model qua MCP; người chỉ làm direction + notes duyệt bản dựng.**

| Bước | Làm gì | Tool |
|---|---|---|
| 1. RESEARCH | footage/ảnh tư liệu → **dossier chữ** làm single source of truth (mọi fact trace về nó) | agent + web search, miễn phí |
| 2. VOICE | narrator thiết kế + clone giọng nhân vật từ clip thật | Seed Audio / ElevenLabs v4 |
| 3. AI SHOTS | sinh dư ~20% rồi chọn; **AI shot chỉ minh họa, archive thật làm xương sống** | Seedance 2.5 (Higgsfield) hoặc lane local |
| 4. GRAPHICS | 100% code (Node.js/Remotion), không After Effects — sửa 1 dòng là ra bản mới | Remotion / HyperFrames |
| 5. EDIT/RENDER | N workers render song song (case thực: 120 shots, 10 workers, ~13 phút) | FFmpeg script |

**Review loop bắt buộc:** AI dựng xong v1 → người xem *như khán giả* → notes → v2. 9 nhóm lỗi kinh điển cần soi: flash frames (<2s), màu lệch brand, hình không khớp lời bình, 1 shot hold quá lâu, màn hình trống, footage lặp, thiếu tên người trong câu thoại, sai facts, nội dung minh họa sai vật lý/lịch sử. **"AI đưa nó lên mức xem được; notes của người làm nó hay."**

### I3. Chi phí thật (thang tham chiếu)

- API video: **vài → vài chục USD mỗi phút thành phẩm**, retry là chi phí ẩn lớn nhất — đặt hard budget trước khi bấm render.
- Higgsfield / fal.ai / Replicate: cùng 1 model (Seedance, Wan, LTX...) giá chênh theo tier — mua theo gói credits rẻ hơn gọi lẻ.
- ElevenLabs: theo giờ; clone 1 giọng = 1 lần, voice over tính theo ký tự.
- Nguyên tắc: **local làm nền 80% khối lượng, API chỉ bắn vào hero shots** — giữ unit cost/channel dưới 2 USD/phút video đăng đều.

## J. Hệ sinh thái open-source tương đương (nghiệm thu 06/10/2026)

> Đọc nhanh: cả hệ sinh thái **không còn đua model** — mọi cuộc cạnh tranh ở tầng điều phối. Chọn repo là chọn kiến trúc orchestration.

### J1. Ba trại chính

| Trại | Đại diện (⭐ 06/10/26) | Dùng khi |
|---|---|---|
| **Skills cho coding agent** (hợp máy này nhất — cài vào chính Hermes/Claude Code đang chạy) | **OpenMontage** 64.5k (12 pipelines, 700+ skills, AGPLv3, có đường full-free dùng stock/open archive); **video-use** 28.2k (browser-use — dựng/cắt bằng agent); **video-shotcraft** 10.4k (Remotion, 152 shot recipe cards); **film-studio-skills** (7 skills cài thẳng Hermes, shot cards 22 field) | Muốn pipeline điều khiển bằng chat ngay trong terminal |
| **Nền tảng một-chạm** | **ViMax** 12.6k (HKU: Director+Screenwriter+Producer agents, Web UI); **NarratoAI** 11.3k (video thuyết minh 1-chạm); **Jellyfish** 6.6k (cross-shot consistency); **ArcReel** 5.3k (xuất draft CapCut, cost tracking) | Volume cao, format ổn định (commentary, short drama) |
| **Canvas đạo diễn** | open-ai-canvas, open-storyboard-canvas | Muốn storyboard trực quan nối generation loop |

### J2. Hạ tầng đáng chú ý: HyperFrames (~44k⭐, HeyGen open-source)

*"Write HTML. Render video. Built for agents."* — video là tài liệu HTML: clips/subs/timing/audio nằm trong elements → **diffable, remixable**, đúng sở trường coding agent. Chính là phiên bản thương mại hóa của "graphics in code" ở Phụ lục I.

### J3. Model mở tự-host trên 2x Sparks (thay API mục I)

| Model | Vai trò trong pipeline |
|---|---|
| **Wan 2.7** | hero video mở, chất lượng dẫn đầu phe mở |
| **LTX-2.3** | 4K + audio native, Apache 2.0, dọc 1080×1920 |
| **HunyuanVideo 1.5** | nhanh (~75s/clip RTX 4090-equivalent lane), B-roll |
| **ACE-Step** (Music track) | nhạc nền local |
| **HyperFrames/Remotion** | graphics 0 đồng |

Stack tối đa-local tái hiện I2: dossier bằng agent (miễn phí) → TTS local (Qwen-TTS/CosyVoice) → shots qua ComfyUI (lane hiện có) → graphics HyperFrames → render FFmpeg parallel → **checklist 9 notes trước khi xuất bản, công cụ nào cũng bắt buộc.**

### J4. Cảnh báo chọn repo

- Camp "một câu → phim" chết ở cross-shot consistency + audio sync + pacing: **repo nào không có human review gate thì không dùng cho phim seri.**
- graveyard dày bằng leaderboard: đọc last-push (không đọc ⭐), repo đứng yên >2 tháng coi như chết.
- Model đổi là prompt phải tuning lại — chọn repo có commit absorption nhanh (ra bản thích ứng model mới trong ~1 tuần).
- Skills camp: API keys tự mang, bill tự trả — retry loop của agent là chi phí chính (xem I3).

---

*Giáo án này thay thế/gói lại các tài liệu cũ trong thư mục (`MASTER_30_DAY...`, `30_DAY_STUDY_GUIDE...`): giữ làm tài liệu tra cứu sâu, còn giáo án này là lộ trình học hằng ngày. Chúc 30 ngày hiệu quả — mỗi ngày 1 sản phẩm.*
