TL;DR
Контент-завод — это конвейер «инфоповод → черновик → модерация → публикация», где рутину делает автоматика, а решение оставляем человеку. Оркестратор — n8n, тяжёлую LLM-логику выносим в Python-сервис, модерация — в Telegram, публикация — git-коммит статического Markdown с авто-деплоем.
Зачем гибрид
Чистый n8n быстро упирается в потолок на сложной агентной логике: цепочки research → outline → draft → fact-check тяжело держать в визуальных нодах. Поэтому:
- n8n дирижирует: расписание, сбор источников, дедуп, вызовы сервиса, ветвление, Telegram.
- Python (FastAPI) делает агентный пайплайн и общается с локальной LLM по HTTP.
Стадии пайплайна
- Ingest — RSS, GitHub Releases, Hugging Face, arXiv.
- Dedup / Score — отсев дублей и скоринг релевантности темам сайта.
- Research → Outline → Draft — мульти-агентная генерация.
- SEO / GEO — структура H2/H3, перелинковка, мета.
- Fact-check — проверка фактуры, эскалация к API при низкой уверенности.
- Human-gate — Telegram Approve/Edit/Reject.
{
"topic": "Intel Arc local inference",
"stage": "draft",
"confidence": 0.82,
"frontmatter": { "slug": "...", "tags": ["AI", "LLM"] },
"markdown": "## Введение..."
}
Контракт данных
Между стадиями ходит один JSON-объект «article job» — так любую стадию можно переиспользовать, перезапустить или вынести в отдельный сервис без переписывания пайплайна.
Публикация
При Approve драфт превращается в .md-файл с frontmatter, коммитится в репозиторий и пушится.
Webhook/cron на сервере запускает сборку — статические страницы статей генерируются и выкладываются
как обычная статика. Никакой отдельной CMS: статья — это файл в git.
Локальная генерация
Сердце завода — локальная LLM. На Intel Arc A770 это связка IPEX-LLM/OpenVINO без CUDA; подробный разбор стека и выбора моделей — в отдельной статье.
Выводы
- Гибрид n8n + Python снимает потолок визуальных нод на сложной логике.
- Единый контракт «article job» делает стадии переиспользуемыми.
- Human-in-the-loop в Telegram — страховка от публикации «воды» и галлюцинаций.