Hướng dẫn kết nối Veo 3 Ultra với n8n: Tự động hóa tạo video và ảnh “không giới hạn”
Trong thế giới Automation (tự động hóa) hiện nay, việc tích hợp các công cụ AI tạo sinh (Generative AI) vào quy trình làm việc đang là xu hướng tất yếu. Mình đã từng tốn rất nhiều chi phí cho các API của bên thứ ba để tạo ảnh và video, nhưng hiệu quả đôi khi chưa tương xứng với giá tiền.
Gần đây, khi trải nghiệm Veo 3 Ultra và Nano Banana Pro (các mô hình trong Google Labs), mình nhận thấy chúng ta hoàn toàn có thể tận dụng lượng credit khổng lồ được cung cấp miễn phí (lên tới 45.000 credit với tài khoản Google Gemini Ultra) để xây dựng một quy trình khép kín trên n8n. Bài viết này sẽ hướng dẫn bạn chi tiết cách kết nối Veo 3 Ultra với n8n bằng kỹ thuật Reverse Engineering (dịch ngược) API, giúp bạn tạo video và hình ảnh chất lượng cao gần như “không giới hạn” mà không tốn kém chi phí API đắt đỏ.
Tại sao nên kết nối Veo 3 Ultra với n8n theo cách này?
Trước khi đi vào kỹ thuật, hãy nhìn vào lợi ích thực tế. Thông thường, để sử dụng các mô hình AI xịn sò, bạn phải trả tiền theo từng lần gọi API. Tuy nhiên, nếu bạn đang sở hữu tài khoản Google Labs có quyền truy cập Veo 3 Ultra, bạn đang nắm trong tay một kho báu.
- Tiết kiệm chi phí tối đa: Với 45.000 credit, bạn có thể “bào” thoải mái để tạo hàng ngàn bức ảnh hoặc video mà không lo hết tiền giữa chừng.
- Chất lượng đỉnh cao: Veo 3 Ultra tạo video và Nano Banana Pro tạo ảnh với độ chi tiết rất cao, ánh sáng tốt và tuân thủ prompt tuyệt vời.
- Quy trình khép kín: Bằng cách đưa vào n8n, bạn có thể kết hợp với Telegram, Google Drive, hay các mạng xã hội để tự động đăng tải nội dung ngay sau khi tạo xong.
Bước 1: Chuẩn bị và lấy thông tin xác thực (Token & Project ID)
Để n8n có thể “nói chuyện” được với Google Labs, chúng ta cần đóng giả là trình duyệt web của bạn. Điều này đòi hỏi 2 thông số quan trọng: Project ID và Access Token.
Lấy Project ID
- Truy cập vào trang công cụ Flow của Google Labs: https://labs.google/fx/tools/flow
- Click vào “New Project“
- Quan sát trên thanh địa chỉ URL, bạn sẽ thấy một dãy số hoặc ký tự phía sau tham số dự án. Đó chính là
Project ID. Hãy copy dãy số này.
(Ví dụ link làhttps://labs.google/fx/tools/flow/project/67b83727-7a14-4d91-869b-5aa43bc28135thì Project ID là67b83727-7a14-4d91-869b-5aa43bc28135)

Lấy Access Token (Quan trọng)
Đây là chìa khóa để mở cửa vào hệ thống.
- Truy cập đường dẫn https://labs.google/fx/api/auth/session (hoặc tìm kiếm trong Network tab nếu bạn rành kỹ thuật).
- Trang web sẽ trả về một đoạn mã JSON. Hãy tìm đến trường
access_token. - Copy toàn bộ đoạn mã token này.
LƯU Ý:
Token này thường chỉ có hiệu lực trong vòng 24 giờ. Điều này có nghĩa là mỗi ngày, trước khi chạy workflow, bạn cần vào lấy lại token mới và cập nhật vào n8n. Hơi thủ công một chút nhưng đổi lại bạn được dùng miễn phí tài nguyên "khủng".
Nếu muốn lấy tự động thì ae tham khảo dùng thêm Puppeteer nhé.

Bước 2: Cấu hình n8n để tạo hình ảnh với Nano Banana Pro
Đầu tiên, chúng ta sẽ thiết lập quy trình tạo ảnh. Mình thường bắt đầu với ảnh vì nó phản hồi nhanh hơn video.
Thiết lập HTTP Request
Trong n8n, tạo một node HTTP Request:
- Method: Chọn
POST. - Authentication: Chọn
Generic Credential Type->Header Authhoặc chọnPredefinedlàBearer Token. Mình khuyên bạn nên dùngBearer Authvà dánAccess Tokenvừa lấy ở bước 1 vào.

Lấy Endpoint và Payload (Kỹ thuật F12)
Để biết cần gửi dữ liệu gì, chúng ta cần “bắt” gói tin mẫu:
- Quay lại tab trình duyệt đang mở Google Labs (phần tạo ảnh).
- Nhấn
F12để mở Developer Tools, chuyển sang tab Network. - Nhập một prompt đơn giản (ví dụ: “Con tuần lộc theo phong cách Minecraft”) và bấm tạo.
- Quan sát trong tab Network, tìm request API vừa được gửi đi (
flowMedia:batchGenerateImages). - Copy Endpoint URL: Dán vào phần URL trong node HTTP Request trong n8n.
Để linh động cho việc tự động hoá, hãy sửa lại phần projectID bằng 1 biến với node Set chẳng hạn, để dùng cho những lần sau không cần chỉnh sửa nhiều. Ví dụ: https://aisandbox-pa.googleapis.com/v1/projects/{{ $json.projectID }}/flowMedia:batchGenerateImages

- Copy Payload: Chuyển sang tab Payload, chuột phải vào
requests, chọnCopy Objecttrong phần Payload/Request Body.

Xử lý dữ liệu JSON trong n8n
Dán đoạn JSON vừa copy vào phần Body (chọn kiểu JSON) trong n8n. Tại đây, bạn cần tinh chỉnh một chút:
- Project ID: Thay thế giá trị tĩnh bằng biến Project ID bạn đã lưu.
- Prompt: Thay thế đoạn văn bản mẫu (“Con tuần lộc theo phong cách Con tuần lộc theo phong cách Minecraft”) bằng biến Prompt từ input của bạn.
- Số lượng ảnh: Thường payload mẫu sẽ có cấu trúc tạo 2-4 ảnh. Nếu bạn chỉ cần 1 ảnh để tiết kiệm thời gian, hãy xóa bớt các block thừa trong mảng JSON, chỉ giữ lại 1 object.
- Session ID và Seed: Để tránh việc hệ thống trả lại ảnh cũ (cache), bạn cần random hóa hai chỉ số này.
- Với
Session ID: Sử dụng biểu thức{{ $now.toMillis() }}(lấy thời gian hiện tại). - Với
Seed: Sử dụng hàm random số, ví dụ:{{ Math.floor(Math.random() * 900000) + 100000 }}.
- Với
Ví dụ về JSON tạo 1 ảnh ngang như sau:
{
"requests": [
{
"clientContext": {
"sessionId": ";{{ $now.toMillis() }}",
"projectId": "{{ $json.projectID }}",
"tool": "PINHOLE"
},
"seed": {{ Math.floor(Math.random() * 900000) + 100000 }},
"imageModelName": "GEM_PIX_2",
"imageAspectRatio": "IMAGE_ASPECT_RATIO_LANDSCAPE",
"prompt": "{{ $json.prompt }}",
"imageInputs": []
}
]
}Ví dụ về JSON tạo 1 ảnh dọc như sau:
{
"requests": [
{
"clientContext": {
"sessionId": ";{{ $now.toMillis() }}",
"projectId": "{{ $json.projectID }}",
"tool": "PINHOLE"
},
"seed": {{ Math.floor(Math.random() * 900000) + 100000 }},
"imageModelName": "GEM_PIX_2",
"imageAspectRatio": "IMAGE_ASPECT_RATIO_PORTRAIT",
"prompt": "{{ $json.prompt }}",
"imageInputs": []
}
]
}Sau khi cấu hình xong, hãy chạy thử node. Nếu thành công, kết quả trả về sẽ chứa một đường dẫn URL hình ảnh. Bạn có thể dùng node HTTP Request tiếp theo (method GET) để tải ảnh đó về.

Kết quả là mình tạo được ảnh như sau

Bước 3: Cấu hình n8n để tạo video với Veo 3 Ultra
Quy trình tạo video phức tạp hơn một chút vì video cần thời gian render (xử lý), chúng ta không thể lấy kết quả ngay lập tức như ảnh.
Lấy Endpoint tạo Video
Tương tự như tạo ảnh, bạn sang tab Video, bật F12, nhập prompt (ví dụ: “Hai con tuần lộc kéo xe trượt tuyết ông già Nodel bay trên trời phong cách Minecraft”) và bấm tạo.
- Copy Endpoint URL dành cho video:
https://aisandbox-pa.googleapis.com/v1/video:batchAsyncGenerateVideoText - Copy Payload JSON (cho video ngang):
{
"clientContext": {
"sessionId": ";{{ $now.toMillis() }}",
"projectId": "{{ $json.projectID }}",
"tool": "PINHOLE",
"userPaygateTier": "PAYGATE_TIER_ONE"
},
"requests": [
{
"aspectRatio": "VIDEO_ASPECT_RATIO_LANDSCAPE",
"seed": {{ Math.floor(Math.random() * 900000) + 100000 }},
"textInput": {
"prompt": {{ JSON.stringify($json.projectID) }}
},
"videoModelKey": "veo_3_1_t2v_fast_ultra"
}
]
}- Copy Payload JSON (cho video dọc):
{
"clientContext": {
"sessionId": ";{{ $now.toMillis() }}",
"projectId": "{{ $json.projectID }}",
"tool": "PINHOLE",
"userPaygateTier": "PAYGATE_TIER_ONE"
},
"requests": [
{
"aspectRatio": "VIDEO_ASPECT_RATIO_PORTRAIT",
"seed": {{ Math.floor(Math.random() * 900000) + 100000 }},
"textInput": {
"prompt": {{ JSON.stringify($json.projectID) }}
},
"videoModelKey": "veo_3_1_t2v_fast_portrait_ultra"
}
]
}LƯU Ý:
Trong JSON, hãy chú ý trường model.
- Nếu bạn dùng tài khoản Veo 3 Ultra muốn video ngang, dùng model veo_3_1_t2v_fast_ultra (landscape). Nếu muốn video dọc (cho TikTok/Reels), đổi thành veo_3_1_t2v_fast_portrait_ultra (portrait).
- Nếu bạn dùng tài khoản Veo 3 Pro muốn video ngang, dùng model veo_3_1_t2v_fast (landscape). Nếu muốn video dọc (cho TikTok/Reels), đổi thành veo_3_1_t2v_fast_portrait (portrait).
Xử lý quy trình chờ (Polling)
Sau khi gửi request tạo video, hệ thống sẽ trả về một Process ID với trạng thái là Pending (Đang chờ). Chúng ta cần cơ chế kiểm tra trạng thái liên tục.

- Node Wait: Thêm một node Wait khoảng 30-50 giây. Video tạo khá lâu nên đừng set thời gian quá ngắn.
- Node Check Status (HTTP Request):
- Method: là
POST - Mục URL bạn điền endpoint này:
https://aisandbox-pa.googleapis.com/v1/video:batchCheckAsyncVideoGenerationStatus - Authentication: vẫn chọn như node create_Video
- Gửi request kèm theo
operation namevừa nhận được.
- Method: là
{
"operations": [
{
"operation": {
"name": "{{ $json.operations[0].operation.name }}"
}
}
]
}- Node Switch/If: Kiểm tra kết quả trả về.
- Nếu trạng thái vẫn là
Pending-> Quay lại Node Wait (tạo vòng lặp). - Nếu trạng thái là
Successful-> Đi tiếp để lấy URL video. - Nếu trạng thái là Failed -> Quay lại tạo lại video (tạo vòng lặp).
- Nếu trạng thái vẫn là

Kết quả mình nhận được video như này:
Bước 4: Tối ưu hóa và các lưu ý “sống còn”
Sau khi đã kết nối thành công cả hai quy trình, đây là những kinh nghiệm xương máu của mình để workflow hoạt động ổn định:
1. Xử lý lỗi “Quá tải” (Rate Limit)
Nếu bạn kết hợp tạo ảnh và video trong cùng một workflow liên tiếp, hệ thống Google Labs đôi khi sẽ từ chối request thứ hai vì thao tác quá nhanh.
- Giải pháp: Hãy chèn một node Wait (khoảng 5-10 giây) giữa thao tác tạo ảnh và thao tác tạo video. Việc làm chậm lại một nhịp giúp server kịp xử lý và giảm tỷ lệ lỗi.
2. Định dạng JSON
Lỗi phổ biến nhất khi làm việc này là sai cú pháp JSON (dư dấu phẩy, thiếu ngoặc). Hãy sử dụng các công cụ format JSON online hoặc nhìn kỹ các báo lỗi màu đỏ trong n8n để sửa.
3. Chất lượng đầu ra
Kết quả trả về từ Veo 3 Ultra rất ấn tượng. Mình đã thử so sánh video gốc trên giao diện web và video tải về qua n8n, chất lượng là tương đương 1:1. Bạn hoàn toàn có thể dùng video này để làm content thương mại.
Việc kết nối Veo 3 Ultra với n8n không chỉ giúp bạn tận dụng được sức mạnh của AI tạo sinh hàng đầu mà còn tiết kiệm được một khoản chi phí khổng lồ nhờ tận dụng tài nguyên có sẵn. Mặc dù việc phải cập nhật Token mỗi ngày có thể hơi bất tiện, nhưng với chất lượng và số lượng credit bạn nhận được, đó là một sự đánh đổi hoàn toàn xứng đáng.
Quy trình này mở ra cánh cửa cho việc tự động hóa sản xuất nội dung: từ việc lên ý tưởng kịch bản bằng ChatGPT, tạo ảnh minh họa bằng Nano Banana Pro, đến dựng video bằng Veo 3 Ultra – tất cả đều vận hành tự động trên n8n.
Hy vọng hướng dẫn này giúp ích cho bạn trong hành trình chinh phục Automation. Chúc các bạn thực hiện thành công
Đây là workflow mẫu cho ae tham khảo và đỡ mất thời gian build lại, tránh sai sót:
https://romhub.io/n8n/create_Video_With_Veo3_Ultra
Thank Hong Vu








