Cómo hacer un cortometraje con Claude Opus 5.5 y Seedance 2.5
Usa Claude Opus 5.5 como director: escribe el guion de planos y los prompts, GPT Image 2.5 dibuja al personaje y Seedance 2.5 genera cada plano con sonido.
Leer en MarkdownPara hacer un cortometraje con Claude Opus 5.5 y Seedance 2.5, deja que Opus haga de director y que los otros dos modelos se encarguen de dibujar y filmar. Le das a Opus una idea de historia; escribe una descripción fija del personaje, un prompt para la hoja de personaje y un prompt de vídeo por plano. GPT Image 2.5 convierte esos prompts en una hoja de personaje y en fotogramas iniciales. Seedance 2.5 genera cada plano, con diálogo y sonido, usando esas imágenes como referencia. Después unes los planos en un solo archivo. Los tres modelos funcionan en SeedRouter con la misma clave API. Todas las solicitudes de abajo siguen las referencias de la API de SeedRouter, revisadas el 30 de septiembre de 2026.
¿Cómo funciona el flujo de trabajo con Claude Opus 5.5 y Seedance 2.5?
La idea viene de un flujo que un creador compartió en r/Seedance_AI en septiembre de 2026 (la publicación original): «No escribí ni un solo prompt a mano. Le di a Opus 5.5 un concepto central y algunas capturas de referencia del estilo que quería». Opus escribió los prompts de la hoja de personaje, los fotogramas iniciales, los movimientos de cámara, el ritmo de los diálogos y el sonido; GPT Image 2.5 dibujó la hoja de personaje y el fotograma inicial; Seedance 2.5 generó los planos.
Cada modelo hace un solo trabajo:
| Paso | Modelo | Entrada | Salida |
|---|---|---|---|
| 1. Planificar | Claude Opus 5.5 | Idea de historia, imágenes de estilo opcionales | Descripción del personaje, prompt de la hoja, un prompt de fotograma inicial y uno de vídeo por plano |
| 2. Diseñar | GPT Image 2.5 | Prompt de la hoja, luego prompts de fotogramas con la hoja como referencia | Hoja de personaje y fotogramas iniciales, como URL de imagen |
| 3. Filmar | Seedance 2.5 | Prompt de vídeo más la hoja y el fotograma inicial como imágenes de referencia | Un vídeo con sonido por plano |
| 4. Editar | ffmpeg o cualquier editor | Los archivos de los planos | La película terminada |
Los pasos se conectan mediante URL. GPT Image 2.5 devuelve imágenes alojadas en el almacenamiento de SeedRouter, y Seedance 2.5 acepta imágenes de referencia como URL públicas, así que la salida del paso 2 pasa directamente al paso 3 sin descargar ni subir nada.
¿Qué necesitas antes de empezar?
- Una clave API de SeedRouter en tu entorno:
export SEEDROUTER_API_KEY="your-key"- Python 3 con
requestsy el SDK de Anthropic:pip install requests anthropic. - ffmpeg para unir los planos al final.
- Saldo. Cada llamada es una solicitud de pago. Las tareas fallidas no se cobran, y las cuentas nuevas empiezan con un pequeño saldo gratuito.
Todos los fragmentos de Python de abajo comparten estas dos líneas:
import os
import requests
HEADERS = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}Paso 1: ¿Cómo haces que Claude Opus 5.5 planifique los planos?
Dale a Opus un prompt de sistema que explique cómo lee Seedance 2.5 un prompt, y pídele el plan en JSON para que tu script pueda usarlo. Las reglas de este prompt de sistema vienen de las guías oficiales de prompts de Seedance de ByteDance, resumidas en la guía de prompts de Seedance 2.5: primero el sujeto y la acción, un solo movimiento de cámara por plano, rangos de tiempo para los planos largos y archivos de referencia nombrados por número.
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)Algunos detalles importan:
max_tokensincluye el razonamiento. Opus 5.5 siempre usa razonamiento adaptativo, y la referencia de la API de Opus 5.5 cuenta los tokens de razonamiento dentro demax_tokens. Deja margen, o el JSON puede quedar cortado.- No envíes
temperature,top_pnitop_k, y no rellenes de antemano un turno del asistente. Opus 5.5 devuelve un error 400 con valores de muestreo distintos de los predeterminados y con una respuesta prerrellenada. Para ajustar cuánto razona, usaoutput_config.effort. - «Quién sostiene la cámara» es el truco de la publicación original. Su autor cuenta que, al decirle a Opus «mi amigo está grabando desde el asiento trasero», escribió por sí mismo microtemblores de cámara, reencuadres con retraso y un autofoco que busca, y que «ese único detalle de contexto es lo que quita el “aspecto de IA”».
- Las referencias de estilo son opcionales. Opus lee imágenes, así que puedes añadir capturas del aspecto que buscas como bloques
imagecon una fuente URL en el turno del usuario.
Si json.loads falla, imprime text y vuelve a pedírselo a Opus. Leer el plan antes de generar nada también es el momento más barato para arreglar la historia: un cambio aquí cuesta una solicitud de texto, y un cambio después de generar cuesta vídeo.
Paso 2: ¿Cómo creas la hoja de personaje y los fotogramas iniciales con GPT Image 2.5?
Envía primero plan["sheet_prompt"] a GPT Image 2.5. Luego envía el frame_prompt de cada plano con la hoja como imagen de referencia, para que cada fotograma inicial muestre al mismo personaje. Las tareas de imagen se envían a /v1/images/generations y se leen en /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"]]Por qué estos ajustes:
1792x1008es 16:9. GPT Image 2.5 recibesizecomoWIDTHxHEIGHT, con ambos lados múltiplos de 16, así que un fotograma 16:9 hay que escribirlo en píxeles;16:9no es unsizeválido. Hazlo coincidir con elratioque le pedirás a Seedance.- Flare basta para la mayoría de las hojas. Sunburst da un control más preciso entre ediciones y es más lento; GPT Image 2.5 Flare vs Sunburst explica cuándo compensa.
- Haz los borradores con una
qualitymás baja. Mientras sigues cambiando al personaje,lowomediumgeneran más rápido. Cambia ahighpara las imágenes con las que vas a filmar.
Para que sean breves, las funciones de arriba consultan la tarea sin límite de tiempo. En tu propio código, añade un límite y guarda el ID de la tarea, para que una ejecución interrumpida pueda volver a consultar la misma tarea en lugar de pagar por una nueva.
Paso 3: ¿Cómo generas cada plano con Seedance 2.5?
Envía cada video_prompt a Seedance 2.5 con dos imágenes de referencia: la hoja de personaje como Image 1 y el fotograma inicial del plano como Image 2, en ese orden, porque Seedance numera los archivos de referencia según el orden en que los adjuntas. Las tareas de vídeo usan su propio endpoint, /v1/contents/generations/tasks, y terminan 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)]Las decisiones de la solicitud:
- Imágenes de referencia, no un primer fotograma. Seedance 2.5 también puede fijar un plano a un primer fotograma exacto (
role: "first_frame"), pero la referencia de la API de Seedance 2.5 indica que los modos de primer fotograma «no se pueden combinar con elementos de referencia», así que perderías la hoja de personaje. Con ambas imágenes comoreference_image, es el prompt el que le dice a Seedance que la Image 2 es el fotograma inicial. El comienzo lo sigue de cerca, pero no píxel a píxel. 480ppara los borradores. Genera primero todos los planos en 480p, corrige los prompts que no funcionaron y luego genera los definitivos en720po1080pcon el mismo prompt.generate_audio: trueproduce diálogo, sonido ambiente y efectos a partir del prompt, generados junto con la imagen.- Un
ratiofijo. Si todos los planos tienen la misma relación de aspecto y resolución, ffmpeg puede unirlos sin volver a codificar.
Un plano puede durar de 4 a 30 segundos, y una sola tarea puede contener varios cortes si el prompt le da a cada uno un rango de tiempo. La segunda escena del creador, por ejemplo, metía seis planos cortados al ritmo de la batería en 10 segundos.
¿Cómo mantienes al mismo personaje en todos los planos?
La coherencia sale de la repetición, en el prompt y en las referencias:
- Repite la misma descripción. El párrafo
characterdel paso 1 va palabra por palabra en cada prompt de imagen y de vídeo. Describir a la misma persona de dos formas distintas es una de las causas de que el modelo deforme o duplique a un personaje. - Envía la misma hoja en cada plano. La hoja siempre es la Image 1. Seedance 2.5 acepta hojas con varias vistas; el antiguo Seedance 2.0 puede leer una hoja con varios ángulos como varias personas, y la guía de prompts recomienda darle en su lugar un primer plano de la cara y una imagen de cuerpo entero por personaje.
- Nombra al personaje siempre de la misma manera, por ejemplo «el farero de la Image 1», y no confíes en un nombre escrito dentro de la imagen.
- Mantén una sola voz en todos los planos. Seedance 2.5 acepta hasta 10 referencias de audio (WAV o MP3, de 2 a 30 segundos). Adjunta el mismo clip de voz a cada plano y vincúlalo en el texto, como en el ejemplo de ByteDance: «La Image 1 representa al protagonista John y usa el timbre de voz del Audio 1».
Para dos planos que deben unirse sin un salto visible hay una segunda opción: activa "return_last_frame": true en el primer plano y envía el content.last_frame_url devuelto como first_frame del siguiente. Eso fija la unión, pero ese siguiente plano no puede usar la hoja de personaje, así que úsalo para una acción continua dentro de una escena y no en cada corte.
¿Puedes usar la foto de una persona real como personaje?
No. Seedance 2.5 no acepta imágenes ni vídeos de referencia que contengan caras humanas reales, y una tarea que las incluya falla sin cobrarse. El error de persona real de Seedance explica la regla de ByteDance y las opciones que ofrece en su propia plataforma.
Esto también afecta a los personajes de IA realistas. La publicación original filmó a una mujer fotorrealista, pero la documentación de ByteDance no dice cómo trata su control de caras a los rostros realistas dibujados por otro modelo. Un personaje estilizado, como el aspecto de animación 3D o ilustración que pide el prompt de sistema de arriba, deja el flujo al margen de esa duda. Si quieres un aspecto fotorrealista, prueba primero un plano corto en 480p antes de planificar toda una película a su alrededor.
¿Cómo unes los planos en una sola película?
Descarga los vídeos en orden, lístalos en un archivo de texto y únelos 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 une los archivos sin volver a codificar, lo que funciona porque todos los planos tienen la misma resolución, relación de aspecto y formato. Si mezclaste ajustes, quita -c copy y deja que ffmpeg vuelva a codificar. Las URL de los vídeos están alojadas en el almacenamiento de SeedRouter, así que descarga los archivos que quieras conservar.
¿Cuánto cuesta un cortometraje con Seedance 2.5?
Cada modelo cobra en su propia unidad, y las tarifas actuales están en la página de cada modelo:
- Claude Opus 5.5 cobra tokens de entrada y de salida, razonamiento incluido. Planificar una película son una o pocas solicitudes. Tarifas.
- GPT Image 2.5 Flare y Sunburst cobran un precio fijo por imagen entregada. Una hoja más un fotograma inicial por plano son de cuatro a seis imágenes en un cortometraje. Tarifas.
- Seedance 2.5 cobra tokens de vídeo: segundos generados × ancho × alto × 24 ÷ 1024. Un segundo de vídeo 16:9 son 9607,5 tokens en 480p, 21 600 en 720p y 48 600 en 1080p, y 1080p tiene su propia tarifa. Tarifas.
La mayor parte del coste es el vídeo. Un borrador en 480p usa menos de la mitad de tokens que uno en 720p, así que corregir los prompts en 480p y generar solo la versión final en mayor resolución es el mayor ahorro. Los precios de la API de Seedance desarrollan más ejemplos.
Preguntas frecuentes
¿Claude Opus 5.5 puede crear el vídeo por sí solo?
No. Opus 5.5 es un modelo de texto: puede leer imágenes, pero no genera imágenes ni vídeo. En este flujo escribe los prompts, y GPT Image 2.5 y Seedance 2.5 producen las imágenes y las tomas.
¿Puedo usar Claude Fable 5.1 en lugar de Opus 5.5?
Sí. Fable 5.1 acepta la misma solicitud de Messages, así que cambia model a claude-fable-5-1. Claude Fable 5.1 vs Fable 5 vs Opus 5.5 compara los tres.
¿Cuánto puede durar un cortometraje con Seedance 2.5?
Una tarea de Seedance 2.5 genera de 4 a 30 segundos, o deja que el modelo elija la duración con duration: -1. Una película más larga son varios planos unidos, así que su duración no tiene un límite fijo.
¿Por qué cambia el personaje entre planos?
Normalmente porque los prompts lo describen de forma distinta, falta la hoja en algunos planos o los archivos de referencia se adjuntan en un orden diferente al de la numeración del prompt. Comprueba que cada prompt de vídeo contenga el mismo párrafo del personaje y que la hoja sea siempre la primera imagen.
¿Puedo usar Seedance 2.0 para este flujo?
Sí, con la misma estructura de solicitud y su propio ID de modelo. Para el personaje, dale a Seedance 2.0 imágenes separadas de la cara y de cuerpo entero en lugar de una hoja con varias vistas. Seedance 2.5 vs 2.0 enumera las demás diferencias.
Haz tu primer cortometraje
Empieza con una historia de tres planos en 480p, revisa los planos y luego genera la versión final en mayor resolución. La página de Seedance 2.5 muestra las tarifas actuales y un Playground para probar un plano, y la referencia completa de solicitudes está en la documentación de la API de Seedance 2.5, la documentación de la API de GPT Image 2.5 y la documentación de la API de Claude Opus 5.5.



