跳到正文
土土金API

營銷影片與圖片素材

營銷影片素材一般由三類模型配合:對話模型按產品賣點寫分鏡和提示詞,影像模型生成每個鏡頭的關鍵幀和封面,影片模型以關鍵幀為首幀生成影片片段(每次提交返回 4 段候選),再由人挑選、剪輯、審核後發布。影像和影片模型按次計費,按每月 200 條素材估算,用各模型最低價分組的即時價格計算,模型費用每月約 ¥1,602,平均每條約 ¥8.01。

價格更新於 2026年11月13日 凌晨1:33

月成本估算

假設:每月製作 200 條影片素材;每條寫一份分鏡(輸入約 1,500 tokens、輸出約 1,200 tokens),分 2 個鏡頭,每個鏡頭生成 2 張候選關鍵幀、提交 1 次影片任務(返回 4 段候選),另做 2 張不同尺寸的封面。合計 800 次影像生成、400 次影片任務、400 次影像編輯。

¥1,602/ 月

  • 分鏡與提示詞¥1.95
  • 關鍵幀生成¥320
  • 影片片段生成¥1,120
  • 封面與多尺寸版本¥160
看用量假設

業務問題

短影片平臺和資訊流廣告要的素材越來越多:同一個產品要做不同賣點、不同人群、不同尺寸的版本,還要不斷換新。全靠拍攝和剪輯,成本高、週期長,測試一個新方向往往要等上一兩週。

影片和影像模型能根據文字和參考圖生成畫面和影片片段,適合快速做出多個版本去測試。但生成結果不穩定:同一段提示詞每次出來的畫面都不一樣,產品外觀、文字和 logo 可能走樣,也可能出現不符合廣告規範或侵犯他人權利的內容。

比較穩的做法是把流程拆開:先用模板化的提示詞批次生成關鍵幀,人挑出滿意的畫面,再以它為首幀生成影片片段;所有成片發布前都要人工審核產品細節、文字和版權,確認符合投放平臺和廣告相關的規定。

推薦模型組合

推薦模型按即時目錄自動選取,價格取各模型最低價分組,更新於 2026年11月13日 凌晨1:33。點模型名可檢視全部分組價格。

參考架構

  1. 1

    整理素材與規範

    準備產品實拍圖、賣點和目標人群,以及品牌規範:主色、字型、logo 用法、不能出現的元素和廣告用語的限制。

  2. 2

    寫分鏡和提示詞

    對話模型按模板輸出分鏡:每個鏡頭的畫面描述、鏡頭運動和配文,並填好生圖和生影片提示詞。模板固定下來,批次替換產品和賣點即可。

  3. 3

    生成關鍵幀

    每個鏡頭用影像模型生成 2 到 4 張候選畫面,人挑出產品外觀正確、構圖滿意的一張;需要和實物一致時,用實拍圖做影像編輯,只改背景和氛圍。

  4. 4

    生成影片片段

    把選中的關鍵幀存到自己的儲存,生成可訪問的圖片地址,連同運動描述提交影片任務;輪詢任務狀態,完成後立即下載影片,不要長期引用介面返回的地址。

  5. 5

    剪輯與封面

    從候選片段裡挑出可用的,在剪輯工具裡拼接、加字幕和配音;用影像編輯模型在關鍵幀上加標題,做出不同尺寸的封面。

  6. 6

    審核後發布

    發布前人工檢查產品外觀、價格和文字、logo、人物肖像和版權,確認符合投放平臺的規則和廣告相關法規;平臺要求標註 AI 生成內容的,按要求標註。

成本估算

假設:每月製作 200 條影片素材;每條寫一份分鏡(輸入約 1,500 tokens、輸出約 1,200 tokens),分 2 個鏡頭,每個鏡頭生成 2 張候選關鍵幀、提交 1 次影片任務(返回 4 段候選),另做 2 張不同尺寸的封面。合計 800 次影像生成、400 次影片任務、400 次影像編輯。

專案模型用量假設費用
分鏡與提示詞qwen3.5-plus200 次 × 輸入 1,500 + 輸出 1,200 tokens¥1.95
關鍵幀生成nano-banana-pro800 次¥320
影片片段生成Midjourney Video400 次¥1,120
封面與多尺寸版本nano-banana-pro400 次¥160
合計(每月)¥1,602

按各模型最低價分組的即時價格計算,價格更新於 2026年11月13日 凌晨1:33。

只含模型呼叫費用,不含剪輯、配音、儲存和人工審核成本。影像和影片模型按次計費,表中按最低價分組計算;對結果不滿意重新生成的次數也要算進去,比如每個鏡頭多提交一次影片任務,影片這一項就翻倍。平均每條素材的費用等於合計除以 200。

示例程式碼

按模板生成關鍵幀並儲存;人工選定後把關鍵幀上傳到你自己的儲存,提交影片任務並輪詢,完成後下載全部候選片段。

示例程式碼(Python,關鍵幀 + 影片片段)
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")

用一把 Key 試試這個方案

註冊後在控制台建立 API Key,把上面程式碼裡的 base_url 和 Key 換成你的就能執行。企業採購、開發票可以加客服微信 JsnonoChat。

土土金客服微信二維碼
微信JsnonoChat

掃碼或搜尋微信號新增客服

常見問題

一條營銷影片素材大概多少錢?

按本頁的假設,一條素材包括 1 份分鏡、4 張關鍵幀、2 次影片任務(共 8 段候選)和 2 張封面,用最低價分組計算平均每條約 ¥8.01,每月 200 條合計約 ¥1,602。重新生成的次數越多,費用越高。

能直接用一段文字生成整條廣告影片嗎?

影片模型生成的是一段段片段,不是剪好的成片。常見做法是按鏡頭分別生成片段,再在剪輯工具裡拼接、加字幕和配音。用關鍵幀作首幀,比純文字生成更容易控制畫面。

為什麼要先生成關鍵幀,再生成影片?

影像模型按張計費,單價一般比影片任務低。先用圖片把畫面、產品外觀和構圖挑好,再把選中的畫面作為首幀生成影片,可以減少影片任務的重試次數。

影片任務失敗或被拒絕怎麼辦?

提示詞觸發模型的內容審核時,提交會失敗或任務以 FAILURE 結束,修改提示詞後再提交。按 Midjourney 介面文件的說明,提交被拒絕不扣費,任務最終失敗會退回。

生成的影片和圖片可以商用嗎?

能否商用、是否涉及他人的商標、肖像或作品,需要結合模型提供方的使用條款和你上傳素材的來源自行確認。我們不對生成內容的版權歸屬做判斷,發布前請人工審核。

返回的影片地址能一直用嗎?

不建議長期引用。任務完成後立即下載影片,存到你自己的物件儲存,再進入剪輯和審核流程。