Перейти к содержимому

Карусели

Модуль 06-carousel — production-звено цикла: берёт payload (от оператора или от /plan-week) и голос из identity/voice.md, прогоняет через deaify + critics loop и рендерит готовую карусель (PNG-слайды + bundle). Отдельно есть builder, который заводит новые дизайн-шаблоны из картинок-референсов.

Полный pipeline производства карусели: voice → черновик слайдов → deaify → HTML-превью с critics loop → PNG-рендер → bundle (caption/telegram/hashtags/approval_card).

Когда использовать. Когда у тебя уже есть готовый payload карусели — либо ты сам собрал его как оператор, либо его сгенерировал /plan-week//plan-card — и нужно получить финальные слайды и материалы для публикации.

Как вызвать:

/carousel <slug> [--mode operator|planner]
  • <slug> — slug аккаунта (в деве всегда max-tors).
  • --mode operator — payload даёт оператор вручную/в диалоге, перед bundle явный operator review.
  • --mode planner — payload уже лежит в accounts/<slug>/content/carousel/<slug>/payload.yaml (сгенерирован 05-planner).

Что на входе / на выходе.

Вход:

  • accounts/<slug>/identity/voice.md — основной источник голоса.
  • accounts/<slug>/content/carousel/<slug>/payload.yaml — payload с полями source_text, viral_carousel_ref (shortcode из viral-db/carousels-parsed/), lead_magnet (обязательно status: ready, иначе стоп), hook, cta, planner_constraints.
  • viral-db/carousels-parsed/ — вирусные референсы.
  • modules/04L-lead-magnet/index.yaml — библиотека лид-магнитов.
  • Критик-память: semantic-critic-learnings.jsonl + visual-critic-learnings.jsonl (seed в модуле + накопленное в данных аккаунта).

Выход (accounts/<slug>/content/carousel/<date-slug>/):

  • slides/slide_NN.png — рендер слайдов.
  • slides.yaml — структура слайдов (slides_v2 schema).
  • caption.md, telegram.md, hashtags.md — тексты под платформы.
  • approval_card.md — карточка для апрувала.
  • manifest.json — метаданные (slug, date, platform, pillar, viral_ref, status).
  • preview.html — галерея слайдов для быстрого просмотра.
  • lead-magnet.md — копия контента лид-магнита.

Пример:

/carousel max-tors --mode planner

Прочитает payload.yaml из accounts/max-tors/content/carousel/max-tors/payload.yaml, прогонит voice → draft → deaify → critics → рендер PNG выбранным шаблоном, соберёт bundle в accounts/max-tors/content/carousel/<date-slug>/.

Гейты/апрувы.

  • Если lead_magnet отсутствует или его status != ready — pipeline останавливается, просит планер выбрать лид-магнит из library.
  • В HTML-превью работает critics loop: semantic critic (вкус/смысл/голос, LLM-узел) + visual critic (цвет/overflow/hash, детерминированный) + автофикс — до чистого результата.
  • --mode operator добавляет явный operator review перед сборкой bundle.

Связанные: /plan-week (источник payload в mode planner), 04L-lead-magnet (библиотека лид-магнитов), /post, /reel, /publish.

Строит новый дизайн-шаблон карусели из картинок-референсов: vision-анализ → HTML/CSS → непропускаемый гейт fidelity+operator-апрув на полной verbatim-копии референса → регистрация шаблона.

Когда использовать. Когда тебе понравился чей-то визуальный стиль карусели (скрин или ссылка на пост в Instagram) и хочешь завести его как переиспользуемый template для /carousel.

Как вызвать:

/design-carousel <name> <ref-dir | instagram-url>
  • <name> — имя нового шаблона (строчные буквы/цифры/дефис, без слешей и ведущего _); если папка с таким именем уже есть — стоп, чужой дизайн не перетираем.
  • <ref-dir> — локальная папка с картинками (.jpg/.jpeg/.png/.webp), либо
  • <instagram-url> — ссылка вида instagram.com/p/..., тогда карусель скачивается автоматически через media_download.py (нужна залогиненная сессия Chrome).

Что на входе / на выходе.

Вход: картинки-референсы (папка или Instagram-пост), дизайн-уроки из design-critic-learnings.jsonl (seed в модуле + накопленное по аккаунту).

Выход: новый template в <engine_root>/carousel-templates/<name>/ (живёт вне modules/, переживает апдейт движка) — template.html, components/*.html, styles.css, _meta.yaml (со status: active, brand_aware: false), examples/sample-slides.yaml, reference-frames/ с исходными картинками. После регистрации доступен в /carousel через template: <name> в slides.yaml.

Пример:

/design-carousel espresso-look ./refs/millee-carousel/

Проанализирует картинки в ./refs/millee-carousel/, соберёт токен-систему (цвета/типографика/layout/signature), сгенерирует HTML/CSS-шаблон, прогонит через verbatim-рендер и критик-гейт, спросит подтверждение — и после «ок» зарегистрирует шаблон espresso-look.

Гейты/апрувы.

  • STEP 4 — непропускаемый гейт на полной verbatim-копии референса: сначала agent-vision критик проверяет fidelity (узнаваемость дизайна), эстетику и (для фото-слайдов) видимость лица; при «надо чинить» — цикл правка → ре-рендер → критик снова.
  • После критика — прямой вопрос оператору («ок или чинить?»); без явного «ок» _meta.yaml: status остаётся draft, регистрация (STEP 5) не происходит.
  • Более ~3 раундов без схождения — честный блокер, без маскировки.

Связанные: /carousel (использует зарегистрированный шаблон), 01-intelligence (источник media_download.py для скачивания референса по URL).