Контент-автоматизация

Статья за 3 минуты.
От темы до HTML+DOCX+обложки.

Мультиагентный редакционный конвейер: 10 этапов AI-пайплайна, 28 гардов от ошибок, 52 паттерна антидетекции. Zero-touch контент-маркетинг для Яндекс.Дзен.

297
строк бота
10
этапов пайплайна
28
AI-гардов
3 мин
полный цикл
// Архитектура: Telegram → Queue → AI Pipeline → Export
Telegram Bot (297 строк)
HTTP-polling · 12 категорий · state machine · lock-file · 3 retries
JSON-очередь (без БД)
gen_*.json · req_*.json · cover_*.json · multiply_*.json → sent/
Cron-воркер (Hermes Agent)
4 модуля промпта (120KB/32KB/30KB/29KB) · delegate_task · DeepSeek
Экспорт (HTML + DOCX + Midjourney)
3 платформы: Дзен · VC.ru · Telegram · обложка 16:9

Конвейер, который заменяет редакцию

Проблематика: Владелец блога тратит 4–6 часов на одну статью для Дзена: исследование, SEO, написание, редактура, корректура, обложка. При 3 публикациях в неделю — 12–18 часов ручной работы.

Решение: 10 этапов мультиагентного промпта — от стратега до дизайнера. Пользователь отправляет тему в Telegram-бот → через 3 минуты получает готовую статью с HTML-вёрсткой, DOCX и промптом для Midjourney.

Никаких вебхуков, облаков и фреймворков: бот на голом HTTP-polling (urllib, 297 строк), JSON-файлы вместо очереди, cron вместо сервера. Python 3.12, RTX 4060, Windows 10.

Telegram Bot

297 строк — и ни одной зависимости

Без python-telegram-bot, без вебхуков, без Flask. Ручной HTTP-polling через urllib.request каждую секунду. State machine в оперативной памяти (словарь user_id → состояние).

12 категорий контента — бизнес, технологии, здоровье, финансы, путешествия, образование, недвижимость, авто, красота, дом, еда, психология. Выбор через inline-клавиатуру.

Proactive check: каждую секунду бот сканирует queue/ на готовые файлы. Нашёл → отправил в Telegram → переместил в sent/ (атомарно через shutil.move).

Lock-файл на PID: защита от двойного запуска. 3 ретрая на API-запросы с exponential backoff (2 сек). Callback-диспетчер на 12 обработчиков — единая elif-цепочка.

// poll_bot.py: API-клиент без зависимостей
def ap(m, **p):
    u = f"{a}/{m}"
    dd = urllib.parse.urlencode(p).encode() if p else None
    for i in range(3):
        try:
            with urllib.request.urlopen(
                urllib.request.Request(u, dd),
                timeout=20) as r:
                return json.loads(r.read())
        except:
            if i < 2: time.sleep(2)
            else: return {}
// 3 ретрая · exponential backoff · graceful degradation
AI Pipeline v4.4

10 ролей — одна команда

Мультиагентный промпт на 120KB с JSON-хендоффом между этапами. Каждый этап — отдельная AI-роль со своим контекстом.

1
Стратег
8 тем · тренды
2
SEO
ВЧ/СЧ/НЧ/LSI
3
Контент-менеджер
Редполитика
4
Копирайтер
3-8K знаков
5
Редактор
5-уровневая
6
Шеф-редактор
✅/🔄/❌
7
Корректор
Quad-pass
8
Дизайнер
Midjourney
9
Мультипликатор
1→6 постов
10
Лид-магнит
3-5 идей
Качество

28 гардов и 52 паттерна антидетекции

28 AI-гардов — от Data Hallucination до Context Contamination. Каждый этап пайплайна включает проверки: факт-чек на этапе копирайтера, эхо-проверка на этапе шеф-редактора, Quad-pass аудит на этапе корректора.

16 HARD BANS — запрещённые конструкции, которые триггерят AI-фильтры Дзена: «не просто X, а Y», «в современном мире», «следует отметить», «является» + 12 других. Автоматическая проверка на выходе.

17 правил платформы Дзен — длина абзацев (≤4 предложения), структура H2/H3, CTA-блоки, требования к монетизации.

5 признаков человеческого текста: личный опыт, риторические вопросы, разговорные обороты, микро-отступление, сторителлинг. 0 HARD BANS в финальном тексте.

// Система гардов: 4 слоя защиты
Слой 1: HARD BANS (16 правил)
Запрещённые конструкции: «не просто X, а Y», «в современном мире», «следует отметить», «является», «безусловно», «несомненно» + 10 других.
Слой 2: AI-гарды (28 правил)
Data Hallucination → факт-чек. Context Contamination → эхо-проверка. Tone Drift → консистентность стиля. Jargon Sprawl → проверка читаемости.
Слой 3: Антидетектор (52 паттерна)
Обход AI-фильтров Яндекс.Дзен: вариативность длины предложений, естественные повторы, разговорные вставки, неидеальная структура.
Слой 4: Правила Дзена (17 требований)
Абзацы ≤4 предложения · H2/H3 без кликбейта · CTA в конце · изображения 16:9 · без политики.
// Модульная архитектура промпта
multieagent_zen_polished.md
Полный конвейер: этапы 2–10
120KB
topic_generator.md
Только Этап 1: генерация тем и заголовков
10-20 сек 32KB
cover_generator.md
Только Этап 8: промпты Midjourney
30KB
multiply_generator.md
Только Этап 9: мультипликация контента
29KB
// Без модулей: 120KB → 5.5 минут на запрос
// С модулями: темы за 10-20 сек, статья за 2-3 минуты
Оптимизация

С 5.5 минут до 3 минут

Проблема: промпт 120KB загружается в LLM целиком — каждый запрос занимает 5.5 минут. Узкое место — Этап 1 (темы) и Этап 8 (обложки) не требуют полного контекста редакционной цепочки.

Решение: разделили промпт на 4 модуля. topic_generator.md (32KB) — только правила генерации тем. cover_generator.md (30KB) — только дизайнерские промпты. multiply_generator.md (29KB) — только мультипликация.

Результат: генерация тем — 10–20 секунд (вместо 5.5 минут для полного промпта). Статья — 2–3 минуты (этапы 2–10 без повтора правил). Полный цикл с 10 этапами — 5.5 минут (используется для премиум-контента).

Инфраструктура

JSON-очередь вместо Redis и RabbitMQ

4 типа заявок: gen_ (темы), req_ (статья), cover_ (обложка), multiply_ (мультипликация). Статусы: pending → processing → done. Файлы в processing/sent/done — пропускаются cron-воркером.

Атомарное перемещение: shutil.move() до отправки сообщения. Если Telegram API упал — файл уже в sent/, дубликата нет. Если упал до отправки — сообщение потеряно, статья на диске сохранена.

Cron-воркер: каждые 2 минуты проверяет очередь. gen_*.json (pending) → topic_generator.md. req_*.json → multieagent_zen_polished.md. cover_*.json → cover_generator.md. multiply_*.json → multiply_generator.md.

Экспорт: HTML для Дзена (мобильная вёрстка), DOCX для редакторов, Midjourney prompt для обложки (16:9), 6 коротких постов для соцсетей (пн–сб).

// Файловая структура: никаких БД
queue/
├── gen_1785148156.json // pending → темы
├── req_1785148156.json // pending → статья
├── cover_1785148156.json // pending → обложка
├── multiply_1785148156.json// pending → 6 постов
└── sent/
output/articles/
├── 20260727_tarhet_vk_dzen.html
├── 20260727_tarhet_vk_dzen.docx
├── cover_1785148156.txt // Midjourney 16:9
└── multiply_1785148156.txt // 6 постов пн–сб

7 критических багов

Каждый баг — урок. От бесконечного спама до двойных уведомлений.

#1 ap() при ошибке
Возвращал {} при первой ошибке → бесконечный спам
3 ретрая с паузой 2 сек
#2 Дубль «Готово!»
Файл не перемещался в sent/ → спам каждую секунду
shutil.move ДО отправки
#3 Двойной бот
Два экземпляра → двойные ответы
Lock-файл + sys.exit(0)
#4 Пропуск апдейтов
getUpdates выпала из цикла polling
Восстановлена строка polling
#5 Unicode в кнопках
\U0001f5bc в интерфейсе
Замена на текст
#6 Двойное уведомление
Два блока проверки req_
Убран дубликат
#7 Некорректный offset = -1
Пропуск /start при старте бота
offset = result[-1].update_id + 1

Контент-маркетинг на автопилоте

Не просто генератор текста — полноценная редакция из 10 AI-ролей в одном промпте.

297
строк бота (без фреймворков)
120KB
мультиагентный промпт v4.4
3 мин
от темы до HTML+DOCX
0
HARD BANS в выдаче

Telegram-бот

HTTP-polling, 12 категорий, state machine, lock-file. Ни одной внешней библиотеки.

10 AI-ролей

Стратег → SEO → Контент-менеджер → Копирайтер → Редактор → Шеф-редактор → Корректор → Дизайнер → Мультипликатор → Лид-магнит.

4 слоя защиты

HARD BANS + AI-гарды + антидетектор + правила Дзена. 0 банов после публикации.

Нужен автономный конвейер контента?

От Telegram-бота до мультиагентного пайплайна с гардами и экспортом. Проектируем, пишем, запускаем на вашем железе. Без облаков и подписок.