Claude Opus 5.5 jest już dostępny w SeedRouter

Jak zrobić film krótkometrażowy z Claude Opus 5.5 i Seedance 2.5

Niech Claude Opus 5.5 będzie reżyserem: pisze listę ujęć i prompty, GPT Image 2.5 rysuje postać, a Seedance 2.5 generuje każde ujęcie z dźwiękiem.

Czytaj jako Markdown

Żeby zrobić krótki film z Claude Opus 5.5 i Seedance 2.5, oddaj reżyserię Opusowi, a rysowanie i filmowanie powierz dwóm pozostałym modelom. Dajesz Opusowi jeden pomysł na historię; pisze on stały opis postaci, prompt do karty postaci i jeden prompt wideo na każde ujęcie. GPT Image 2.5 zamienia te prompty w kartę postaci i klatki startowe. Seedance 2.5 generuje każde ujęcie z dialogami i dźwiękiem, używając tych obrazów jako referencji. Na koniec łączysz ujęcia w jeden plik. Wszystkie trzy modele działają w SeedRouter z tym samym kluczem API. Każde żądanie poniżej jest zgodne z dokumentacją API SeedRouter, sprawdzoną 30 września 2026 roku.

Jak działa workflow z Claude Opus 5.5 i Seedance 2.5?

Pomysł pochodzi z workflow, którym twórca podzielił się na r/Seedance_AI we wrześniu 2026 roku (oryginalny post): „Nie napisałem ręcznie ani jednego promptu. Dałem Opusowi 5.5 jeden główny koncept i kilka zrzutów ekranu z referencjami stylu, którego chciałem”. Opus napisał prompty do karty postaci, klatek startowych, ruchów kamery, tempa dialogów i dźwięku; GPT Image 2.5 narysował kartę postaci i klatkę startową; Seedance 2.5 wygenerował ujęcia.

Każdy model ma jedno zadanie:

KrokModelWejścieWyjście
1. PlanClaude Opus 5.5Pomysł na historię, opcjonalne obrazy styluOpis postaci, prompt karty, dla każdego ujęcia prompt klatki startowej i prompt wideo
2. ProjektGPT Image 2.5Prompt karty, potem prompty klatek startowych z kartą jako referencjąKarta postaci i klatki startowe jako adresy URL obrazów
3. ZdjęciaSeedance 2.5Prompt wideo oraz karta i klatka startowa jako obrazy referencyjneJedno wideo z dźwiękiem na ujęcie
4. Montażffmpeg lub dowolny edytorPliki ujęćGotowy film

Kroki łączą się przez adresy URL. GPT Image 2.5 zwraca obrazy przechowywane w magazynie SeedRouter, a Seedance 2.5 przyjmuje obrazy referencyjne jako publiczne adresy URL, więc wynik kroku 2 trafia prosto do kroku 3 bez pobierania i ponownego wysyłania.

Czego potrzebujesz, zanim zaczniesz?

  • Klucza API SeedRouter w zmiennej środowiskowej:
export SEEDROUTER_API_KEY="your-key"
  • Pythona 3 z requests i Anthropic SDK: pip install requests anthropic.
  • ffmpeg do połączenia ujęć na końcu.
  • Środków na koncie. Każde wywołanie to płatne żądanie. Nieudane zadania nie są naliczane, a nowe konta zaczynają z niewielkim darmowym saldem.

Wszystkie fragmenty kodu w Pythonie poniżej używają tych dwóch linii:

import os
import requests

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

Krok 1: jak sprawić, żeby Claude Opus 5.5 zaplanował ujęcia?

Daj Opusowi prompt systemowy, który wyjaśnia, jak Seedance 2.5 czyta prompt, i poproś o plan w formacie JSON, żeby twój skrypt mógł go użyć. Zasady w tym prompcie systemowym pochodzą z oficjalnych poradników ByteDance do promptów Seedance, streszczonych w poradniku promptów Seedance 2.5: najpierw podmiot i akcja, jeden ruch kamery na ujęcie, przedziały czasowe dla dłuższych ujęć, pliki referencyjne nazywane numerami.

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)

Kilka szczegółów ma znaczenie:

  • max_tokens obejmuje rozumowanie. Opus 5.5 zawsze używa adaptacyjnego rozumowania, a dokumentacja API Opus 5.5 wlicza tokeny rozumowania do max_tokens. Zostaw zapas, inaczej JSON może zostać ucięty.
  • Nie wysyłaj temperature, top_p ani top_k i nie wypełniaj z góry tury asystenta. Opus 5.5 zwraca błąd 400 dla wartości próbkowania innych niż domyślne i dla wstępnie wypełnionej odpowiedzi. Żeby sterować tym, jak intensywnie model rozumuje, użyj output_config.effort.
  • „Kto trzyma kamerę” to wskazówka z oryginalnego postu. Autor pisze, że po informacji „mój przyjaciel filmuje z tylnego siedzenia” Opus sam dopisał drobne drgania kamery, spóźnione kadrowanie i szukający ostrości autofokus, a „ten jeden szczegół kontekstu usuwa »wygląd AI«”.
  • Referencje stylu są opcjonalne. Opus czyta obrazy, więc możesz dodać zrzuty ekranu pożądanego wyglądu jako bloki image ze źródłem URL w turze użytkownika.

Jeśli json.loads zwróci błąd, wypisz text i poproś Opusa jeszcze raz. Przeczytanie planu przed wygenerowaniem czegokolwiek to też najtańszy moment na poprawienie historii: zmiana tutaj kosztuje jedno żądanie tekstowe, a zmiana po renderze kosztuje wideo.

Krok 2: jak zrobić kartę postaci i klatki startowe w GPT Image 2.5?

Najpierw wyślij plan["sheet_prompt"] do GPT Image 2.5. Potem wyślij frame_prompt każdego ujęcia z kartą jako obrazem referencyjnym, żeby na każdej klatce startowej była ta sama postać. Zadania obrazów wysyła się do /v1/images/generations, a wynik odczytuje z /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"]]

Dlaczego takie ustawienia:

  • 1792x1008 to 16:9. GPT Image 2.5 przyjmuje size w formacie WIDTHxHEIGHT, z oboma bokami podzielnymi przez 16, więc klatkę 16:9 trzeba zapisać w pikselach; 16:9 nie jest poprawną wartością size. Dopasuj ją do ratio, o które poprosisz Seedance.
  • Do większości kart wystarczy Flare. Sunburst daje dokładniejszą kontrolę między kolejnymi edycjami i jest wolniejszy; kiedy się opłaca, wyjaśnia GPT Image 2.5 Flare vs Sunburst.
  • Szkice rób z niższym quality. Dopóki zmieniasz postać, low lub medium generują szybciej. Przełącz na high dla obrazów, z którymi będziesz kręcić.

Żeby były krótkie, powyższe funkcje odpytują zadanie bez limitu czasu. We własnym kodzie dodaj limit czasu i zachowaj ID zadania, żeby przerwane uruchomienie mogło ponownie sprawdzić to samo zadanie zamiast płacić za nowe.

Krok 3: jak wygenerować każde ujęcie w Seedance 2.5?

Wyślij każdy video_prompt do Seedance 2.5 z dwoma obrazami referencyjnymi: kartą postaci jako Image 1 i klatką startową ujęcia jako Image 2, w tej kolejności, bo Seedance numeruje pliki referencyjne w kolejności dołączania. Zadania wideo mają własny endpoint, /v1/contents/generations/tasks, i kończą się ze 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)]

Wybory w żądaniu:

  • Obrazy referencyjne zamiast pierwszej klatki. Seedance 2.5 może też przypiąć ujęcie do dokładnej pierwszej klatki (role: "first_frame"), ale dokumentacja API Seedance 2.5 mówi, że trybów pierwszej klatki „nie można łączyć z elementami referencyjnymi”, więc straciłbyś kartę postaci. Gdy oba obrazy są reference_image, to prompt mówi Seedance, że Image 2 jest klatką startową. Początek ujęcia trzyma się jej blisko, ale nie co do piksela.
  • 480p na szkice. Najpierw wygeneruj każde ujęcie w 480p, popraw prompty, które nie zadziałały, a potem wyrenderuj udane ujęcia w 720p lub 1080p z tym samym promptem.
  • generate_audio: true daje dialogi, dźwięki otoczenia i efekty z promptu, generowane razem z obrazem.
  • Stałe ratio. Jeśli wszystkie ujęcia mają te same proporcje i rozdzielczość, ffmpeg połączy je bez ponownego kodowania.

Ujęcie może trwać od 4 do 30 sekund, a jedno zadanie może zawierać kilka cięć, jeśli prompt nada każdemu przedział czasowy. Druga scena twórcy zmieściła na przykład sześć ujęć ciętych w rytm uderzeń perkusji w 10 sekundach.

Jak utrzymać tę samą postać w każdym ujęciu?

Spójność bierze się z powtarzania, zarówno w prompcie, jak i w referencjach:

  • Powtarzaj ten sam opis. Akapit character z kroku 1 trafia słowo w słowo do każdego promptu obrazu i wideo. Dwa różne opisy tej samej osoby to jeden z powodów, dla których model zmienia lub podwaja postać.
  • Wysyłaj tę samą kartę do każdego ujęcia. Karta to zawsze Image 1. Seedance 2.5 przyjmuje karty z wieloma widokami; starszy Seedance 2.0 może odczytać kartę z wieloma kątami jako kilka osób, a poradnik promptów zaleca dla niego zbliżenie twarzy i obraz całej sylwetki dla każdej postaci.
  • Nazywaj postać za każdym razem tak samo, na przykład „latarnik z Image 1”, i nie polegaj na imieniu wpisanym w obraz.
  • Zachowaj jeden głos we wszystkich ujęciach. Seedance 2.5 przyjmuje do 10 referencji audio (WAV lub MP3, od 2 do 30 sekund). Dołącz ten sam klip głosowy do każdego ujęcia i powiąż go w tekście, jak w przykładzie ByteDance: „Image 1 przedstawia bohatera Johna i używa barwy głosu z Audio 1”.

Dla dwóch ujęć, które muszą się łączyć bez widocznego skoku, jest druga opcja: ustaw "return_last_frame": true w pierwszym ujęciu i wyślij zwrócony content.last_frame_url jako first_frame następnego. To blokuje przejście, ale następne ujęcie nie może użyć karty postaci, więc stosuj to do ciągłej akcji w obrębie jednej sceny, a nie przy każdym cięciu.

Czy można użyć zdjęcia prawdziwej osoby jako postaci?

Nie. Seedance 2.5 nie przyjmuje obrazów ani filmów referencyjnych z prawdziwymi ludzkimi twarzami, a zadanie z nimi kończy się błędem bez naliczenia opłaty. Artykuł o błędzie „real person” w Seedance wyjaśnia zasadę ByteDance i opcje, które ByteDance oferuje na własnej platformie.

Dotyczy to też realistycznych postaci AI. Oryginalny post pokazywał fotorealistyczną kobietę, ale dokumentacja ByteDance nie mówi, jak kontrola twarzy traktuje realistyczne twarze narysowane przez inny model. Stylizowana postać, na przykład w stylu animacji 3D lub ilustracji, którego wymaga powyższy prompt systemowy, omija ten problem. Jeśli chcesz fotorealistycznego wyglądu, najpierw przetestuj jedno krótkie ujęcie w 480p, zanim zaplanujesz wokół niego cały film.

Jak połączyć ujęcia w jeden film?

Pobierz filmy po kolei, wypisz je w pliku tekstowym i połącz za pomocą 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 łączy pliki bez ponownego kodowania, co działa, bo każde ujęcie ma tę samą rozdzielczość, proporcje i format. Jeśli ustawienia się różnią, usuń -c copy i pozwól ffmpeg zakodować pliki ponownie. Adresy URL filmów są przechowywane w magazynie SeedRouter, więc pobierz pliki, które chcesz zachować.

Ile kosztuje krótki film z Seedance 2.5?

Każdy model rozlicza się we własnej jednostce, a aktualne stawki są na stronie każdego modelu:

  • Claude Opus 5.5 nalicza tokeny wejściowe i wyjściowe, wliczając rozumowanie. Zaplanowanie filmu to jedno lub kilka żądań. Cennik.
  • GPT Image 2.5 Flare i Sunburst pobierają stałą cenę za każdy dostarczony obraz. Karta plus klatka startowa na ujęcie to przy krótkim filmie od czterech do sześciu obrazów. Cennik.
  • Seedance 2.5 nalicza tokeny wideo: sekundy wyjściowe × szerokość × wysokość × 24 ÷ 1024. Jedna sekunda wideo 16:9 to 9607,5 tokena w 480p, 21 600 w 720p i 48 600 w 1080p, a 1080p ma własną stawkę. Cennik.

Większość kosztów to wideo. Szkic w 480p zużywa mniej niż połowę tokenów 720p, więc największą oszczędnością jest poprawianie promptów w 480p i renderowanie tylko wersji finalnej w wyższej rozdzielczości. Więcej przykładów wyliczeń jest w artykule o cenach API Seedance.

Najczęściej zadawane pytania

Czy Claude Opus 5.5 może sam stworzyć wideo?

Nie. Opus 5.5 to model tekstowy: czyta obrazy, ale nie generuje ani obrazów, ani wideo. W tym workflow pisze prompty, a obrazy i materiał filmowy tworzą GPT Image 2.5 i Seedance 2.5.

Czy mogę użyć Claude Fable 5.1 zamiast Opus 5.5?

Tak. Fable 5.1 przyjmuje to samo żądanie Messages, więc zmień model na claude-fable-5-1. Claude Fable 5.1 vs Fable 5 vs Opus 5.5 porównuje te trzy modele.

Jak długi może być krótki film z Seedance 2.5?

Jedno zadanie Seedance 2.5 generuje od 4 do 30 sekund albo pozwala modelowi wybrać długość przez duration: -1. Dłuższy film składa się z kilku połączonych ujęć, więc jego długość nie ma stałego limitu.

Dlaczego postać zmienia się między ujęciami?

Zwykle dlatego, że prompty opisują ją inaczej, w niektórych ujęciach brakuje karty albo pliki referencyjne są dołączone w innej kolejności niż numeracja w prompcie. Sprawdź, czy każdy prompt wideo zawiera ten sam akapit o postaci i czy karta jest zawsze pierwszym obrazem.

Czy mogę użyć Seedance 2.0 w tym workflow?

Tak, z tą samą strukturą żądania i jego własnym ID modelu. Dla postaci daj Seedance 2.0 osobne obrazy twarzy i całej sylwetki zamiast jednej karty z wieloma widokami. Seedance 2.5 vs 2.0 wymienia pozostałe różnice.

Zrób swój pierwszy krótki film

Zacznij od historii z trzech ujęć w 480p, sprawdź ujęcia, a potem wyrenderuj wersję finalną w wyższej rozdzielczości. Na stronie Seedance 2.5 są aktualne stawki i Playground do przetestowania pojedynczego ujęcia, a pełna dokumentacja żądań jest w dokumentacji API Seedance 2.5, dokumentacji API GPT Image 2.5 i dokumentacji API Claude Opus 5.5.

Powiązane poradniki