Come fare un cortometraggio con Claude Opus 5.5 e Seedance 2.5
Usa Claude Opus 5.5 come regista: scrive il piano delle inquadrature e i prompt, GPT Image 2.5 disegna il personaggio, Seedance 2.5 genera ogni inquadratura.
Leggi in MarkdownPer fare un cortometraggio con Claude Opus 5.5 e Seedance 2.5, lascia la regia a Opus e affida disegno e riprese agli altri due modelli. Dai a Opus un'idea di storia; lui scrive una descrizione fissa del personaggio, un prompt per la scheda del personaggio e un prompt video per ogni inquadratura. GPT Image 2.5 trasforma quei prompt in una scheda del personaggio e nei fotogrammi iniziali. Seedance 2.5 genera ogni inquadratura, con dialoghi e audio, usando quelle immagini come riferimento. Alla fine unisci le inquadrature in un unico file. Tutti e tre i modelli funzionano su SeedRouter con la stessa chiave API. Ogni richiesta qui sotto segue i riferimenti API di SeedRouter, verificati il 30 settembre 2026.
Come funziona il workflow con Claude Opus 5.5 e Seedance 2.5?
L'idea nasce da un workflow condiviso da un creator su r/Seedance_AI a settembre 2026 (il post originale): «Non ho scritto a mano nemmeno un prompt. Ho dato a Opus 5.5 un concetto di base e qualche screenshot di riferimento per lo stile che volevo». Opus ha scritto i prompt per la scheda del personaggio, i fotogrammi iniziali, i movimenti di camera, i tempi dei dialoghi e l'audio; GPT Image 2.5 ha disegnato la scheda del personaggio e il fotogramma iniziale; Seedance 2.5 ha generato le inquadrature.
Ogni modello fa un solo lavoro:
| Fase | Modello | Input | Output |
|---|---|---|---|
| 1. Pianificare | Claude Opus 5.5 | Idea di storia, immagini di stile facoltative | Descrizione del personaggio, prompt della scheda, un prompt per il fotogramma iniziale e uno video per ogni inquadratura |
| 2. Progettare | GPT Image 2.5 | Prompt della scheda, poi prompt dei fotogrammi con la scheda come riferimento | Scheda del personaggio e fotogrammi iniziali, come URL di immagini |
| 3. Girare | Seedance 2.5 | Prompt video più scheda e fotogramma iniziale come immagini di riferimento | Un video con audio per inquadratura |
| 4. Montare | ffmpeg o qualsiasi editor | I file delle inquadrature | Il film finito |
Le fasi sono collegate tramite URL. GPT Image 2.5 restituisce immagini ospitate sullo storage di SeedRouter, e Seedance 2.5 accetta le immagini di riferimento come URL pubblici: l'output della fase 2 passa quindi direttamente alla fase 3, senza download né upload.
Cosa ti serve prima di iniziare?
- Una chiave API SeedRouter nel tuo ambiente:
export SEEDROUTER_API_KEY="your-key"- Python 3 con
requestse l'SDK di Anthropic:pip install requests anthropic. - ffmpeg per unire le inquadrature alla fine.
- Credito. Ogni chiamata è una richiesta a pagamento. Le attività non riuscite non vengono addebitate, e i nuovi account partono con un piccolo saldo gratuito.
Tutti gli snippet Python qui sotto condividono queste due righe:
import os
import requests
HEADERS = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}Fase 1: come fai pianificare le inquadrature a Claude Opus 5.5?
Dai a Opus un prompt di sistema che spieghi come Seedance 2.5 legge un prompt, e chiedi il piano in JSON così che il tuo script possa usarlo. Le regole di questo prompt di sistema vengono dalle guide ufficiali ai prompt di Seedance di ByteDance, riassunte nella guida ai prompt di Seedance 2.5: prima soggetto e azione, un solo movimento di camera per inquadratura, intervalli di tempo per le inquadrature più lunghe, file di riferimento indicati per numero.
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)Alcuni dettagli contano:
max_tokensinclude il ragionamento. Opus 5.5 usa sempre il ragionamento adattivo, e il riferimento API di Opus 5.5 conta i token di ragionamento dentromax_tokens. Lascia margine, altrimenti il JSON può risultare troncato.- Non inviare
temperature,top_pnétop_k, e non precompilare un turno dell'assistente. Opus 5.5 restituisce un errore 400 per valori di campionamento diversi da quelli predefiniti e per una risposta precompilata. Per regolare quanto ragiona, usa inveceoutput_config.effort. - «Chi tiene la camera» è il trucco del post originale. L'autore racconta che, dicendo a Opus «il mio amico sta filmando dal sedile posteriore», il modello ha scritto da sé micro-tremolii della camera, reinquadrature in ritardo e un autofocus che cerca, e che «quel solo dettaglio di contesto è ciò che toglie l'“effetto IA”».
- I riferimenti di stile sono facoltativi. Opus legge le immagini, quindi puoi aggiungere screenshot del look che vuoi come blocchi
imagecon sorgente URL nel turno dell'utente.
Se json.loads fallisce, stampa text e chiedi di nuovo a Opus. Leggere il piano prima di generare qualsiasi cosa è anche il momento più economico per sistemare la storia: una modifica qui costa una richiesta di testo, una modifica dopo il rendering costa video.
Fase 2: come crei la scheda del personaggio e i fotogrammi iniziali con GPT Image 2.5?
Invia prima plan["sheet_prompt"] a GPT Image 2.5. Poi invia il frame_prompt di ogni inquadratura con la scheda come immagine di riferimento, così ogni fotogramma iniziale mostra lo stesso personaggio. Le attività di immagine si inviano a /v1/images/generations e si leggono da /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"]]Perché queste impostazioni:
1792x1008è 16:9. GPT Image 2.5 accettasizecomeWIDTHxHEIGHT, con entrambi i lati multipli di 16, quindi un fotogramma 16:9 va scritto in pixel;16:9non è unsizevalido. Fallo corrispondere alratioche chiederai a Seedance.- Flare basta per la maggior parte delle schede. Sunburst offre un controllo più preciso tra una modifica e l'altra ed è più lento; GPT Image 2.5 Flare vs Sunburst spiega quando conviene.
- Fai le bozze con una
qualitypiù bassa. Finché stai ancora cambiando il personaggio,lowomediumgenerano più in fretta. Passa ahighper le immagini con cui girerai.
Per restare brevi, le funzioni qui sopra interrogano l'attività senza scadenza. Nel tuo codice aggiungi un limite di tempo e conserva l'ID dell'attività, così un'esecuzione interrotta può ricontrollare la stessa attività invece di pagarne una nuova.
Fase 3: come generi ogni inquadratura con Seedance 2.5?
Invia ogni video_prompt a Seedance 2.5 con due immagini di riferimento: la scheda del personaggio come Image 1 e il fotogramma iniziale dell'inquadratura come Image 2, in quest'ordine, perché Seedance numera i file di riferimento nell'ordine in cui li alleghi. Le attività video hanno un endpoint dedicato, /v1/contents/generations/tasks, e terminano con 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)]Le scelte nella richiesta:
- Immagini di riferimento, non un primo fotogramma. Seedance 2.5 può anche vincolare un'inquadratura a un primo fotogramma esatto (
role: "first_frame"), ma il riferimento API di Seedance 2.5 dice che le modalità primo fotogramma «non si possono combinare con elementi di riferimento», e perderesti la scheda del personaggio. Con entrambe le immagini comereference_image, è il prompt a dire a Seedance che l'Image 2 è il fotogramma iniziale. L'apertura la segue da vicino, ma non pixel per pixel. 480pper le bozze. Genera prima ogni inquadratura in 480p, correggi i prompt che non hanno funzionato, poi genera quelle definitive in720po1080pcon lo stesso prompt.generate_audio: trueproduce dialoghi, suoni ambientali ed effetti dal prompt, generati insieme all'immagine.- Un
ratiofisso. Se tutte le inquadrature hanno lo stesso rapporto d'aspetto e la stessa risoluzione, ffmpeg può unirle senza ricodifica.
Un'inquadratura può durare da 4 a 30 secondi, e una singola attività può contenere più stacchi se il prompt assegna a ciascuno un intervallo di tempo. La seconda scena del creator, per esempio, metteva sei inquadrature montate sui colpi di batteria in 10 secondi.
Come mantieni lo stesso personaggio in ogni inquadratura?
La coerenza nasce dalla ripetizione, nel prompt e nei riferimenti:
- Ripeti la stessa descrizione. Il paragrafo
characterdella fase 1 va parola per parola in ogni prompt di immagine e di video. Descrivere la stessa persona in due modi diversi è uno dei motivi per cui il modello altera o duplica un personaggio. - Invia la stessa scheda a ogni inquadratura. La scheda è sempre l'Image 1. Seedance 2.5 accetta schede multi-vista; il vecchio Seedance 2.0 può leggere una scheda con più angolazioni come più persone, e la guida ai prompt consiglia per lui un primo piano del volto e un'immagine a figura intera per personaggio.
- Chiama il personaggio sempre allo stesso modo, per esempio «il guardiano del faro dell'Image 1», e non contare su un nome scritto dentro l'immagine.
- Mantieni una sola voce in tutte le inquadrature. Seedance 2.5 accetta fino a 10 riferimenti audio (WAV o MP3, da 2 a 30 secondi). Allega lo stesso clip vocale a ogni inquadratura e collegalo nel testo, come nell'esempio di ByteDance: «L'Image 1 raffigura il protagonista John e usa il timbro di voce dell'Audio 1».
Per due inquadrature che devono unirsi senza uno stacco visibile c'è una seconda opzione: imposta "return_last_frame": true sulla prima inquadratura e invia il content.last_frame_url restituito come first_frame della successiva. Il raccordo resta bloccato, ma quell'inquadratura successiva non può usare la scheda del personaggio: usala quindi per un'azione continua all'interno di una scena, non per ogni stacco.
Puoi usare la foto di una persona reale come personaggio?
No. Seedance 2.5 non accetta immagini o video di riferimento con volti umani reali, e un'attività che li contiene fallisce senza addebito. L'errore «real person» di Seedance spiega la regola di ByteDance e le opzioni che offre sulla propria piattaforma.
Questo riguarda anche i personaggi IA realistici. Il post originale filmava una donna fotorealistica, ma la documentazione di ByteDance non dice come il suo controllo dei volti tratti volti realistici disegnati da un altro modello. Un personaggio stilizzato, come il look da animazione 3D o da illustrazione richiesto dal prompt di sistema qui sopra, tiene il workflow fuori da questo dubbio. Se vuoi un look fotorealistico, prova prima un'inquadratura breve in 480p prima di pianificarci attorno un intero film.
Come unisci le inquadrature in un unico film?
Scarica i video in ordine, elencali in un file di testo e uniscili con 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 unisce i file senza ricodifica, e funziona perché ogni inquadratura ha la stessa risoluzione, lo stesso rapporto d'aspetto e lo stesso formato. Se hai mescolato impostazioni, togli -c copy e lascia che ffmpeg ricodifichi. Gli URL dei video sono ospitati sullo storage di SeedRouter, quindi scarica i file che vuoi conservare.
Quanto costa un cortometraggio con Seedance 2.5?
Ogni modello addebita nella propria unità, e le tariffe attuali sono sulla pagina di ciascun modello:
- Claude Opus 5.5 addebita i token di input e di output, ragionamento compreso. Pianificare un film richiede una o poche richieste. Tariffe.
- GPT Image 2.5 Flare e Sunburst applicano un prezzo fisso per immagine consegnata. Una scheda più un fotogramma iniziale per inquadratura fanno da quattro a sei immagini per un cortometraggio. Tariffe.
- Seedance 2.5 addebita token video: secondi generati × larghezza × altezza × 24 ÷ 1024. Un secondo di video 16:9 vale 9.607,5 token a 480p, 21.600 a 720p e 48.600 a 1080p, e il 1080p ha una tariffa propria. Tariffe.
La maggior parte del costo è il video. Una bozza a 480p usa meno della metà dei token del 720p, quindi correggere i prompt a 480p e generare solo la versione finale a risoluzione più alta è il risparmio più grande. I prezzi dell'API Seedance sviluppano altri esempi.
Domande frequenti
Claude Opus 5.5 può creare il video da solo?
No. Opus 5.5 è un modello di testo: legge le immagini, ma non genera né immagini né video. In questo workflow scrive i prompt, e GPT Image 2.5 e Seedance 2.5 producono le immagini e il girato.
Posso usare Claude Fable 5.1 al posto di Opus 5.5?
Sì. Fable 5.1 accetta la stessa richiesta Messages, quindi cambia model in claude-fable-5-1. Claude Fable 5.1 vs Fable 5 vs Opus 5.5 mette a confronto i tre.
Quanto può durare un cortometraggio con Seedance 2.5?
Un'attività Seedance 2.5 genera da 4 a 30 secondi, oppure lascia scegliere la durata al modello con duration: -1. Un film più lungo è fatto di più inquadrature unite, quindi la sua durata non ha un limite fisso.
Perché il personaggio cambia da un'inquadratura all'altra?
Di solito perché i prompt lo descrivono in modo diverso, la scheda manca in alcune inquadrature, oppure i file di riferimento sono allegati in un ordine diverso dalla numerazione del prompt. Controlla che ogni prompt video contenga lo stesso paragrafo sul personaggio e che la scheda sia sempre la prima immagine.
Posso usare Seedance 2.0 per questo workflow?
Sì, con la stessa struttura di richiesta e il suo ID di modello. Per il personaggio, dai a Seedance 2.0 immagini separate del volto e della figura intera invece di una scheda multi-vista. Seedance 2.5 vs 2.0 elenca le altre differenze.
Fai il tuo primo cortometraggio
Inizia con una storia di tre inquadrature a 480p, controlla le inquadrature, poi genera la versione finale a risoluzione più alta. La pagina di Seedance 2.5 mostra le tariffe attuali e un Playground per provare una singola inquadratura, e il riferimento completo delle richieste è nella documentazione API di Seedance 2.5, nella documentazione API di GPT Image 2.5 e nella documentazione API di Claude Opus 5.5.



