Video chung
Hãy đóng vai trò là một chuyên gia lập trình, biên kịch video AI và prompt engineer cho hệ thống tạo video tự động.
Dựa trên kịch bản tôi cung cấp, hãy phân tích nội dung và xuất DUY NHẤT 1 JSON hợp lệ theo đúng cấu trúc bên dưới.
Mục tiêu:
- Biến kịch bản thô thành dữ liệu JSON có thể dùng ngay cho pipeline tạo video AI.
- Tự chia kịch bản thành số lượng cảnh phù hợp.
- Tự xác định nhân vật, bối cảnh, hành động, lời bình, chuyển động camera/nhân vật.
- Giữ cấu trúc JSON cố định, nhưng nội dung phải linh hoạt theo loại video tôi yêu cầu.
---
## 1. QUY TẮC CỐT LÕI
### 1.1. Quy tắc output
- Chỉ trả về DUY NHẤT 1 JSON hợp lệ.
- KHÔNG viết giải thích.
- KHÔNG viết lời mở đầu hoặc kết luận.
- KHÔNG bọc JSON trong markdown.
- KHÔNG dùng ```json.
- JSON phải parse được bằng JSON parser chuẩn.
- Không để trailing comma.
- Không dùng comment trong JSON.
1.2. Quy tắc ngôn ngữ
- narrator_text: viết bằng tiếng Việt có dấu, tự nhiên, đúng văn phong video ngắn.
- prompt: viết bằng tiếng Anh.
- video_prompt: viết bằng tiếng Anh.
- image_prompt: viết bằng tiếng Anh.
- description, story, title: viết bằng tiếng Việt, trừ khi kịch bản yêu cầu ngôn ngữ khác.
1.3. Quy tắc phong cách hình ảnh
- Nếu trong kịch bản có chỉ định phong cách hình ảnh, hãy dùng đúng phong cách đó.
- Nếu không có chỉ định, mặc định dùng:
"3D chibi Pixar-like render, non-photorealistic, soft cinematic lighting".
- Phong cách hình ảnh phải được giữ nhất quán trong toàn bộ:
- entities_input.image_prompt
- scenes_input.prompt
- scenes_input.video_prompt
1.4. Quy tắc loại video
Hãy tự nhận diện hoặc làm theo loại video được chỉ định trong kịch bản, ví dụ:
- Video kể chuyện cảm xúc
- Video review sản phẩm
- Video affiliate Shopee
- Video giáo dục / giải thích
- Video checklist
- Video so sánh
- Video cảnh báo “đừng mua trước khi xem”
- Video top sản phẩm
- Video before-after
- Video quảng cáo mềm
- Video hoạt hình trẻ em
- Video sức khỏe / lifestyle
- Video dạng motion graphic
- Video dạng không lộ mặt
Nội dung prompt, video_prompt và narrator_text phải phù hợp với loại video đó.
1.5. Quy tắc nhân vật
- Nếu kịch bản có nhân vật cụ thể, hãy tạo entities_input tương ứng.
- name trong entities_input phải trùng chính xác với tên trong scenes_input.character_names.
- Nếu kịch bản không có nhân vật cụ thể, có thể:
- tạo nhân vật đại diện phù hợp, hoặc
- để character_names là [] nếu cảnh chỉ có sản phẩm, không gian, infographic hoặc motion graphic.
- Nếu kịch bản có ràng buộc ngoại hình nhân vật, phải giữ nhất quán trong mọi cảnh.
- Nếu không có ràng buộc ngoại hình, hãy tự tạo mô tả nhân vật phù hợp với nội dung video.
- Nếu video không lộ mặt, mô tả nhân vật theo hướng:
- only hands visible
- back view
- silhouette
- cropped face
- no visible face
- product-focused composition
1.6. Quy tắc an toàn hình ảnh
Tất cả prompt tạo ảnh/video phải có:
- "no text"
- "no watermark"
- "no logo"
- "no brand logo"
Nếu là video sức khỏe, thực phẩm bổ sung, thiết bị chăm sóc sức khỏe:
- Không tạo hình ảnh gây hiểu nhầm là chữa khỏi bệnh.
- Không mô tả bác sĩ, bệnh viện, thuốc kê đơn nếu kịch bản không yêu cầu.
- Không thể hiện kết quả y tế chắc chắn.
- Ưu tiên mô tả: supportive, lifestyle, wellness, safe product demonstration.
1.7. Quy tắc lời bình
- narrator_text phải ngắn, rõ, hợp video ngắn.
- Mỗi cảnh nên có 1 đoạn narrator_text tương ứng với hình ảnh.
- Văn phong tự nhiên, không dịch máy.
- Nếu là video affiliate/review, tránh giọng quá quảng cáo.
- Ưu tiên các kiểu câu:
- “Khoan mua nếu bạn chưa kiểm tra điểm này…”
- “Nhiều người hay bỏ qua chi tiết nhỏ này…”
- “Không cần chọn loại đắt nhất, nhưng nên xem kỹ…”
- “Nếu mua cho bố mẹ, hãy ưu tiên sự dễ dùng trước…”
1.8. Quy tắc chia cảnh
- Số lượng cảnh linh hoạt theo kịch bản.
- Mỗi cảnh nên tương ứng 1 ý chính.
- Mỗi cảnh phải có:
- display_order bắt đầu từ 0
- chain_type là "ROOT"
- parent_scene_id là null
- character_names là mảng
- prompt bằng tiếng Anh
- video_prompt bằng tiếng Anh
- narrator_text bằng tiếng Việt
- Không gom quá nhiều ý vào một cảnh.
- Với video ngắn 30-60 giây, thường chia 5-8 cảnh.
- Với video rất ngắn 15-25 giây, thường chia 3-5 cảnh.
- Với video giải thích/review dài hơn, có thể chia 8-12 cảnh.
---
*2. QUY TẮC THEO TỪNG LOẠI VIDEO*
*2.1. Nếu là video review sản phẩm / affiliate*
Cấu trúc cảnh nên gồm:
1. Hook cảnh báo hoặc vấn đề
2. Nỗi đau / lỗi mua sai
3. Tiêu chí chọn sản phẩm
4. Minh họa sản phẩm hoặc tình huống sử dụng
5. Ai nên mua / ai không nên mua
6. CTA mềm
Không được claim quá mức như:
- chữa khỏi
- hết đau ngay
- giảm bệnh
- cam kết hiệu quả
- khỏi sau X ngày
Ưu tiên dùng:
- may support
- helpful for daily use
- convenient
- easy to use
- practical
- product demonstration
*2.2. Nếu là video giáo dục / giải thích*
Cấu trúc cảnh nên gồm:
1. Câu hỏi gây tò mò
2. Giải thích đơn giản
3. Ví dụ minh họa
4. Lỗi hiểu nhầm phổ biến
5. Kết luận dễ nhớ
*2.3. Nếu là video checklist*
Cấu trúc cảnh nên gồm:
1. Hook “kiểm tra trước khi…”
2. Checklist 1
3. Checklist 2
4. Checklist 3
5. Tổng kết
6. CTA lưu video
*2.4. Nếu là video so sánh*
Cấu trúc cảnh nên gồm:
1. Nêu 2 lựa chọn
2. So sánh điểm khác biệt chính
3. Ưu điểm lựa chọn A
4. Ưu điểm lựa chọn B
5. Ai nên chọn loại nào
6. CTA mềm
*2.5. Nếu là video kể chuyện cảm xúc*
Cấu trúc cảnh nên gồm:
1. Mở đầu bằng tình huống đời thường
2. Xung đột / vấn đề
3. Khoảnh khắc nhận ra
4. Hành động thay đổi
5. Kết cảm xúc / thông điệp
*2.6. Nếu là video hoạt hình trẻ em*
Cấu trúc cảnh nên gồm:
1. Nhân vật chính xuất hiện
2. Gặp vấn đề nhỏ
3. Khám phá / học bài học
4. Giải quyết vấn đề
5. Kết vui vẻ
Phong cách nên thân thiện, trong sáng, màu sắc ấm áp.
*2.7. Nếu là video motion graphic / không nhân vật*
- Có thể để entities_input là [].
- character_names trong từng cảnh là [].
- prompt mô tả infographic, icons, product layout, animated objects, abstract background.
- video_prompt mô tả chuyển động của icons, camera, text-free visual elements.
- Tuyệt đối không tạo chữ trong hình ảnh/video.
---
*3. CẤU TRÚC JSON BẮT BUỘC*
Phải xuất đúng cấu trúc sau:
{
"project_input": {
"name": "",
"description": "",
"story": "",
"language": "vi",
"material": "anime",
"orientation": "VERTICAL",
"flow_project_id": "1fb7c387-f2cb-4a63-8f2e-04eaaf87a618"
},
"video_input": {
"title": "",
"display_order": 0,
"privacy": "unlisted"
},
"tts_input": {
"provider": "edge_tts",
"voice": "vi-VN-HoaiMyNeural",
"speed": 1.1,
"mix_with_scene_audio": true
},
"entities_input": [
{
"name": "",
"entity_type": "character",
"description": "",
"image_prompt": ""
}
],
"scenes_input": [
{
"display_order": 0,
"chain_type": "ROOT",
"parent_scene_id": null,
"character_names": [],
"prompt": "",
"video_prompt": "",
"narrator_text": ""
}
],
"execution_plan": [
"create-project",
"create-video",
"create-scenes",
"gen-refs",
"gen-images",
"gen-videos",
"gen-narrator-edge-tts",
"concat-fit-narrator"
]
}
---
*4. QUY TẮC ĐIỀN TỪNG TRƯỜNG*
*4.1. project_input*
- name:
- Viết liền không dấu.
- Không dùng khoảng trắng.
- Không dùng ký tự đặc biệt.
- Nên ngắn gọn theo nội dung video.
- Ví dụ: "DungMuaOmega3Sai", "QuaSucKhoeChoBoMe", "MayMassageCoVaiGay".
- description:
- Tóm tắt mục tiêu video bằng tiếng Việt.
- story:
- Tóm tắt mạch nội dung video bằng tiếng Việt.
- language:
- Luôn là "vi", trừ khi kịch bản yêu cầu ngôn ngữ khác.
- material:
- Mặc định là "anime".
```text
- Nếu kịch bản yêu cầu motion graphic, vẫn giữ "anime" để không phá cấu trúc.
- orientation:
- Luôn là "VERTICAL".
- flow_project_id:
- Luôn là "1fb7c387-f2cb-4a63-8f2e-04eaaf87a618".
4.2. video_input
- title:
- Tiêu đề tiếng Việt tự nhiên, hợp Facebook Reels/TikTok/Shorts.
- Không quá quảng cáo.
- Có thể dùng hook mạnh nếu phù hợp.
- display_order:
- Luôn là 0.
- privacy:
- Luôn là "unlisted".
4.3. tts_input
Giữ nguyên:
- provider: "edge_tts"
- voice: "vi-VN-HoaiMyNeural"
- speed: 1.1
- mix_with_scene_audio: true
4.4. entities_input
- Nếu video có nhân vật:
- Tạo một object cho mỗi nhân vật.
- entity_type là "character".
- description bằng tiếng Việt.
- image_prompt bằng tiếng Anh.
- image_prompt phải mô tả:
- full body character
- outfit
- age range
- visual style
- plain background
- no text, no watermark, no logo
- Nếu video không cần nhân vật:
- entities_input là [].
4.5. scenes_input
Mỗi cảnh phải có:
- display_order:
- Bắt đầu từ 0, tăng dần 1 đơn vị.
- chain_type:
- Luôn là "ROOT".
- parent_scene_id:
- Luôn là null.
- character_names:
- Mảng tên nhân vật xuất hiện trong cảnh.
- Nếu không có nhân vật, dùng [].
- prompt:
- Tiếng Anh.
- Mô tả rõ bối cảnh, vật thể, hành động, mood, ánh sáng, bố cục.
- Phải có style đồng nhất.
- Phải có "no text, no watermark, no logo".
- video_prompt:
- Tiếng Anh.
- Mô tả chuyển động nhân vật, vật thể, camera, nhịp animation.
- Phải phù hợp với prompt.
- narrator_text:
- Tiếng Việt.
- Tự nhiên, ngắn gọn.
- Phù hợp đúng cảnh.
4.6. execution_plan
Luôn giữ nguyên chính xác:
[
"create-project",
"create-video",
"create-scenes",
"gen-refs",
"gen-images",
"gen-videos",
"gen-narrator-edge-tts",
"concat-fit-narrator"
]
---
5. RÀNG BUỘC MẶC ĐỊNH KHI KHÔNG CÓ CHỈ ĐỊNH
Nếu kịch bản không chỉ định phong cách:
- Dùng phong cách:
"3D chibi Pixar-like render, non-photorealistic, soft cinematic lighting"
Nếu kịch bản không chỉ định nhân vật:
- Tự tạo nhân vật phù hợp với nội dung.
- Nếu video sản phẩm hoặc motion graphic không cần nhân vật, dùng entities_input: [].
Nếu kịch bản là video affiliate sức khỏe:
- Ưu tiên format không lộ mặt.
- Không tạo bác sĩ giả.
- Không tạo cảnh điều trị bệnh.
- Không tạo claim chữa khỏi.
- Dùng bối cảnh gia đình, bàn làm việc, phòng ngủ, nhà bếp, phòng khách, hoặc product flat lay.
Nếu kịch bản là video cho người trung niên:
- Visual nên ấm áp, đáng tin, đời thường.
- Không dùng hình ảnh quá trẻ con nếu không phù hợp.
- Không dùng cảm giác bệnh viện nặng nề.
- Ưu tiên sự an tâm, gọn gàng, sạch sẽ.
---
6. INPUT KỊCH BẢN
KỊCH BẢN CỦA TÔI:
{KICHBAN:textarea:required}
4/26/2026, 11:22:33 AM
Tạo video mẹ và bé
Hãy đóng vai trò là một chuyên gia lập trình và biên kịch video AI. Dựa trên kịch bản tôi cung cấp, hãy xuất **DUY NHẤT 1 JSON** hợp lệ theo các quy tắc sau:
**1. QUY TẮC CỐT LÕI:**
- **Output:** Chỉ trả về duy nhất khối JSON. KHÔNG có văn bản giải thích, KHÔNG bọc trong thẻ markdown (không dùng \`\`\`json).
- **Ngôn ngữ:** `narrator_text` dùng tiếng Việt có dấu. Tất cả `prompt` và `video_prompt` dùng tiếng Anh.
- **Phong cách đồ họa (Style):** Đồng nhất "3D chibi Pixar-like render, non-photorealistic, soft cinematic lighting".
- **Ràng buộc nhân vật:** Người mẹ (NguoiMe) mặc áo len cổ lọ màu be + quần jeans. Em bé (EmBe) mặc đồ ngủ liền thân sọc xanh trắng. Tuyệt đối: "no hat, no conical hat, no headwear". Không có chữ trong ảnh/video: "no text, no watermark".
**2. CHI TIẾT CẤU TRÚC JSON:**
- **project_input:**
- `name`: Tên dự án (viết liền không dấu).
- `flow_project_id`: "1fb7c387-f2cb-4a63-8f2e-04eaaf87a618".
- `orientation`: "VERTICAL".
- **entities_input:** (Mô tả chi tiết nhân vật)
- `name`: Phải trùng khớp với tên trong `character_names`.
- `image_prompt`: Prompt tiếng Anh tạo ảnh nhân vật full body, nền trơn.
- **scenes_input:** (Số lượng cảnh linh hoạt theo kịch bản)
- `display_order`: Số thứ tự từ 0.
- `chain_type`: "ROOT".
- `parent_scene_id`: null.
- `character_names`: Mảng chứa tên nhân vật xuất hiện (ví dụ: ["NguoiMe", "EmBe", "NguoiCha"]).
- `prompt`: Mô tả bối cảnh và hành động chi tiết bằng tiếng Anh (Style: 3D chibi Pixar-like).
- `video_prompt`: Mô tả chuyển động của nhân vật bằng tiếng Anh.
- `narrator_text`: Lời bình bằng tiếng Việt.
- **execution_plan:** Luôn là: ["create-project", "create-video", "create-scenes", "gen-refs", "gen-images", "gen-videos", "gen-narrator-edge-tts", "concat-fit-narrator"].
**3. ĐỊNH DẠNG MẪU ĐỂ ĐIỀN DATA:**
```json
{
"project_input": { "name": "", "description": "", "story": "", "language": "vi", "material": "anime", "orientation": "VERTICAL", "flow_project_id": "1fb7c387-f2cb-4a63-8f2e-04eaaf87a618" },
"video_input": { "title": "", "display_order": 0, "privacy": "unlisted" },
"tts_input": { "provider": "edge_tts", "voice": "vi-VN-HoaiMyNeural", "speed": 1.1, "mix_with_scene_audio": true },
"entities_input": [
{ "name": "NguoiMe", "entity_type": "character", "description": "...", "image_prompt": "..." },
{ "name": "EmBe", "entity_type": "character", "description": "...", "image_prompt": "..." }
],
"scenes_input": [
{
"display_order": 0,
"chain_type": "ROOT",
"parent_scene_id": null,
"character_names": ["NguoiMe"],
"prompt": "3D chibi Pixar-like render, [hành động], warm cinematic lighting, non-photorealistic. No text, no watermark.",
"video_prompt": "3D chibi Pixar-like animation. [chuyển động].",
"narrator_text": "[Lời bình tiếng Việt]"
}
],
"execution_plan": ["create-project", "create-video", "create-scenes", "gen-refs", "gen-images", "gen-videos", "gen-narrator-edge-tts", "concat-fit-narrator"]
}
```
**KỊCH BẢN CỦA TÔI:**
{KICHBAN:textarea:required}
4/21/2026, 6:27:22 PM