Skip to content

Commit 466ddad

Browse files
committed
Add animated-short-film skill by Đặng Hữu Sơn: full pipeline from idea to MP4 (character sheets, story bible, keyframes, mega prompts, video gen, VO, ffmpeg assembly)
1 parent bc871e9 commit 466ddad

10 files changed

Lines changed: 440 additions & 0 deletions

‎README.md‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# 🎬 Muse Animated Short Film
2+
3+
**Tác giả:** Đặng Hữu Sơn ([sonlovinbot](https://github.com/sonlovinbot))
4+
5+
Skill dựng phim hoạt hình ngắn **từ đầu đến cuối trên Muse AI** — từ một ý tưởng thô thành file MP4 hoàn chỉnh: nhân vật, kịch bản, hình ảnh, video, thuyết minh và dựng phim.
6+
7+
*An end-to-end skill for producing animated short films on Muse AI — from a raw idea to a finished MP4.*
8+
9+
## Skill này làm gì?
10+
11+
Pipeline 7 giai đoạn đã kiểm chứng qua dự án thật "The Last Lantern" (8 cảnh, 2D Disney/Pixar):
12+
13+
| # | Giai đoạn | Kết quả |
14+
|---|-----------|---------|
15+
| 0 | Thu thập đầu vào | Thời lượng → số cảnh, ngôn ngữ, tỷ lệ 16:9/9:16 |
16+
| 1 | Character sheets | Khóa nhân vật (nhiều góc + biểu cảm) |
17+
| 2 | Story bible | Chốt kịch bản: logline, character lock, từng cảnh |
18+
| 3 | Keyframes | K1..K(N+1), luật match-cut |
19+
| 4 | Mega prompt | 1 prompt copy-paste cho mỗi cảnh |
20+
| 5 | Generate video | Từng clip first-frame → last-frame |
21+
| 6 | Làm VO | Kịch bản thuyết minh kiểu kể chuyện |
22+
| 7 | Dựng phim | ffmpeg: normalize, nối, mix VO |
23+
24+
Kèm theo: **luật realism** (hành động vật lý phải đúng thực tế), **STRICT ASPECT RATIO LOCK** (ref đầu vào phải cùng tỷ lệ với output), và **10+ bài học xương máu**.
25+
26+
## Cách dùng (cho người mới)
27+
28+
1. **Cài skill:** copy cả folder này vào thư mục skills của Muse AI, VD: `~/workspace/skills/animated-short-film/`
29+
- Hoặc: dán link repo này vào chat Muse, Muse sẽ tự cài.
30+
2. **Mở chat và nói:** "Tôi muốn làm phim hoạt hình ngắn."
31+
3. **Trả lời 3 câu hỏi đầu tiên:** phim dài bao lâu? ngôn ngữ nào? tỷ lệ 16:9 hay 9:16?
32+
4. **Duyệt ở các điểm chốt:** mô tả nhân vật → story bible → keyframes → từng video → VO → phim cuối. Bạn chỉ việc xem và nói "ok" hoặc "sửa chỗ này".
33+
34+
Bạn không cần đọc các file reference — Muse tự đọc khi cần. Mọi prompt kỹ thuật, câu lệnh generate và dựng phim đã nằm trong skill.
35+
36+
## Cấu trúc
37+
38+
```
39+
├── SKILL.md # Quy trình + luật vận hành (Muse đọc)
40+
├── README.md # File này (người đọc)
41+
└── references/
42+
├── 01-character-sheets.md
43+
├── 02-story-and-script.md
44+
├── 03-keyframes.md
45+
├── 04-mega-prompts.md
46+
├── 05-video-generation.md
47+
├── 06-vo-production.md
48+
├── 07-assembly.md
49+
└── 08-lessons.md
50+
```
51+
52+
## Giấy phép
53+
54+
MIT — dùng tự do, ghi credit tác giả khi chia sẻ lại.

‎SKILL.md‎

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
---
2+
name: "animated_short_film"
3+
description: "Skill dựng phim hoạt hình ngắn từ đầu đến cuối trên Muse AI: thu thập yêu cầu (thời lượng, ngôn ngữ, tỷ lệ khung hình), vẽ character sheets, chốt kịch bản story bible, keyframes, mega prompt từng cảnh, generate video, làm VO, dựng phim bằng ffmpeg. Tác giả: Đặng Hữu Sơn. Dùng khi user muốn làm phim hoạt hình ngắn từ con số 0 trên Muse AI."
4+
---
5+
6+
# Animated Short Film Pipeline (Muse AI)
7+
8+
**Tác giả:** Đặng Hữu Sơn
9+
**Mô tả:** Skill dựng phim hoạt hình ngắn từ đầu đến cuối trên Muse AI — từ một ý tưởng thô thành file MP4 hoàn chỉnh: nhân vật, kịch bản, hình ảnh, video, thuyết minh và dựng phim.
10+
11+
## Purpose
12+
Dẫn dắt toàn bộ quy trình sản xuất một phim ngắn hoạt hình 2D trên Muse AI — từ ý tưởng đến file MP4 hoàn chỉnh — theo pipeline đã kiểm chứng trong dự án "The Last Lantern" (8 cảnh, nhân vật on-model, match-cut liền mạch).
13+
14+
## Giai đoạn 0 — Thu thập đầu vào (BẮT BUỘC, hỏi trước mọi thứ)
15+
Hỏi user 3 câu dưới đây trước khi làm bất cứ việc gì. Chưa có đáp án thì chưa sang giai đoạn 1.
16+
17+
### 1. Thời lượng phim mong muốn là bao lâu?
18+
- Mỗi clip video generate ra dài khoảng **10 giây** (chuẩn của media-generation).
19+
- **Số cảnh = làm tròn lên (thời lượng mong muốn ÷ 10).**
20+
- Ví dụ:
21+
- Muốn phim ~60 giây → 60 ÷ 10 = **6 cảnh**
22+
- Muốn phim ~80 giây → 80 ÷ 10 = **8 cảnh**
23+
- Muốn phim ~45 giây → 4,5 → **5 cảnh** (tổng 50 giây, cắt gọn ở khâu dựng) hoặc giảm còn 4 cảnh
24+
- Chốt con số cảnh với user ngay tại bước này — mọi giai đoạn sau đều dựa vào con số này.
25+
26+
### 2. Ngôn ngữ chính là gì?
27+
- **Tiếng Việt / Tiếng Anh / ngôn ngữ khác** (theo yêu cầu của user).
28+
- Ngôn ngữ đã chọn quyết định: ngôn ngữ VO, ngôn ngữ của VO_SCRIPT.md, và ngôn ngữ dùng khi thảo luận kịch bản với user.
29+
30+
### 3. Tỷ lệ khung hình: 16:9 (ngang) hay 9:16 (dọc)?
31+
- Đây không chỉ là lựa chọn output — nó **ràng buộc toàn bộ ref đầu vào**.
32+
- ⚠️ RÀNG BUỘC MẠNH — dán nguyên văn (tiếng Anh) vào mọi prompt generate ảnh/video của dự án:
33+
> **STRICT ASPECT RATIO LOCK:** The final output video MUST be **[16:9 landscape | 9:16 vertical — chọn 1]**. All reference images — character sheets, context sheets, keyframes, first-frame and last-frame images — MUST share this exact aspect ratio. Reference images are not only style and character guides; they directly condition the output framing and composition. Any reference image with a mismatched aspect ratio MUST be regenerated or cropped to the locked ratio before use. NEVER mix aspect ratios within a single project.
34+
- CLI `media-generation`: 16:9 → `--orientation landscape`; 9:16 → `--orientation vertical`.
35+
- Verify bằng ffprobe ở mọi giai đoạn: sai tỷ lệ = làm lại ngay, không để lọt xuống giai đoạn sau.
36+
37+
## Workflow
38+
Làm theo đúng thứ tự 7 giai đoạn. Mỗi giai đoạn có prompt mẫu và checklist trong `references/`. Không bỏ qua giai đoạn nào.
39+
40+
1. **Character sheets** → `references/01-character-sheets.md`
41+
Vẽ character reference sheet cho từng nhân vật theo đúng tỷ lệ đã khóa ở Giai đoạn 0 (nhiều góc + biểu cảm). Đây là "khóa nhân vật" — mọi asset sau này đều phải nạp sheet này.
42+
2. **Thảo luận & chốt kịch bản** → `references/02-story-and-script.md`
43+
Hỏi user để chốt logline, nhân vật, thế giới, rồi viết **Story Bible** (`STORY.md`): character lock chép nguyên văn, style lock, luật continuity, từng cảnh (beat, first/last frame, VO, nhạc). Số cảnh = con số đã chốt ở Giai đoạn 0.
44+
3. **Keyframes** → `references/03-keyframes.md`
45+
Vẽ K1..K(N+1) keyframe đúng tỷ lệ đã khóa, mỗi keyframe nạp character sheet làm ref. Keyframe cuối cảnh N = keyframe đầu cảnh N+1 (luật match-cut).
46+
4. **Mega prompt từng cảnh** → `references/04-mega-prompts.md`
47+
Viết 1 mega prompt copy-paste cho mỗi cảnh: global locks (kèm STRICT ASPECT RATIO LOCK) + thứ tự nạp ref + FIRST FRAME / MOTION / CAMERA / LAST FRAME / SOUND / MUSIC / VO.
48+
5. **Generate video** → `references/05-video-generation.md`
49+
Chạy `media-generation` cho từng cảnh (nạp sheet + first/last frame), verify on-model, continuity và tỷ lệ khung hình bằng ffprobe.
50+
6. **Làm VO** → `references/06-vo-production.md`
51+
Viết kịch bản VO kiểu kể chuyện bằng ngôn ngữ đã chọn ở Giai đoạn 0 (không nói liên tục, ~60% thời lượng), thu bằng TTS hoặc để user thu ngoài.
52+
7. **Dựng phim** → `references/07-assembly.md`
53+
Normalize về độ phân giải chuẩn của tỷ lệ đã khóa (16:9 → 1280×720; 9:16 → 720×1280), 24fps bằng ffmpeg, nối các cảnh, mix VO đúng timecode, verify file cuối.
54+
55+
> Trước khi bắt đầu dự án mới, đọc `references/08-lessons.md` — 10 bài học xương máu từ dự án "The Last Lantern".
56+
57+
## Output Contract
58+
Kết thúc pipeline phải có:
59+
- `STORY.md` — story bible đã chốt với user
60+
- `character_sheets/` — sheet của mọi nhân vật, đúng tỷ lệ đã khóa
61+
- `keyframes/` — K1..K(N+1), đúng tỷ lệ đã khóa
62+
- `MEGA_PROMPTS.md` — mega prompt từng cảnh
63+
- `videos/` — video từng cảnh, đã verify tỷ lệ + thời lượng
64+
- `audio/` — VO từng cảnh (hoặc file user thu)
65+
- `VO_SCRIPT.md` — kịch bản VO kèm timecode, đúng ngôn ngữ đã chọn
66+
- File MP4 hoàn chỉnh: đúng tỷ lệ đã khóa, 24fps, có audio, đã verify bằng ffprobe, tổng thời lượng xấp xỉ thời lượng user yêu cầu ở Giai đoạn 0
67+
68+
## Operating Rules
69+
1. **Giai đoạn 0 là bắt buộc:** không có thời lượng + ngôn ngữ + tỷ lệ khung hình thì không bắt đầu.
70+
2. **STRICT ASPECT RATIO LOCK:** toàn bộ ref đầu vào (character sheets, context sheets, keyframes) phải cùng tỷ lệ với output. Ref sai tỷ lệ = vẽ lại, không dùng tạm.
71+
3. **Khóa nhân vật:** mọi prompt generate ảnh/video đều phải nạp character sheet TRƯỚC TIÊN, rồi mới đến ref khác. Output lệch nhân vật = làm lại.
72+
4. **Luật continuity:** frame cuối cảnh N = frame đầu cảnh N+1. Khi nối phim, các frame biên được share nên cut là vô hình.
73+
5. **Luật realism (bắt buộc):** mọi hành động vật lý nhỏ trong prompt phải đúng cơ chế thực tế — mở cửa kính đèn trước khi đưa bấc vào châm lửa; bão xé rách đèn giấy / làm lửa chập chờn trong housing rung lắc; đèn lớn châm qua miệng mở phía dưới và khay lửa. Không bao giờ viết hành động phi logic (VD: đốt xuyên qua kính).
74+
6. **Verify trước khi mix:** kiểm tra audio stream của clip gốc bằng ffprobe trước khi dựng — không giả định clip đang im lặng. Nếu có âm thanh nền thì giữ lại và duck dưới VO.
75+
7. **Normalize trước khi nối:** mọi clip phải về cùng độ phân giải, fps trước khi concat.
76+
8. **VO kể chuyện, không đọc liên tục:** mỗi cảnh 1–2 câu đặt đầu cảnh, chừa khoảng lặng cho hình ảnh/nhạc. Cảnh cảm xúc cao trào có thể để nhân vật "thở" thay vì VO.
77+
9. Mọi con số user sẽ hành động theo (số cảnh, thời lượng, độ phân giải) phải lấy từ output tool thực tế hoặc từ tính toán ở Giai đoạn 0, không đoán.

‎references/01-character-sheets.md‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Giai đoạn 1 — Character Sheets (Khóa nhân vật)
2+
3+
## Mục đích
4+
Tạo "chứng minh thư" hình ảnh cho từng nhân vật. Từ đây về sau, mọi ảnh/video đều phải nạp sheet này để nhân vật không bị lệch (on-model).
5+
6+
## ⚠️ Tỷ lệ khung hình (từ Giai đoạn 0)
7+
Character sheet PHẢI vẽ đúng tỷ lệ đã khóa — 16:9 hay 9:16. Sheet không chỉ là tham chiếu style/nhân vật, nó còn định hình trực tiếp output video. Dán STRICT ASPECT RATIO LOCK vào prompt. CLI: 16:9 → `--orientation landscape`; 9:16 → `--orientation vertical`.
8+
9+
## Prompt mẫu (dùng cho từng nhân vật, prompt tiếng Anh)
10+
```
11+
Character reference sheet, [16:9 landscape | 9:16 vertical] orientation, soft 2D Disney/Pixar
12+
animation style, clean rounded shapes, warm cinematic lighting.
13+
STRICT ASPECT RATIO LOCK: the sheet MUST be exactly [16:9 | 9:16]. This sheet
14+
will directly condition video output framing — no other ratio is acceptable.
15+
Character: [MÔ TẢ CHI TIẾT: tuổi, giới tính, tóc, mắt, trang phục từng món,
16+
màu sắc chính xác, phụ kiện, đặc điểm nhận dạng]
17+
Show: front view, side view, back view, 3/4 view, plus 3 expression close-ups
18+
(happy, sad, determined). Same outfit and colors in every view, consistent
19+
proportions. Plain soft neutral background, no text, no watermark.
20+
```
21+
22+
## Quy trình
23+
1. Viết mô tả nhân vật thật cụ thể (màu áo, kiểu tóc, phụ kiện) — càng chi tiết càng khó lệch về sau. Hỏi user chốt mô tả trước khi vẽ.
24+
2. Generate bằng CLI:
25+
```
26+
/opt/hatch/bin/media-generation --media-subagent-output-type image \
27+
--orientation landscape --output-dir <project>/character_sheets \
28+
"<prompt trên>"
29+
```
30+
3. Kiểm tra: đúng 16:9 (dùng `ffprobe` hoặc xem ảnh), các góc có đồng nhất trang phục/màu sắc không. Chưa đạt → sửa prompt, vẽ lại.
31+
4. Lưu sheet với tên rõ ràng: `milo-sheet-16x9.webp`, `lyra-sheet-16x9.webp`...
32+
33+
## Checklist trước khi sang giai đoạn 2
34+
- [ ] Mỗi nhân vật chính đều có sheet 16:9 riêng
35+
- [ ] Mô tả nhân vật đã được user chốt (không đổi giữa chừng)
36+
- [ ] Sheet đủ các góc nhìn + biểu cảm, nền trơn, không chữ

‎references/02-story-and-script.md‎

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Giai đoạn 2 — Thảo luận & Chốt kịch bản (Story Bible)
2+
3+
## Mục đích
4+
Biến ý tưởng mơ hồ của user thành một **Story Bible** duy nhất, chốt cứng mọi thứ trước khi vẽ một nét nào. Đây là "hiến pháp" của phim — mọi prompt sau này đều trích từ đây.
5+
6+
## Lưu ý từ Giai đoạn 0
7+
- Số cảnh đã chốt từ công thức thời lượng (thời lượng ÷ 10, làm tròn lên). Không hỏi lại "mấy cảnh" — chỉ xác nhận.
8+
- Ngôn ngữ thảo luận và VO = ngôn ngữ đã chọn ở Giai đoạn 0.
9+
10+
## Prompt thảo luận (hỏi user, từng câu một, ngắn gọn)
11+
1. Phim về ai? (nhân vật chính, tuổi, tính cách, ngoại hình)
12+
2. Câu chuyện một câu là gì? (logline: ai + muốn gì + vật cản + cái giá)
13+
3. Thế giới diễn ra ở đâu? Phong cách hình ảnh? (VD: 2D Disney/Pixar, anime, 3D...)
14+
4. Mấy cảnh? Mỗi cảnh bao lâu? (gợi ý: 8 cảnh × 10 giây = phim ~80 giây)
15+
5. VO ngôn ngữ gì? Giọng kể chuyện hay nhân vật tự thoại?
16+
6. Nhạc: có motif chủ đạo không? (VD: bài hát ru → full orchestra ở cao trào)
17+
7. Cảm xúc từng cảnh đi lên hay xuống? Đâu là đỉnh cảm xúc?
18+
19+
## Template STORY.md (viết xong đưa user duyệt)
20+
```markdown
21+
# <TÊN PHIM> — Story Bible
22+
*Dòng mô tả: phong cách, số cảnh, ngôn ngữ VO*
23+
24+
## Logline
25+
<1 câu>
26+
27+
## Characters (CANONICAL LOCK — chép nguyên văn vào mọi prompt)
28+
- **<TÊN> (tuổi, vai):** <mô tả ngoại hình chi tiết + tính cách + arc>
29+
30+
## World & Style Lock
31+
<Thế giới, phong cách hình ảnh, 16:9 1280x720, âm thanh, nhạc, VO>
32+
33+
## Continuity Rule
34+
**Last frame of Scene N = first frame of Scene N+1 (match cut).**
35+
36+
### Scene N — "<Tên cảnh>"
37+
- Beat: <cảm xúc chủ đạo>
38+
- First frame: <mô tả>
39+
- Last frame: <mô tả> (= first frame cảnh N+1)
40+
- VO: "<câu thoại>"
41+
- Music: <diễn biến nhạc>
42+
```
43+
44+
## Quy tắc chốt
45+
- Phần **Characters (CANONICAL LOCK)** phải viết đủ chi tiết để paste nguyên văn vào prompt mà không cần sửa.
46+
- Mỗi cảnh bắt buộc có first frame + last frame mô tả rõ — đây là nguyên liệu cho keyframes ở giai đoạn 3.
47+
- VO mỗi cảnh chỉ 1–2 câu, đơn giản, quốc tế (dễ dịch).
48+
- User duyệt STORY.md xong mới sang giai đoạn 3. Đổi kịch bản sau khi đã vẽ = làm lại từ đầu.

‎references/03-keyframes.md‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Giai đoạn 3 — Keyframes (Khung hình chốt)
2+
3+
## Mục đích
4+
Vẽ trước các "cột mốc" hình ảnh của phim: K1..K(N+1) cho N cảnh. Keyframe = first frame và last frame của từng cảnh. Có keyframes rồi thì video chỉ việc "đi từ A đến B".
5+
6+
## Quy trình
7+
1. Từ STORY.md, liệt kê K1..K(N+1): K1 = first frame cảnh 1, K2 = last frame cảnh 1 = first frame cảnh 2, ..., K(N+1) = last frame cảnh N.
8+
2. Với mỗi keyframe, generate ảnh 16:9, **nạp character sheet của nhân vật xuất hiện trong frame làm ref trước**, rồi mới đến mô tả:
9+
```
10+
/opt/hatch/bin/media-generation --media-subagent-output-type image \
11+
--orientation landscape \
12+
--image-file <path/character-sheet.webp> \
13+
--output-dir <project>/keyframes \
14+
"<mô tả keyframe, style lock + character lock chép từ STORY.md>"
15+
```
16+
3. Kiểm tra từng keyframe: 16:9, nhân vật on-model (so với sheet), ánh sáng/không khí đúng beat của cảnh.
17+
4. Đặt tên file rõ ràng: `k1-city-dusk.webp`, `k2-spark-falls.webp`...
18+
19+
## Checklist
20+
- [ ] Đủ K1..K(N+1), không thiếu mốc nào
21+
- [ ] K_cuối_cảnh_N và K_đầu_cảnh_N+1 là CÙNG MỘT FILE (luật match-cut)
22+
- [ ] Nhân vật trong keyframe khớp character sheet
23+
- [ ] Tất cả 16:9

‎references/04-mega-prompts.md‎

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
# Giai đoạn 4 — Mega Prompt từng cảnh
2+
3+
## Mục đích
4+
Viết 1 prompt "copy-paste là chạy" cho mỗi cảnh, gom đủ: style lock, character lock, camera, hành động, âm thanh, nhạc, VO, first/last frame. Viết kỹ ở đây thì video generate ra ít phải sửa.
5+
6+
## Cấu trúc mega prompt (tiếng Anh)
7+
```
8+
<Style lock>, 16:9.
9+
FIRST FRAME: <mô tả frame đầu = keyframe đầu>
10+
MOTION: <diễn biến hành động trong cảnh — viết từng bước theo trình tự thời gian>
11+
CAMERA: <chuyển động camera: push-in, orbit, aerial follow...>
12+
LAST FRAME: match <keyframe cuối>
13+
SOUND: <tiếng động chi tiết: gió, bước chân, lửa crackle...>
14+
MUSIC: <diễn biến nhạc trong cảnh>
15+
VO (warm narrator): "<câu VO từ STORY.md>"
16+
```
17+
18+
## Global locks (dán đầu mọi prompt)
19+
```
20+
Soft 2D Disney/Pixar animation, clean rounded shapes, warm cinematic lighting,
21+
painterly rich backgrounds, [16:9 landscape 1280x720 | 9:16 vertical 720x1280],
22+
no text, no watermark.
23+
STRICT ASPECT RATIO LOCK: the output MUST be exactly [16:9 | 9:16] — the same
24+
ratio locked in project intake. All attached references already share this
25+
ratio; never introduce a mismatched one.
26+
<Character lock chép nguyên văn từ STORY.md cho nhân vật xuất hiện trong cảnh>
27+
Keep every character exactly on-model with the attached sheets in all frames.
28+
```
29+
30+
## Thứ tự nạp ref (bắt buộc)
31+
1. Character sheet của nhân vật trong cảnh (MILO_SHEET, LYRA_SHEET...)
32+
2. Keyframe first frame
33+
3. Keyframe last frame
34+
→ Rồi mới đến prompt text.
35+
36+
## ⚠️ Luật realism (đọc kỹ trước khi viết MOTION)
37+
Mọi hành động vật lý nhỏ phải đúng cơ chế thực tế. Ví dụ đã gặp trong dự án thật:
38+
- Thắp đèn có khung kính: **mở cửa/panel kính → đưa bấc vào chạm tim đèn → đóng cửa lại**. Không viết "châm lửa xuyên qua kính".
39+
- Bão dập lửa: gió **xé rách đèn giấy**, lửa **chập chờn trong housing kính rung lắc rồi tắt**.
40+
- Đèn lớn châm lửa: qua **miệng mở phía dưới** và **khay lửa sắt** — nhân vật bay/chui qua miệng đèn vào khay trước khi đèn bùng cháy.
41+
Kiểm tra từng động từ trong MOTION: "nó có thể xảy ra như vậy ngoài đời không?" Nếu không → viết lại.
42+
43+
## Checklist
44+
- [ ] Mỗi cảnh 1 mega prompt đầy đủ 7 mục (FIRST FRAME → VO)
45+
- [ ] Character lock + style lock có mặt trong mọi prompt
46+
- [ ] Thứ tự ref đúng: sheet → first frame → last frame
47+
- [ ] MOTION đã rà soát realism, không có hành động phi logic

0 commit comments

Comments
 (0)