Как снять короткометражку с Claude Opus 5.5 и Seedance 2.5
Сделайте Claude Opus 5.5 режиссёром: он пишет раскадровку и промпты, GPT Image 2.5 рисует персонажа, а Seedance 2.5 генерирует каждый план со звуком.
Читать в MarkdownЧтобы снять короткометражку с Claude Opus 5.5 и Seedance 2.5, отдайте режиссуру Opus, а рисование и съёмку поручите двум другим моделям. Вы даёте Opus одну идею сюжета; он пишет неизменное описание персонажа, промпт для листа персонажа и по одному видеопромпту на каждый план. GPT Image 2.5 превращает эти промпты в лист персонажа и стартовые кадры. Seedance 2.5 генерирует каждый план с диалогами и звуком, используя эти изображения как референсы. Затем вы склеиваете планы в один файл. Все три модели работают в SeedRouter с одним и тем же API-ключом. Каждый запрос ниже соответствует справочникам API SeedRouter, проверено 30 сентября 2026 года.
Как устроен процесс с Claude Opus 5.5 и Seedance 2.5?
Идея взята из процесса, которым автор поделился на r/Seedance_AI в сентябре 2026 года (исходный пост): «Я не написал вручную ни одного промпта. Я дал 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 без скачивания и повторной загрузки.
Что нужно подготовить?
- API-ключ SeedRouter в переменной окружения:
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, чтобы им мог пользоваться ваш скрипт. Правила этого системного промпта взяты из официальных руководств ByteDance по промптам 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 всегда использует адаптивное мышление, и справочник API Opus 5.5 учитывает токены рассуждений вmax_tokens. Оставьте запас, иначе JSON может оборваться.- Не передавайте
temperature,top_pиtop_kи не заполняйте заранее реплику assistant. Opus 5.5 возвращает ошибку 400 на значения сэмплинга, отличные от значений по умолчанию, и на предзаполненный ответ. Чтобы управлять глубиной рассуждений, используйтеoutput_config.effort. - «Кто держит камеру» — совет из исходного поста. Автор пишет, что после фразы «мой друг снимает с заднего сиденья» Opus сам добавил мелкую тряску камеры, запаздывающее кадрирование и «ищущий» автофокус, и что «именно эта одна деталь контекста убирает „ИИ-вид“».
- Референсы стиля необязательны. Opus читает изображения, поэтому можно добавить скриншоты нужного вида как блоки
imageс URL-источником в реплику user.
Если 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. Согласуйте его сratio, который вы зададите для Seedance.- Для большинства листов хватает Flare. Sunburst точнее держит результат от правки к правке, но работает медленнее; когда он оправдан, разбирает статья GPT Image 2.5 Flare vs 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"), но в справочнике API Seedance 2.5 сказано, что режимы первого кадра «нельзя сочетать с референсными элементами», и вы потеряете лист персонажа. Если оба изображения переданы какreference_image, то, что Image 2 — стартовый кадр, Seedance узнаёт из промпта. Начало плана будет близко к нему, но не совпадёт попиксельно. 480pдля черновиков. Сначала сгенерируйте все планы в 480p, исправьте неудачные промпты, а затем отрендерьте удачные планы в720pили1080pс тем же промптом.generate_audio: trueдаёт диалоги, фоновые звуки и эффекты из промпта, генерируемые вместе с изображением.- Фиксированный
ratio. Если у всех планов одинаковые соотношение сторон и разрешение, ffmpeg склеит их без перекодирования.
План может длиться от 4 до 30 секунд, а одна задача может содержать несколько склеек, если промпт задаёт каждой свой временной отрезок. Например, во второй сцене автора шесть планов, смонтированных под удары барабанов, уместились в 10 секунд.
Как сохранить одного и того же персонажа во всех планах?
Постоянство достигается повторением — и в промпте, и в референсах:
- Повторяйте одно и то же описание. Абзац
characterиз шага 1 слово в слово входит в каждый промпт изображения и видео. Два разных описания одного человека — одна из причин, по которым модель искажает или дублирует персонажа. - Отправляйте один и тот же лист в каждый план. Лист всегда Image 1. Seedance 2.5 принимает листы с несколькими ракурсами; более старая Seedance 2.0 может принять многоракурсный лист за нескольких людей, и руководство по промптам советует давать ей вместо этого крупный план лица и изображение в полный рост на каждого персонажа.
- Называйте персонажа каждый раз одинаково, например «смотритель маяка из Image 1», и не полагайтесь на имя, написанное внутри картинки.
- Сохраняйте один голос во всех планах. Seedance 2.5 принимает до 10 аудиореференсов (WAV или MP3, от 2 до 30 секунд). Прикрепите один и тот же голосовой фрагмент к каждому плану и привяжите его в тексте, как в примере ByteDance: «Image 1 изображает главного героя John и использует тембр голоса из Audio 1».
Если два плана должны стыковаться без заметного скачка, есть второй вариант: задайте "return_last_frame": true для первого плана и передайте возвращённый content.last_frame_url как first_frame следующего. Стык будет зафиксирован, но следующий план не сможет использовать лист персонажа, поэтому применяйте это для непрерывного действия внутри одной сцены, а не для каждой склейки.
Можно ли использовать фото реального человека как персонажа?
Нет. Seedance 2.5 не принимает референсные изображения и видео с лицами реальных людей, и задача с ними завершается ошибкой без списания средств. В статье об ошибке Seedance «real person» объясняются правило ByteDance и варианты, которые ByteDance предлагает на собственной платформе.
Это касается и реалистичных ИИ-персонажей. В исходном посте снята фотореалистичная женщина, но документация ByteDance не говорит, как проверка лиц обрабатывает реалистичные лица, нарисованные другой моделью. Стилизованный персонаж — например, в стиле 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 тарифицирует входные и выходные токены, включая рассуждения. Планирование фильма — это один или несколько запросов. Цены.
- GPT Image 2.5 Flare и Sunburst берут фиксированную цену за каждое выданное изображение. Лист плюс стартовый кадр на каждый план — это от четырёх до шести изображений для короткометражки. Цены.
- Seedance 2.5 тарифицирует видеотокены: секунды на выходе × ширина × высота × 24 ÷ 1024. Одна секунда видео 16:9 — это 9607,5 токена в 480p, 21 600 в 720p и 48 600 в 1080p, причём у 1080p свой тариф. Цены.
Основная часть расходов — видео. Черновик в 480p тратит меньше половины токенов 720p, поэтому больше всего экономит правка промптов в 480p и рендер только финальной версии в более высоком разрешении. Больше примеров расчёта — в статье о ценах API Seedance.
Часто задаваемые вопросы
Может ли 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 vs 2.0.
Снимите свою первую короткометражку
Начните с истории из трёх планов в 480p, проверьте планы, а затем отрендерьте финальную версию в более высоком разрешении. На странице Seedance 2.5 есть актуальные цены и Playground для проверки одного плана, а полный справочник по запросам — в документации API Seedance 2.5, документации API GPT Image 2.5 и документации API Claude Opus 5.5.



