Обложка в папке выглядит яркой, а в Telegram — старый логотип, на inline кириллица превратилась в кашу, а лицо на cover «похоже, но не вы». После Publish править больно: кэш соцсетей, перезалив featured image, сомнения — перегенерировать всё или только overlay. Ниже — preflight чек-лист BurrBuild: Vertex separate generate, face lock на JPG headshot, машинный cover-qa gate и проверка OG до кнопки Publish.
TL;DR / Быстрый инсайт: Blog cover в BurrBuild идёт только через Vertex `gemini-3-pro-image-preview` (banana_pro): четыре отдельных вызова — cover 2K с вашим лицом и три inline 4K без лица. Референсы — только JPG headshot в `memory/cover/assets`; домен calmopsai.com рисуется post-overlay, не в генерации. Машинный gate `burrbuild_blog_cover_gate.py` пишет `cover-qa-gate.json`; human cover-qa ловит clone сцены. Перед Publish — OG 1200×630 и сброс кэша VK/Telegram.
Типичная история: автор запускает `burrbuild_blog_vertex_separate_generate.py —inject-html`, видит cover в Finder и жмёт Publish. На сайте featured ок, в Telegram — вчерашнее превью: забыли OG scrape. В `memory/cover/assets` лежал `blog-hero-reference3.png` — gate бы отловил non-headshot. Inline-02 с длинной кириллицей размазана — не держали короткие чипы и 4K без даунскейла.
По Вордстат (июнь 2026) «обложка блога проверка» почти нулевая — SERP уводит в журналы и Canva. Зато «сгенерировать обложку» — 1915 показов/мес, «обложка для статьи» — 454. Угол — разрыв между «сгенерировал» и «можно публиковать». Gemini 3 Pro Image умеет legible text и character-reference, но кириллица на inline ломается при длинных строках — в lock BurrBuild короткие чипы и запрет URL в промпте.
Разберите, что уходит в Vertex на cover: banana_pro, JPG-референсы и четыре отдельных вызова

Боль: cover сгенерирован, но backend не Vertex или в `quad-vertex-result.json` нет `source=vertex_ai`. Решение — только `burrbuild_blog_vertex_separate_generate.py` по `shared/blog-cover-vertex-lock.json`. Vertex — облачный API Google для картинок; separate 4x — четыре независимых запроса: cover 2K с лицом и три inline 4K без лица, не один холст 2×2.
| Слот | Размер | Лицо | Текст в пикселях |
|---|---|---|---|
| cover.png | 2K (16:9) | Да, strict face lock | Заголовок статьи; домен запрещён |
| inline-01..03 | 4K | Нет | Короткие чипы 2-4 слова кириллицей |
| MCP nano-banana | любой | н/д | Запрещён для blog cover BurrBuild |
Модель `gemini-3-pro-image-preview` @ `global`. Face lock — байты JPG в API как character reference. Типичная ошибка — «нарисуй calmopsai.com внизу»: домен кривой. URL в генерации запрещён; overlay рисует Python после.
Схема separate generate:
hero_sync (JPG only) → scene planner (SCENE-FIRST) → quad prompt batch → Vertex x4 → inject-html → cover_gate → cover-qa → brand overlay → OG check → Publish
Команда separate generate: VERTEX_AI_LOCATION=global VERTEX_AI_IMAGE_SIZE=2K VERTEX_AI_INLINE_IMAGE_SIZE=4K python3 scripts/burrbuild_blog_vertex_separate_generate.py —article-dir memory/blog/articles/B08-kak-proverit-oblozhku-bloga-do-publikacii —inject-html
После прогона проверьте `quad-vertex-result.json`: vertex_ai, strict_face_lock, refs только JPG. Убедитесь, что Vertex доступен — без MCP fallback. Важно: не подменяйте backend, иначе лицо и сцена разъедутся между статьями.
Очистите папку memory/cover/assets: только headshot JPG, иначе PNG ломают лицо

Боль: на cover чужое лицо после «успешной» генерации. Причина часто в референсе: PNG со старой AI-обложкой вместо портрета. Face lock сравнивает пиксели reference с результатом; если reference — целая обложка с лицом в другом ракурсе, модель «плывёт».
- Запустите sync: `python3 scripts/burrbuild_blog_hero_sync_references.py` — оставляет только `blog-hero-reference1.jpg` и `blog-hero-reference2.jpeg`.
- Архивируйте PNG: любой `blog-hero-reference*.png` уезжает в `memory/cover/assets/archive/` (см. README в assets).
- Избегайте AI-обложек в assets — они ломают identity, даже если «похоже на вас».
- Проверьте lock: `shared/blog-cover-vertex-lock.json` требует JPG-only для face slot.
- Перегенерируйте cover только если reference менялся или gate FAIL по reference — не «на всякий случай» каждый раз.
В реальном проекте автор положил `blog-hero-reference3.png` из B03 — лицо на B08 стало «не тем». После hero_sync и повторной генерации gate и human cover-qa прошли. Правило: assets — только headshot, как паспортное фото, не коллаж и не прошлая обложка.
Соберите три inline без вашего лица: 4K, короткие чипы кириллицы, без даунскейла

Боль: inline-02 с длинной подписью внизу — размазанная кириллица. Диффузионные модели имитируют буквы, а не набирают текст; на Habr и в RU-кейсах GPT Image та же история. Решение BurrBuild: inline 4K, без лица, чипы 2-4 слова, не сжимать до 2K после генерации.
Три inline иллюстрируют H2 — схемы, чек-листы, стикеры. Лицо только на cover. Scene planner (`burrbuild_blog_cover_scene_planner.py`) задаёт полный scene_hint — не укорачивайте вручную, иначе generic офис.
- Чип кириллицы: «face lock JPG», «cover-qa PASS» — 2-4 слова, не предложение.
- 4K без даунскейла — резкость мелкого текста на стикерах.
- Домен calmopsai.com — post-overlay на cover, не в inline prompt.
Типичная ошибка — весь заголовок H2 на стикере inline-03. На практике лучше «проверка до Publish». Советуем укоротить чип или убрать текст; перегенерируйте один слот, не весь quad.
Прогоните cover-qa gate: face match, сцена и бренд URL только post-overlay
Боль: публикация без QA — clone scene с прошлой статьи, duplicate pose, домен внутри пикселей Vertex. Решение — двухуровневый gate: машина + human cover-qa агент.
Машинный gate: python3 scripts/burrbuild_blog_cover_gate.py —article-dir memory/blog/articles/B08-kak-proverit-oblozhku-bloga-do-publikacii
На выходе `cover/cover-qa-gate.json` со status PASS: JPG assets, scene cooldown (15 статей), lock match, pose registry. FAIL — не в Indexer/Publish; смотрите `shared/blog-cover-qa-contract.md`. Human cover-qa (Task `burrbuild-blog-cover-qa`): face match на cover.png, нет scene clone, URL ровный после `burrbuild_blog_cover_brand_overlay.py`. Машинный PASS без глаз — мало: поза может клонировать B05.
Итоговый вердикт: Машина ловит конфиг и файлы; человек (агент QA) ловит «нравится/не нравится» и клоны. Publish без обоих PASS — риск перезаливки и кэша соцсетей.
Бренд URL calmopsai.com — снизу по центру, Python overlay из `cover-design-code.json`. Не стоит надеяться на overlay, если домен уже нарисован внутри Vertex — перегенерируйте cover с чистым промптом.
Пройдите чек-лист dry-run и боевой прогон перед Publish
Боль: на сайте featured ок, в VK/Telegram — старая og:image или обрезанное лицо. Решение — dry-run до Publish и cache reset после.
- Локально: откройте `preview.html` в article dir — cover и inline на месте, inject-html не сломал разметку.
- Размер featured: ориентир 1200×628 или 1200×675; safe zone для лиц ~1080×600 по гайдам OG 2026.
- OG Check: ogcheck.com или аналог — og:title, og:image, файл до ~1 МБ.
- Соцкэш: Telegram @WebpageBot, VK clearCache — если превью не обновилось сразу после черновика.
- Publish policy: B01-B07 и published articles — не перегенерировать cover без явного запроса; B08+ — полный чек-лист каждый раз.
- После Publish: повторите OG check на live URL; featured в WP должен совпадать с cover.png из gate.
Success criteria до FAQ: `burrbuild_blog_cover_gate.py` даёт cover-qa-gate.json PASS; human cover-qa подтвердил face и сцену; quad-vertex-result с vertex_ai и JPG refs; calmopsai.com после overlay; OG 1200×630 без обрезки лица. Рекомендуем не жать Publish, пока не пройдёте OG check — иначе «вроде норм в Finder» обманет.
BurrBuild на neuroalex.site — тот же preflight после GEO QA и до Indexer. Рядом: запуск Cursor Cloud Agent для блога — cover там после writer, не раньше.
Редакционная проверка: Елена Ковалева, эксперт по SEO/GEO.
Достоверность данных: Wordstat «сгенерировать обложку» 1915 показов/мес, «обложка для статьи» 454, «open graph проверка» 31 (РФ, июнь 2026); модель `gemini-3-pro-image-preview` и separate 4x — по `shared/blog-cover-vertex-lock.json` и docs Google на дату публикации.
Частые вопросы
Чем Vertex Pro отличается от MCP для blog cover?
Для blog cover BurrBuild — только Vertex Python с frozen lock: banana_pro, face bytes из JPG, MCP в forbidden_backends. MCP nano-banana годится для кейсов и trace assets, но не для separate blog cover — нет единого face lock и scene registry.
Почему на inline «каша» из кириллицы?
Диффузия рисует буквы как текстуру, не наборщик. Длинные строки ломаются чаще. BurrBuild: inline 4K, 2-4 слова, без лица; не читается — укоротите чип или уберите текст со стикера.
Нужно ли перегенерировать B01-B07 после смены пайплайна?
Нет без явного запроса: regen policy запрещает трогать published cover. Полный чек-лист обязателен для B08+; старые обложки не пересобирайте «для выравнивания».
Достаточно ли cover-qa-gate.json PASS?
Нет. Нужен human cover-qa на face match и clone сцены. Mentor(cover_schema) не пропустит без обоих PASS.
Как проверить OG до публикации в WordPress?
Черновик или staging с og:image; OG Check на URL ~1200×630, лицо в safe zone. После Publish — @WebpageBot или VK clearCache — кэш тянет старую картинку часами.
Что делать при ошибке Vertex credentials?
Стоп, без MCP или GrsAI fallback. Настройте VERTEX_AI_CREDENTIALS_JSON, прогоните burrbuild_blog_doctor.py. Отложить пост лучше, чем Publish без gate.
