Cách làm video UGC giới thiệu sản phẩm bằng Google Flow API
8 phút đọc • 4 tháng 9 năm 2026 (6 tháng 11 năm 2026)
useapi.net là API của bên thứ ba, không liên kết với Google và không được Google bảo trợ.
Mục lục
- Giới thiệu
- Giá
- Về các id trong request
- Bước 1: một bảng cho mỗi sản phẩm
- Bước 2: người dẫn
- Bước 3: ảnh tĩnh, cả cảnh trong một khung hình
- Bước 4: mỗi sản phẩm một clip, tất cả từ ảnh tĩnh
- Bước 5: nâng lên 1080p
- Bước 6: ghép lại
- Những điều cần biết
- Chi phí thực tế
- Tự chạy thử
- Câu hỏi thường gặp
- Kết luận
Giới thiệu
Một video UGC giới thiệu sản phẩm có thể làm từ đầu đến cuối qua Google Flow API của useapi.net với 45 credit Flow, không xử lý gì trên máy của bạn. Một người dẫn hư cấu giới thiệu ba sản phẩm hư cấu trước ống kính.
UGC là phong cách nội dung do người dùng tạo, tràn ngập bảng tin mạng xã hội và thư viện quảng cáo: một người nói chuyện với camera điện thoại, để bán sản phẩm, để giải trí, hoặc chỉ cho vui.
Đây là hướng dẫn đầy đủ từ A đến Z để làm loại video đó ở mức chuyên nghiệp: sản phẩm, người dẫn, lời thoại của cô ấy và bản dựng cuối cùng đều do bạn kiểm soát, qua sáu bước gọi API mà bạn có thể sao chép nguyên văn. Thích một form không cần code? Workflow quảng cáo UGC trên n8n (tiếng Anh) làm loại quảng cáo này với một trang chọn hoặc tạo lại ở mỗi bước.
Đây là kết quả: ba clip Omni 1.1 Flash dài 10 giây được nâng lên 1080p, mọi khung hình và mọi âm thanh đều tạo qua Google Flow API. Cùng lệnh nâng độ phân giải đó cũng lên được 4K khi bạn cần chất lượng chuyên nghiệp, xem Bước 5:
Tổng cộng 45 credit
Nếu bạn thích xem hơn đọc, đây là toàn bộ hướng dẫn trong 75 giây (tiếng Anh):
xem trên YouTube · lời dẫn và nhạc từ MiniMax API
Giá
Video Omni 1.1 Flash cần một gói Google AI trả phí (Plus, Pro hoặc Ultra), và useapi.net không tính phí theo từng video. Chi phí của video này theo từng bước nằm ở Chi phí thực tế, còn giá mỗi video trên từng gói so với API chính thức nằm ở bảng giá Google Flow.
Về các id trong request
Mỗi request bên dưới tham chiếu kết quả trước đó bằng mediaGenerationId. Các id này dài nên ở đây được rút gọn thành user:1234-email:…-image:b0bdf3e8-…, và một dòng dưới mỗi request cho biết mỗi id là kết quả nào trước đó. Id ảnh lấy từ POST /images ở media[0].image.generatedImage.mediaGenerationId, id nhân vật ở trường character của POST /characters, id video ở media[0].mediaGenerationId của job đã hoàn tất, còn id của clip đã nâng độ phân giải là id gốc thêm _upsampled ở cuối.
Bước 1: một bảng cho mỗi sản phẩm
Bảng sản phẩm là một ảnh duy nhất cho thấy món đồ từ bốn phía, để model nắm được toàn bộ vật thể chứ không phải một góc may mắn. Dùng POST /images, khung vuông, mỗi sản phẩm một request. Prompt mô tả rõ góc máy cho từng ô, vì nếu chỉ ghi “mặt trước, mặt bên, mặt sau” thì chiếc cốc ra hai ô giống hệt nhau và bàn phím không có mặt bên thật. Vật dẹt như bàn phím cần một ô nhìn từ trên xuống, vật hình khối thì không. Không có tay, không có chữ, không có logo, để không có gì ngoài sản phẩm lọt vào clip.
Cách này cũng dùng được cho sản phẩm thật. Tải ảnh sản phẩm lên bằng POST /assets rồi truyền các id làm reference_1 đến reference_4 trong request này, model sẽ biến chúng thành một bảng bốn ô gọn gàng. Mẹo này cũng làm được bảng cho bao bì, logo hoặc cả một bộ sản phẩm.
curl — POST /images (chiếc cốc)
curl --location 'https://api.useapi.net/v1/google-flow/images' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'aspectRatio="1:1"' \
--form 'count="2"' \
--form 'prompt="Orthographic product-catalog sheet on a plain white background: a matte white ceramic mug with a straight cylindrical body and a clearly visible glowing amber light band around its base, about a finger wide, like a smart heated mug. The sheet is divided into four equal panels by thin grey lines in a 2 by 2 grid. Every panel shows the same single item at exactly the same size, position and lighting, camera at the item'\''s eye level unless stated: top-left: side profile, the handle pointing left and seen edge-on; top-right: view from the handle side, the handle pointing straight at the camera; bottom-left: view from the opposite side, the handle hidden behind the body; bottom-right: three-quarter view from slightly above, the handle to the right. Soft even studio light, photoreal. Object only: no hands, no people, no props, no text anywhere, no captions, no labels, no logo, no packaging."'
curl — POST /images (robot để bàn)
curl --location 'https://api.useapi.net/v1/google-flow/images' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'aspectRatio="1:1"' \
--form 'count="2"' \
--form 'prompt="Orthographic product-catalog sheet on a plain white background: a small rounded pastel mint desk robot, a palm-sized cube with a glossy black screen face showing a happy smiling expression, two round white eyes and a curved white smile, a little rounded antenna nub on top, a small round white dial on its right side, and a speaker grille on its back. The sheet is divided into four equal panels by thin grey lines in a 2 by 2 grid. Every panel shows the same single item at exactly the same size, position and lighting, camera at the item'\''s eye level unless stated: top-left: front view showing the smiling face; top-right: right side view showing the round dial and the antenna nub; bottom-left: back view showing the speaker grille; bottom-right: three-quarter view showing the smiling face and the dial. Soft even studio light, photoreal. Object only: no hands, no people, no props, no text anywhere, no captions, no labels, no logo, no packaging."'
curl — POST /images (bàn phím)
curl --location 'https://api.useapi.net/v1/google-flow/images' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'aspectRatio="1:1"' \
--form 'count="4"' \
--form 'prompt="Orthographic product-catalog sheet on a plain white background: a real mechanical three-key macro pad, the kind sold for shortcuts: a slim, low-profile white aluminum case, three mechanical key switches in one row with sculpted dished keycaps and a small gap between them, coral on the left, lemon yellow in the middle, sky blue on the right, a USB-C port on the back edge. Exactly three keys in one row, never more. The sheet is divided into four equal panels by thin grey lines in a 2 by 2 grid. Every panel shows the same single item at exactly the same size, position and lighting, camera at the item'\''s eye level unless stated: top-left: top-down view straight from above, the three keys in a row left to right; top-right: front view at eye level; bottom-left: left side view at eye level, the slim case and the keycap profile seen edge-on; bottom-right: three-quarter view from above. Soft even studio light, photoreal. Object only: no hands, no people, no props, no text anywhere, no captions, no labels, no logo, no packaging."'
Tạo ảnh không tốn gì, nên hãy đặt count từ 2 đến 4 và giữ lại bảng đẹp nhất. Bàn phím mất vài lượt thử cho đến khi prompt mô tả đúng một macro pad thật có ô nhìn từ trên xuống, còn khối lập phương thì đạt ngay lần đầu.
Bước 2: người dẫn
Ba lệnh gọi. Một ảnh chân dung chính diện từ mô tả. Một ảnh chân dung góc ba phần tư tạo từ ảnh đầu tiên bằng reference_1, để hai ảnh khớp khuôn mặt. Rồi POST /characters với cả hai ảnh, trả về một tham chiếu nhân vật. Từ đó cô ấy là @character_1 trong mọi prompt, và Google giữ cố định cô ấy bằng hệ thống thực thể của riêng mình thay vì bằng một đoạn mô tả.
curl — POST /images (chân dung chính diện)
curl --location 'https://api.useapi.net/v1/google-flow/images' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'aspectRatio="3:4"' \
--form 'count="2"' \
--form 'prompt="Character reference portrait, photoreal, natural skin, no heavy retouching: a strikingly attractive young woman in her early twenties with a sleek platinum-blonde blunt bob and straight bangs, dark defined eyebrows, icy grey eyes, a tiny silver nose stud, a playful smirk with a hint of teeth, wearing a fitted black turtleneck and a thin gold chain necklace. Head and shoulders, facing the camera straight on, plain light-grey studio background, soft even light. No text, no logo, no captions."'
Chúng tôi tạo vài phong cách và chọn phong cách này. Nếu sau đó cần đổi một chi tiết, chẳng hạn sợi dây chuyền, hãy tạo lại cô ấy với chính ảnh chân dung của cô ấy làm reference_1 và một prompt chỉ nêu thay đổi, khuôn mặt sẽ được giữ nguyên.
curl — POST /images (chân dung góc ba phần tư)
curl --location 'https://api.useapi.net/v1/google-flow/images' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'aspectRatio="3:4"' \
--form 'count="1"' \
--form 'reference_1="user:1234-email:…-image:a236ef66-…"' \
--form 'prompt="@reference_1 is the same woman: identical face, hair, freckles, sweater and earrings. Three-quarter view from the waist up, relaxed natural smile, plain light-grey studio background, soft even light. Photoreal, no text."'
reference_1 là ảnh chân dung chính diện, a236ef66. Prompt này vẫn nhắc đến tàn nhang, áo len và hoa tai còn sót lại từ một người dẫn trước đó, và điều đó không gây hại gì: khi request có ảnh tham chiếu, ảnh tham chiếu thắng chữ.
curl — POST /characters
curl --location 'https://api.useapi.net/v1/google-flow/characters' \
--header 'Authorization: Bearer user:1234-…' \
--form 'displayName="Mia"' \
--form 'personalityNotes="Quick, bright, deadpan delivery with a smile in her voice. Talks to the camera like a friend showing off things she bought at 2am."' \
--form 'imageReference_1="user:1234-email:…-image:a236ef66-…"' \
--form 'imageReference_2="user:1234-email:…-image:d891301c-…"' \
--form 'voice="Leda"'
imageReference_1 là ảnh chính diện a236ef66, imageReference_2 là ảnh ba phần tư d891301c. Trường character trong response là id của cô ấy, bên dưới là 53ca1036. voice là một trong các giọng có sẵn của hệ thống Google và đi kèm nhân vật, nhưng không tới được chế độ clip dùng ở Bước 4, xem Những điều cần biết.
Bước 3: ảnh tĩnh, cả cảnh trong một khung hình
Một request ghép tất cả lại. Nhân vật vào dưới dạng character_1, ba bảng sản phẩm là reference_1 đến reference_3, và prompt đặt chúng theo tag, từ trái sang phải trên bàn trước mặt cô ấy. Khung hình này trở thành cả hai đầu của mọi clip, nên đây là nơi duy nhất các tag phát huy tác dụng.
curl — POST /images
curl --location 'https://api.useapi.net/v1/google-flow/images' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'aspectRatio="9:16"' \
--form 'count="2"' \
--form 'character_1="user:1234-email:…-character:53ca1036-…"' \
--form 'reference_1="user:1234-email:…-image:b0bdf3e8-…"' \
--form 'reference_2="user:1234-email:…-image:7aaed056-…"' \
--form 'reference_3="user:1234-email:…-image:4f861c23-…"' \
--form 'prompt="Full-frame vertical phone video look, no phone, no bezel. @character_1 sits at a light wooden table in a bright minimal creator studio, facing the camera, waist-up and centered, a plain warm-grey backdrop behind her, soft key light from the left with a gentle catchlight in her eyes. Laid out on the table in front of her, left to right, each fully visible and resting flat on the table: the mug from @reference_1, the desk robot from @reference_2, the keyboard from @reference_3. Her hands rest on the table, relaxed closed-mouth smile, eyes on the lens. Photoreal, no text, no captions."'
character_1 là nhân vật ở Bước 2, 53ca1036. reference_1 đến reference_3 là ba bảng sản phẩm ở Bước 1: chiếc cốc b0bdf3e8, robot để bàn 7aaed056, bàn phím 4f861c23.
Chiếc cốc có vòng sáng, robot có khuôn mặt và ăng-ten, bàn phím có ba màu và cổng cắm, và cô ấy đúng là người phụ nữ trong các ảnh chân dung.
Bước 4: mỗi sản phẩm một clip, tất cả từ ảnh tĩnh
Dùng chế độ khung đầu + khung cuối của Omni với ảnh tĩnh ở cả hai vị trí, mỗi sản phẩm một request, mỗi lần cùng một POST /videos. Chế độ này chỉ nhận hai ảnh, không nhận bảng sản phẩm, nhân vật hay giọng tham chiếu. Không sao cả, vì ảnh tĩnh đã chứa tất cả. Mọi món đồ cô ấy cầm lên đều khớp với bảng của nó chỉ nhờ ảnh tĩnh.
Prompt làm ba việc. Nó ghim cả hai đầu vào khung hình, với một nhịp lặng ở mỗi bên. Nó cho cô ấy lời thoại và giọng nói. Và nó canh thời gian cho động tác: cô ấy bắt đầu nói khi nhấc món đồ lên, món đồ về lại chỗ cũ trước mốc giây thứ tám, và hai giây cuối là một nhịp đứng yên, im lặng. Thiếu phần cuối này, cô ấy bị chậm và cánh tay giật vào khung cuối.
curl — POST /videos (chiếc cốc)
curl --location 'https://api.useapi.net/v1/google-flow/videos' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'model="omni-flash"' \
--form 'aspectRatio="portrait"' \
--form 'duration="10"' \
--form 'resolution="720p"' \
--form 'startImage="user:1234-email:…-image:034cddc8-…"' \
--form 'endImage="user:1234-email:…-image:034cddc8-…"' \
--form 'prompt="She begins and ends exactly on this frame: hands resting on the table, the three items laid out in front of her, a small closed-mouth smile, looking into the lens, with a short quiet beat before she moves and another after she settles back. Timing matters: after a short quiet beat she picks up the mug on the left with both hands and starts talking as she lifts it, holding it up to the camera and talking straight to the lens, quick and bright with a deadpan edge and a smile in her voice, keeping both hands on the mug while she speaks. She says: \"Three gadgets smarter than me. Low bar. One: this mug texts me when my coffee'\''s cold. Better follow-up than my ex.\" Right after the last word she gives one short laugh to herself, still holding the mug. By the eight-second mark the mug is back down gently in exactly the same spot and both hands are resting on the table again, brought back in one calm unhurried movement. For the final two seconds she holds completely still, hands resting on the table, looking into the lens with a small closed-mouth smile. Natural room tone, no music, no captions, no text on screen."'
startImage và endImage đều là ảnh tĩnh ở Bước 3, 034cddc8. Cùng hai id đó dùng cho cả ba clip.
55808825, bản đã nâng lên 1080p ở Bước 515 credit
curl — POST /videos (robot để bàn)
curl --location 'https://api.useapi.net/v1/google-flow/videos' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'model="omni-flash"' \
--form 'aspectRatio="portrait"' \
--form 'duration="10"' \
--form 'resolution="720p"' \
--form 'startImage="user:1234-email:…-image:034cddc8-…"' \
--form 'endImage="user:1234-email:…-image:034cddc8-…"' \
--form 'prompt="She begins and ends exactly on this frame: hands resting on the table, the three items laid out in front of her, a small closed-mouth smile, looking into the lens, with a short quiet beat before she moves and another after she settles back. Timing matters: after a short quiet beat she picks up the desk robot in the middle with both hands and starts talking as she lifts it, holding it up to the camera with its smiling face toward the lens and turning it once and talking straight to the lens, quick and bright with a deadpan edge and a smile in her voice, keeping both hands on it while she speaks. The other two items stay on the table exactly where they are. She says: \"Two: a desk robot that reacts to my day. It has a face. It has never once looked impressed.\" Right after the last word she raises one eyebrow at the camera, a quick expressive beat, still holding the desk robot. By the eight-second mark the desk robot is back down gently in exactly the same spot and both hands are resting on the table again, brought back in one calm unhurried movement. For the final two seconds she is silent and holds completely still, hands resting on the table, looking into the lens with a small closed-mouth smile. Natural room tone, no music, no captions, no text on screen."'
c4d0e6b1, bản đã nâng lên 1080p ở Bước 515 credit
curl — POST /videos (bàn phím)
curl --location 'https://api.useapi.net/v1/google-flow/videos' \
--header 'Authorization: Bearer user:1234-…' \
--form 'email="[email protected]"' \
--form 'model="omni-flash"' \
--form 'aspectRatio="portrait"' \
--form 'duration="10"' \
--form 'resolution="720p"' \
--form 'startImage="user:1234-email:…-image:034cddc8-…"' \
--form 'endImage="user:1234-email:…-image:034cddc8-…"' \
--form 'prompt="She begins and ends exactly on this frame: hands resting on the table, the three items laid out in front of her, a small closed-mouth smile, looking into the lens, with a short quiet beat before she moves and another after she settles back. Timing matters: after a short quiet beat she picks up the keyboard on the right with both hands and starts talking as she lifts it, holding it up to the camera with the three keys facing the lens and talking straight to the lens, quick and bright with a deadpan edge and a smile in her voice, keeping both hands on it while she speaks. The other two items stay on the table exactly where they are. She says: \"Three: a keyboard with three keys. Copy, paste, undo. That'\''s my whole career. Oh, the mug'\''s texting. Bye!\" Right after the last word she raises one eyebrow at the camera, a quick expressive beat, still holding the keyboard. By the eight-second mark the keyboard is back down gently in exactly the same spot and both hands are resting on the table again, brought back in one calm unhurried movement. For the final two seconds she is silent and holds completely still, hands resting on the table, looking into the lens with a small closed-mouth smile. Natural room tone, no music, no captions, no text on screen."'
3cc8ea2f, bản đã nâng lên 1080p ở Bước 515 credit
Cùng một người phụ nữ, cùng chiếc bàn, cùng ánh sáng, và clip nào cũng mở đầu và kết thúc ở ảnh tĩnh, nên clip nào cũng nối được sau clip nào. Mỗi lời thoại khoảng 20 từ tiếng Anh, vừa đủ cho 10 giây ở nhịp này mà vẫn còn chỗ cho nhịp nghỉ ở cuối.
Bước 5: nâng lên 1080p
Omni 1.1 Flash xuất ở 720p. POST /videos/upscale nâng clip lên 1080p miễn phí trên mọi gói trả phí, trong khoảng 40 giây, và trả về ngay trong cùng lệnh gọi id và URL của clip đã nâng. Mỗi clip một request, không cần email, tài khoản được xác định từ id.
curl — POST /videos/upscale (chiếc cốc, rồi làm tương tự với hai clip còn lại)
curl --location 'https://api.useapi.net/v1/google-flow/videos/upscale' \
--header 'Authorization: Bearer user:1234-…' \
--form 'mediaGenerationId="user:1234-email:…-video:55808825-…"' \
--form 'resolution="1080p"'
mediaGenerationId là clip chiếc cốc ở Bước 4, 55808825. Cùng lệnh gọi đó với c4d0e6b1 và 3cc8ea2f sẽ nâng robot và bàn phím. Mỗi response trả clip mới ở media[0].mediaGenerationId, chính là id gốc thêm _upsampled ở cuối, nên ba id đã nâng là 55808825-…_upsampled, c4d0e6b1-…_upsampled và 3cc8ea2f-…_upsampled. Các clip hiển thị ở Bước 4 là những bản đã nâng này. Cũng có 4K, giá 50 credit và chỉ có trên gói Google AI Ultra.
Bước 6: ghép lại
POST /videos/concatenate nhận ba id đã nâng theo thứ tự và trả về file đã ghép dưới dạng base64, ở độ phân giải của các clip. Phần cắt tỉa quyết định chỗ nối có giống một cảnh quay liền hay không. Mỗi clip mở đầu bằng một nhịp dừng ngắn trên ảnh tĩnh và kết thúc bằng việc trở về ảnh đó, nếu không cắt thì các nhịp này chồng lên thành một lần đứng hình ở mỗi chỗ nối. Nhưng cô ấy nói xong mỗi câu khi tay đã đặt sẵn trên bàn, nên nếu chỉ nhìn hình để cắt thì sẽ mất mấy chữ cuối. Hãy cắt sau âm thanh cuối cùng cộng thêm một nhịp, không bao giờ sớm hơn. Với các clip này, điều đó có nghĩa là giữ nguyên clip 1 vì tiếng cười kéo dài đến khung cuối, cắt hơn nửa giây ở cuối clip 2, và vài khung ở đầu clip 2 và 3.
curl — POST /videos/concatenate
curl --location 'https://api.useapi.net/v1/google-flow/videos/concatenate' \
--header 'Authorization: Bearer user:1234-…' \
--header 'Content-Type: application/json' \
--data '{
"media": [
{ "mediaGenerationId": "user:1234-email:…-video:55808825-…_upsampled" },
{ "mediaGenerationId": "user:1234-email:…-video:c4d0e6b1-…_upsampled", "trimStart": 0.458, "trimEnd": 0.6 },
{ "mediaGenerationId": "user:1234-email:…-video:3cc8ea2f-…_upsampled", "trimStart": 0.125 }
]
}'
Ba id là các clip đã nâng ở Bước 5 theo thứ tự: chiếc cốc, robot để bàn, bàn phím.
0 credit
Cô ấy nói xong một câu với tay đặt trên bàn, cảnh cắt, rồi cô ấy với lấy món đồ tiếp theo. File đã ghép được mã hóa lại với dung lượng nhỏ hơn để lưu trữ, còn ba clip giữ nguyên như API trả về.
Những điều cần biết
- Tạo mới, đừng chỉnh sửa. Bài UGC talking head (tiếng Anh) kéo dài clip bằng chỉnh sửa video sang video, và cách đó vẫn hiệu quả khi lời thoại ngắn. Ở đây thì không. Một lần chỉnh sửa giữ lời nói của clip gốc trên chính dòng thời gian của clip gốc, nên khi lời thoại 10 giây lấp đầy clip gốc, câu mới bị đan vào câu cũ thay vì thay thế nó, và các sản phẩm còn trên bàn bị biến dạng giữa các lần quay. Tạo từng clip từ ảnh tĩnh cho lời thoại trọn vẹn, sản phẩm nguyên vẹn và chỗ nối sạch hơn, lại tốn ít credit hơn.
- Ảnh tĩnh mang các tag. Chế độ khung đầu + khung cuối chỉ nhận hai ảnh. Hãy gắn tag trong ảnh tĩnh, với nhân vật và các bảng sản phẩm, và các clip sẽ kế thừa.
- Canh giờ cho động tác. Một clip 10 giây có lời thoại đầy đủ cần chỉ rõ thời điểm đặt đồ xuống theo đồng hồ, “by the eight-second mark” (trước mốc giây thứ tám), và một nhịp đứng yên, im lặng ở cuối. Để tự nhiên, model kéo dài lời thoại rồi nhảy vào khung cuối.
- Mô tả giọng nói giống hệt nhau trong mọi prompt. Không có gì mang giọng nói từ clip này sang clip khác, và nhân vật có thể lưu một giọng có sẵn nhưng không tới được chế độ này. Với cùng một mô tả, ba clip ra giọng đủ giống để trông như một cảnh quay liền.
- Bảng sản phẩm cần góc máy cho từng ô. Nêu rõ mỗi ô trong bốn ô thể hiện gì. Cho vật dẹt một ô nhìn từ trên xuống. Bỏ tay, chữ và logo ra, vì thứ gì có trên bảng cũng có thể xuất hiện trong clip.
- Cắt theo âm thanh, không theo hình. Cô ấy đứng yên trước khi nói xong. Một nhát cắt đặt ở khung đứng yên đầu tiên đã cắt luôn phần cuối câu thoại.
- Người dẫn là hư cấu. Google kiểm duyệt chặt hơn với người thật, có thể nhận diện. Hãy bắt đầu từ một nhân vật được tạo ra.
Chi phí thực tế
| Bước | Chế độ | Credit |
|---|---|---|
| Ba bảng sản phẩm, 1:1 | Nano Banana 2 Lite | 0 |
| Hai ảnh chân dung người dẫn, 3:4 | Nano Banana 2 Lite | 0 |
| Nhân vật | — | 0 |
| Ảnh tĩnh, 9:16 | Nano Banana 2 Lite, nhân vật + 3 tham chiếu | 0 |
| Clip 1, chiếc cốc, 10s | I2V, khung đầu + khung cuối | 15 |
| Clip 2, robot để bàn, 10s | I2V, khung đầu + khung cuối | 15 |
| Clip 3, bàn phím, 10s | I2V, khung đầu + khung cuối | 15 |
| Nâng độ phân giải, ba clip lên 1080p | — | 0 |
| Ghép | — | 0 |
| Tổng | 45 |
Ảnh, nhân vật, nâng lên 1080p và ghép đều miễn phí, nên cứ thoải mái làm lại bảng sản phẩm, người dẫn và ảnh tĩnh trước khi tiêu một credit nào cho video. 4K là nâng cấp duy nhất tốn phí, 50 credit mỗi clip trên Ultra.
Tự chạy thử
Mỗi bước ở trên là một lệnh gọi API, và cả sáu bước nối lại thành một script. Pipeline Node.js đầy đủ, bản Python, và file prompts.json chứa mọi prompt trên trang này nằm ở useapi/google-flow-api/ugc-product-video. Clone về, đưa sản phẩm và lời thoại của bạn vào prompts.json, và một lệnh duy nhất sẽ dựng cả video.
Script lưu checkpoint sau mỗi bước, nên một lần chạy bị gián đoạn sẽ chạy tiếp thay vì trả tiền lại cho các clip, và bạn có thể làm lại riêng một bước — một ảnh tĩnh đẹp hơn, một người dẫn khác — mà không phải tạo lại những gì trước đó.
Câu hỏi thường gặp
- Tôi có thể dùng ảnh sản phẩm của mình thay cho bảng được tạo không? Qua useapi.net thì có. Tải ảnh lên bằng POST /assets và truyền các id trả về làm
reference_1đếnreference_3trong request ảnh tĩnh, đúng như cách các bảng được tạo được truyền ở đây. Bảng bốn ô là cách cho model thấy mọi mặt của một vật, và sản phẩm thật cũng được lợi từ cách làm này. - Sao không chỉnh sửa clip này thành clip tiếp theo, như bài talking head (tiếng Anh)? Qua useapi.net bạn làm được, nhưng chỉnh sửa video sang video giữ lời nói của clip gốc trên dòng thời gian của clip gốc. Với lời thoại ngắn thì ổn. Khi lời thoại 10 giây lấp đầy clip, câu mới bị đan vào câu cũ và các sản phẩm trên bàn bị biến dạng. Tạo mọi clip từ cùng một ảnh tĩnh tránh được cả hai, và tốn 15 credit thay vì 20. Xem Những điều cần biết.
- Vì sao cả ba clip đều bắt đầu và kết thúc ở cùng một khung hình? Qua useapi.net, chế độ khung đầu + khung cuối ghim cả hai đầu của mỗi clip vào cùng một ảnh tĩnh, nên các clip nối với nhau theo bất kỳ thứ tự nào mà không thấy vết cắt, và lệnh ghép cắt bỏ các nhịp dừng ngắn ở mỗi chỗ nối. Cơ chế này được giải thích trong bài UGC talking head (tiếng Anh).
- Giọng nói có giữ nguyên giữa các clip không? Qua useapi.net, ba clip ra giọng đủ giống để trông như một cảnh quay liền, vì giọng được mô tả giống hệt nhau trong mọi prompt. Chế độ khung đầu + khung cuối không nhận tham chiếu âm thanh, và giọng có sẵn của nhân vật không tới được chế độ này. Nếu cần chắc chắn về giọng, chế độ tham chiếu sang video nhận
referenceAudio_1, đổi lại mất các khung hình được ghim. - Chi phí bao nhiêu? Qua useapi.net, cả video 29 giây này tốn $0,36 trên Google AI Ultra $199,99: 45 credit Flow cho ba clip Omni 1.1 Flash, còn mọi ảnh, chân dung, nhân vật và lệnh ghép đều miễn phí. Cùng 30 giây Omni 1.1 Flash ở 720p tốn khoảng $3,04 trên Gemini API chính thức (tính đến tháng 11/2026). Xem Chi phí thực tế.
Kết luận
Ghé Discord Server hoặc
Telegram Channel của chúng tôi cho mọi câu hỏi hỗ trợ.
Xem repo GitHub của chúng tôi với các ví dụ code.
Đăng ở nơi khác
Cũng đăng trên dev.to (tiếng Anh).
Bắt đầu dùng API
Một gói đăng ký $15/tháng dùng được mọi API trên useapi.net: một token cho tất cả dịch vụ. Mỗi dịch vụ bạn kết nối tối đa 3 tài khoản của riêng mình, còn useapi.net lo REST API, cân bằng tải và polling. Cần thêm tài khoản? Mỗi gói đăng ký thêm giá $10/tháng và cho thêm 3 tài khoản ở mỗi dịch vụ.
Đăng ký — $15/tháng Thanh toán bằng tiền mã hóa
Không có thẻ thanh toán quốc tế? Bạn có thể đăng ký bằng tiền mã hóa (thanh toán bằng tiền mã hóa không được hoàn tiền). Giá và các gói số lượng lớn có trên trang đăng ký. Nếu thanh toán qua Stripe, bạn được hoàn tiền toàn bộ trong 14 ngày kể từ lần mua đầu tiên khi có dưới 50 lượt tạo thành công. Đã đăng ký rồi? Hãy đổi số lượng trong Stripe Customer Portal thay vì mua lại.





