Với một hình ảnh sản phẩm rõ ràng, Claude Code và API AIHubMix, bạn có thể tạo ra các tham chiếu nhân vật trong Seedream, đăng ký chúng như tài sản người ảo, và sử dụng Seedance để tạo quảng cáo sản phẩm AI.
Hướng dẫn này dựa trên một chiến dịch xịt lô hội thực tế và bao gồm cấu trúc dự án, cấu hình, lệnh và hướng dẫn video hoàn chỉnh. Đầu ra mục tiêu là một quảng cáo dọc 20 giây, 720p, tỷ lệ 9:16 với một nhân vật và bối cảnh do AI tạo ra.
Claude Code và AIHubMix cung cấp toàn bộ quy trình làm việc. Claude Code đọc tóm tắt dự án, sửa đổi các lời nhắc và tổ chức thực hiện. AIHubMix cung cấp một điểm truy cập mô hình duy nhất để việc tạo hình ảnh và video có thể hoạt động trong cùng một dự án.
Các ID mô hình, tham số và xử lý lỗi đến từ một bản chụp dự án có ngày 16 tháng 9 năm 2026. Kiểm tra API hiện tại trước khi tái sử dụng chúng. Các lệnh sử dụng flow.py được bao gồm và phải được chạy từ thư mục gốc của dự án.Tải Xuống Bộ Khởi Đầu Hoàn Chỉnh
Tải xuống mã, lời nhắc, cấu hình và hình ảnh mẫu
Sau khi giải nén, hãy vào thư mục seedance-starter. Gói này bao gồm flow.py, hai bản chụp sơ đồ, năm tệp lời nhắc, hình ảnh sản phẩm và ba hình ảnh tham khảo. Tập lệnh Python chỉ sử dụng thư viện tiêu chuẩn.
- Bắt đầu với giai đoạn video: sử dụng ba tham chiếu được bao gồm, cấu hình khóa của bạn và bắt đầu với Bước 4.
- Bắt đầu với sản phẩm của riêng bạn: thay thế hình ảnh sản phẩm và chi tiết lời nhắc, di chuyển các hình ảnh tham khảo được bao gồm ra khỏi
assets/, và bắt đầu với Bước 3.
Sao chép .env.example thành .env và thêm khóa API của riêng bạn. Tài khoản của bạn cần quyền truy cập vào các mô hình liên quan, bất kỳ quyền truy cập tác vụ không đồng bộ nào cần thiết và đủ hạn mức. Việc tạo API sẽ phát sinh phí sử dụng.
1. Chuẩn Bị Hình Ảnh Sản Phẩm và Dự Án
Sản phẩm ví dụ là Xịt Lô Hội Nature Republic. Khi điều chỉnh quy trình làm việc, hãy cập nhật hình ảnh, mô tả sản phẩm và hành động sử dụng cùng nhau.
| Tệp | Mục đích |
|---|---|
assets/product.png | Hình ảnh sản phẩm gốc |
prompts/prompt-a.txt | Lời nhắc chân dung nhân vật chính |
prompts/prompt-b.txt | Lời nhắc nhân vật cầm sản phẩm |
prompts/prompt-c.txt | Lời nhắc sử dụng sản phẩm |
prompts/prompt-video.txt | Thời gian video, yêu cầu camera và âm thanh |
prompts.json | Kích thước, thời gian, phụ thuộc tham chiếu và đường dẫn lời nhắc |
flow.py | Yêu cầu API, đăng ký tài sản, polling và tải xuống |
seedream.schema.json, seedance.schema.json | Bản chụp sơ đồ API đã được lưu vào bộ nhớ cache |
Claude Code giúp đọc tóm tắt dự án và sửa đổi cấu hình cũng như các lời nhắc. flow.py gửi các yêu cầu thực tế thông qua AIHubMix.
Tại Sao AIHubMix Phù Hợp Với Quy Trình Làm Việc Này
Một quy trình quảng cáo sản phẩm AI thường cần hơn một mô hình. Một mô hình hình ảnh tạo ra nhân vật và tham chiếu sản phẩm; một mô hình video tạo ra chuyển động và hành vi camera. AIHubMix bao phủ hầu hết các mô hình chính, vì vậy bạn có thể chọn mô hình theo nhiệm vụ thông qua một dịch vụ API thay vì duy trì các tài khoản riêng biệt, xác thực và điểm truy cập yêu cầu cho mỗi nhà cung cấp.
AIHubMix cũng kết nối với nhiều nhà cung cấp và tự động chọn một tuyến đường có độ trễ thấp có sẵn. Điều này có thể giảm thiểu ảnh hưởng của sự không ổn định của một nhà cung cấp đơn lẻ đối với một quy trình làm việc phải hoàn thành việc tạo hình ảnh, xử lý tài sản và tạo video theo thứ tự. Tính khả dụng của mô hình, định tuyến và thời gian phản hồi vẫn phụ thuộc vào điều kiện dịch vụ hiện tại.
Tạo .env tại thư mục gốc của dự án, hoặc cung cấp cùng một biến trong môi trường của bạn:
AIHUBMIX_API_KEY=replace_with_your_api_key
Dự án không bao gồm .env thông qua .gitignore. Chia sẻ chỉ tên biến và ví dụ, không bao giờ là khóa thực tế.

Tất cả quy trình làm việc bắt đầu với một hình ảnh sản phẩm rõ ràng.
2. Đặt Mục Tiêu Đầu Ra và Tách Tham Số Hình Ảnh Ra Khỏi Video
Phần liên quan của prompts.json trông như thế này. Giữ nguyên mảng stills hiện có và các trường khác khi chỉnh sửa tệp thực tế.
{
"size": "1080x1920",
"aspect_ratio": "9:16",
"duration": 20,
"resolution": "720p",
"generate_audio": true,
"video_prompt_file": "prompts/prompt-video.txt"
}
size thuộc về việc tạo hình ảnh. aspect_ratio, duration, resolution, và generate_audio thuộc về việc tạo video. Tập lệnh xây dựng các yêu cầu riêng biệt thay vì gửi toàn bộ đối tượng cấu hình đến cả hai điểm cuối.
Dự án sử dụng các ID mô hình này:
- Seedream:
doubao-seedream-5-0-pro-260628 - Seedance:
doubao-seedance-2-5-260628
Các bản chụp sơ đồ đi kèm cho thấy rằng điểm cuối hình ảnh chấp nhận size, trong khi điểm cuối video chấp nhận aspect_ratio. Việc trộn chúng sẽ gây ra sự từ chối. flow.py kiểm tra các thuộc tính sơ đồ đã được lưu vào bộ nhớ cache trước khi gửi yêu cầu, nhưng điều này không phải là xác thực tham số hoàn chỉnh.
3. Tạo Ba Tham Chiếu Nhân Vật Theo Thứ Tự
Mỗi hình ảnh có một vai trò khác nhau, và các hình ảnh sau phụ thuộc vào các hình ảnh trước:
| Tham Chiếu | Nội Dung | Đầu Vào |
|---|---|---|
| A: Chân dung nhân vật | Thiết lập khuôn mặt, tóc, trang phục, phòng và ánh sáng | Chỉ lời nhắc văn bản trong ví dụ này |
| B: Cầm sản phẩm | Cùng một người cầm chai với nhãn hướng về phía camera | Hình ảnh sản phẩm + A |
| C: Sử dụng sản phẩm | Cùng một người nhấn vào vòi xịt | Hình ảnh sản phẩm + B |
Các lời nhắc lặp lại chi tiết nhân vật và mô tả hình dạng, màu sắc, bố cục nhãn và cách sử dụng tự nhiên của sản phẩm.
Chạy:
python3 flow.py stills
Kết quả được lưu dưới dạng assets/frame-01.jpg, frame-02.jpg, và frame-03.jpg. Kiểm tra tính nhất quán của nhân vật, độ trung thực của bao bì và tính thực tế của hành động sử dụng.
Tập lệnh sẽ bỏ qua các tệp hiện có. Nếu bạn thay đổi một lời nhắc, hãy sao lưu và di chuyển đầu ra tương ứng trước khi chạy lại. Thay đổi A cũng có thể yêu cầu tái tạo B và C.
Các tham chiếu thiết lập danh tính nhân vật, cách trình bày sản phẩm và cách sử dụng sản phẩm.
4. Lưu Trữ Hình Ảnh và Đăng Ký Tài Sản Chân Dung Ảo
Bộ khởi đầu không chứa ID tài sản từ tài khoản của tác giả. Đăng ký các tham chiếu trong tài khoản của riêng bạn.
Dự án này sử dụng URL hình ảnh công khai để đăng ký. Quy trình nguồn đã sử dụng các URL raw của GitHub được gán cho một commit SHA, nhưng bất kỳ dịch vụ lưu trữ nào trả về hình ảnh trực tiếp mà không cần xác thực đều có thể hoạt động.
Một URL GitHub /blob/ trả về một trang HTML và không thể được sử dụng như một URL hình ảnh.
Thay thế máy chủ tạm thời này bằng vị trí thực tế của các tệp đã tải lên của bạn:
IMAGE_BASE='https://your-public-image-host.example/campaign'
python3 flow.py check "$IMAGE_BASE/frame-01.jpg" "$IMAGE_BASE/frame-02.jpg" "$IMAGE_BASE/frame-03.jpg"
python3 flow.py assets "$IMAGE_BASE/frame-01.jpg" "$IMAGE_BASE/frame-02.jpg" "$IMAGE_BASE/frame-03.jpg"
check xác minh HTTP 200 và một Content-Type hình ảnh. assets tạo hoặc tái sử dụng một nhóm tài sản virtual_portrait, đăng ký từng hình ảnh, chờ cho đến khi nó trở thành active, và ghi các ID tài sản vào state.json.
Bước này xuất phát từ một thất bại thực tế trong dự án: việc truyền các URL nhân vật photorealistic trực tiếp đến điểm cuối video đã trả về doubao_real_person_required. Người trong chiến dịch này được tạo ra bởi AI, vì vậy virtual_portrait là phân loại đúng. Một bức ảnh của người thật phải tuân theo quy trình xác minh tương ứng và không được gán nhãn là ảo.
Tất cả tài sản được sử dụng trong một yêu cầu video nên thuộc về cùng một nhóm.

Các tham chiếu đã được tạo ra và cả ba tài sản đều hoạt động; nhiệm vụ video vẫn đang chạy khi ảnh chụp màn hình này được ghi lại.
5. Viết Lời Nhắc Video Như Một Thời Gian Với Giới Hạn Camera
Lời nhắc cuối cùng của dự án chia một cảnh quay liên tục 20 giây thành bốn giai đoạn:
| Thời Gian | Hành Động Nhân Vật | Vị Trí Sản Phẩm |
|---|---|---|
| 0–5 giây | Nhìn vào camera và trình bày chai | Bên cạnh mặt, nhãn hướng về camera |
| 5–10 giây | Nâng chai lên và nhấn vào vòi | Vẫn trong khung hình |
| 10–15 giây | Nhắm mắt và cảm nhận sương mù lắng xuống | Phần dưới cùng của khung hình |
| 15–20 giây | Mở mắt và trình bày sản phẩm một lần nữa | Quay lại bên cạnh mặt, nhãn hướng về camera |
Một kết quả trước đó đã đẩy camera quá gần và làm mất sản phẩm. Vì vậy, lời nhắc cuối cùng giới hạn chuyển động đến một cảnh quay gần giữa, yêu cầu sản phẩm phải luôn nhìn thấy và yêu cầu nhãn phải rõ ràng trong ba giây đầu tiên và ba giây cuối cùng.
Dưới đây là prompts/prompt-video.txt hoàn chỉnh. Đối với một sản phẩm khác, hãy cập nhật thương hiệu, mô tả bao bì và hành động sử dụng. Những hướng dẫn này là mục tiêu tạo ra và vẫn yêu cầu xem xét đầu ra.
Một cảnh quay quảng cáo làm đẹp dọc liên tục 20 giây, không cắt, trong một góc trang điểm tối giản có ánh sáng mặt trời.
0-5s: cùng một người phụ nữ Đông Á 24 tuổi trong một chiếc áo sơ mi vải lanh xanh nhạt quá khổ trên một chiếc áo tank top trắng đứng ở bàn trang điểm cầm chai xịt lô hội Nature Republic 92% Soothing Gel Mist màu xanh nhạt trong suốt bên má, nhãn hướng về camera và hoàn toàn có thể đọc được. Cô ấy nhìn vào camera với một nụ cười ấm áp, dễ chịu và xoay chai một chút để nhãn bắt được ánh sáng buổi sáng.
5-10s: cô ấy nâng chai lên một chút trên mức mắt và nhấn vào vòi xịt mịn. Một chùm sương lô hội nhẹ phun qua mặt cô và bắt ánh sáng như một ánh sáng lấp lánh nhẹ của các giọt siêu nhỏ.
10-15s: mắt cô nhắm lại và cằm cô nâng lên trong một nụ cười hài lòng nhỏ khi sương mù lắng xuống, những giọt nhỏ resting trên gò má và trán của cô. Chai vẫn nhìn thấy trong phần dưới cùng của khung hình trong suốt khoảnh khắc này.
15-20s: cô mở mắt, đưa chai trở lại bên má với nhãn vuông góc với camera, và giữ một cái nhìn bình tĩnh cuối cùng vào ống kính.
Camera: một cú đẩy chậm, mượt mà từ khung hình ngực lên đến khung hình gần giữa CHỈ. Không được đẩy qua khung hình gần giữa. Sản phẩm phải luôn nằm trong khung hình trong suốt cảnh quay, và nhãn phải rõ ràng trong cả ba giây đầu tiên và ba giây cuối cùng.
Hình ảnh: ánh sáng mặt trời mềm mại từ bên trái camera, kết cấu da photorealistic với độ ẩm thực sự trên da, sương mù được thể hiện như một phun thực sự được chụp ảnh thay vì các hạt kỹ thuật số, quảng cáo K-beauty cao cấp. Giữ nguyên bao bì sản phẩm, màu sắc, vật liệu, bố cục nhãn và văn bản nhãn chính xác như trong các hình ảnh tham khảo; không được thiết kế lại hoặc thay đổi chữ của sản phẩm. Không có lớp văn bản, không có chú thích, không có hình mờ.
Âm thanh: một căn phòng sáng yên tĩnh, một tiếng xịt ngắn nhẹ, một hơi thở nhẹ nhàng. Không có nhạc, không có lồng ghép giọng nói.
Việc tạo âm thanh được kích hoạt, nhưng lời nhắc chỉ yêu cầu âm thanh phòng, một âm thanh xịt và một hơi thở nhẹ—không có nhạc hoặc lồng ghép giọng nói.
6. Tạo và Lưu Video
Sau khi đăng ký tài sản, hãy gửi các tham chiếu asset://. Lệnh này đọc các ID đã lưu và truyền từng ID như một đối số riêng biệt:
python3 - <<'PYCODE'
import json
import subprocess
import sys
from pathlib import Path
state = json.loads(Path("state.json").read_text())
refs = ["asset://" + asset_id for asset_id in state["asset_ids"]]
subprocess.run([sys.executable, "flow.py", "video", *refs], check=True)
PYCODE
Sử dụng danh sách đối số cũng tránh được một vấn đề zsh từ dự án nguồn, nơi nhiều ID được lưu trữ trong một chuỗi đơn giản có thể đến với tập lệnh như một đối số không hợp lệ.
Tập lệnh lưu ID nhiệm vụ video, polling cho đến khi completed, và tải xuống đầu ra vào out/video.mp4. Một lần tải xuống khác có thể ghi đè lên đường dẫn đó, vì vậy hãy sao lưu các phiên bản mà bạn muốn so sánh.
Tiếp tục một nhiệm vụ hiện có hoặc tải lại kết quả của nó với:
python3 flow.py status
Nếu phản hồi tạo ra bị mất, hãy liệt kê các nhiệm vụ gần đây và tiếp tục ID liên quan:
python3 flow.py tasks
python3 flow.py status VIDEO_TASK_ID
Tìm kiếm một nhiệm vụ hiện có trước khi tạo một nhiệm vụ khác giúp ngăn ngừa việc tạo ra trùng lặp một cách tình cờ.
7. Xem Xét Đầu Ra và Lặp Lại
Dự án nguồn giữ video-v1-10s.mp4 và video.mp4 cuối cùng. Phiên bản đầu tiên chỉ kéo dài 10 giây và không cho thấy đủ việc sử dụng sản phẩm, vì vậy quy trình làm việc đã trải qua một vòng lặp lời nhắc thứ hai.
Xem xét mọi kết quả theo danh sách kiểm tra này:
- [ ] Thời gian, độ phân giải và tỷ lệ khung hình khớp với mục tiêu.
- [ ] Khuôn mặt, trang phục và bối cảnh của nhân vật vẫn nhất quán.
- [ ] Sản phẩm vẫn nhìn thấy và nhãn có thể đọc được ở đầu và cuối.
- [ ] Các hành động xử lý và xịt khớp với việc sử dụng thực tế của sản phẩm.
- [ ] Hình dạng chai, bao bì và văn bản không thay đổi đáng kể.
- [ ] Camera không di chuyển quá gần, và âm thanh khớp với yêu cầu.
Nếu thời gian không đúng, hãy kiểm tra cả cấu hình và yêu cầu thực tế. Nếu sản phẩm rời khỏi khung hình, hãy củng cố giới hạn camera. Nếu hành động sử dụng quá ngắn, hãy phân bổ thời gian và hành vi rõ ràng hơn. Chỉnh sửa chỉ prompts/prompt-video.txt không yêu cầu tái tạo hình ảnh tham khảo; chỉ tái tạo và đăng ký chúng khi các tham chiếu hình ảnh cần thay đổi.
Câu Hỏi Thường Gặp
Tại sao một tên mô hình trông đúng lại trả về 404?
Tên rút gọn của Seedream đã trả về model_not_found trong dự án nguồn. Sử dụng ID mô hình API đầy đủ được chấp nhận bởi điểm cuối hiện tại thay vì giả định rằng tên hiển thị tiếp thị cũng là định danh API.
Tại sao tôi có thể mở một hình ảnh trong trình duyệt nhưng vẫn không thể đăng ký nó?
Xác nhận rằng URL trả về chính hình ảnh chứ không phải HTML, trang chia sẻ hoặc trang đăng nhập. Sử dụng python3 flow.py check URL... trước khi đăng ký.
Tại sao việc thay đổi một lời nhắc không thay đổi hình ảnh tham khảo?
stills bỏ qua các tệp hiện có. Sao lưu và di chuyển bất kỳ hình ảnh nào cần tái tạo, sau đó kiểm tra xem các tham chiếu phía dưới có cần tái tạo hay không.
HTTP 200 có nghĩa là video đã hoàn thành không?
Không. Tập lệnh phân nhánh theo status của nhiệm vụ và chỉ tải xuống sau khi nhiệm vụ đạt completed.
Bắt Đầu Phiên Bản Đầu Tiên Của Bạn
Chuẩn bị một hình ảnh sản phẩm, cấu hình quyền truy cập AIHubMix và chọn các mô hình hình ảnh và video. Sau đó, để Claude Code điều chỉnh mô tả sản phẩm và các lời nhắc. Tạo ba tham chiếu, xem xét và đăng ký chúng, tạo video và sử dụng danh sách kiểm tra để quyết định vòng lặp tiếp theo.
Khi một dự án trong tương lai cần một mô hình khác, hãy giữ nguyên cấu trúc tệp và quy trình làm việc, sau đó cập nhật lựa chọn mô hình AIHubMix và các tham số cụ thể của mô hình. Đó là giá trị thực tiễn của một dịch vụ API thống nhất cho một nhóm nội dung sử dụng nhiều mô hình AI: các mô hình có thể thay đổi theo nhiệm vụ trong khi quy trình làm việc vẫn có thể tái sử dụng.



