Публикация
Модуль 12-scheduler завершает цикл: берёт generated-слот из plans/current-week.yaml и
публикует его в канал — Telegram напрямую через Bot API, Instagram через /post-carousel
(Buffer). Сам контент не генерирует и генерацию не триггерит — только доставка под апрувом
человека. Публикация в канал возможна, только если этот канал явно включён через /autopublish
(safe-default OFF).
/publish
Заголовок раздела «/publish»Публикует один generated-слот в его канал — сейчас или по плану, плюс сверка и досыл очереди.
Когда использовать. Зови, когда слот уже сгенерён (статус generated) и готов уйти в канал —
либо вручную по конкретному слоту, либо это делает за тебя хвост /today. Отдельно --reconcile
и --due — служебные режимы без интерактива, их обычно вызывает оркестратор, а не ты руками.
Как вызвать
/publish <slug> [slot-id]/publish <slug> <slot-id> --at HH:MM/publish <slug> --reconcile/publish <slug> --due<slug>— id аккаунта.[slot-id]— id слота изcurrent-week.yaml. Не передан — покажет списокgenerated-слотов и спросит.--at HH:MM— запланировать на время вместо немедленной публикации. Без значения — дефолт изplans/schedule.yaml(schedule: {start, interval_hours}).--reconcile— сверить ранее запланированные (scheduled) слоты с фактом публикации у backend’а и флипнуть вpublished. Без человека, зовётся в хвосте/today.--due— досылка наступивших TG-слотов из спящей очередиpublish-queue.yaml(fallback-путь).
Что на входе / на выходе
- Вход:
plans/current-week.yaml(самgenerated-слот),identity/channels.yaml(какой канал у какой платформы), ассеты слота (content/{carousel,post,reel}/<slot-id>/*),plans/schedule.yaml(время по умолчанию),plans/publish-config.yaml(autopublish-гейт по каналу). - Выход:
plans/current-week.yaml— обновляет толькоstatusслота (generated→scheduled/published) и метаданные (dueAt,buffer_post_id,trigger_id).
Пример
/publish max-tors 2026-07-13-trust-hookНайдёт слот, соберёт payload (текст + медиа), пройдёт гейт autopublish, покажет апрув-карточку
(канал, медиа, текст) и спросит «сейчас / по плану HH:MM / правки». После согласия отправит: TG —
через Bot API сразу; IG — через /post-carousel (пуш на телефон, тап — финальный апрув).
Гейты/апрувы
- Autopublish-гейт (STEP 1.5, обязателен). Канал выключен в
/autopublish→ dry-run: покажет payload, ничего не отправит, слот остаётсяgenerated. - Апрув-карточка (STEP 2, непропускаемый узел). Без явного «сейчас» / «at HH:MM» / согласия — ничего не публикуется и не планируется. Правки → правишь content-файлы слота, payload собирается заново.
- Для IG финальный гейт — тап на телефоне в момент публикации (Buffer notification). Для TG отдельного гейта в момент отправки нет — апрув при постановке единственный (routine постит сама).
scheduled-слот при повторном вызове не перепланируется — покажет «уже запланирован», предложит redo/отмену.
Связанные: источник generated-слотов и вызывающий ритуал — /today;
IG-доставку реюзает /post-carousel; видео для reel-слота приходит через
/create-viral-reel; включение канала — /autopublish.
/autopublish
Заголовок раздела «/autopublish»Персистентный per-channel выключатель реальной публикации (safe-default OFF).
Когда использовать. Зови перед первой боевой публикацией в канал (или чтобы её осознанно
выключить). Пока канал OFF — /publish в него не отправляет ничего, только показывает dry-run.
Как вызвать
/autopublish <slug>/autopublish <slug> <instagram|telegram> <on|off><slug>— id аккаунта.- Без канала — покажет статус обоих каналов и остановится.
- С каналом и
on/off— переключит и покажет новое состояние обоих.
Что на входе / на выходе
- Вход/выход:
plans/publish-config.yamlаккаунта (единственный файл, который эта команда пишет).identity/channels.yamlне трогает.
Пример
/autopublish max-tors instagram onВключит autopublish для Instagram, покажет статус instagram ON / telegram OFF и предупредит: «теперь
публикует РЕАЛЬНО в боевой канал».
Гейты/апрувы
- Нет отдельного гейта на саму команду, но при включении (
on) агент явно предупреждает, что канал начнёт публиковать в боевой канал по-настоящему. - Safe-default: нет файла
publish-config.yaml→ оба канала OFF, ничего не подразумевается включённым.
Связанные: гейт, который читает /publish на каждой отправке; каналы
(identity/channels.yaml) настраиваются в /onboard.