Tóm tắt nhanh: Để tạo hoạt ảnh cho linh vật thương hiệu bằng ChatGPT Images 2.6, hãy yêu cầu tạo một sprite sheet gồm 6 khung hình xếp theo lưới 3x2 cố định, cắt ảnh thành từng khung hình, căn chỉnh lại cho thẳng hàng rồi xuất thành file GIF lặp. Chúng tôi đã thử nghiệm quy trình này trên tài khoản Free vào ngày 5 tháng 11 năm 2026. Bước căn chỉnh đã giúp giảm độ lệch chân từ 11,5 pixel xuống chỉ còn 1 pixel.
Tại sao tạo hoạt ảnh cho linh vật thương hiệu lại cần nhiều hơn một prompt
Linh vật thương hiệu phải giữ nguyên diện mạo trong từng khung hình, và chính điều đó khiến công việc này trở nên đặc thù. Một chiếc GIF biểu cảm ngẫu hứng có thể trông như thế nào cũng được. Nhưng linh vật của bạn thì không thể.
Bài viết ra mắt Images 2.6 của OpenAI đã trực tiếp nhắc đến trường hợp sử dụng này: các nhà tiếp thị có thể “tạo hoạt ảnh cho linh vật thương hiệu cho một chiến dịch”. Tính năng này hiện có sẵn trên ChatGPT và Codex ở mọi gói tài khoản, cũng như thông qua API.
ChatGPT cũng cung cấp cách làm chỉ với một câu lệnh. Trong một thử nghiệm trước đó trên cùng tài khoản Free, một prompt yêu cầu tạo GIF lặp đã xuất ra một file hoàn thiện gồm 8 khung hình. Cách này rất ổn cho một chuyển động biểu cảm nhanh. Nhưng đối với linh vật, phương pháp dùng sprite sheet mang lại cho bạn nhiều quyền kiểm soát hơn, vì bạn có thể chủ động chọn số lượng khung hình, kiểm tra từng tư thế và tự tay tinh chỉnh thời gian chuyển động.
Sprite sheet là một bức ảnh chứa toàn bộ các khung hình của một hoạt ảnh được sắp xếp theo dạng lưới. Bạn có thể kiểm tra tổng thể tương tự như xem trang ảnh thu nhỏ (contact sheet), sau đó cho chạy các khung hình theo thứ tự.
Nếu có nhiều người cùng tham gia xử lý các tài nguyên thương hiệu của bạn, bản yêu cầu (brief) và khâu phê duyệt cũng cần một nơi quản lý tập trung. Sharkly sẽ đảm nhận phần việc đó, và chúng tôi sẽ chia sẻ chi tiết ở bên dưới.
Những thứ bạn cần chuẩn bị trước khi viết prompt
Hãy dành năm phút để chuẩn bị dữ liệu đầu vào. Chúng sẽ quyết định liệu kết quả đầu ra có thực sự giống linh vật của bạn hay không.
- Một ảnh tham chiếu (reference image): Một bức ảnh toàn thân rõ nét của linh vật trên nền trơn.
- Bản mô tả nhân vật bằng chữ: Màu sắc cơ thể, khuôn mặt, tỷ lệ, độ dày nét vẽ và các phụ kiện đi kèm.
- Một chuyển động duy nhất: Một cái vẫy tay, gật đầu hoặc chớp mắt. Sáu khung hình không thể gánh trọn cả một hoạt cảnh.
- Mục đích sử dụng file: Nhãn dán tin nhắn (sticker) và hình ảnh tiêu điểm trên trang đích (landing page hero) sẽ cần kích thước và tốc độ hoàn toàn khác nhau.
Chỉ nên tạo hoạt ảnh cho nhân vật thuộc quyền sở hữu của bạn hoặc nhân vật mà bạn có quyền sử dụng hợp pháp.
Bước 1: Đính kèm ảnh tham chiếu của linh vật
Mở ChatGPT Images, nhấp vào Add files and more và đính kèm ảnh tham chiếu của bạn. OpenAI cho biết Images 2.6 có khả năng giữ cho “nhân vật, sản phẩm và các chi tiết thương hiệu luôn nhất quán trong quá trình bạn chỉnh sửa”, vì vậy đây là dữ liệu đầu vào then chốt giúp cố định thiết kế của bạn.
Chúng tôi không tải lên ảnh tham chiếu cho bài viết này, vì vậy hãy xem bước này như phần mô tả tính năng của OpenAI chứ không phải kết quả thực tế của chúng tôi. Dù vậy, chúng tôi đã rút ra được hai bài học khi chạy thử mà không có ảnh tham chiếu:
- Khi prompt của chúng tôi nhắc đến một hình ảnh đính kèm nhưng thực tế lại không đính kèm tệp nào, ChatGPT đã dừng lại và yêu cầu cung cấp file. Nó không tự ý bịa ra một nhân vật.
- Sau đó, khi chúng tôi mô tả linh vật bằng lời, chúng tôi nhận được một nhân vật nhất quán xuyên suốt cả sáu khung hình, nhưng chú cá mập này lại tròn trịa hơn so với thiết kế ban đầu của chúng tôi.
Mô tả bằng chữ chỉ giúp nhân vật tự nhất quán với chính nó. Nó không thể tái hiện chính xác thiết kế ban đầu của bạn. Đối với tài nguyên thương hiệu thực tế, hãy luôn sử dụng ảnh tham chiếu.
Bước 2: Sử dụng prompt tạo sprite sheet chuyên biệt cho linh vật
Prompt của chúng tôi tuân theo đúng cấu trúc trong các ví dụ mẫu của chính OpenAI, yêu cầu “chính xác 6 khung hình tuần tự” xếp theo lưới 3 cột x 2 hàng. Bạn chỉ cần thay thế đoạn văn mô tả nhân vật bằng thông tin của mình:
Create a single animation sprite sheet for a seamless looping GIF.
Character: a friendly cartoon shark mascot standing upright on two short
legs, charcoal-navy body, pale cream belly and lower jaw, large round eyes,
open smile with small white teeth, three gill lines, thick dark outline,
a small bright green ID badge on a dark lanyard, flat vector style,
no gradients.
The sequence: mascot stands facing forward, raises one fin, waves twice,
lowers the fin back to the starting pose.
Exactly 6 sequential frames in a precise 3-column by 2-row grid, read
left-to-right then top-to-bottom. Every panel has identical dimensions.
Fixed camera, same character, feet in the same spot in every frame,
plain white background. Sixth frame transitions smoothly back to the first.
No captions, no words, no numbers, no logos, no panel labels, no borders,
no gutters.
Mỗi dòng trong câu lệnh đều đảm nhận một nhiệm vụ cụ thể:
- “Same character” (cùng một nhân vật) và cố định góc máy (fixed camera) giúp ngăn thiết kế và khung hình bị thay đổi thất thường.
- “Feet in the same spot” (chân đứng nguyên một vị trí) tạo cho bạn một điểm mốc cố định để căn chỉnh sau này.
- Dòng về khung hình thứ sáu yêu cầu tạo chuyển động vòng lặp.
- Danh sách các yêu cầu “no” (loại trừ) giúp loại bỏ chữ thừa và các đường viền ngăn cách khỏi khung hình của bạn.
Dưới đây là sprite sheet nguyên bản chưa qua chỉnh sửa do ChatGPT tạo ra, dưới định dạng ảnh PNG kích thước 1536 x 1024:

Có hai điểm lưu ý thực tế cần nói rõ. Prompt này trả về một ảnh tĩnh PNG chứ không phải file GIF, vì vậy khâu ghép ảnh sẽ do bạn tự thực hiện. Ngoài ra, chúng tôi đã yêu cầu vẫy tay hai lần nhưng kết quả chỉ được khoảng một lần. Bản thân ChatGPT cũng đã chủ động lưu ý điều này khi nhận xét rằng chuyển động “không hoàn toàn phân biệt rõ rệt qua cả sáu khung hình”. Sáu khung hình chỉ vừa vặn cho một lần vẫy tay, vì vậy bạn nên yêu cầu vẫy một lần hoặc tăng số lượng khung hình lên.
Bước 3: Cắt ảnh và khắc phục hiện tượng lệch vị trí
Yêu cầu “kích thước đồng nhất” thực tế không hoàn toàn chính xác. Nhân vật của chúng tôi trông có vẻ nằm ở chính giữa mỗi ô, nhưng khi cắt tấm ảnh thành các ô vuông đều nhau 512 pixel thì nhân vật lại bị trượt sang hai bên. Đôi chân bị xê dịch tới 11,5 pixel giữa các cột, tạo cảm giác giật cục và nhảy vị trí khi chạy vòng lặp.
Cách khắc phục là cắt từng cột theo một tọa độ lệch (offset) riêng. Hãy đo một điểm cố định trong từng khung hình, chẳng hạn như mép ngoài của bàn chân. Sau đó, dịch chuyển vùng cắt tương ứng với độ chênh lệch đó. Trong trường hợp của chúng tôi, các độ lệch cần thiết là 0, 517 và 1035 pixel. Các lệnh dưới đây sử dụng FFmpeg, và chúng tôi đã chạy chính xác như sau:
i=0
for x in 0 517 1035 0 517 1035; do
y=$(( (i / 3) * 512 ))
ffmpeg -y -i sheet.png -vf "crop=500:512:$x:$y" frame$i.png
i=$((i + 1))
done
ffmpeg -y -framerate 1000/150 -i frame%d.png \
-vf "scale=384:-2:flags=lanczos,split[a][b];[a]palettegen=max_colors=64[p];[b][p]paletteuse=dither=none" \
-loop 0 mascot.gif
Độ lệch trên ảnh của bạn sẽ khác, vì vậy hãy tự đo đạc trên chính sprite sheet của mình. Lệnh thứ hai thiết lập thời gian hiển thị 150 mili-giây cho mỗi khung hình cùng bảng màu 64 màu, rất phù hợp với phong cách đồ họa vector phẳng.
Và đây là hoạt ảnh vòng lặp hoàn thiện:

Bước 4: Kiểm tra độ mượt của vòng lặp
Một vòng lặp mượt mà sẽ không có hiện tượng giật hình khi khung hình cuối cùng chuyển tiếp quay lại khung hình đầu tiên. Đừng chỉ đánh giá bằng mắt thường. Chúng tôi đã đối chiếu các thông số trước và sau khi căn chỉnh:
| Chỉ số đo lường | Cắt theo lưới đều | Cắt sau khi căn chỉnh |
|---|---|---|
| Độ lệch chân giữa các khung hình | 11.5 px | 1 px |
| Tỷ lệ pixel thay đổi tại điểm nối vòng lặp | 13.8% | 3.6% |
| Dung lượng file | 332 KB | 284 KB |
File GIF hoàn thiện có kích thước 384 x 394 pixel, 6 khung hình và mỗi vòng lặp kéo dài 0,9 giây. Việc căn chỉnh cũng giúp giảm dung lượng file, vì thuật toán nén GIF sẽ tốn ít dữ liệu để vẽ lại hơn khi phần thân giữ nguyên vị trí.
Hãy kiểm tra lại danh sách các tiêu chí sau trước khi chia sẻ file:
- So sánh khung hình đầu tiên và khung hình cuối cùng. Giữa chúng chỉ nên tồn tại những khác biệt rất nhỏ.
- Kiểm tra màu sắc, huy hiệu và độ dày nét vẽ của linh vật trong từng khung hình.
- Tìm xem có chữ thừa hoặc đường kẻ viền ô nào sót lại ở mép các khung hình hay không.
- Xem lại ở kích thước đầy đủ qua mười vòng lặp. Hiện tượng giật hình sẽ lộ rõ khi xem lặp lại liên tục.
Nếu có khung hình nào bị lỗi, hãy tạo lại sprite sheet mới hoặc sử dụng hộp thoại Describe edits trong trình xem ảnh. Chúng tôi chưa thử nghiệm tính năng chỉnh sửa này trên sprite sheet ở bài viết này.
Cách tạo hoạt ảnh cho linh vật thông qua API
Quy trình thực hiện qua API sẽ có đôi chút khác biệt. Theo tài liệu hướng dẫn tạo ảnh của OpenAI, việc đặt output_format thành gif sẽ trả về một hoạt ảnh hoàn chỉnh, nhưng tùy chọn này chỉ hoạt động trên generation endpoint. Edit endpoint không hỗ trợ xuất định dạng GIF, trong khi đây lại là nơi bạn gửi ảnh tham chiếu vào.
Vì vậy, đối với linh vật, bạn có hai hướng tiếp cận qua API:
- Xuất trực tiếp file GIF (Native GIF): Chỉ sử dụng prompt dạng văn bản, với
frame_counttừ 2 đến 64 vàframe_duration_mstừ 20 đến 2000. Thiết kế của bạn sẽ hoàn toàn phụ thuộc vào phần mô tả bằng lời. - Kết hợp ảnh tham chiếu và sprite sheet: Gửi ảnh tham chiếu của bạn đến edit endpoint, nhận lại một sprite sheet, sau đó ghép các khung hình lại như hướng dẫn ở Bước 3.
curl https://api.openai.com/v1/images/edits \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-F "model=gpt-image-2.6-sunburst" \
-F "image[][email protected]" \
-F "size=1536x1024" \
-F "quality=high" \
-F "prompt=<your sprite sheet prompt>"
Chúng tôi soạn cấu trúc request này dựa trên tài liệu kỹ thuật chứ chưa chạy thử nghiệm thực tế. OpenAI cho biết Sunburst mang lại “độ nhất quán hình ảnh thậm chí còn cao hơn qua các lượt chỉnh sửa” ở mức chất lượng trung bình hoặc cao. Trang bảng giá niêm yết token hình ảnh 2.6 ở mức 8 USD cho mỗi triệu token đầu vào và 30 USD cho mỗi triệu token đầu ra.
Quy trình phối hợp nhóm khi tạo hoạt ảnh linh vật
Một người hoàn toàn có thể tự mình làm mọi công đoạn này. Nhưng đối với một đội ngũ tiếp thị, mọi người cần nắm rõ ảnh tham chiếu nào là bản mới nhất, ai yêu cầu tạo hoạt ảnh và ai là người phê duyệt. Nếu không, file GIF cuối cùng sẽ dễ bị trôi mất trong các luồng tin nhắn trao đổi.
Dưới đây là cách triển khai quy trình trên Sharkly, một hệ thống làm việc kết hợp giữa Con người (People) và Trợ lý AI (Agents):
- Một Task đóng vai trò lưu trữ brief: Đính kèm các ảnh tham chiếu linh vật, prompt và quy chuẩn thương hiệu vào trong cùng một Task.
- Agent đảm nhận việc thực thi: Giao Task cho một Agent hoạt động trên một Computer được kết nối thông qua một Runtime. Bài viết hướng dẫn giao tác vụ đầu tiên cho AI agent của chúng tôi sẽ hướng dẫn chi tiết các bước thiết lập này.
- Con người kiểm duyệt và phê duyệt: Agent có thể chuyển Task sang trạng thái chờ người kiểm tra, và tác vụ đó sẽ xuất hiện ngay trong Hộp thư đến (Inbox) của người phụ trách. Bài viết của chúng tôi về các mô hình bàn giao giữa con người và agent sẽ giải thích rõ hơn về quy trình này.
Images 2.6 hiện đã có trên Codex, và Codex là một trong những Runtime mà Sharkly hỗ trợ. Chúng tôi chưa thử nghiệm tạo linh vật qua Codex, vì vậy bạn hãy thử nghiệm trước trên môi trường của riêng mình.
Sharkly hoàn toàn miễn phí để bắt đầu: gói Free hỗ trợ các tổ chức có quy mô lên đến 5 người, và các Agent không chiếm chỗ (seat) thành viên. Chi phí sử dụng mô hình sẽ được tính theo gói tài khoản hoặc API key mà bạn liên kết.
Kết luận
Để tạo ra một hoạt ảnh vòng lặp linh vật mượt mà, cốt lõi nằm ở ba thói quen: cố định thiết kế bằng ảnh tham chiếu, lên kế hoạch cho một chuyển động duy nhất trong sáu khung hình, và căn chỉnh lại các khung hình trước khi xuất file. Chính bước cuối cùng đó đã giúp chúng tôi giảm độ lệch chân từ 11,5 pixel xuống chỉ còn 1 pixel.
Bạn đã sẵn sàng áp dụng quy trình này cùng đội ngũ của mình? Hãy tạo một không gian làm việc Sharkly miễn phí, đưa brief linh vật tiếp theo vào một Task và để người phụ trách phê duyệt kết quả. Tài liệu hướng dẫn của Sharkly sẽ hướng dẫn bạn toàn bộ quy trình thiết lập.
Câu hỏi thường gặp (FAQ)
ChatGPT có thể tạo hoạt ảnh cho linh vật sẵn có của tôi không?
OpenAI có nêu rõ trường hợp sử dụng này, và bạn có thể đính kèm linh vật của mình làm ảnh tham chiếu. Chúng tôi chỉ mới thử nghiệm với phần mô tả bằng lời, kết quả cho ra nhân vật nhất quán nhưng chưa khớp hoàn toàn với thiết kế ban đầu của chúng tôi.
Một file GIF linh vật nên có bao nhiêu khung hình?
Với chúng tôi, sáu khung hình là vừa đủ cho khoảng một lần vẫy tay. Hãy tăng thêm khung hình nếu chuyển động dài hơn. API cho phép cấu hình từ 2 đến 64 khung hình.
Prompt tạo sprite sheet có xuất ra file GIF không?
Prompt của chúng tôi trả về một tấm ảnh sprite sheet định dạng PNG, và chúng tôi phải tự ghép thành file GIF. Trong một thử nghiệm trước đó, một prompt yêu cầu tạo GIF lặp thông thường đã trả về trực tiếp một file GIF hoàn chỉnh.
Tại sao file GIF của tôi bị giật hình?
Nhiều khả năng các ô khung hình không được chia đều một cách hoàn hảo. Trong thử nghiệm của chúng tôi, vị trí bị lệch 11,5 pixel giữa các cột. Giải pháp là hãy cắt từng cột theo độ lệch (offset) riêng.
API có thể tạo file GIF trực tiếp từ ảnh tham chiếu không?
Không thể làm trực tiếp. Định dạng đầu ra GIF chỉ hoạt động trên generation endpoint, còn edit endpoint thì không hỗ trợ xuất định dạng này.
Mọi người có nhận ra file GIF linh vật được tạo bởi AI không?
OpenAI cho biết họ đánh dấu các hình ảnh do AI tạo ra bằng siêu dữ liệu C2PA và thủy vân số SynthID, vì vậy đừng kỳ vọng file này có thể qua mắt được người xem như một tác phẩm vẽ tay thủ công.



