Marketing videos and image assets
Marketing video assets usually combine three kinds of models: a chat model writes the storyboard and prompts from the product’s selling points, an image model creates a key frame for each shot plus the covers, and a video model animates each key frame into clips (4 candidates per task); people then pick, edit and review before anything is published. Image and video models charge per call. For 200 assets a month, at live prices in each model’s cheapest group, model costs are about ¥1,602 a month, or about ¥8.01 per asset.
Prices updated Nov 13, 2026, 1:33 AM
Monthly cost estimate
Assumptions: 200 video assets a month; each gets one storyboard (about 1,500 input and 1,200 output tokens) and has 2 shots, each shot with 2 candidate key frames and 1 video task (4 candidate clips), plus 2 covers in different sizes. That is 800 image generations, 400 video tasks and 400 image edits.
¥1,602per month
- Storyboards and prompts¥1.95
- Key frame generation¥320
- Video clip generation¥1,120
- Covers and size variants¥160
The business problem
Short-video platforms and feed ads need more and more creatives: one product needs versions for different selling points, audiences and sizes, refreshed all the time. Shooting and editing everything is expensive and slow, and testing a new angle can take a week or two.
Video and image models generate frames and clips from text and reference images, which makes it quick to produce several versions to test. Results are not stable, though: the same prompt gives a different picture each time, product shape, text and logos can drift, and output may break ad rules or someone else’s rights.
The steadier approach splits the work: generate key frames in batches from prompt templates, let a person pick the good ones, then animate those as first frames. Every finished video is checked by a person for product details, text and rights before publishing, and against the ad platform’s and advertising rules.
Recommended models
Recommended models are picked from the live catalog; prices are each model's cheapest group, updated Nov 13, 2026, 1:33 AM. Click a model to see every group's price.
Storyboards and prompts (chat model)
qwen3.5-plusQwen
input ¥1.12 / output ¥6.72 per 1M tokensChina Models group
Writes the storyboard from selling points, audience and brand guidelines, and fills a fixed template with the image and video prompt for each shot. Few calls and a small share of the cost; keep the guidelines and templates in the system prompt so batch output stays consistent.
Key frames and covers (image generation and editing)
nano-banana-proGoogle
¥0.4 per requestStandard group
Generates a key frame per shot to use as the video’s first frame, and makes covers and versions in other sizes, billed per image. Generation uses the image generation endpoint; adding a title or changing the size of a key frame uses the image editing endpoint. Some alternatives only support generation, so check the endpoints on the model page.
Video clips (video generation)
Midjourney VideoMidjourney
¥2.8 per requestStandard group
Animates a key frame as the first frame following a motion description. It is an async task: submit it, then poll for the result. Billed per call; each task returns 4 candidate clips to pick from.
Reference architecture
- 1
Collect assets and rules
Prepare product photos, selling points and target audiences, plus brand guidelines: main colors, fonts, logo usage, things that must not appear and restricted ad wording.
- 2
Write storyboards and prompts
The chat model fills a template with the storyboard: what each shot shows, camera movement and captions, plus the image and video prompts. Once the template is fixed, you only swap products and selling points.
- 3
Generate key frames
Generate 2 to 4 candidate frames per shot and let a person pick one with the right product look and composition. When it must match the real product, edit the product photo and change only the background and mood.
- 4
Generate video clips
Store the chosen key frame in your own storage, make a reachable image URL and submit a video task with the motion description. Poll the task, download the clips as soon as it finishes, and do not rely on the returned URLs long-term.
- 5
Edit and make covers
Pick usable clips from the candidates and cut them together with captions and voice-over in your editing tool; use the image editing model to add a title to a key frame and make covers in different sizes.
- 6
Review, then publish
Before publishing, a person checks product look, prices and text, logos, likeness and rights, and that the video meets the ad platform’s rules and advertising law. Where a platform requires AI-generated content to be labeled, label it.
Cost estimate
Assumptions: 200 video assets a month; each gets one storyboard (about 1,500 input and 1,200 output tokens) and has 2 shots, each shot with 2 candidate key frames and 1 video task (4 candidate clips), plus 2 covers in different sizes. That is 800 image generations, 400 video tasks and 400 image edits.
| Item | Model | Usage assumed | Cost |
|---|---|---|---|
| Storyboards and prompts | qwen3.5-plus | 200 × (1,500 input + 1,200 output tokens) | ¥1.95 |
| Key frame generation | nano-banana-pro | 800 requests | ¥320 |
| Video clip generation | Midjourney Video | 400 requests | ¥1,120 |
| Covers and size variants | nano-banana-pro | 400 requests | ¥160 |
| Total (per month) | ¥1,602 | ||
Calculated from live prices in each model's cheapest group, updated Nov 13, 2026, 1:33 AM.
Model usage only: editing, voice-over, storage and human review are not included. Image and video models charge per call; the table uses the cheapest group. Count the regenerations you will need too: one extra video task per shot doubles the video line. The average cost per asset is the total divided by 200.
Sample code
Generate a key frame from a template and save it; once a person has picked it, upload it to your own storage, submit a video task, poll it and download every candidate clip.
import base64
import os
import time
import requests
from openai import OpenAI
API_KEY = os.environ["TUTUJIN_API_KEY"]
SITE = "https://www.tutujin.com"
client = OpenAI(base_url="https://www.tutujin.com/v1", api_key=API_KEY, timeout=300)
HEADERS = {"Authorization": "Bearer " + API_KEY}
UA = {"User-Agent": "Mozilla/5.0"} # some file hosts reject requests without a browser-like User-Agent
# One template, many products and selling points (the fields can be filled in by qwen3.5-plus).
FRAME = "{product}, {scene}, clean commercial photography, soft daylight, brand colors {colors}, no added text"
def download(url, path):
r = requests.get(url, headers=UA, timeout=300)
r.raise_for_status()
with open(path, "wb") as f:
f.write(r.content)
def key_frame(path, **fields):
image = client.images.generate(model="nano-banana-pro", prompt=FRAME.format(**fields)).data[0]
if image.b64_json:
with open(path, "wb") as f:
f.write(base64.b64decode(image.b64_json))
else:
download(image.url, path) # temporary URL: store the file right away
def video_clips(first_frame_url, motion_prompt):
"""Video generation is an async task: submit, poll, download. One task returns 4 clips."""
submit = requests.post(
SITE + "/mj/submit/video",
headers=HEADERS,
json={"prompt": motion_prompt, "image": first_frame_url, "motion": "low"},
timeout=60,
).json()
if submit.get("code") != 1:
raise RuntimeError(submit.get("description"))
while True:
time.sleep(10)
task = requests.get(f"{SITE}/mj/task/{submit['result']}/fetch", headers=HEADERS, timeout=30).json()
if task.get("status") in ("SUCCESS", "FAILURE"):
break
if task["status"] == "FAILURE":
raise RuntimeError(task.get("failReason"))
return [v["url"] for v in task.get("videoUrls") or []]
key_frame("mug-shot-1.png", product="A white ceramic mug", scene="on a wooden breakfast table", colors="white and teal")
# after a person picks the frame, upload it to your own storage and pass its URL
for i, url in enumerate(video_clips("https://cdn.example.com/mug-shot-1.png", "slow push-in, steam rising from the mug")):
download(url, f"mug-shot-1-clip-{i + 1}.mp4")Try this with one key
Sign up, create an API key in the console, and put your base_url and key into the code above. For company purchasing or invoices, add our WeChat support JsnonoChat.

Scan the code or search the WeChat ID to add us
FAQ
What does one marketing video asset cost?
With this page’s assumptions, one asset is a storyboard, 4 key frames, 2 video tasks (8 candidate clips) and 2 covers: about ¥8.01 on average in the cheapest groups, or about ¥1,602 for 200 assets a month. More regenerations mean a higher bill.
Can one prompt produce a complete ad video?
Video models produce clips, not an edited video. The usual approach is to generate clips shot by shot and cut them together with captions and voice-over in an editing tool. Starting from a key frame gives more control over the picture than text alone.
Why generate key frames before video?
Image models charge per image, usually less than a video task. Settle the picture, product look and composition with images first, then animate the chosen frame; that cuts down on video task retries.
What if a video task fails or is rejected?
When a prompt triggers the model’s content moderation, the submission fails or the task ends with FAILURE; change the prompt and submit again. According to the Midjourney API docs, rejected submissions are not charged and tasks that end in failure are refunded.
Can I use the generated videos and images commercially?
Whether you can, and whether someone else’s trademark, likeness or work is involved, depends on the model provider’s terms and on where your uploaded material came from; confirm this yourself. We do not judge copyright ownership of generated content, and a person should review everything before it is published.
Do the returned video URLs last?
Do not rely on them long-term. Download the videos as soon as the task finishes, store them in your own object storage, then edit and review from there.