Три дня назад два AI спорили о том, как устроить мою контент-машину, GPT в том споре победил, а Claude всё это реализовал, и вроде заработало: система берёт рабочие логи, вытаскивает из них истории и генерирует черновики для блога, Telegram и Threads. Конвейер крутится, файлы создаются, метрики зелёные, и казалось бы живи да радуйся, но была одна маленькая проблема, которая обнуляла вообще всё, потому что на выходе получались тексты, которые публиковать стыдно.
Работало всё, кроме результата
Extractor честно вытаскивал истории из логов, drafter так же честно упаковывал их в форматы под каждую платформу, всё строго по спекам, и технически тут ноль ошибок, ни одного красного лога, ни одного падения. А потом я сел читать готовые черновики.
И вот когда читаешь — тут-то и доходит, что публиковать это нельзя ни в каком виде. Extractor путал хронологию, потому что брал дату модификации файла вместо реальных timestamps сообщений, drafter спокойно додумывал факты, которых в brief вообще не было, а text-review, который по идее должен был всё это ловить, пропускал и повторы, и AI-маркеры — те самые, по которым сразу видно, что писала нейросеть, то есть страж сам спал на посту.
Отдельно меня порадовало вот что: я показал черновик другому AI-агенту, тому что работает с сайтом, и он за минуту нашёл кучу проблем, которые text-review пропустил. Один генерирует, другой ловит, и ключевое тут в том, что первый своих же ошибок не замечает в упор, как ни крути.
Мета в квадрате
Тут вообще смешно вышло, потому что конвейер генерации контента сам стал объектом контента. Build-log — система, которая превращает рабочие логи в контент — генерирует текст, текст оказывается плохим, я чиню конвейер, а он мне за это генерирует текст о том, как я его чинил. Но это не игра слов и не шутка ради красного словца, а реальная боль любого, кто строит ии для автоматизации контента: посты создаются, графики растут, а читать невозможно.
Что конкретно сломалось и что я переделал
Изменений было 11, расскажу про пять, которые дали больше всего эффекта.
Timestamps вместо дат файлов
Extractor определял «когда произошло событие» по mtime файла, и логика тут ломалась на ровном месте: отредактировал лог сегодня — и событие недельной давности получало сегодняшнюю дату, а хронология из-за этого превращалась в кашу.
Фикс простой по сути: парсинг timestamps прямо из сообщений внутри лога, плюс дедупликация с предыдущими briefs, чтобы история, которую уже извлекли вчера, повторно сегодня не вылезала.
Скилл /text-review
Раньше отдельного шага полировки текстов попросту не было, drafter выдавал черновик, и это считалось финальным результатом, то есть никто после нейросети текст в руки больше не брал.
Поэтому я собрал отдельный скилл под текстовый контент, и он теперь проверяет частоту слов (если «система» встречается 15 раз на 800 слов — это уже диагноз), ловит FAQ-антипаттерн, когда FAQ выглядит как допрос самого себя, ищет повторы между постами серии и проверяет ссылки. Если вы работаете с Claude Code, такие скиллы как раз и превращают одного болтливого ассистента в нормальный пайплайн с проверками.
Единые категории для всех платформ
Блог, Telegram, Threads, Reels — каждая платформа жила по своим правилам, и доходило до того, что один и тот же текст был «Build Log» в блоге и «AI-инструменты» в Telegram, то есть бардак на ровном месте.
Теперь категорий ровно 4: Build Log, AI + Работа, Деньги и выбор, Мышление, и они едины для всех платформ, потому что категория — это угол подачи, а не тема, и путать одно с другим больше нельзя.
Platform profiles
Drafter получал на вход слишком много контекста, в него загружались все ресёрчи, все правила и все примеры сразу, и результат был предсказуемый: раздутые тексты, которые пытались угодить вообще всем правилам одновременно и поэтому не угождали никому.
Решение — 4 сжатых профиля платформ (blog, telegram, threads, reel-pack), и каждый содержит только конкретные правила под конкретный формат, без лишнего шума.
Структура по датам
Мелочь, но показательная. Раньше все briefs и drafts лежали в одной папке, и за неделю там накапливалась такая каша, что найти что-то было отдельным квестом, поэтому я реорганизовал всё в папки по датам. Когда у вас ежедневный конвейер, структура хранения — это уже не косметика, а необходимость, ведь иначе вы утонете в собственных файлах.
Больше шагов. Медленнее. Но можно публиковать
Главная ловушка тут — метрика «количество сгенерированных текстов», и она очень коварная, потому что конвейер выдаёт 5 черновиков в день, графики красивые, а толку ноль, ведь если ни один черновик нельзя опубликовать без полной переработки, то вся эта автоматизация с помощью ии бесполезна.
V1 была простая: extractor, drafter, готово. V2 уже честнее: extractor (с timestamps и дедупликацией), drafter (с platform profiles), text-review (с подсчётом слов и антипаттернами), и только потом сажусь читать и править я сам, живым глазом.
Да, медленнее, кто бы спорил. Зато на выходе тексты, которые реально можно публиковать, а не выкидывать.
Итоги
- Работающий конвейер и полезный конвейер — это две разные вещи, и V1 это доказала: тексты она генерировала, а публиковать их было нельзя
- Главный фикс оказался не в алгоритмах, а в шагах проверки: text-review, дедупликация, подсчёт частоты слов
- AI отлично генерирует и плохо проверяет сам себя, так что нужен или другой ai агент, или человек, а лучше и то и другое
- Мета-контент, когда конвейер пишет о себе, работает только если за ним стоит реальная проблема, а не игра слов
- 11 изменений за 2 дня, V2 запущена и обкатывается