AI-картинки для постов в MAX: 6 стилевых пресетов и единый дизайн канала

AI-картинки для постов в MAX: 6 стилевых пресетов и единый дизайн канала

Что под капотом у image-pipeline Content Pilot: 10 пресетов от EDITORIAL до CYBERPUNK_NEON, два режима GENERATE/REWRITE, refund при ошибке генерации. И почему сток не работает в MAX.

Когда я листаю чужие каналы в MAX, я в большинстве случаев не помню кто это через десять секунд после прокрутки. Иллюстрации одинаковые. Стоковая девушка с ноутбуком, абстрактные градиенты, нейросетевая чушь без характера. И это ничего не говорит про канал.

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

Узнаваемость канала через визуал — это не про талант одного художника. Это про то, что все картинки следуют одной грамматике. Цветовая палитра. Композиция. Степень детализации. Эмоциональный регистр. Если эта грамматика выдержана — даже простая картинка узнаётся как «канал X». Если нет — даже шедевры теряются в общем шуме.

Как это устроено в Content Pilot

Image-pipeline в нашем продукте делает одну простую вещь — применяет один и тот же стилистический пресет ко всем картинкам канала. У каждого проекта в настройках есть поле image_style которое определяет пресет. Все генерации проходят через эти инструкции.

Два режима работы:

GENERATE — AI рисует с нуля. Сценарий: пишем пост, AI читает его и рисует картинку под этот текст. Используются Gemini Imagen и image-models через OpenRouter (Flux и другие).

REWRITE — берётся первая картинка из source-поста (если статья делается из источника) и пересобирается через Gemini в нашем пресете. Сюжет тот же, стиль другой. Полезно для агрегаторов: новость пришла со скриншотом интерфейса, мы пересобираем его как редакционную иллюстрацию в стиле канала.

Десять пресетов

В энумe ImageStylePreset сейчас 10 пресетов плюс CUSTOM. Перечислю все, без сокращений:

EDITORIAL (default) — классическая редакционная обложка как у NYT, Bloomberg, Nat Geo. Кинематографичная фотография. Самый часто выбираемый пресет.

YOUTUBE_THUMBNAIL — кликбейт-превью с крупным лицом и текстом. Не для постов в канале (текст AI всё равно ломается), а для тех у кого канал параллельно ведёт YouTube и нужны плашки превью.

INFOGRAPHIC_NUMBERS — инфографика с одной крупной цифрой. Когда пост про статистику или про конкретный факт — крупная цифра как обложка работает лучше любой «концептуальной» иллюстрации.

ANIME — аниме / манга в стиле Shinkai или Ufotable. Не для всех тем подходит, но если канал нишевый (геймдев, анимешники, gen-Z) — попадание в аудиторию.

CARTOON_3D — Pixar / DreamWorks. Дружелюбный, для каналов про образование, родительство, гайды для новичков.

FLAT_CARTOON_2D — плоская иллюстрация в стиле Stripe или Notion. SaaS, B2B, IT-каналы. Самый «безопасный» вариант.

MEME — мем-стиль с banner-зонами под текст. Мы намеренно оставили banner-зоны пустыми — текст вы накладываете сами в Canva или Photoshop, потому что AI кириллицу всё равно ломает.

WATERCOLOR_EDITORIAL — акварель в стиле New Yorker. Для лайфстайл, культуры, философских каналов. Мягко.

CYBERPUNK_NEON — неон, ночь, технологии. IT, крипто, gaming, sci-fi.

EDITORIAL_CARTOON — редакционный шарж в стиле MAD или New Yorker cartoon. Для каналов с сатирическим тоном.

CUSTOM — свободный стиль. Юзер сам пишет правила в поле image_style. Технически всё что не попало в десятку выше.

Форматы композиции

Помимо пресета, есть отдельный энум ImageFormat — как картинка устроена композиционно: SALES (продающая), INFOGRAPHIC, MEME, ILLUSTRATION (default). Один пресет можно использовать в разных форматах. Например, EDITORIAL + ILLUSTRATION даёт классическую редакционную картинку, EDITORIAL + SALES — что-то ближе к рекламной полосе.

Refund-механика

Когда генерация картинки падает — токены за неё возвращаются. Файл article_image_refund.py в коде. Это автомат.

Падает картинка не редко: модели Gemini Imagen иногда возвращают пустоту, OpenRouter image-models тоже бывают на стороне ошибаются. Без refund-механики юзер платил бы за невидимую картинку. Мы посчитали что это нечестно, и сделали возврат.

Цена

Картинка — часть стоимости генерации статьи. В режиме FROM_SCRATCH или FROM_SOURCES она входит в общую сумму, которая считается через cost_calculator.py по тарифам OpenRouter и Gemini. Конкретные цифры зависят от модели — Imagen дороже, какие-то Flux-варианты дешевле. Юзеру в боте показывается итоговая стоимость поста до генерации.

В чистом CROSS_POST картинки не генерируются вообще — копируются из исходного TG-поста. Поэтому фиксированная цена 5 токенов.

Когда AI-картинки не подходят

Не везде это работает. Три типа провалов:

Реальные продукты или люди. AI не нарисует ваш конкретный товар. Не пытайтесь. Грузите фото из карточки товара, AI отключаете для этого поста. Или используйте REWRITE-режим — он берёт оригинальное фото товара и пересобирает в стиле канала.

Графики и таблицы. AI плохо рисует читаемые цифры и кириллический текст. Если в посте есть данные — делайте графики в Datawrapper или Flourish, прикрепляйте как картинку.

Точные исторические события. AI может выдумать форму солдат, архитектуру зданий, фасоны одежды. Для исторических каналов — архивные фото.

Во всех остальных случаях работает.

Что в итоге

AI-генерация делает одно и то же много раз. Стилистический пресет — набор инструкций. Каждая картинка проходит через одни и те же фильтры. Тридцать картинок в месяц — все в одной грамматике. Дизайнер на потоке такого не выдержит.

Дальше — StyleExtractor делает то же самое, но с текстом. Вместе они закрывают тему «узнаваемого канала который ведёт сам себя».