День 8. 21 апреля 12:04 — 22 апреля 04:53. Lip-sync, сбор конфет, профиль с неправильной рукой

Ночь длинная — 17 часов с перерывами, 61 генерация. Пересняли диалог напарника, добавили рукопожатие+вставание, сбор конфет, POV-деталь сумки, крупный план напарника, профиль бандита у окна, финал с застёжкой сумки. Отдельная боль — Gemini за раз 10 попыток вытягивал не ту руку.

Пересъёмка реплики напарника: наХАняли

«так, а ну ка погугли, сиденс взял и испортил половину речи»

В сцене 10 shot14_partner_dialogue_v1 (фронт + tebya_suka.mp3, 7с) плохо синхронизировал губы. Гайд Seedance: sweet spot аудио 3-5с, эмоциональная речь даёт лаг губ 100-200мс, быстрая речь с элидингом — смазанные закрытия.

«давай возьмем боковой кадр (не фронт), и я сделал новый голос, и только первую часть. voice_tebya_suka.mp3, 6с, говорит после первой секунды, а не сразу»

shot14_partner_dialogue_v2 — боковой ракурс, новое аудио, пауза в начале
params 720p · 6s · 16:9
refs
shot12_bg_user_fitted.jpgshot12_bg_user_fitted.jpgvoice_tebya_suka.mp3
prompt
@Image1 as first frame. @Audio1 is the line the man speaks.
[00:00-00:01] He is silent, mouth closed.
[00:01-00:06] He speaks the line from @Audio1, mouth moves in sync with the audio.
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«хуйня, речь перепутана. а не надо модели дать текст реплики тоже? что в гайде?»

Нашёл в гайде: текст в двойных кавычках + язык. Формат Character speaks in Russian: "...".

shot14_partner_dialogue_v3 — с текстом реплики в кавычках
params 720p · 6s · 16:9
refs
shot12_bg_user_fitted.jpgshot12_bg_user_fitted.jpgvoice_tebya_suka.mp3
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian, mouth moves in sync with @Audio1. The line he says: "тебя, сука, наняли товар принести, а не пробовать его, дебил".
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«он сказал тебя наХАняли товар принести, почему ((( и я даже не могу подменить звук на оригинал т.к. ритмика совсем другая»

Открыл код seedance_video.py: параметр generate_audio: True жёстко прошит. С ним Seedance берёт твой uploaded audio только как voice style, а речь синтезирует сам из текста — отсюда «наХАняли» и другая ритмика.

«делаем»

Сменил на generate_audio=False когда есть audio_urls:

shot14_partner_dialogue_v4 — generate_audio=False, файл без звука
params seedance · 720p · 6s · 16:9
refs
shot12_bg_user.jpgshot12_bg_user.jpgvoice_tebya_suka.mp3
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian, mouth moves in sync with @Audio1. The line he says: "тебя, сука, наняли товар принести, а не пробовать его, дебил".
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«файл теперь без звука»

generate_audio=False = нет аудиодорожки в выходе. Плюс lip-sync всё равно кривой.

«нет, оно не совпадает, ну то есть движение губ не ествественное. примерно как и раньше было, только теперь я чепуху не слышу т.к. аудио нету»

«нет, для начала убери, изменения, что не генерит звук, это мешает мне понять, какие фонемы он не услышал»

Откатил generate_audio=True:

shot14_partner_dialogue_v5 — с аудио, странный акцент
params seedance · 720p · 6s · 16:9
refs
shot12_bg_user.jpgshot12_bg_user.jpgvoice_tebya_suka.mp3
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian, mouth moves in sync with @Audio1. The line he says: "тебя, сука, наняли товар принести, а не пробовать его, дебил".
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«ну лучше, оно дает странный акцент. voice_tebya_suka_v2.mp3 — я сделал версию звука, где все более раздельно, чтоб ему было проще»

Новое аудио + скорректированная пунктуация ("Тебя, сука. Наняли товар принести. А не пробовать его. Дебил."):

После кредитного 402 и пополнения:

shot14_partner_dialogue_v6 — v2 аудио, новая пунктуация, но 6с мало
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian, mouth moves in sync with @Audio1. The line he says: "Тебя, сука. Наняли товар принести. А не пробовать его. Дебил."
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«блин, оно не успевает сказать, нужно 7с»

shot14_partner_dialogue_v7 — 7с, но большие паузы и финал впритык
params 720p · 7s · 16:9
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian, mouth moves in sync with @Audio1. The line he says: "Тебя, сука. Наняли товар принести. А не пробовать его. Дебил.". His eyes stay cast downward throughout, as in @Image1.
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«сука, он делает очень сильные паузы между репликами и опять последняя реплика прям к концу тайминга, это нехорошо для монтажа. надо как-то попросить его соблюдать темп и чтоб без жестикуляции»

v8: steady even pace without long pauses + Finishes speaking by 00:05 + No hand gestures:

shot14_partner_dialogue_v8 — УТВЕРЖДЁН, ровный темп, без жестов
params seedance · 720p · 7s · 16:9
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian at a steady even pace without long pauses between phrases, mouth moves in sync with @Audio1. The line he says: "Тебя, сука. Наняли товар принести. А не пробовать его. Дебил.". Finishes speaking by 00:05, then holds still for the remaining time. His eyes stay cast downward throughout, as in @Image1. No hand gestures. Arms stay relaxed and still.
Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«победа, ты молодец, и я немного»

Ключевой элемент — пользовательская v2 аудио с чёткими разделениями. Всё остальное — промпт-тюнинг вокруг неё.

Реплика «Давай, собирайся» + рукопожатие или встать

«последнюю реплику нужно на этом кадре сказать shot12_bg_user_front_fitted»

Долгое обсуждение вариантов реплики (Давай. Собирайся. / + Всё, пошли) и действия (подача руки / вставание с уходом). Прилетела идея: рука подаётся вертикально, как в армрестлинге / wrist-grip — не ладонь-в-ладонь.

shot15_davay_v1 — рукопожатие, но 1 с паузы перед речью + горизонтальный handshake
params 720p · 5s · 16:9
prompt
@Image1 as first frame. @Image2 as character reference for the other person whose hand enters the frame from below. @Audio1 is the line the man speaks.
He speaks in Russian at a steady even pace, mouth moves in sync with @Audio1. The line he says: "Давай. Собирайся, блять." — finishes speaking around 00:02. Then he reaches his right hand down toward the floor off the bottom of the frame. A hand (the other man's from @Image2) rises up to meet his — they clasp each other's forearms in a wrist-grip handshake: thumbs pointing up, each hand gripping the other's wrist, the classic 'lifting' grip used to pull someone up off the ground.
His eyes stay cast downward throughout, as in @Image1. Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

v2: starts speaking immediately at 00:00, рука бандита из правого края:

shot15_davay_v2 — речь сразу, но опять рукопожатие 180°
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 as character reference for the other person whose hand enters the frame from the right side. @Audio1 is the line the man speaks.
He starts speaking in Russian immediately at 00:00, mouth moves in sync with @Audio1. The line he says: "Давай. Собирайся, блять.". Then he reaches his right hand down. A hand (the other man's from @Image2) rises into the frame from the right side — they clasp each other's forearms in a wrist-grip handshake: thumbs pointing up, each hand gripping the other's wrist, the classic 'lifting' grip used to pull someone up off the ground. He starts pulling the other man up, his arm and shoulder straining with the effort.
His eyes stay cast downward throughout, as in @Image1. Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«нет, в обоих вариантах он руку дает будто жмет, ну типа 180 градусов, а нужно под 90, я потому спрашивал, как правильно захват описать»

«а ты написал явно что второй чел лежит?»

Хорошо подметил — не написал. Добавил контекст лежачего + WRIST-grab not palm-to-palm, forearms vertical:

shot15_davay_v3 — УТВЕРЖДЁН, wrist-grab с контекстом лежачего
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 as character reference for the other person whose hand enters the frame. @Audio1 is the line the man speaks.
He starts speaking in Russian immediately at 00:00, mouth moves in sync with @Audio1. The line he says: "Давай. Собирайся, блять.". Then he reaches his right hand down. The other man is lying on the floor just below the bottom of the frame and reaches his arm up vertically from floor level, his hand entering the frame from the bottom-right. They do NOT shake hands palm-to-palm. Instead: each hand closes around the other's WRIST (not the palm), forearms vertical and parallel, thumbs pointing upward. This is the classic "wrist grab" grip used to pull someone up off the ground — NOT a standard handshake. He starts pulling the other man up, his arm and shoulder straining with the effort.
His eyes stay cast downward throughout, as in @Image1. Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

Параллельно второй вариант — напарник просто встаёт и уходит:

shot15_davay_standup_v1 — но дважды сказал «давай»
params seedance · 720p · 6s · 16:9
prompt
@Image1 as first frame. @Audio1 is the line the man speaks.
He starts speaking in Russian immediately at 00:00, mouth moves in sync with @Audio1. The line he says: "Давай. Собирайся, блять.". After finishing the line, he stands up from his crouch and walks out of the frame.
His eyes stay cast downward during the speech, as in @Image1. Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

«проблема с речью, он 2 раза сказал "давай"»

Причина скорее — жирная пауза после первого «Давай.» (точка = команда на паузу, в паузе модель заполняет повтором слова). Убрали тайминговые костыли:

shot15_davay_standup_v2 — УТВЕРЖДЁН, без таймингов
params seedance · 720p · 6s · 16:9
prompt
@Image1 as first frame. @Audio1 is the line the man speaks.
He speaks the line from @Audio1 in Russian: "Давай. Собирайся, блять." — mouth in sync with audio. After finishing the line, he stands up from his crouch and walks out of the frame.
His eyes stay cast downward during the speech, as in @Image1. Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

Бандит приходит в себя (с открытыми глазами)

«@/$E/shot12_slap_setup_eyes_open.jpg, вот еще кадр на лежащего лысого, только я ему глаза открыл. сделай что просто смотрит на напарника и приходит в себя»

4с вместо 5с. После 402 и пополнения:

shot13_bandit_recovers_v1 — УТВЕРЖДЁН, 4с, смотрит на напарника
params 720p · 4s · 16:9
prompt
@Image1 as first frame. The bald man lying on the floor slowly regains full consciousness. His gaze stays fixed on the other man in the lower-left of the frame. Slight natural breathing, subtle head wobble, eyes blink groggily. The other man stays completely still. The air is completely clean and still — no dust, no airborne particles. Camera fixed, locked-off, no movement. Preserve the black-and-white look and composition of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift, avoid temporal flicker, avoid dust particles.

Коммит 82559c4 — 72 файла утверждённых и архивных.

Сбор конфет: ось, поза, facefusion, Seedream

«кадр сбора конфет, и я вот думаю, какой использовать»

Обсудили сценарий последних 6 шотов. Решили: бандит один собирает, напарник наблюдает с дивана. Сцена статичная, больше нет экшена.

Пользователь дал shot16_room_crop_partner.jpg — напарник на диване, труп сверху, куча конфет. Попросил добавить бандита Gemini'ем:

«что еще за лысый бородатый мужик?»

Мой косяк — перепутал кто кто. Зафиксировал: бандит лысый в кожанке, без бороды.

Три попытки Gemini с char_bandit_front_bw.jpg — все IMAGE_OTHER (safety):
- 1 попытка — видимо труп сверху триггерит
- 2 попытка — убрали труп, но оставили тёмный фрагмент плоти в куче конфет
- 3 попытка — убрали и фрагмент — всё равно IMAGE_OTHER

«не, попробуй другой реф: shot5_bandit_closeup_v5.png»

Тоже IMAGE_OTHER. Четвёртая попытка — с char_bandit_back_bw.jpg (со спины):

— прошла, но Gemini вернул второй реф вместо отредактированной сцены. Жёстко прописал «output MUST be first image edited — NOT the second»:

— Gemini сжал в вертикальный формат и перекомпоновал всё (окно/шкаф/дверь исчезли).

«ты гонишь, еще буквально вчера все работало нормально. и в чате у меня работает нормально все еще. ищи ошибку в своем промпте или коде»

Сменил source → shot16_room_crop_wrong_bandit.jpg (пользователь собрал сам в фотошопе):

shot16_room_crop_wrong_bandit — пользовательский композит с неверным лицом

shot16_room_crop_wrong_bandit — пользовательский композит с неверным лицом

Задача — свапнуть лицо. facefusion headless-run с shot5_bandit_closeup_v5.png:

«плохо лицо прилепило промахнулось»

Два прохода facefusion (с разными source + reference-mode) — промахивается. Переключились на Gemini для face-swap — IMAGE_OTHER снова, потом сжатие в портрет. Перепробовал:
- Убрал --size 2K и --aspect — вышел в портрет
- Переставил картинки ДО текста — в портрет
- Попробовал gemini-2.5-flash-imageIMAGE_OTHER
- gemini-3.1-flash-image-preview — timeout

«что значит не заходит в edit моде? что это значит? ты долбоеб? можешь нормально говорить. я же не знаю, что ты там делал сча»

Извинился по-людски. Корневая причина — аспект рефов: сцена 16:9 + face_bw портрет (0.71) → Gemini примирял в портрет. Семь попыток впустую.

«ясно, давай сидримом свапнем. вот этот реф лица shot5_bandit_closeup_v5.png»

Seedream с 2 рефами сработал с первого раза — 16:9 сохранён, лицо свапнуто, напарник не тронут, композиция цела:

shot16_room_crop_full_seedream_v1 — УТВЕРЖДЁН, Seedream face swap

shot16_room_crop_full_seedream_v1 — УТВЕРЖДЁН, Seedream face swap

Сбор конфет — анимация

С 3 рефами (сцена + лицо бандита + лицо напарника):

shot16_collecting_v1 — 6с, 2 цикла сбора
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 as character reference for the bald man — keep his face and appearance consistent with @Image2. @Image3 as character reference for the other man on the couch — keep his face and appearance consistent with @Image3.
[00:00-00:03] The bald man in the leather jacket scoops up a handful of candies from the pile with his hand and tosses them into the open sports bag beside him.
[00:03-00:06] He scoops up another handful and tosses them into the bag.
The other man on the couch watches the collecting — his head and eyes follow the hand movements, relaxed natural breathing.
Camera fixed, locked-off, no movement. No background music, no soundtrack. Avoid jitter, avoid bent limbs, avoid identity drift, avoid dust particles.

Первый запуск pending на Evolink 40 минут (высокая нагрузка). Отменил через DELETE endpoint, перезапустил — пришёл.

«нужно больше длительность, давай 12с и за 4 раза он должен собрать все конфеты»

shot16_collecting_v2 — УТВЕРЖДЁН, 12с, 4 цикла, в финале куча пустая
params 720p · 12s · 16:9
prompt
@Image1 as first frame. @Image2 as character reference for the bald man — keep his face and appearance consistent with @Image2. @Image3 as character reference for the other man on the couch — keep his face and appearance consistent with @Image3.
[00:00-00:03] The bald man scoops up a handful of candies from the pile with his hand and tosses them into the open sports bag beside him.
[00:03-00:06] He scoops up a second handful and tosses it into the bag.
[00:06-00:09] He scoops up a third handful and tosses it into the bag.
[00:09-00:12] He scoops up the last remaining candies and tosses them into the bag. By the end of the shot, the candy pile on the floor is completely empty.
The other man on the couch watches the collecting throughout — his head and eyes follow the hand movements, relaxed natural breathing.
Camera fixed, locked-off, no movement. No background music, no soundtrack. Avoid jitter, avoid bent limbs, avoid identity drift, avoid dust particles.

Деталь сумки: top-down, советские фантики, поэтапно

Gemini на общаке с top-down POV:

shot17_bag_detail_v1 — композиция норм, но 1:1 вместо 16:9

shot17_bag_detail_v1 — композиция норм, но 1:1 вместо 16:9
params banana · gemini-3-pro-image-preview · google
prompt
Black and white film still, close-up top-down POV view from directly above into an open black sports bag resting on a parquet floor. The interior of the bag is filled with brightly wrapped colorful candies (in color — color pop against the B&W scene). The zipper of the bag is fully open along the top. Above the bag, a man's hand (from the POV of someone squatting above) holds one last colorful candy between thumb and finger, about to drop it into the bag. Grainy black and white cinematic look. Match the bag and candy style from @Image1.

v2 с --aspect 16:9:

shot17_bag_detail_v2 — 16:9 сработал, но конфеты без брендов

shot17_bag_detail_v2 — 16:9 сработал, но конфеты без брендов
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Black and white film still, close-up top-down POV view from directly above into an open black sports bag resting on a parquet floor. The interior of the bag is filled with brightly wrapped colorful candies (in color — color pop against the B&W scene). The zipper of the bag is fully open along the top. Above the bag, a man's hand (from the POV of someone squatting above) holds one last colorful candy between thumb and finger, about to drop it into the bag. Grainy black and white cinematic look. Match the bag and candy style from @Image1.

«нужны советские — описать какие, рука не нужна (ты добавил руку?)»

Да, рука была в промпте. Убрал. Описал брендами: Мишка косолапый, Мишка на севере, Красная Шапочка, Белочка, Кара-Кум, Морячок, Ласточка.

shot17_bag_detail_v3 — советские фантики читаются, но крышка сверху

shot17_bag_detail_v3 — советские фантики читаются, но крышка сверху
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Black and white film still, close-up top-down view from directly above of an open black sports bag resting on a parquet floor. The bag has a visible top flap with a long zipper running along its length — the flap is folded back so the zipper is fully open and the contents are visible. Inside the bag is a pile of classic Soviet-era wrapped candies: paper wrappers with twisted ends (fantik style), each printed with distinctive illustrated labels. Various well-known brands: "Мишка косолапый" (bear in a pine forest), "Мишка на севере" (polar bear), "Красная Шапочка" (Little Red Riding Hood with a basket), "Белочка" (squirrel with a nut), "Кара-Кум" (camel in a desert), "Морячок" (little sailor boy). Paper wrappers, not shiny plastic foil, with rich hand-drawn colorful illustrations in traditional mid-20th-century Soviet style. The candies are in full color, contrasting with the black-and-white scene around them. No hands, no people, no candy in motion — just the bag with candies inside, ready to be closed. Grainy black and white cinematic look. Match the bag style from @Image1.

«только крышка сумки сверху, а должна быть снизу. и конфеты гиганты, раза в 2 больше чем надо»

v4 — две задачи одновременно:

shot17_bag_detail_v4 — крышка не переехала, конфеты ещё больше, но бренды читаются

shot17_bag_detail_v4 — крышка не переехала, конфеты ещё больше, но бренды читаются
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Black and white film still, close-up top-down view from directly above of an open black sports bag resting on a parquet floor. The flap/closing side of the bag with the zipper is at the BOTTOM edge of the frame, folded down. The opening reveals the candies upward through the top. Inside the bag is a pile of classic Soviet-era wrapped candies: small fantik candies, each about the size of a finger (not palm-sized) — many small candies piled densely inside. Paper wrappers with twisted ends, each printed with distinctive illustrated labels. Various well-known brands: "Мишка косолапый" (bear in a pine forest), "Мишка на севере" (polar bear), "Красная Шапочка" (Little Red Riding Hood with a basket), "Белочка" (squirrel with a nut), "Кара-Кум" (camel in a desert), "Морячок" (little sailor boy). Paper wrappers, not shiny plastic foil, with rich hand-drawn colorful illustrations in traditional mid-20th-century Soviet style. The candies are in full color, contrasting with the black-and-white scene around them. No hands, no people, no candy in motion — just the bag with candies inside, ready to be closed. Grainy black and white cinematic look. Match the bag style from @Image1.

«мы вообще очень сложную штуку делаем, я обычно такое делаю по этапам»

Урок для Gemini: одна правка за генерацию. Делим задачу.

v5: уменьшить конфеты на v3:

shot17_bag_detail_v5 — конфеты не уменьшились

shot17_bag_detail_v5 — конфеты не уменьшились
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: the candies inside the bag are now small bite-size candies, each about the size of a matchbox. The bag is densely filled with hundreds of these small candies, packed together. Keep the bag, parquet floor, zipper, flap, lighting, and B&W look unchanged.

«еще меньше сайз»

v6 — matchbox size, thumbnail-sized:

shot17_bag_detail_v6 — размер сработал, но цвет и бренды пропали

shot17_bag_detail_v6 — размер сработал, но цвет и бренды пропали
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: replace the candies with tiny wrapped candies, each one about 2 centimeters long (thumbnail-sized, much smaller than a matchbox). The bag is filled with many hundreds of these tiny candies packed densely. Keep the bag, parquet floor, zipper, flap, lighting, and B&W look unchanged.

«я бы сделал сначала пустую сумку из v3 — типа убери конфеты»

Расцепляем: сначала пустая сумка, потом заполняем:

shot17_bag_empty_v1 — пустая сумка, композиция сохранена

shot17_bag_empty_v1 — пустая сумка, композиция сохранена
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: remove all candies from the bag. The bag is now empty — show the empty black interior of the bag. Keep the bag shape, parquet floor, zipper, flap, lighting, and B&W look exactly unchanged.

shot17_bag_detail_filled_v1 — наполнена мелкими советскими конфетами

shot17_bag_detail_filled_v1 — наполнена мелкими советскими конфетами
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: fill the empty bag with many small bite-size Soviet-era wrapped candies in full color — paper wrappers with twisted ends (fantik style), each about 2 centimeters long, printed with Soviet brand illustrations: "Мишка косолапый" (bear in pine forest), "Мишка на севере" (polar bear), "Красная Шапочка" (Little Red Riding Hood), "Белочка" (squirrel), "Кара-Кум" (camel in desert), "Морячок" (sailor boy). Hundreds of these tiny candies densely packed inside the bag, the bag is filled to the top. The candies are in full saturated color, contrasting with the black-and-white scene around them. Keep the bag, parquet floor, zipper, flap, lighting, and B&W look outside the bag unchanged.

«ну вот, а ты боялся»

Пока shot16 переваривался в бекграунде — сделали вторую итерацию детали уже на основе общака (чтоб ноги бандита по краям были видны):

shot17_bag_empty_v2 — пустая сумка с ногами бандита по краям

shot17_bag_empty_v2 — пустая сумка с ногами бандита по краям
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: zoom into a close-up top-down POV view from directly above the open black sports bag that the squatting bald man has beside him. The viewpoint is from his own POV looking down at the bag. His knees, thighs and one arm are partially visible at the edges of the frame. The bag is empty — show the empty black interior of the bag. The bag has a visible top flap with a zipper running along its top edge — the flap is folded back so the zipper is open. Parquet floor visible around the bag. Grainy black and white cinematic look.

shot17_bag_detail_filled_v2 — УТВЕРЖДЁН, 2/3 заполнена

shot17_bag_detail_filled_v2 — УТВЕРЖДЁН, 2/3 заполнена
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: partially fill the bag with small bite-size Soviet-era wrapped candies in full color — each candy about 2 centimeters long, thumbnail-sized, hundreds of them densely packed. The bag is about two-thirds full, NOT filled to the top — empty space visible above the candy layer. Paper wrappers with twisted ends (fantik style), printed with Soviet brand illustrations: "Мишка косолапый" (bear in pine forest), "Мишка на севере" (polar bear), "Красная Шапочка" (Little Red Riding Hood), "Белочка" (squirrel), "Кара-Кум" (camel in desert), "Морячок" (sailor boy). The candies are in full saturated color, contrasting with the black-and-white scene around them. Keep the bag, parquet floor, zipper, flap, legs at the edges, lighting, and B&W look outside the bag unchanged.

Last candy — задумчивая пауза

«ладно, давай попробуем оживить, в 2 приема собирает конфеты и бросает их в сумку»

Стоп, другая задача — на этом кадре не сбор, а один момент с последней конфетой на ладони:

«он должен потянуться за правый край кадра за одной конфетой оранжевого цвета, но кинуть ее в сумку, а раскрыть кулак над сумкой и смотреть на эту одну конфету на ладони»

shot17_bag_detail_lastcandy_v1 — рука правая, а бандит собирает левой
params 720p · 6s · 16:9
prompt
@Image1 as first frame. The man reaches his right hand off the right edge of the frame, then brings his closed fist back and positions it above the open bag. He slowly opens his fist — a single orange-wrapped candy is resting on his open palm. He looks down at the candy on his palm and holds still. He does NOT drop the candy into the bag.
Camera fixed, locked-off. No background music, no soundtrack. Avoid jitter, avoid bent limbs, avoid identity drift.

«блять, не та рука, он же левой рукой собирает»

«нужно еще лучше описать конфету, а лучше — дать реф. candy_ref.jpg»

«left edge of the frame — это неверно, мы же напротив бандита — его левая рука у правой части кадра»

v2: левая рука (но выходит с правого края кадра, так как он в левом профиле), + реф конфеты:

shot17_bag_detail_lastcandy_v2 — УТВЕРЖДЁН, левая рука, конфета на ладони
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 shows the specific candy — the man is holding this exact candy in his palm at the end of the shot.
The man reaches his LEFT hand off the right edge of the frame, then brings his closed fist back and positions it above the open bag. He slowly opens his LEFT fist — a single candy matching @Image2 is resting on his open palm. He looks down at the candy on his palm and holds still. He does NOT drop the candy into the bag.
Camera fixed, locked-off. No background music, no soundtrack. Avoid jitter, avoid bent limbs, avoid identity drift.

Крупный план напарника на диване

«теперь из общака делаем укрупнение на напарника, не забудь дать реф напарника крупный»

Gemini edit общака → medium close-up. С face-рефом:

shot18_partner_closeup_v1 — поза не совпадает с общаком

shot18_partner_closeup_v1 — поза не совпадает с общаком
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image to produce a medium close-up framing of the bearded man sitting on the couch — same scene, same lighting, same environment, but the camera is now tighter, framed from his chest up. His face and expression match @Image2 (use as character reference). Keep the B&W look and the atmosphere of the first image. Visible around him: part of the couch behind him, part of the wallpaper.

«неверно, поза не та. давай пока без фейс рефа, в 2 этапа — сначала клоуз без рефа, потом лицо подправим»

shot18_partner_closeup_v2 — поза с общака сохранена

shot18_partner_closeup_v2 — поза с общака сохранена
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image to produce a medium close-up framing of the bearded man sitting on the couch — same scene, same lighting, same pose and expression as in the first image, but the camera is now tighter, framed from his chest up. Keep the B&W look and the atmosphere of the first image.

v3: лицо к канону:

shot18_partner_closeup_v3 — лицо ближе к канону, но не точно

shot18_partner_closeup_v3 — лицо ближе к канону, но не точно
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: refine the facial features of the bearded man to exactly match the face from @Image2 — same nose, same eyes, same jawline, same beard shape. Keep everything else unchanged: same lighting, same pose, same direction of gaze, same clothing, same couch, same background, same B&W look.

shot18_partner_closeup_v4 — реген

shot18_partner_closeup_v4 — реген
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: refine the facial features of the bearded man to exactly match the face from @Image2 — same nose, same eyes, same jawline, same beard shape. Keep everything else unchanged: same lighting, same pose, same direction of gaze, same clothing, same couch, same background, same B&W look.

«давай попросим еще чтоб смотрел прямо, но не прямо в камеру. только это не новое редактирование, а где лицо меняем из v2»

shot18_partner_closeup_v5 — взгляд мимо камеры

shot18_partner_closeup_v5 — взгляд мимо камеры
params banana · gemini-3-pro-image-preview · google · 16:9
prompt
Edit the first image: refine the facial features of the bearded man to exactly match the face from @Image2 — same nose, same eyes, same jawline, same beard shape. His gaze is now directed straight ahead, but NOT directly into the camera — slightly to one side, looking past the camera. Keep everything else unchanged: same lighting, same pose, same clothing, same couch, same background, same B&W look.

«а почему банана стала такое низкое разрешение давать?»

Мой косяк: убрал --size 2K когда чинил edit-mode, не вернул. Вышло 1376x768 вместо 2K. Вернул.

«верни, ретрай не нужен, оживим то, что есть. вот звук voice_v_sumku.mp3. shot18_partner_closeup_v5_eye_corrected — поправил взгляд. вот текст: В сумку положил, блять. Быстро. 6с»

«как думаешь, сделать наезд камеры? — я думаю, все ок будет синком, давай с наездом»

RGBA-PNG упал на save JPEG в fit_to_aspect. Починил: конвертирую RGB если суффикс .jpg/.jpeg.

shot18_partner_dialogue_v1 — УТВЕРЖДЁН, slow push-in, lip-sync
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Audio1 is the line the man speaks. He speaks in Russian at a steady even pace without long pauses between phrases, mouth moves in sync with @Audio1. The line he says: "В сумку положил, блять. Быстро.". No hand gestures. Arms stay relaxed and still.
Camera slow push-in. Preserve the black-and-white look of @Image1. No background music, no soundtrack. Avoid jitter, avoid identity drift.

Профиль бандита у окна: десять попыток выпрямить не ту руку

«пока давай сделаем боковой кадр на бандита в сторону окна из общака. 2к не забудь теперь»

Gemini edit общака на боковой профиль:

— Gemini повернул только бандита, камера не двинулась.

«боковой кадр вообще не вышел. он повернул только бандита, а нам нужно камеру»

Camera-orbit в Gemini почти никогда не работает.

«не, профиль не вытащить, свет неверный. вот отсюда можно фон подрезать: m2_window_tight_v2.png»

Добавляем бандита на чистый кадр окна, с общаком как помощником для сумки. Поэтапно:

shot19_bandit_profile_v1 — бандит в правой, в профиль, на корточках, сумка перед ним

shot19_bandit_profile_v1 — бандит в правой, в профиль, на корточках, сумка перед ним
params banana · gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Add a bald man in a dark leather jacket to the first image. He is positioned in the right half of the frame, to the right of the window, crouched on his haunches on the parquet floor in the foreground. He is shown in side profile, facing forward toward an open black sports bag which sits on the floor in front of him. The window is to his left, backlighting his profile with strong rim light from the side. Use @Image2 as reference for the man and the bag's appearance — same face, same leather jacket, same sports bag. Grainy B&W cinematic look. Keep the window, curtains, wallpaper, and lighting of the first image unchanged.

«очень неплохо. я кадрировал для точности shot19_bandit_profile_v1_crop. я понял, что на оригинальном фоне, что я тебе дал у нас паркет елочка идет не в том направлении — нужно узор развернуть на 90 градусов»

shot19_bandit_profile_v1_crop — пользовательский кроп

shot19_bandit_profile_v1_crop — пользовательский кроп

v2 — повернуть паркет на 90°:

— «нет, изменений вообще нет». Пересформулировал через явное направление (horizontallyvertically):

shot19_bandit_profile_v3 — УТВЕРЖДЁН, паркет развёрнут

shot19_bandit_profile_v3 — УТВЕРЖДЁН, паркет развёрнут
params banana · gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image: change the direction of the herringbone parquet floor pattern. Currently the parquet chevrons zigzag HORIZONTALLY across the frame (pointing left-right). Change them so they zigzag VERTICALLY (from the bottom of the frame toward the top, pointing up-down, toward and away from the camera). Keep the wood color, texture, and the rest of the scene (man, bag, window, curtains, wallpaper, lighting, B&W look) unchanged.

«теперь нужно чтоб он протянул левую ладонь над сумкой, а на нее положим конфету по рефу»

И тут началась история с неправильной рукой, которая длилась 5 итераций и хак с зеркалом:

shot19_bandit_profile_v4 — вытянул правую вместо левой

shot19_bandit_profile_v4 — вытянул правую вместо левой
params banana · gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image: the bald man extends his LEFT hand forward, palm facing upward and open, hovering directly above the open sports bag in front of him. His open palm is empty. Keep everything else unchanged — his body, face, the bag, the window, curtains, wallpaper, parquet floor, lighting, and B&W look.

«не та рука, вытянул правую»

v5 из v3, явно RIGHT hand:

shot19_bandit_profile_v5 — опять та же рука

shot19_bandit_profile_v5 — опять та же рука
params banana · gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image: the bald man extends his RIGHT hand forward, palm facing upward and open, hovering directly above the open sports bag in front of him. His open palm is empty. Keep everything else unchanged — his body, face, the bag, the window, curtains, wallpaper, parquet floor, lighting, and B&W look.

«опять вышла правая»

Обе попытки («left», «right») — одна и та же рука. Пространственно: «та рука, что спрятана за телом»:

shot19_bandit_profile_v6 — no output, image exceeds dimension limit

shot19_bandit_profile_v6 — no output, image exceeds dimension limit
params banana · gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image: the bald man extends the arm that is currently hidden behind his body (the arm on the far side from the camera). That arm should now reach forward across his chest, palm facing upward and open, hovering directly above the open sports bag in front of him. The arm closer to the camera remains at his side. Keep everything else unchanged — his body position, face, bag, window, curtains, wallpaper, parquet, lighting, B&W look.

После /compact ещё итерация — v7 через анатомическое описание «near-side / foreground shoulder»:

shot19_bandit_profile_v7 — не та рука

shot19_bandit_profile_v7 — не та рука
params banana · google/gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image: extend the man's arm that is on the near side to the camera (the arm we can see in the foreground, closer to the viewer — anatomically his left arm since he is in left profile facing the window) straight forward, palm facing upward and open, hand hovering directly above the open sports bag in front of him. His other arm (on the far side of his body, away from camera) stays tucked behind, out of view. Keep everything else identical: body position (squatting), face, head angle, bag, window, curtains, wallpaper, parquet, lighting, black-and-white look, 16:9 framing.

«нет, то не та рука, это дальняя и правая»

v8 — с фразой «anatomical LEFT arm» + жёстко «RIGHT arm must stay EXACTLY where it was»:

shot19_bandit_profile_v8 — все еще не та

shot19_bandit_profile_v8 — все еще не та
params banana · google/gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image. The man has two arms, both currently resting near the bag. Extend ONLY his anatomical LEFT arm — the arm attached to his LEFT shoulder, which is the shoulder on the camera side of his body (the near-side, foreground shoulder, closer to the viewer). Bring that left hand forward and up, palm rotated to face upward, fingers open, the hand hovering directly above the open sports bag. His RIGHT arm (far-side, on the side of his body away from the camera) must stay EXACTLY where it was in the input — do not move it, do not re-pose it, do not extend it. Keep head, face, torso, bag, window, curtains, wallpaper, parquet, lighting, B&W look, and 16:9 framing identical.

Хак: flip v3 → edit → flip обратно. Если Gemini всегда хватает правую в image-space, то после зеркала это будет левая:

shot19_bandit_profile_v3_flip — зеркальная версия v3

shot19_bandit_profile_v3_flip — зеркальная версия v3

shot19_bandit_profile_v9_flip — edit на зеркале

shot19_bandit_profile_v9_flip — edit на зеркале
params banana · google/gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Edit the first image. The man has two arms, both currently resting near the bag. Extend ONLY his anatomical LEFT arm — the arm attached to his LEFT shoulder, which is the shoulder on the camera side of his body (the near-side, foreground shoulder, closer to the viewer in depth). Bring that left hand forward and up, palm rotated to face upward, fingers open, the hand hovering directly above the open sports bag. His RIGHT arm (far-side, on the side of his body away from the camera) must stay EXACTLY where it was in the input — do not move it, do not re-pose it, do not extend it. Keep head, face, torso, bag, window, curtains, wallpaper, parquet, lighting, B&W look, and 16:9 framing identical.

shot19_bandit_profile_v9 — обратно флипнул, всё та же рука

shot19_bandit_profile_v9 — обратно флипнул, всё та же рука

«не помогло. может поможет вид сверху, где рука уже вытянута нужная? hand_ref.jpg»

v10 с hand_ref как вторым рефом:

shot19_bandit_profile_v10 — всё равно не та

shot19_bandit_profile_v10 — всё равно не та
params banana · google/gemini-3-pro-image-preview · google · 2K · 16:9
prompt
Take the first image as the base to edit. The second image is a top-down view of the SAME scene showing the target arm pose. In the second image, one arm is extended forward with palm facing upward, hand hovering above the open bag — this is the arm you need to extend in the first image. Apply that arm extension to the first image (which is the side-profile view of the same man in the same pose): extend the SAME anatomical arm from his torso forward, palm rotated upward, fingers open, hand hovering above the open sports bag. Do not remove the candy shown in the second image's palm — actually ignore the candy entirely, just use it to identify which arm is extended. The other arm stays in its original position from the first image. Output must be the first image edited — same B&W side-profile framing, same window, curtains, wallpaper, parquet, bag, body pose, head, face, lighting, and 16:9 aspect ratio. NOT the top-down view.

«неа, интересно, чего его заело. ладно, давай попробуем оживить v3 сразу. пусть он вытянет левую руку с конфетой (дай реф руки), зажмурится, опустит конфету в сумку и застегнет ее, 6с»

Ключевое открытие: Seedance с hand_ref как вторым рефом сразу взял правильную руку — animation model слушает pose-ref, edit-model нет:

shot19_anim_v1 — УТВЕРЖДЁН, сработала левая рука
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 shows the target arm pose — a hand with palm facing upward holding a single wrapped candy, hovering above the open bag. Use this as reference for which arm to extend and how it should look. 00:00-00:02: The bald man in leather jacket extends his near-side arm (left arm, closer to camera) forward, palm rotating upward, fingers opening, revealing a single Soviet-style wrapped candy resting on his palm, hand hovering directly above the open sports bag. 00:02-00:04: He briefly closes his eyes (squints them shut for a moment), then tilts his palm downward so the candy drops into the bag. 00:04-00:06: He reaches forward with both hands and zips the bag closed across the top. Camera fixed, locked-off, no movement. Preserve the black-and-white look and side-profile composition of @Image1 exactly. No background music, no soundtrack.

«да, сработало. но хочу еще дубль и запускай генерации задачами, а не виси»

shot19_anim_v2 — второй дубль
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 shows the target arm pose — a hand with palm facing upward holding a single wrapped candy, hovering above the open bag. Use this as reference for which arm to extend and how it should look. 00:00-00:02: The bald man in leather jacket extends his near-side arm (left arm, closer to camera) forward, palm rotating upward, fingers opening, revealing a single Soviet-style wrapped candy resting on his palm, hand hovering directly above the open sports bag. 00:02-00:04: He briefly closes his eyes (squints them shut for a moment), then tilts his palm downward so the candy drops into the bag. 00:04-00:06: He reaches forward with both hands and zips the bag closed across the top. Camera fixed, locked-off, no movement. Preserve the black-and-white look and side-profile composition of @Image1 exactly. No background music, no soundtrack.

«ты че блять, в 19 кадре не указал, что нужно одним кадром? ты гайд забыл?»

«целиком читай, придурок, тебе нужно держать гайд целиком всегда»

Из секции 9: No scene cuts throughout, one continuous shot. Прочитал весь гайд. На shot20 тоже забыл (уже готовился).

shot19_anim_v3 — с single-shot директивой
params 720p · 6s · 16:9
prompt
@Image1 as first frame. @Image2 shows the target arm pose — a hand with palm facing upward holding a single wrapped candy, hovering above the open bag. Use this as reference for which arm to extend and how it should look. 00:00-00:02: The bald man in leather jacket extends his near-side arm (left arm, closer to camera) forward, palm rotating upward, fingers opening, revealing a single Soviet-style wrapped candy resting on his palm, hand hovering directly above the open sports bag. 00:02-00:04: He briefly closes his eyes (squints them shut for a moment), then tilts his palm downward so the candy drops into the bag. 00:04-00:06: He reaches forward with both hands and zips the bag closed across the top. Camera fixed, locked-off, no movement. Preserve the black-and-white look and side-profile composition of @Image1 exactly. Maintain consistent character appearance and lighting from @Image1 throughout. No background music, no soundtrack. No scene cuts throughout, one continuous shot. Avoid jitter and bent limbs.

Застёжка сумки

Общий план shot17_bag_detail_filled_v2 + сверху действия: застегнуть молнию + уйти.

shot20_bag_close_detail_v1 — криво застегнул, зиппер слева
params 720p · 5s · 16:9
prompt
@Image1 as first frame. Top-down overhead view of an open sports bag full of colorful Soviet-era wrapped candies, with the bandit squatting behind the bag. 00:00-00:02: Two hands come down onto the bag and zip the zipper across the top, fully closing the bag. The colorful candies disappear under the leather flap as the bag shuts. 00:02-00:05: The bandit grips the bag handles with both hands, lifts the closed bag straight up out of frame, and stands, his legs moving out of the frame at the top. The parquet floor is left empty where the bag was. Camera fixed, locked-off overhead, no movement. Preserve the black-and-white look. No background music, no soundtrack.

«там криво сумку застегнул, зиппер слева по кадру»

«слева направо по кадру, ну там мало зиппер потянуть, там нужно кусок ткани крышку накинуть сначала»

v2: сначала flap, потом zipper слева-направо, потом подъём:

shot20_bag_close_detail_v2 — flap + прямой зиппер + подъём
params 720p · 5s · 16:9
prompt
@Image1 as first frame. Top-down overhead view of an open sports bag full of colorful Soviet-era wrapped candies, with the bandit squatting behind the bag. 00:00-00:02: The bandit's hands grab the loose leather flap/cover of the bag opening and pull it across the top, folding it over the candies so the candies are hidden under the leather. 00:02-00:04: One hand grabs the zipper pull on the LEFT side of the bag's top edge and drags it smoothly from left to right across the top, fully closing the zipper. The zipper pull finishes at the RIGHT side. 00:04-00:05: Both hands grip the bag handles, lift the closed bag straight up and out of the frame at the top. Parquet floor left empty. Camera fixed, locked-off overhead, no movement. Preserve the black-and-white look. Maintain consistent lighting and bag details from @Image1 throughout. No background music, no soundtrack. No scene cuts throughout, one continuous shot. Avoid jitter and bent limbs.

«зиппер сначала вниз, потом направо, потом вверх, буквой U, понимаешь? так эти сумки работают»

v3: U-путь по периметру молнии (вниз → направо → вверх). Убрали подъём, 5с хватит:

shot20_bag_close_detail_v3 — УТВЕРЖДЁН, U-shaped zipper path
params seedance · 720p · 5s · 16:9
prompt
@Image1 as first frame. Top-down overhead view of an open sports bag full of colorful Soviet-era wrapped candies, with the bandit squatting behind the bag. 00:00-00:02: The bandit's hands grab the loose leather flap/cover of the bag opening and pull it across the top, folding it over the candies so they disappear under the leather. 00:02-00:05: One hand grabs the zipper pull at the TOP-LEFT of the bag's oval opening and drags it smoothly along the edge of the opening in a U-shaped path — first DOWN along the left side of the opening (toward the bottom of the frame), then RIGHT along the bottom edge of the opening, then UP along the right side, finishing at the TOP-RIGHT of the opening. The bag is now fully closed around the entire perimeter. Camera fixed, locked-off overhead, no movement. Preserve the black-and-white look. Maintain consistent lighting and bag details from @Image1 throughout. No background music, no soundtrack. No scene cuts throughout, one continuous shot. Avoid jitter and bent limbs.

После SSL-таймаута на poll — вытащил через прямой опрос. Первый раз config пробовал .config.json в корне — 401 unauthorized, правильный путь — scripts/test_mode/.config.json.

Итог дня 8

Утверждённые шоты:
- shot14_partner_dialogue_v8 — реплика «тебя, сука...» (7с, ровный темп, без жестов)
- shot15_davay_v3 — «Давай, собирайся, блять» + wrist-grab (6с)
- shot15_davay_standup_v2 — альтернативный вариант с вставанием (6с)
- shot13_bandit_recovers_v1 — бандит с открытыми глазами смотрит на напарника (4с)
- shot16_room_crop_full_seedream_v1 — общак с face-swap через Seedream
- shot16_collecting_v2 — сбор конфет, 4 цикла, 12с
- shot17_bag_detail_filled_v2 — POV-деталь сумки с советскими фантиками
- shot17_bag_detail_lastcandy_v2 — одна конфета на ладони (задумчивый момент)
- shot18_partner_dialogue_v1 — «В сумку положил, блять. Быстро» с push-in
- shot19_bandit_profile_v3 — бандит у окна с развернутым паркетом
- shot19_anim_v1 — бандит кладёт последнюю конфету и застёгивает
- shot20_bag_close_detail_v3 — POV-деталь застёжки U-маршрутом

Уроки:
- generate_audio=True в Seedance = модель синтезирует свою речь из текста + voice style, игнорируя твой audio literal. Для чистого lip-sync под uploaded audio это проблема, но возможная. Текст в кавычках + чёткая пунктуация + паузы-друзья + steady even pace → работает.
- Одна правка за Gemini-генерацию. Несколько задач одновременно (размер + положение + цвет) — модель игнорит.
- Gemini с 2+ рефами часто не заходит в edit-mode, а собирает новую картинку. Особенно если аспекты рефов разные (16:9 сцена + 0.71 портрет → output портрет). Seedream для face-swap стабильнее.
- Gemini IMAGE_OTHER flaky на сценах с трупами/плотью/людьми в странных позах — фильтр срабатывает непредсказуемо, ретрай не помогает, нужна переформулировка или смена модели.
- Direction anchors в профильной сцене не работают: «left/right arm», «near/far side», flip-хак — Gemini всё равно вытягивает ту же сторону. Но в Seedance animation model слушает pose-ref (hand_ref) — анимация сделала то, что не мог edit.
- Гайд Seedance читать целиком, а не грепом. Ключевые директивы (No scene cuts throughout, one continuous shot., avoid jitter and bent limbs) разбросаны по секциям — пропустишь, получишь кат-склейку или нервные руки.
- Evolink pending cap — 40 минут. Потом Task timed out, кредиты не списываются. Можно отменить через DELETE endpoint.
- RGBA PNG → JPEG save валится в Pillow. fit_to_aspect теперь конвертит в RGB при JPEG-суффиксе.
- --size 2K — не забывать. Легко потерять при дебаге edit-mode. Картинки без него 1376x768 (~1K), едва терпимо.