При подготовке урока 14 октября в шлюз CloseRouter отправили фото пачки кофе «Зерно» (учебное фото, его нарисовала нейросеть) с двумя просьбами. Первая: убрать фон. Через 12 секунд и за 0,011 $ вернулась та же пачка на прозрачном фоне, ни одна буква на наклейке не сдвинулась. Вторая: поставить пачку на полку кофейни. Картинка вышла красивая, но у одной модели белая наклейка стала бежевой, а у другой на доске меню за пачкой появились каракули вместо букв. В этом уроке вы научитесь делать фото своего товара нейросетью и замечать такие изменения до публикации.
Чему научитесь в этом уроке:
• выбирать путь под задачу: вырезать фон, и товар останется настоящим, или поставить товар в сцену, и его перерисуют;
• писать запрос на сцену с приметами товара и форматом кадра;
• сверять результат с оригиналом по семи пунктам;
• убирать с фото лишний предмет, не трогая остальное;
• собирать в n8n сценарий: фото через форму, правка в шлюзе, результат вам в Telegram.
Вспомните урок 3.4. Там модель рисовала картинку к посту с нуля по тексту, через адрес/v1/images/generationsшлюза CloseRouter. Сегодня у модели будет ваше фото, и запросы пойдут на соседний адрес/v1/images/edits(«правки»). Учётные данные те же. Урок 3.4
Ножницы или художник
Новый фон для товара можно сделать двумя способами. Можно взять ножницы, вырезать товар со старого снимка и положить на белый лист: товар останется тем же снимком. А можно отдать фото художнику и попросить нарисовать товар на полке кофейни. Художник перерисует картину вместе с товаром и может ошибиться в мелочах.
С нейросетями так же. Модель recraft/remove-background работает ножницами: только вырезает фон. Модели вроде google/gemini-3.1-flash-image-preview и openai/gpt-image-2.5 работают художником: получают фото и запрос словами и рисуют новую картинку. В прогоне мы пробовали четыре таких модели, и ни в одной сцене товар не остался в точности прежним.

Правило выбора простое. Фото должно показать товар точно таким, какой приедет покупателю (главное фото карточки, фото к заказу)? Берите ножницы. Нужна атмосфера для поста или рекламы? Можно звать художника, но его работу сверять с оригиналом.
Вырезать фон
Модель recraft/remove-background принимает только фото, без запроса словами: с полем prompt шлюз отвечает ошибкой 400 Unknown image operation field. В прогоне вырезка стоила 0,011 $ и шла от 12 до 27 секунд. Результат приходит в формате PNG (формат картинки, в котором бывает прозрачный фон): товар остаётся, всё вокруг становится прозрачным.

Вырезка убирает всё, что не товар, даже то, что вы, может быть, хотели оставить: у кружки с горячим напитком вместе с фоном пропал пар. А прозрачность сохраняется не везде. Когда сценарий отправил вырезку в Telegram как фото, прозрачные места стали белыми, и для товара на белом фоне это даже удобно.
Что художник меняет без спроса
Запрос на сцену состоит из трёх частей: что сделать, что не менять и в каком формате вернуть кадр. Первые две пишутся словами. Запрос, на котором проверяли пачку:
Поставь эту пачку кофе на деревянную полку в кофейне, рядом медная турка и чашка эспрессо, тёплый свет. Пачку не меняй: те же надписи на наклейке, шрифт, прищепка, форма и размер.
Список «не меняй» перечисляет приметы товара: надписи, детали, цвет, форму. Гарантии он не даёт. Формат кадра словами не задать, для него есть отдельное поле. Без него модели в прогоне меняли форму кадра: горизонтальное фото кружки GPT-image вернул квадратным, а Qwen вытянул в широкий кадр 16:9. У Gemini формат «как у исходника» задаёт поле "aspect_ratio": "auto". У GPT-image это поле size с размером того же формата: для вертикального фото 2:3 "1024x1536".

Что модели поменяли в прогоне, хотя их просили этого не делать:
- Цвет. GPT-image сделал белую наклейку пачки бежевой.
- Детали. У полосатой кружки ободок стал ярче и толще, у Qwen ручка тоньше и выше. Полос осталось пять у всех трёх моделей.
- Лишнее в кадре. Цветок в горшке, веточка мяты, вторая кружка за стеклом. Ничего из этого не заказывали.
- Буквы на фоне. На доске меню за пачкой Gemini нарисовал каракули, похожие на текст.
Надписи на самой наклейке «ЗЕРНО / кофейня · Тверь / 250 г» сохранились в обеих сценах, которые мы сверяли по буквам. Поменялось то, на что смотрят меньше: цвет, мелкие детали и фон.
Одна сцена в прогоне стоила от 0,015 $ (openai/gpt-image-2.5) до 0,113 $ (black-forest-labs/flux-kontext-max) и занимала обычно от 17 до 52 секунд. Однажды Gemini не ответил: через 4 минуты пришла ошибка 504, деньги не списались.
Сверка с оригиналом: семь пунктов
Откройте исходное фото и результат рядом, на одном экране, и пройдите по списку. На каждый пункт ответ один из двух: «совпало» или «изменилось, вот что».
- Надписи. Прочитайте каждую по буквам, включая мелкий текст и цифры веса или объёма.
- Детали. Посчитайте то, что можно посчитать: полосы, пуговицы, прищепки, крышки, ручки.
- Форма и пропорции. Не стал ли товар выше, ниже, шире или тоньше.
- Цвет. Белое осталось белым, оттенок упаковки тот же.
- Лишнее в кадре. Предметы, которых вы не заказывали, вторые копии товара, отражения.
- Надписи на фоне. Вывески, меню, книги за товаром: каракули там тоже увидят.
- Формат кадра. Вертикальное фото осталось вертикальным, товар не обрезан.

Если лишний предмет попал на фон, его можно убрать точечной правкой, о ней следующий раздел. Изменения самого товара (цвет, форма, детали) в прогоне правкой не чинили: проще запустить сцену ещё раз или взять вырезку. Сцену с изменённым товаром не ставьте туда, где покупатель выбирает именно этот товар.
Убрать лишнее точечной правкой
На кухонном снимке пачки слева мешала белая кружка. Запрос к художнику тот же по устройству, но с жёсткой рамкой:
Убери белую кружку слева. Больше ничего на фото не меняй: ни пачку, ни надписи, ни фон, ни свет, ни кадрирование.
Обе модели убрали кружку. У Gemini с aspect_ratio: auto изменились 2,1% точек кадра, у GPT-image с размером 1024×1536, то есть тем же форматом 2:3, что у исходника, 2,6%. Точки считала программа: наложила два кадра и посчитала, где цвет заметно отличается.

Тот же запрос к GPT-image с квадратным размером 1024×1024 убрал кружку, но заново скомпоновал всю кухню: растение переехало, пачка стала шире. Отличалось уже 36,5% точек. Формат результата задавайте как у исходника, а если у модели такого размера нет, возьмите ту, у которой он есть.

Наложение можно сделать и без программы. Откройте два фото в одном просмотрщике и листайте туда-обратно стрелками: всё, что «прыгает» при переключении, изменилось.
Сценарий в n8n: от формы до Telegram
Руками удобно попробовать, а для десяти товаров нужен сценарий. В нём шесть узлов: форма принимает фото, следующий узел переводит его в текст, две ветки отправляют в шлюз вырезку и сцену, и бот присылает оба результата вам в Telegram для сверки.

1. Форма. Узел Form Trigger работает как окошко приёма документов: n8n показывает простую веб-страницу с полем для файла, и сценарий запускается, когда файл отправлен. Назовите узел «Форма: фото товара» и заполните:
- Form Title: Фото товара;
- Field Label:
photo, латиницей: под этим именем файл придёт в следующий узел; - Element Type: File;
- Accepted File Types:
.jpg,.jpeg.
Фото с телефона перед отправкой уменьшите примерно до 2000 точек по длинной стороне. Фото 4000×6000 (3,3 МБ) вырезка в прогоне не приняла: шлюз дважды ответил 500 Internal server error, а то же фото 2000×3000 прошло за 27,5 секунды. Если телефон сохраняет снимки в формате HEIC (так по умолчанию снимает iPhone), сохраните фото как JPG.
2. Фото в текст. Шлюз принимает фото только внутри запроса, длинной строкой из букв и цифр. Это как продиктовать картинку по телефону символами, а на том конце собрать её обратно. Такая запись называется base64. Узел Extract From File делает её сам: назовите его «Фото в base64», операция Move File to Base64 String, Input Binary Field photo, Destination Output Field photo.
3. Две ветки к шлюзу. От выхода «Фото в base64» протяните две связи к двум узлам HTTP Request, тогда фото уйдёт в обе ветки сразу. Оба узла настроены как «Картинка» в уроке 3.4: Method POST, Authentication Predefined Credential Type, тип OpenAI, те же учётные данные CloseRouter. URL у обоих https://api.closerouter.dev/v1/images/edits. В теле запроса фото стоит в поле image и начинается словами data:image/jpeg;base64,: так шлюз понимает, что дальше идёт фото в JPG, записанное строкой. Ссылку на фото вместо строки шлюз не берёт и отвечает «Remote media URLs are not allowed». Тело узла «Вырезать фон»:
{{ {
"model": "recraft/remove-background",
"image": "data:image/jpeg;base64," + $json.photo
} }}
Тело узла «Товар в сцене» (запрос замените приметами своего товара):
{{ {
"model": "google/gemini-3.1-flash-image-preview",
"aspect_ratio": "auto",
"image": "data:image/jpeg;base64," + $json.photo,
"prompt": "Поставь эту пачку кофе на деревянную полку в кофейне, рядом медная турка, тёплый свет. Пачку не меняй: те же надписи на наклейке, шрифт, прищепка, форма и размер."
} }}
У обоих узлов на вкладке Settings включите Retry On Fail (3 попытки через 5 секунд) и On Error = Continue, как в уроке 3.4, а в Options поставьте Timeout 300000 (5 минут). В прогоне через форму сцена получилась с повторной попытки, последняя заняла 20 секунд. Цена каждого запуска видна в выводе узла HTTP Request, в поле usage → cost_usd.
4. В Telegram. После каждой ветки поставьте узел Telegram с операцией Send Photo: Chat ID <ваш номер> (как его узнать, разобрано в уроке трека 2 «Бот в Telegram»), Photo {{ $json.data[0].url }}, в подписи напоминание, что сверить. PNG вырезки и JPG сцены Telegram по этим ссылкам принял. Если ветка не получила картинку, узел Telegram после неё, скорее всего, тоже упадёт: такой случай в прогоне не проверяли.
Тестовая форма работает, только пока сценарий её ждёт. Нажмите в редакторе Execute, выберите запуск от формы, и только потом отправляйте фото. В прогоне первое нажатие Submit показало «Problem submitting response», и сценарий перестал ждать. Снова Execute, отправить ещё раз, и всё прошло: от отправки формы до двух фото в Telegram 50 секунд, вырезка 0,011 $ и сцена 0,096 $.
Видео из фото: что мы проверили
14 октября мы искали видео из своего фото там, где можно платить из России без иностранной карты, и не получили его:
- CloseRouter делает видео только по описанию словами, поле с фото отклоняет.
- ГигаЧат на сайте ответил, что генерация видео временно недоступна; раздела «Видео» в меню не было.
- Бот ГигаЧата в Telegram прислал инструкцию со ссылкой на этот раздел сайта; загрузить фото боту проверить не удалось.
- Шедеврум на сайте делает видео только по описанию, своё фото загрузить нельзя.
Сервисы меняются быстро, и что-то из этого могло заработать. Найдёте рабочий путь — сверяйте ролик тем же списком из семи пунктов, досмотрев до конца: модель рисует каждый кадр заново.
Если не получилось
- 400 «Unknown image operation field», поле prompt. Вы отправили запрос словами модели вырезки.
recraft/remove-backgroundпринимает только полеimage. - 400 «Invalid image operation input», поле /image. Фото ушло не строкой. Проверьте, что тело собрано выражением и
imageначинается сdata:image/jpeg;base64,. - 500 «Internal server error» сразу, за несколько секунд. В прогоне так отвечала вырезка на фото 4000×6000. Уменьшите фото до ~2000 точек.
- 504 через несколько минут. Модель не успела ответить. В прогоне деньги за такой ответ не списались. Запустите позже или смените модель.
- После Submit ничего не происходит. Сценарий перестал ждать форму: снова Execute в редакторе и отправить фото ещё раз.
- Хотите брать фото по ссылке с чужого сайта. В прогоне облако n8n скачать фото с Wikimedia не смогло: сайт ответил 429 «Too Many Requests». Свои фото надёжнее отправлять через форму.
Контрольный вопрос. Для главного фото карточки товара нужен белый фон, а сам товар должен быть точно таким, какой приедет покупателю. Какой путь выбрать?
Подсказка: Вспомните ножницы и художника: кто из них перерисовывает и сам товар?
На курсе задания проверяются автоматически. Подобрать курс
Контрольный вопрос. Вы заказали сцену: «поставь кружку на светлый деревянный подоконник утром, за окном размытая зелень, кружку не меняй». Сверяете результат с оригиналом. Какие изменения вы не заказывали? Выберите все подходящие.
Выберите все верные варианты.
Подсказка: Положите рядом текст заказа и каждый вариант: что из этого было в заказе, а что модель добавила сама?
На курсе задания проверяются автоматически. Подобрать курс
Контрольный вопрос. Точечная правка убрала кружку с вертикального фото пачки, но вернула квадратную картинку, и пачка на ней стала шире. Что исправить в первую очередь?
Подсказка: Вспомните два запуска правки на пачке «Зерно»: в одном кадр вышел 2:3, в другом квадратный. Чем они отличались и сколько точек изменилось?
На курсе задания проверяются автоматически. Подобрать курс
Задание. МИССИЯ «Карточка без подмены». Сфотографируйте свой товар на телефон: товар целиком, с надписью или заметной деталью, если она есть, а рядом поставьте один лишний предмет (чашку, ручку). Сохраните фото как JPG и уменьшите примерно до 2000 точек по длинной стороне. Соберите сценарий из урока: форма → «Фото в base64» → «Вырезать фон» и «Товар в сцене» → Telegram. В запросе сцены замените пачку кофе на свой товар и перечислите его приметы. Отправьте фото через форму. Затем поменяйте запрос в ветке сцены на точечную правку «убери [лишний предмет], больше ничего не меняй» и отправьте фото ещё раз. Приложите: (1) исходное фото; (2) три результата: вырезку, сцену, точечную правку; (3) текст вашего запроса на сцену; (4) сверку сцены по семи пунктам урока, на каждый пункт «совпало» или «изменилось: что именно»; (5) журнал: модель, секунды и цена каждого запуска (поле usage → cost_usd в выводе HTTP Request); (6) одну-две фразы: какое фото вы поставите в карточку товара, какое в пост и почему, со ссылкой на пункты сверки; (7) снимок сценария. Принято, если: на вырезке товар совпадает с исходником; в запросе на сцену перечислены приметы именно вашего товара; сверка сцены заполнена по всем семи пунктам и в пунктах «изменилось» названо, что именно; на точечной правке лишний предмет убран, а товар и остальной кадр на месте; формат кадра у сцены и правки такой же, как у исходника, или это отмечено в сверке; журнал заполнен по всем запускам; выбор фото для карточки согласуется со сверкой (сцена с изменённым товаром в карточку не ставится); ключи и номер чата на снимках закрыты.
Подсказка: Если товара под рукой нет, возьмите любую вещь с надписью: банку, книгу, упаковку. Сверку делайте на экране с двумя окнами рядом, иначе мелкие изменения легко пропустить.
✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.
На курсе задания проверяются автоматически. Подобрать курс
Что дальше
Фото товара приходит вам в Telegram на сверку, а в пост его пока ставите вы сами. В следующем уроке бот пришлёт черновик поста с картинкой из урока 3.4 и кнопками «Опубликовать» и «Отклонить», и в канал пост уйдёт только после вашего нажатия.
Итог:
• вырезка фона (recraft/remove-background, 0,011 $) не меняет товар, сцена перерисовывает кадр, точечная правка в прогоне меняла 2–3% кадра при правильном формате;
• в запросе на сцену перечисляйте приметы товара, а формат кадра задавайте полем: aspect_ratio auto у Gemini или size того же формата у GPT-image;
• в прогоне модели сохранили надписи на товаре, но меняли цвет и детали и дорисовывали лишнее, поэтому каждую сцену сверяйте по семи пунктам;
• в n8n фото приходит через форму, уменьшенное до ~2000 точек, переводится в base64 и уходит в /v1/images/edits, результат бот присылает в Telegram;
• видео из своего фото 14 октября не получили ни одним из проверенных путей.
