Это не взгляд со стороны на «автоматизацию контента». Этот текст сам проходит через тот пайплайн, о котором написан: brief, evidence, канон, версии под каналы, проверки, публикация.
Сейчас основа простая: чат пишет → git хранит состояние → сервер публикует.
На схеме это выглядит почти очевидно. В жизни всё появилось не потому, что с первого дня была красивая архитектура. Просто без общей шины стало невозможно отвечать на базовые вопросы: в каком состоянии материал, какие версии уже готовы, что опубликовано и куда текст поедет дальше.
Ниже — engineering diary о том, как за несколько месяцев из набора отдельных writer’ов собрался content unit с манифестом, почему auto для личных соцсетей не прошёл живой прогон и где пришлось отделить оркестрацию от письма. Иначе эта статья врала бы сама себе.
Когда скиллов много, а правды — нигде
С апреля по конец июля 2026 каналы жили отдельно. Появлялись writer’ы и пост-процессоры под конкретные задачи: evidence base, humanizer, expert-voice, посты для Facebook и LinkedIn, claim-check, архив по платформам, позже — блог, картинки, Telegram.
Каждый закрывал свой участок. Facebook — в одном месте. Блог — в другом. LinkedIn и Telegram — со своими ритуалами.
Канонического источника не было. Единой точки, где видно, куда материал уже ушёл, — тоже.
Дистрибуция держалась на памяти: не забыть EN после RU, не промахнуться со слотом, не потерять Twitter после WordPress. Статус «опубликовано» мог одновременно жить в чате, календаре и голове — и везде быть разным.
Сверху на это накладывался media-пайп: озвучка, клипы, монтаж. Он пытался жить рядом с текстом и раздувал один скилл до состояния «вроде всё умеет, но повторить результат всё труднее». Отдельная ветка того же опыта — пайплайн гибридных рилсов: живой эксперт плюс AI-видеовставки.
К концу июля диагноз был простой: проблема не в том, что мало скиллов. Проблема в том, что нет шины.
Утром документ, вечером — юнит
В конце июля всё сдвинулось за один день.
Утром появился документ Content Unit + Channel Manifest: зависимости каналов, Twitter после WordPress, набросок YouTube, статусы. За день он оброс статусной машиной, git как шиной, календарём, обложками и EN-версией в том же прогоне.
Ключевое упрощение зафиксировали сразу: генерация остаётся в чате, сервер только публикует.
Отдельный LLM-рантайм на сервере оказался не нужен. Чат создаёт файлы и пушит их в репозиторий. Сервер периодически читает манифест и публикует то, что готово.
В тот же день появился первый код: команда /distribute, реестр каналов, обложка и календарь на сервере, оркестратор публикации, бот со статусами и подтверждениями ручных постов.
Принцип с тех пор почти не менялся. Месяцы разрозненных writer’ов впервые получили общую точку правды: один slug, один канон, статусы каналов в манифесте.
Ядро юнитов быстро собралось поверх апрельско-июльских скиллов. Сейчас в репозитории десятки таких папок; у большинства есть манифест. То, что вы читаете как статью, для сервера — уже готовый артефакт со статусом.
Шина появилась — и сразу начала кусаться
Следующий шаг был очевидным: в шину поехали настоящие каналы.
Facebook и LinkedIn сначала ушли в auto через API. Почти сразу их вернули в manual: календарь, DM в Telegram, ручное подтверждение. Авто-модули остались для разовых запусков, но нормой стал ручной контур.
Это не страх автоматизации. Это failure mode личного бренда.
Пост, который выходит «сам» где-то в фоне, ломает ощущение контроля. Для ленты, где важна не скорость, а авторское действие, auto оказался слишком дорогим удобством.
Параллельно появились Shorts — сначала как простой контур озвучки и загрузки. Потом стек поменялся, и Shorts стали полноценным каналом в реестре.
В тот же период случился структурный перелом: десятки standalone-постов переехали в единые папки юнитов, архивный chronographer сняли, его заменил /distribute.
Структура стала жёсткой: один slug → один канон → много канальных проекций. Именно в такой папке лежит этот материал.
После сборки началась эксплуатация. В архитектурных документах такие вещи выглядят мелко, но в жизни именно они ломают очередь: таймзона, коллизии слотов, scoring каналов, умное расписание, Twitter снова manual и ждёт EN-блог, единая проверка длины, подтверждение ручных постов, срез «что сейчас в очереди», brief в каждом юните.
На бумаге цепочка уже выглядела нормально. На практике оставался ещё один болезненный разрез: перестать смешивать оркестрацию и письмо.
Но сначала Shorts почти съели сервер.
Три поколения Shorts за три дня
Самым шумным участком стали Shorts. Это были не «небольшие доработки», а три поколения подряд.
Сначала — адаптация текста и один клип.
Потом — multi-scene: отдельный статус рендера, сценарий, большой кусок серверного кода.
Затем — hard cutover: речь → раскадровка → таймлайн → клипы → монтаж.
В чате осталась только речь. Сервер забрал preflight, TTS, генерацию и сборку. Старый script-скилл сняли. Смотреть на его метрики теперь бессмысленно: они показывают короткую жизнь переименований, а не текущую границу ответственности.
Именно здесь всплыл главный практический урок media-пайпа: тяжёлая озвучка и генерация видео в чате раздувают скиллы и ломают воспроизводимость.
Когда производство переехало на сервер, граница стала проверяемой:
chat отвечает за речь. server — за всё остальное.
Параллельно шумело письмо. Среди pipeline-скиллов максимальный churn набрал humanizer. Distribute тоже активно менялся, но по другой причине: он строил оркестрацию, а не переписывал текст. Facebook и LinkedIn writer’ы почти всегда двигались вместе: их одновременно подстраивали под адаптацию от канона.
Снова всплывали мелочи, без которых cron врёт: когда именно проверять длину, как подставлять ссылку на блог в ручные DM, как покрыть речь клипами.
Shorts заметно утянули серверный churn. Но центр тяжести всё равно остался в publish-оркестраторе.
Оркестратор больше не пишет то, что вы читаете
Если сжать историю до переломов, получится пять швов:
- Шина вместо россыпи. От «нужен LLM на сервере» — к «чат генерирует, сервер публикует».
- Откат auto FB/LI. Личные соцсети остались в ручном контуре: календарь, DM, подтверждение.
- Единая структура outputs. chronographer снят; всё живёт в папке юнита.
- Shorts на сервере. Чат — только речь; сервер — производство видео.
- Оркестратор перестал писать.
/distributeбольше не генерирует тексты. Он двигает материал.
Пятый пункт особенно важен для этой мета-истории.
Без него текст врал бы сам себе: будто оркестратор «написал статью». Нет. Граница теперь другая: storytelling пишет канон; канальные адаптеры делают версии от готового source; короткие каналы берут ритм из brief, факты — из source; humanizer переехал из тяжёлого субагента в тонкий CLI.
Итоговая цепочка для текста:
brief → evidence → storytelling → adapters → humanizer → expert-voice → проверка длины → validation
Shorts живут отдельно:
chat = speech, server = всё производство видео
Повторяющийся паттерн виден уже не в теории, а в git. Сначала всё оказывается в одном большом скилле. После первого live-прогона становится понятно, где больно. Потом кусок выносится в сервер, узкий агент или отдельный скрипт.
Идеальной схемы с первого коммита не было. Были живые прогоны и постепенное понимание, где именно нужно резать.
Шов, который ещё предстоит разрезать
Главный кандидат на стабилизацию сейчас — humanizer. После перехода на CLI важно не раздуть контракт обратно.
Shorts нужно оценивать по текущей границе речи и рендера, а не по истории удалённого script-скилла.
То, что Facebook и LinkedIn writer’ы почти всегда менялись вместе, — сигнал: platform-механику ещё можно сжать вокруг общего канона голоса.
Publish-оркестратор остаётся центром тяжести. Логичный следующий шаг — split по каналам, как календарь уже уехал в свой модуль.
Если собирать похожий контур, я бы не начинал с «умного писателя на сервере». Начал бы с трёх вещей: манифест, статусы и граница чат пишет → сервер публикует.
Writer’ов, адаптеры и media-пайп можно резать позже — когда живой прогон покажет, где скилл только притворяется оркестратором, а на деле уже пишет, правит, публикует и принимает решения одновременно.
Тот же принцип разреза «кто делает что» я разбирал и в AI по всему жизненному циклу разработки — только там речь про SDLC, а здесь про контент-шину.
Вся дуга заняла несколько месяцев. Сначала россыпь канальных writer’ов. Потом шина. Потом каналы. Потом болезненный откат auto. Потом три поколения Shorts. И наконец — разрез, без которого эта статья была бы нечестной: оркестратор больше не пишет тексты, которые вы читаете.
Этот материал — такой же юнит в этом пайплайне: канон отдельно, публикация отдельно, ручной контроль там, где личный бренд не прощает фонового шума.
Если ваш пайплайн всё ещё одновременно генерирует, публикует и «чуть-чуть» правит текст в одном месте, шов уже виден. Осталось его разрезать.