🔗 Biên Tập Quy Trình (Workflow)
Trình soạn thảo trực quan dạng node — kết nối các bước xử lý thành luồng tự động hóa tạo ảnh và video. Kéo thả, nối dây, nhấn RUN — hệ thống tự chạy hàng loạt.
6.1 Giao Diện

Thanh Công Cụ (Toolbar)
| Nút | Chức năng |
|---|---|
| 💾 Save Flow | Lưu workflow hiện tại (mọi node + connection + giá trị widget) ra file .json |
| 📂 Open Flow | Mở file .json đã lưu — canvas hiện tại bị xoá trước khi nạp |
| ✨ Auto Arrange | Tự sắp xếp lại các node để dây nối không chồng nhau |
| 🔍 Reset View | Reset zoom + pan để toàn bộ node nằm gọn trong vùng nhìn |
| 🖼 Gallery | Bật/tắt panel ảnh ở dưới canvas (mặc định: bật) |
| 🔒 Lock Results | Mặc định bật. Node đã chạy giữ kết quả → lần RUN sau skip node đó, downstream dùng cache → tiết kiệm credit khi tinh chỉnh phần đuôi |
| 🗑 Clear All | Xoá toàn bộ node + connection trên canvas |
| 🧽 Cache | Xoá cache upload — dùng khi thay nội dung ảnh nhưng giữ tên cũ |
| ⏹ STOP | Dừng ngay workflow đang chạy (chỉ active khi RUN) |
| ❓ Help | Mở bảng trợ giúp / phím tắt của Workflow |
| ▶ RUN FLOW | Chạy toàn bộ workflow theo connection. Yêu cầu gói Plus/Max |
Khu Vực Khác
| Vùng | Mô tả |
|---|---|
| Canvas | Khu vực đặt node, kéo thả, kết nối. Chuột phải vùng trống → thêm node mới hoặc tạo nhóm |
| Minimap | Bản đồ thu nhỏ ở góc dưới phải — cập nhật theo thời gian thực |
| Log Panel | Nhật ký thực thi (🟢 Success / 🟡 Warning / 🔴 Error) + nút 🗑 Clear Log riêng |
Thao Tác Vùng Vẽ
| Thao tác | Hành động |
|---|---|
| Chuột phải | Menu thêm node mới hoặc tạo nhóm |
| Kéo thả node | Di chuyển node trên canvas |
| Kéo từ socket | Tạo kết nối giữa các node. Thả vào vùng trống → mở menu Quick Add |
| Cuộn chuột | Phóng to / thu nhỏ canvas |
| Ctrl+Z / Ctrl+Y | Hoàn tác / Làm lại |
| Ctrl+C / Ctrl+V | Sao chép / Dán node (giữ nguyên toàn bộ cấu hình) |
| Delete | Xóa node hoặc kết nối đã chọn |
6.2 Tổng Quan Các Loại Node
Workflow có 8 loại node (gốc trong node_executor.py):
| Node | Đầu vào | Đầu ra | Mô tả |
|---|---|---|---|
| 💬 Prompt | — | Prompt | 1 dòng text. VD: a cat sleeping on a sofa |
| 📝 Batch Prompt Loader | — | Prompt (loop) | Nhiều prompt mỗi dòng 1 cái — node loop, mỗi prompt chạy 1 lần các node downstream |
| 📎 Reference Image | — | Image | Chọn 1 ảnh từ disk làm reference. Hỗ trợ Nano Banana 2 / Pro |
| 📦 Batch Image Loader | — | Image (loop) | Chọn 1 thư mục ảnh — node loop qua từng ảnh |
| 🖼 Generate Image | Prompt + Image refs | Image | Tạo ảnh AI — chọn Model (Nano Banana 2 / Nano Banana Pro), tỷ lệ, seed, resolution (1K/2K/4K) |
| 🎬 Video Generator | Prompt + Image (theo mode) | Video | 2 mode: Image-to-Video (Start + End image) hoặc Components (3 ảnh thành phần). Có upscale 720p/1080p/4K |
| 🎨 Grok AI | Prompt + Image (tùy mode) | Image / Video | 4 chế độ Grok: T2I / I2I / T2V / I2V — tỷ lệ, thời lượng 6s/10s, độ phân giải 480p/720p |
| 🎞 Extract Frame | Video | Image | Lấy frame cuối của video → tiện cho chuỗi video (frame cuối video 1 = Start image video 2) |
6.3 Chi Tiết Từng Node
📦 Tải Ảnh Hàng Loạt (Batch Image Loader)
Node nguồn — tải ảnh từ thư mục để cấp cho các node xử lý phía sau.
| Cấu hình | Chi tiết |
|---|---|
| Thư mục | Nhấn "Browse" chọn thư mục ảnh. Hỗ trợ: PNG, JPG, JPEG, WebP, BMP |
| Sắp xếp | 6 chế độ: A-Z, Z-A, Mới nhất, Cũ nhất, Ngẫu nhiên, Khớp Prompt |
| Giới hạn | Tất cả hoặc số lượng tùy chỉnh (VD: chỉ lấy 10 ảnh đầu) |
sunset_beach.png sẽ ghép với prompt chứa "sunset beach".📝 Tải Prompt Hàng Loạt (Batch Prompt Loader)
Node nguồn — cung cấp danh sách prompt cho các node tạo ảnh/video.
| Cấu hình | Chi tiết |
|---|---|
| Danh sách Prompt | Nhập trực tiếp trong ô text — mỗi dòng 1 prompt |
| Chế độ | Tuần tự (lần lượt từ trên xuống) hoặc Ngẫu nhiên |
| Giới hạn | Tất cả hoặc số lượng tùy chỉnh |
🖼 Tạo Ảnh (Generate Image)
Node xử lý chính — nhận prompt + ảnh tham chiếu, gọi API tạo ảnh AI.
| Cấu hình | Chi tiết |
|---|---|
| Model | 2 model: Nano Banana 2, Nano Banana Pro |
| Tỷ lệ | Ngang, Dọc, Vuông, v.v. (tùy model) |
| Seed | Ngẫu nhiên hoặc cố định (nhập số) — tái tạo cùng kết quả |
| Độ phân giải | 1K / 2K / 4K (chỉ cho model Nano Banana Pro) |
| Prompt | Nhập trực tiếp hoặc nhận từ node Batch Prompt Loader qua kết nối |
Đầu vào: Socket 1 = Ảnh tham chiếu (từ node Ref), Socket 2 = Prompt (từ node Batch Prompt). Đầu ra: Ảnh đã tạo (tự động hiển thị preview trên node).
🎬 Tạo Video (Generate Video)
Node tạo video AI — 2 chế độ chọn được (Image-to-Video / Components).
| Cấu hình | Chi tiết |
|---|---|
| Chế độ | Image-to-Video (ảnh đầu + ảnh cuối) hoặc Components. Để trống ảnh đầu = Text-to-Video. Node này không có Omni Flash / giọng đọc |
| Tỷ lệ | Ngang (16:9) / Dọc (9:16) |
| Độ phân giải | 720p / 1080p / 4K |
| Prompt | Nhập trực tiếp hoặc nhận từ kết nối |
🎨 Tạo Grok (Grok AI)
Node tạo ảnh/video bằng Grok — 4 chế độ: T2I (text→ảnh), I2I (ảnh→ảnh), T2V (text→video), I2V (ảnh→video). Cấu hình: tỷ lệ (9:16, 16:9, 1:1, 2:3, 3:2), thời lượng video 6s/10s, độ phân giải 480p/720p. Yêu cầu tài khoản Super Grok kết nối qua extension.
📎 Reference Image
Nhận 1 ảnh từ disk → cấp cho socket reference của node Generate Image / Video Generator. Chỉ hoạt động với model Nano Banana 2 / Nano Banana Pro.
🎞 Extract Frame
Lấy frame cuối của video → trả về dạng Image. Dùng để nối chuỗi video: frame cuối của video 1 → Start Image của video 2.
💬 Prompt (Single Line)
Node text 1 dòng — thay vì gõ trực tiếp prompt vào node Generate. Tách ra để dùng cùng 1 prompt cho nhiều node generate khác nhau.
6.4 Nhóm Node (Groups)
- Chuột phải → Tạo nhóm mới: Tạo khung nhóm trên canvas với tên tùy chỉnh
- Kéo mép để thay đổi kích thước nhóm
- Nhóm giúp tổ chức workflow phức tạp — gom các node liên quan lại
- Node bên trong nhóm di chuyển cùng khi kéo nhóm
6.5 Thực Thi
Khi nhấn RUN FLOW, hệ thống thực hiện:
- Sắp xếp topo (topological sort) — xác định thứ tự chạy dựa trên kết nối. Phát hiện và cảnh báo nếu có vòng lặp (cycle)
- Đếm lặp — số vòng lặp = max(số ảnh trong Batch Image, số prompt trong Batch Prompt)
- Mỗi vòng lặp: cấp 1 ảnh + 1 prompt (xoay vòng nếu hết) → chạy toàn bộ node xử lý theo thứ tự → lưu kết quả
| Trạng thái | Biểu tượng | Ý nghĩa |
|---|---|---|
| Idle | ⚪ | Chưa chạy |
| Running | 🟡 | Đang xử lý |
| Success | 🟢 | Hoàn thành |
| Error | 🔴 | Lỗi — node con phía sau cũng sẽ bị lỗi theo |
| Skipped | 🟣 | Bỏ qua (đánh dấu thủ công) — dữ liệu truyền qua không xử lý |
| Disabled | ⬛ | Vô hiệu hóa — hoàn toàn không tham gia thực thi |
6.6 Ví Dụ Luồng Workflow
Ví dụ 1: Tạo ảnh hàng loạt (cơ bản)
Tạo ảnh từ danh sách prompt, không dùng ảnh tham chiếu:
📝 Batch Prompt → 🖼 Tạo Ảnh → 💾 Lưu Ảnh
- Thêm node 📝 Tải Prompt Hàng Loạt — nhập 10 prompt, chế độ Tuần tự
- Thêm node 🖼 Tạo Ảnh — chọn model Nano Banana 2, tỷ lệ Ngang
- Thêm node 💾 Lưu Ảnh — đặt tiền tố "nature", chọn thư mục lưu
- Nối: Prompt → socket Prompt của Tạo Ảnh → Ảnh đầu ra → Lưu Ảnh
- Nhấn RUN FLOW → hệ thống chạy 10 vòng, mỗi vòng 1 prompt
Ví dụ 2: Tạo ảnh với tham chiếu (nâng cao)
Sử dụng ảnh tham chiếu từ thư mục để style transfer:
📦 Batch Ảnh → 📎 Ref (Std) ↘
🖼 Tạo Ảnh → 💾 Lưu
📝 Batch Prompt ────────────↗
- Thêm 📦 Tải Ảnh Hàng Loạt — chọn thư mục chứa 5 ảnh style, sắp xếp A-Z
- Thêm 📎 Ảnh Tham Chiếu — danh mục: Style
- Thêm 📝 Tải Prompt Hàng Loạt — nhập 5 prompt mô tả
- Thêm 🖼 Tạo Ảnh — model Nano Banana 2, seed Ngẫu nhiên
- Nối: Batch Ảnh → Ref → socket Ref của Tạo Ảnh. Batch Prompt → socket Prompt
- Nhấn RUN FLOW → 5 vòng, mỗi vòng ghép 1 ảnh style + 1 prompt
Ví dụ 3: Khớp ảnh theo prompt tự động
Tên file ảnh tự động ghép với prompt chứa từ khóa trùng:
📦 Batch Ảnh (Khớp Prompt) → 📎 Ref ↘
🖼 Tạo Ảnh → 💾 Lưu
📝 Batch Prompt ────────────────────↗
- 📦 Batch Ảnh — chọn thư mục chứa:
cat.png,dog.png,sunset.png. Sắp xếp: Khớp Prompt - 📝 Batch Prompt — nhập: "a cute cat sleeping", "a dog running on beach", "beautiful sunset over ocean"
- Khi chạy: prompt "a cute cat sleeping" → tự động ghép với
cat.png(tên file khớp) - Chiến lược khớp: so tên file (bỏ đuôi) với nội dung prompt, ưu tiên chuỗi khớp dài nhất
6.7 Lưu / Mở Luồng
| Thao tác | Chi tiết |
|---|---|
| Save Flow | Lưu toàn bộ workflow thành file JSON — bao gồm node, kết nối, vị trí, cấu hình, nhóm |
| Open Flow | Mở file JSON đã lưu — khôi phục đầy đủ trạng thái |
| Luồng mặc định | File default.json tự động tải khi mở ứng dụng |
| Ctrl+S / Ctrl+O | Phím tắt lưu / mở nhanh |
| Auto Arrange | Sắp xếp lại vị trí node tự động cho gọn gàng |
| Tự động căn giữa | Workflow được căn giữa canvas sau khi mở file |