Claude Opus 5.5 已在 SeedRouter 上線

如何用 Claude Opus 5.5 和 Seedance 2.5 製作 AI 短片

讓 Claude Opus 5.5 當導演:它寫分鏡和提示詞,GPT Image 2.5 畫角色設定圖,Seedance 2.5 逐個鏡頭生成有聲音的影片,一把 API Key 跑完整個流程。

以 Markdown 閱讀

用 Claude Opus 5.5 和 Seedance 2.5 做短片,做法是讓 Opus 當導演,畫圖和拍攝交給另外兩個模型。你給 Opus 一個故事點子,它寫出固定的角色描述、一段角色設定圖提示詞,以及每個鏡頭的影片提示詞。GPT Image 2.5 把這些提示詞畫成角色設定圖和首影格。Seedance 2.5 以這些圖片為參考,逐個鏡頭生成有對白和聲音的影片。最後把各個鏡頭串成一個檔案。三個模型在 SeedRouter 上用同一把 API Key 呼叫。下文所有請求都依照 SeedRouter 的 API 文件撰寫,核對於 2026 年 9 月 30 日。

Claude Opus 5.5 + Seedance 2.5 的工作流程是怎樣的?

這個做法來自一位創作者 2026 年 9 月在 r/Seedance_AI 分享的工作流程(原文):「我一條提示詞都沒有手寫。我給了 Opus 5.5 一個核心概念,外加幾張我想要的風格參考截圖。」Opus 寫出了角色設定圖、首影格、運鏡、對白節奏和聲音的提示詞;GPT Image 2.5 畫出角色設定圖和首影格;Seedance 2.5 生成各個鏡頭。

每個模型只負責一件事:

步驟模型輸入輸出
1. 規劃Claude Opus 5.5故事點子,可選風格參考圖角色描述、設定圖提示詞,以及每個鏡頭的首影格提示詞和影片提示詞
2. 設計GPT Image 2.5設定圖提示詞,再以設定圖為參考生成各鏡頭首影格角色設定圖和首影格(圖片 URL)
3. 拍攝Seedance 2.5影片提示詞,加上作為參考圖片的設定圖和首影格每個鏡頭一段有聲音的影片
4. 剪輯ffmpeg 或任何剪輯軟體各鏡頭檔案完整短片

各步驟之間靠 URL 銜接。GPT Image 2.5 回傳的圖片託管在 SeedRouter 的儲存空間,而 Seedance 2.5 的參考圖片只收公開 URL,所以第 2 步的輸出可以直接用在第 3 步,不需要下載再上傳。

開始之前需要準備什麼?

  • SeedRouter API Key,寫進環境變數:
export SEEDROUTER_API_KEY="your-key"
  • Python 3,並安裝 requests 和 Anthropic SDK:pip install requests anthropic。
  • ffmpeg,最後用來串接鏡頭。
  • 額度。 每次呼叫都是一次付費請求。失敗的任務不收費,新帳戶附帶少量免費額度。

下面所有 Python 程式片段都共用這兩行:

import os
import requests

HEADERS = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}

第 1 步:如何讓 Claude Opus 5.5 規劃分鏡?

給 Opus 一段系統提示詞,說明 Seedance 2.5 如何解讀提示詞,並要求它以 JSON 回傳規劃,方便程式直接使用。這段系統提示詞裡的規則來自字節跳動官方的 Seedance 提示詞指南,整理在 Seedance 2.5 提示詞指南 裡:主體和動作放在最前面,每個鏡頭只用一種運鏡,較長的鏡頭按時間段拆開,參考素材按編號稱呼。

import json
import anthropic

client = anthropic.Anthropic(
    api_key=os.environ["SEEDROUTER_API_KEY"],
    base_url="https://api.seedrouter.ai",
)

DIRECTOR = """You are the director of a short film made with AI models.
Return only JSON, no other text, in this shape:
{"character": "...", "sheet_prompt": "...",
 "shots": [{"duration": 5, "frame_prompt": "...", "video_prompt": "..."}]}

character: one fixed paragraph describing the main character's face, hair,
build and clothes. Repeat it word for word inside every other prompt.

sheet_prompt: an image prompt for one character reference sheet: a front,
three-quarter, profile and back view, plus four facial expressions, on a plain
light background, with no text other than small panel labels.

shots: 3 to 5 shots, each 4 to 15 seconds.
frame_prompt: an image prompt for the first frame of the shot.
video_prompt: a video prompt for Seedance 2.5. Write it in this order: subject
and action, scene, visual style, camera, audio. Image 1 is the character sheet
and Image 2 is the start frame of the shot; refer to them by those names.
Use one camera move per shot. Say who is holding the camera and how they move.
For shots longer than 5 seconds, split the action into time ranges such as
0-3s. Put dialogue in quotes as: Character's line (emotion): content.
Describe the ambient sound. Do not ask for subtitles or on-screen text.

The character must not look like a real, identifiable person. Use a stylized
look, such as a 3D animated or illustrated character."""

message = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=16000,
    system=DIRECTOR,
    messages=[{
        "role": "user",
        "content": "A lighthouse keeper finds a lost robot on the rocks during a storm and teaches it to wave at passing ships.",
    }],
)
text = "".join(block.text for block in message.content if block.type == "text")
plan = json.loads(text)

有幾個細節要注意:

  • max_tokens 包含思考部分。 Opus 5.5 一律使用自適應思考,Opus 5.5 API 文件 把思考 token 計入 max_tokens。要留足空間,否則 JSON 可能被截斷。
  • 不要傳 temperature、top_p、top_k,也不要預先填入 assistant 回覆。 取樣參數不是預設值、或預先填入回覆,Opus 5.5 都會回傳 400 錯誤。想控制思考深度,改用 output_config.effort。
  • 「誰拿著攝影機」是原文裡的技巧。 作者說,告訴 Opus「我朋友在後座拍」之後,它會自動寫出細微的手持晃動、構圖反應慢半拍、自動對焦來回找焦,並表示「正是這一個情境細節去掉了『AI 感』」。
  • 風格參考圖是選用的。 Opus 能讀圖,你可以在 user 訊息裡加入 image 區塊(URL 來源),放上想要的畫面風格截圖。

如果 json.loads 出錯,把 text 印出來,再讓 Opus 重寫一次。在生成任何畫面之前先讀一遍規劃,也是修改故事成本最低的時機:在這裡改只花一次文字請求,生成影片之後再改就要花影片的錢。

第 2 步:如何用 GPT Image 2.5 生成角色設定圖和首影格?

先把 plan["sheet_prompt"] 送給 GPT Image 2.5。接著把每個鏡頭的 frame_prompt 連同設定圖一起作為參考圖片送出,這樣每張首影格裡都是同一個角色。圖片任務提交到 /v1/images/generations,從 /v1/tasks/{id} 讀取結果:

import time

def image(prompt, size, refs=()):
    body = {"model": "gpt-image-2.5-flare", "prompt": prompt, "size": size, "quality": "high"}
    if refs:
        body["images"] = [{"image_url": url} for url in refs]
    task_id = requests.post(
        "https://api.seedrouter.ai/v1/images/generations",
        headers=HEADERS, json=body, timeout=60,
    ).json()["id"]
    while True:
        task = requests.get(
            f"https://api.seedrouter.ai/v1/tasks/{task_id}", headers=HEADERS, timeout=30,
        ).json()
        if task["status"] == "completed":
            return task["output"]["data"][0]["url"]
        if task["status"] == "failed":
            raise RuntimeError(task["error"]["message"])
        time.sleep(3)

sheet = image(plan["sheet_prompt"], "1536x1024")
frames = [image(shot["frame_prompt"], "1792x1008", [sheet]) for shot in plan["shots"]]

這樣設定的原因:

  • 1792x1008 就是 16:9。 GPT Image 2.5 的 size 格式是 WIDTHxHEIGHT,兩條邊都必須是 16 的倍數,所以 16:9 的畫面要寫出實際像素;16:9 不是有效的 size。它要和你之後給 Seedance 的 ratio 一致。
  • 大多數設定圖用 Flare 就夠了。 Sunburst 在多次編輯中控制更精準,但速度較慢;什麼時候值得用它,請看 GPT Image 2.5 Flare 與 Sunburst 比較。
  • 打草稿時用低一點的 quality。 角色還在反覆修改時,low 或 medium 出圖更快。確定要拿去拍攝的圖再換成 high。

為了精簡,上面的函式輪詢時沒有設截止時間。在你自己的程式裡,加上時間上限並保存任務 ID,這樣中斷後可以繼續查詢同一個任務,而不是重新付費提交。

第 3 步:如何用 Seedance 2.5 逐個生成鏡頭?

把每個 video_prompt 送給 Seedance 2.5,並附上兩張參考圖片:角色設定圖作為 Image 1,該鏡頭的首影格作為 Image 2,順序不能錯,因為 Seedance 依附加順序為參考檔案編號。影片任務使用獨立的端點 /v1/contents/generations/tasks,完成時狀態為 status: "succeeded":

def shot(prompt, refs, duration):
    content = [{"type": "text", "text": prompt}]
    for url in refs:
        content.append({"type": "image_url", "image_url": {"url": url}, "role": "reference_image"})
    task_id = requests.post(
        "https://api.seedrouter.ai/v1/contents/generations/tasks",
        headers=HEADERS,
        json={
            "model": "dreamina-seedance-2-5",
            "content": content,
            "resolution": "480p",
            "ratio": "16:9",
            "duration": duration,
            "generate_audio": True,
        },
        timeout=60,
    ).json()["id"]
    while True:
        task = requests.get(
            f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
            headers=HEADERS, timeout=30,
        ).json()
        if task["status"] == "succeeded":
            return task["content"]["video_url"]
        if task["status"] in ("failed", "expired"):
            raise RuntimeError(task["error"]["message"])
        time.sleep(15)

videos = [shot(s["video_prompt"], [sheet, frame], s["duration"]) for s, frame in zip(plan["shots"], frames)]

請求參數的考量:

  • 用參考圖片,而不是首影格。 Seedance 2.5 也可以把鏡頭鎖定到精確的首影格(role: "first_frame"),但 Seedance 2.5 API 文件 寫明首影格模式「不能與參考素材同時使用」,那樣就用不到角色設定圖了。兩張圖都作為 reference_image 時,由提示詞告訴 Seedance「Image 2 是首影格」。開場會緊貼這張圖,但不會逐像素一致。
  • 草稿用 480p。 先把每個鏡頭都用 480p 生成一遍,修正效果不好的提示詞,再用同樣的提示詞以 720p 或 1080p 算出定稿。
  • generate_audio: true 會依提示詞生成對白、環境音和音效,與畫面一起生成。
  • 固定 ratio。 所有鏡頭的比例和解析度一致,ffmpeg 串接時就不需要重新編碼。

一個鏡頭可以是 4 到 30 秒;只要提示詞為每次切鏡寫明時間段,單一任務裡也可以包含多次切鏡。例如原文作者的第二場戲,就在 10 秒內依鼓點剪了六個鏡頭。

如何讓每個鏡頭裡的角色保持一致?

一致性靠重複:提示詞裡重複,參考圖片也重複。

  • 重複同一段描述。 第 1 步生成的 character 段落要一字不差地放進每條圖片和影片提示詞。對同一個角色寫兩種不同的描述,是模型讓角色走樣或出現重複角色的原因之一。
  • 每個鏡頭都送同一張設定圖。 設定圖永遠是 Image 1。Seedance 2.5 支援多視角設定圖;舊版 Seedance 2.0 可能把多角度設定圖當成好幾個人,提示詞指南 建議給它每個角色一張臉部特寫加一張全身圖。
  • 每次用同樣的方式稱呼角色,例如「Image 1 裡的燈塔看守人」,不要依賴圖片裡寫的名字。
  • 所有鏡頭保持同一個聲音。 Seedance 2.5 最多接受 10 段參考音訊(WAV 或 MP3,2 到 30 秒)。在每個鏡頭裡附上同一段聲音,並在文字中綁定,寫法參照字節跳動官方範例:「Image 1 是主角 John,使用 Audio 1 的音色。」

如果兩個鏡頭必須無縫銜接,還有第二種做法:在第一個鏡頭設定 "return_last_frame": true,再把回傳的 content.last_frame_url 作為下一個鏡頭的 first_frame。這樣銜接處會被鎖定,但下一個鏡頭就不能再用角色設定圖,所以它適合同一場戲裡連續的動作,不適合每次切鏡都用。

可以用真人照片當角色嗎?

不可以。Seedance 2.5 不接受含有真人臉孔的參考圖片或參考影片,帶有真人臉孔的任務會失敗,且不收費。Seedance 真人錯誤 解釋了字節跳動的規則,以及它在自家平台上提供的替代方案。

這同樣影響寫實風格的 AI 角色。原文拍的是一位照片級寫實的女性,但字節跳動的文件沒有說明其臉孔偵測如何看待其他模型畫出的寫實臉孔。選用風格化角色,例如上面系統提示詞要求的 3D 動畫或插畫風格,就能避開這個不確定因素。如果你想要寫實風格,先用 480p 試一個短鏡頭,再決定要不要圍繞它規劃整部短片。

如何把鏡頭串接成一部短片?

依序下載影片,把檔名寫進一個文字檔,再用 ffmpeg 串接:

names = []
for index, url in enumerate(videos):
    name = f"shot-{index + 1}.mp4"
    with open(name, "wb") as file:
        file.write(requests.get(url, timeout=300).content)
    names.append(name)
with open("shots.txt", "w") as file:
    file.writelines(f"file '{name}'\n" for name in names)
ffmpeg -f concat -safe 0 -i shots.txt -c copy film.mp4

-c copy 串接時不重新編碼,之所以可行,是因為每個鏡頭的解析度、比例和格式都相同。如果設定不一致,拿掉 -c copy,讓 ffmpeg 重新編碼。影片 URL 託管在 SeedRouter 的儲存空間,想長期保存的檔案請下載下來。

用 Seedance 2.5 做一部短片要花多少錢?

每個模型依各自的單位計費,目前價格請看各模型頁面:

  • Claude Opus 5.5 依輸入和輸出 token 計費,包含思考部分。規劃一部短片只需要一次或幾次請求。價格。
  • GPT Image 2.5 的 Flare 和 Sunburst 按每張交付的圖片固定計價。一部短片通常是一張設定圖加上每個鏡頭一張首影格,共四到六張。價格。
  • Seedance 2.5 按影片 token 計費:輸出秒數 × 寬 × 高 × 24 ÷ 1024。16:9 畫面每秒在 480p 下是 9,607.5 個 token,720p 是 21,600 個,1080p 是 48,600 個,且 1080p 有單獨的費率。價格。

大部分費用花在影片上。480p 草稿用的 token 不到 720p 的一半,所以先用 480p 調好提示詞、只在定稿時用更高解析度算圖,是最省錢的做法。更多計算範例請看 Seedance API 價格。

常見問題

Claude Opus 5.5 能自己生成影片嗎?

不能。Opus 5.5 是文字模型:它能讀圖,但不能生成圖片或影片。在這個工作流程裡它負責寫提示詞,畫面和影片由 GPT Image 2.5 和 Seedance 2.5 生成。

可以用 Claude Fable 5.1 取代 Opus 5.5 嗎?

可以。Fable 5.1 接受同樣的 Messages 請求,把 model 改成 claude-fable-5-1 即可。三者的比較請看 Claude Fable 5.1 vs Fable 5 vs Opus 5.5。

用 Seedance 2.5 做的短片最長可以多長?

單一 Seedance 2.5 任務可以生成 4 到 30 秒,或用 duration: -1 讓模型自己決定長度。更長的短片由多個鏡頭串接而成,所以總長度沒有固定上限。

為什麼角色在不同鏡頭之間變樣了?

通常是因為各條提示詞對角色的描述不一致、部分鏡頭漏了設定圖,或是參考檔案的附加順序和提示詞裡的編號對不上。檢查每條影片提示詞是否都包含同一段角色描述,以及設定圖是否一直是第一張圖。

這個工作流程可以用 Seedance 2.0 嗎?

可以,請求結構相同,換成它自己的模型 ID 即可。關於角色設定圖,請給 Seedance 2.0 分開的臉部圖和全身圖,不要用一張多視角設定圖。其他差異請看 Seedance 2.5 與 2.0 比較。

做你的第一部 AI 短片

從一個三鏡頭的故事開始,先用 480p 生成並檢查每個鏡頭,再用更高解析度算出最終版本。Seedance 2.5 頁面 有目前價格和可以測試單一鏡頭的 Playground,完整的請求參數請看 Seedance 2.5 API 文件、GPT Image 2.5 API 文件 和 Claude Opus 5.5 API 文件。

相關指南