Прогон 4 скиллов из performance-pipeline handover'а (creative-poster, creative-carousel, creative-orchestrator, OCR) на реальных данных Темір Лизинг — производитель и арендодатель опалубки в Казахстане. 8 базовых постеров через разные эстетические пресеты, multi-aspect outpainting, angle-variants, Remotion-карусель, vision-QA и OCR конкурента.
Использованные модели
Каждый артефакт ниже произведён одной из этих моделей. Image-Pro — для финальных креативов; Flash — для текстовых и vision-вспомогательных задач; Remotion — локальный React/TSX рендер без AI.
Что генерировалось
Модель
Вызовов
$
8 базовых постеров (4:5)
gemini-3-pro-image-preview (Nano Banana Pro)
8
$0.32
6 variants — изображения
gemini-3-pro-image-preview
6
$0.24
6 variants — angle rewrites (text)
gemini-2.5-flash
6
$0.0006
Multi-aspect (1:1 + 9:16 outpaint)
gemini-3-pro-image-preview
2
$0.16
Refine (iterative edit)
gemini-3-pro-image-preview
1
$0.04
QA review (vision)
gemini-2.5-flash (vision)
8
$0.008
OCR конкурента
gemini-2.5-flash (vision)
1
$0.001
2 carousel plans (brief → JSON)
gemini-2.5-flash (text)
2
$0.0002
12 carousel slides
Remotion (React/TSX → headless Chrome) — не AI
12
$0
Total cost этого test pipeline:
~$0.77
9
Постеры (база)
2
Multi-aspect
6
Variants (углы)
1
Refine (итерация)
5
Слайды (карусель 1)
7
Слайды (карусель 2)
8
QA проверок
1
OCR
Бренд
Имя и тон
Темір Лизинг
Партнёр в продаже и аренде опалубки
экспертныйB2B-конструктивныйцифры и факты, без водыспокойная уверенность (не крик)
Палитра + шрифты
Headline: Inter · Body: Inter
Покрытие скиллов
Каждый скилл из performante-pipeline-handover/skills/ прогнан в реальных условиях. Ниже — что сработало.
creative-poster · gen.py
8 постеров через 8 эстетических пресетов (premium_luxury, visual_hook_bold, b2b_corporate, infographic_data, product_hero_clean, warm_editorial, editorial_magazine, tech_minimal). Модель — gemini-3-pro-image-preview. Кириллица идеальная, Unicode (², #, —) сохранён.
OK
creative-poster · refine.py
Iterative edit одного постера: «усиль контрастность цифр до brand-yellow». Composition сохранена, цифры стали жёлтыми. Multi-turn через Gemini Image API.
OK
creative-poster · multi_aspect.py
Outpainting 4:5 → 1:1 (square) + 9:16 (story) для multi-channel ad pack. Postер #05 в трёх форматах из одного payload.
OK
creative-poster · variants.py
Angle explosion: math/emotion/fear/curiosity/authority/benefit — 6 переписанных оffers через Gemini text + 6 уникальных image. Готовый A/B-пак для тестов.
Извлечение headline/bullets/cta/brand из конкурентского креатива (структурированный JSON). Прогон на топ-посте @expomonolit.
OK
creative-poster · db.py
Логирование provenance каждой генерации в общую SQLite (creative_posters table, ~/video-projects/director.db).
OK
creative-poster · brand.py + presets/*
16 готовых эстетических пресетов + brand.yaml с tone/voice/forbidden — авто-инъектируются в prompt.
OK
creative-carousel · init_project.py
Бутстрап Remotion-приложения на проект (TSX-шаблоны слайдов с brand-locked типографикой, npm install ~60 сек).
OK
creative-carousel · plan.py
Gemini-2.5-flash рисует JSON-план карусели из бизнес-брифа (5-7 слайдов: hook/problem/product/stats/list/process/comparison/proof/faq/cta_swipe).
OK
creative-carousel · render_slides.py
Per-slide TSX → PNG через npx remotion still. $0/slide, локально, кириллица 100%. 2 карусели в разных аспектах (4:5 educational, 1:1 product_launch).
OK
creative-orchestrator
High-level coordinator (variants × aspects + QA loop) — компоненты прогнаны отдельно, full-mode оркестрация требует preflight setup и не запускалась.
PARTIAL
creative-explainer-video
Видео-explainer формат — не статика, поэтому пропущен по требованию задачи («статические креативы»).
SKIPPED
Как генерятся эти постеры — пошагово
Каждый постер — это результат сборки 5-слойного промпта и его отправки в Gemini 3 Pro Image. Не «один длинный prompt», а структура: жёсткие правила + бренд + эстетика + бриф + операторская формула. Каждый слой управляет своим аспектом.
СЛОЙ A · SYSTEM_RULES
Жёсткие константы (~70 строк, зашиты в gen.py)
⛔ NO CTA button (Meta дорисует сам)
⛔ NO brand logo / wordmark / watermark
⛔ NO photo equipment в кадре (softbox, ringlight)
⛔ Render Cyrillic exactly, no substitution
⛔ Unicode fidelity: ₸ это ₸, не Т; × not x; — not -
⛔ NO truncation: «ИК-терапия» не должно стать «ИК»
Самый ценный код в скилле — без него Gemini рисует фейковые CTA-кнопки и подменяет ₸ на T.
СЛОЙ B · BRAND CONTEXT
Auto-injection из brand.yaml
BRAND: Темір Лизинг
PALETTE: #1A3A5C / #FFB627 / #0E1B2C
TYPOGRAPHY: Inter
TONE: экспертный, B2B-конструктивный
FORBIDDEN: emojis, photo equipment, neon
PREFERRED: industrial site, material texture
Brand.yaml написан ОДИН раз → автоматически прокидывается во все 8 постеров. Меняешь цвет — все 8 пересобрались.
СЛОЙ C · PRESET RECIPE
YAML-пресет эстетического семейства
Один из 16: premium_luxury, b2b_corporate, infographic_data, tech_minimal, warm_editorial, visual_hook_bold...
Каждый = typography + color_palette + layout_hints + avoid_list. Например, b2b_corporate: «Subject 50-60% of frame, blueprint grid hints, daylight from above-left, NO warm sunset».
Preset = визуальный язык. Brand = идентичность. Custom-prompt = сцена. Три независимые ручки.
СЛОЙ D · USER BRIEF
Custom-prompt + offer/bullets/profits
SCENE: «stack of wooden beams precisely arranged, daylight rim glow, blueprint grid hints subtle on edges».
TEXT (Cyrillic exact):
HEADLINE: «Балка деревянная с гарантией замены»
BULLETS: 3 точки через \n
PROFIT: «Замена при повреждении — за наш счёт»
Единственный слой который я пишу руками для каждого постера.
СЛОЙ E · 5-COMPONENT FORMULA
Операторская теория кадра (banana-claude framework)
SUBJECT Hero object — stack of beams, 60% of frame
Кинематографические термины (50mm, low angle, rim glow) Gemini понимает лучше, чем «сделай красиво» — в training data есть миллионы подписанных операторских кадров.
Пайплайн вызова — что происходит внутри gen.py
1. Загружает brand.yaml из --project-dir
2. Загружает preset YAML по --preset-recipe
3. Склеивает 5 блоков в одну строку ~3000-4000 символов
4. client.models.generate_content(
model="gemini-3-pro-image-preview",
contents=[final_prompt],
config=ImageConfig(aspect_ratio="4:5"),
temperature=1.0, top_k=40, top_p=0.95 )
5. Если 429/503 → автоматический fallback на nano-banana-pro-preview → gemini-3.1-flash-image-preview → gemini-2.5-flash-image
6. Сохраняет PNG (928×1152, 2K-эквивалент для 4:5)
7. Логирует в SQLite (~/video-projects/director.db, таблица creative_posters) — для будущего performance-learning loop'а
Почему именно Gemini 3 Pro Image
Это diffusion-модель с text-encoder специально тренированным на корпусе с кириллицей и Unicode. Что отличает её от Imagen / DALL-E / Midjourney: text-encoder Gemini-3-Pro «понимает» что в «окупится» одна «т», а в «протоколы» одна «т» — а конкуренты регулярно рисуют «окупиттся» / «протоколлы», потому что их encoder тренирован преимущественно на латинице.
Aspect-ratio передаётся через image_config отдельно от текста — внутренний planner модели перестраивает композицию под 4:5 без того чтобы я писал «vertical poster 4:5» в промпте. Это убирает целый класс ошибок где модель путает aspect-ratio с реальным контентом.
Почему 8 постеров получились разными при одинаковом бренде
Brand-layer константный для всех 8 (та же палитра, тот же тон). Менялся preset-recipe (эстетическое семейство) + custom-prompt (сцена). Это как кино: режиссёр (бренд) тот же, но один фильм снят как «premium luxury» (постер #01 — мрамор/тёмный фон/премиум-палитра), другой как «infographic data» (#04 — paper-cream фон, размерные линии, чертёжный стиль), третий как «editorial magazine» (#07 — золотой час, magazine-cover, storytelling).
В production обычно выбирают 2-3 эстетики которые ближе бренду, и крутят все продукты через них. Не нужно 16 пресетов на одну кампанию — это test/exploration режим.
Постеры — базовая партия (4:5, 8 шт)
8 уникальных комбинаций (продукт × пресет). Все через gemini-3-pro-image-preview, locale=ru, без brand mark на холсте (Meta дорисовывает через page-connect).
01_фанера_premium.png QA 10/10
1312 KB · 4:5
02_фанера_visual_hook_bold.png QA 10/10
976 KB · 4:5
03_балка_b2b_corporate.png QA 10/10
1284 KB · 4:5
04_балка_infographic_data.png QA 7/10
1281 KB · 4:5
04_балка_infographic_data_refined.png
1289 KB · 4:5
05_опалубка_product_hero_clean.png QA 9/10
1121 KB · 4:5
06_леса_warm_editorial.png QA 10/10
1503 KB · 4:5
07_10лет_editorial_magazine.png QA 9/10
1454 KB · 4:5
08_гарантия_tech_minimal.png QA 10/10
1081 KB · 4:5
Multi-aspect — омниканальный pack из 1 постера
Постер #05 (Аренда опалубки) outpainted в 1:1 (Square feed) и 9:16 (Story/Reels). Один payload, 3 формата.
05_опалубка_product_hero_clean_square_1x1.png
1114 KB
05_опалубка_product_hero_clean_story_9x16.png
1123 KB
Variants — 6 углов одного оффера (Фанера #1 в СНГ)
Один и тот же базовый оффер («Ламинированная фанера #1 на рынке СНГ») переписан через 6 психологических углов и сгенерирован как изображение. Для A/B-тестирования: какой угол лучше работает на ЦА строительных снабженцев.
MATH · ROI
variant_01_math.png
Числа, формулы окупаемости, цена → экономия. Лучше для CFO / снабженцев.
EMOTION · PAIN→RELIEF
variant_02_emotion.png
Боль → облегчение. «Хватит переживать», уверенность. Для эмоционального решения.
FEAR · COST OF INACTION
variant_03_fear.png
Что теряете БЕЗ этого. Страх упустить, потерять время / деньги.
Тема: Почему ламинированная фанера #1 на рынке СНГ — экспертная серия про монолитное строительство. 5 слайдов через TSX-шаблоны: hook → list → process → faq → cta_swipe. Стоимость: $0 (Remotion, локальный рендер).
slide_01_hook.png
slide_02_list.png
slide_03_process.png
slide_04_faq.png
slide_05_cta_swipe.png
Карусель #2 — Product Launch (1:1, Remotion)
Тема: Балка деревянная с гарантией замены — для крупного монолитного строительства. 7 слайдов: hook → problem → product → stats → process → proof → cta_swipe. Квадратный feed-формат.
slide_01_hook.png
slide_02_problem.png
slide_03_product.png
slide_04_stats.png
slide_05_process.png
slide_06_proof.png
slide_07_cta_swipe.png
OCR конкурента — что они пишут на креативах
Через Gemini Vision разобран один пост @expomonolit. Видно как у конкурента работает brand-mark на изображении (мы такого избегаем — Meta page-connect делает это автоматически).
expomonolit_top1.jpg
Извлечённый контент
brand: EXPO MONOLIT
tagline: СТРОИТЕЛЬНЫЕ СИСТЕМЫ
headline: —
bullets: —
cta: —
offer: —
fine: —
--- RAW ---
EM EXPO MONOLIT
EM EXPO MONOLIT
QY25K
XCMG
EM EXPO MONOLIT
ЭКСПО МОНОЛИТ
СТРОИТЕЛЬНЫЕ СИСТЕМЫ