Как я собрал автономный AI новостную систему за полтора месяца
7 апреля 2026 г. · 7 мин
Полтора месяца назад у меня было семь воркфлоу в n8n для новостного пайплайна. Каждый делал что-то своё. На бумаге красиво. На практике — постоянные затыки. Где-то новость застряла, непонятно где. Исправляешь одно — ломается другое.
Семь воркфлоу — семь точек отказа. Каждая ломается по-своему.
Сегодня та же задача решена иначе: 160 уникальных источников, 7127 записей в базе, 11 воркеров, 5 AI-агентов, локальная LLM на домашнем мини-ПК — и оркестратор, которому я просто пишу задачу в Telegram.
Без n8n. Без ручного управления. Почти без моего участия.
Вот как это получилось.
Всё началось с хаоса в n8n
Я не программист в классическом смысле. Начинал с n8n, Make, no-code. Строил новостной пайплайн для своего Telegram-канала @news_all_ai и постепенно обрастал воркфлоу.
Один тянул новости с источников. Второй чистил дубли. Третий переводил. Четвёртый генерировал картинки. Пятый, шестой, седьмой.
Работали. Проблема в другом: когда что-то ломалось — я ведь не знал где. n8n показывал “выполнен успешно”, а новость в канале не появлялась. Каждое изменение — квест: что именно сломал?
Инструменты, которые изменили подход
Начинал в Cursor. Он же настраивал домашний мини-ПК: Ubuntu, llama.cpp, Vulkan, оптимизация под архитектуру железа. Прокси, VPN, база данных, первые версии пайплайна — тоже там.
Perplexity шёл рядом на каждом этапе. Для меня это лучший исследовательский инструмент — когда нужно разобраться в архитектурном решении или понять как работает технология, иду туда первым делом. Глубже него я ничего не видел.
Потом попробовал Claude Code. Это изменило всё.
Я скинул ему все семь воркфлоу и написал примерно так:
“Вот мои семь воркфлоу. Они делают новостной пайплайн. Мне кажется это можно сделать лучше. Сделай.”
Ждал вопросов, уточнений, долгих итераций. Ничего такого.
Он на одном дыхании предложил архитектуру и написал Python-пайплайн, который заменил все семь воркфлоу. Один проект вместо семи. Честно — сильнейшее, что я видел в работе с AI.
Я не читаю этот код как книгу. Но вижу что работает. И могу описать что хочу изменить — и получаю изменение.
Мини-ПК как часть системы
Отдельная история с переводом.
Использовать облачные API для каждой новости из 160 источников каждые 15 минут — дорого. Поэтому перевод работает на локальной LLM: Qwen 3.5 (qwen3.5-9b-q5_k_m.gguf) через llama.cpp на домашнем мини-ПК.
Cursor настроил всё под железо: Vulkan, оптимизация под архитектуру процессора. Перевод работает быстро, бесплатно, локально — данные никуда не уходят. По-моему, это и есть правильный способ работать с локальными моделями: не как с игрушкой, а как с частью инфраструктуры.
На том же мини-ПК живёт OpenClaw — о нём дальше.
Архитектура: 11 воркеров, каждый знает своё место
Пайплайн сейчас выглядит так:
collector → scraper → deduplicator → ai_filter → translator (локальный Qwen)
→ llm_editor → image_worker → publisher
Плюс фоновые: github_discovery, video_discovery, video_cleanup, hitl.
Каждый воркер — отдельный Python-процесс с одной задачей. Никаких “семь в одном”.
collector собирает сырые новости из RSS и API примерно 160 источников: Arxiv, TechCrunch, The Verge, Wired, Anthropic Blog, OpenAI Blog, Habr, VC.ru, GitHub и ещё полторы сотни. Каждые 15 минут.
scraper вытаскивает полный текст там, где RSS даёт только анонс. Раньше использовал облачный Jina Reader — у него 10 млн бесплатных токенов, но на таком объёме они улетают быстро. Когда перенёс пайплайн на Python, подняли свой инстанс Jina на сервере. Теперь без лимитов.
deduplicator убирает дубли по семантическому сходству — не по точному тексту. Это важно: один и тот же релиз с пяти источников не пройдёт пять раз.
ai_filter оценивает каждую новость: relevance_score от 0 до 100. Ниже 75 — в архив. Это, собственно, главный фильтр во всей цепочке.
translator переводит на русский через локальный Qwen 3.5 на мини-ПК.
llm_editor форматирует под стиль канала: заголовок с эмодзи по категории, структурированный текст, атрибуция. Основной режим — MiniMax M2.7, локальный Qwen как резерв.
image_worker генерирует обложку, publisher публикует по расписанию.
github_discovery мониторит GitHub на новые AI-репозитории: новые релизы, резкий рост звёзд.
hitl флагует посты, которые требуют ручной проверки. Human-in-the-loop — иногда без меня всё же не обходится.

Что происходит с каждой новостью
Вот как это выглядит в реальном времени:
18 собрано (новые)
→ 58 в filter queue
→ pending selection
→ 4 translation queue (локальный Qwen)
→ 48 text approval
→ image queue
→ 2 final approval
→ опубликовано
Каждый этап — отдельный статус в базе. Застряло — видно сразу и на каком шаге. Именно этого мне не хватало в n8n. Там всё либо “ок”, либо непонятно.

Из 160 источников — 8 постов в день
Пайплайн не постит всё подряд.
За неделю система собирает тысячи материалов. На выходе — 8 постов в день, прошедших несколько уровней отбора:
- relevance_score ≥ 80 (ai_filter)
- LLM-редактор проверяет, ставит
approvedилиneeds_review - Pipeline Manager распределяет по слотам
Видно же по таблице, где реально есть сигнал, а где просто объём:
| Источник | Собрано (7д) | Pass rate |
|---|---|---|
| Anthropic News | 2 | 100% |
| MarkTechPost | 10 | 50% |
| The Next Web | 80 | 21% |
| iXBT.com | 509 | 14% |
| TechCrunch | 138 | 13% |
iXBT пишет много, но большинство не по теме канала. Anthropic пишет мало — зато каждый материал попадает в цель.

Расписание: слоты вместо “постить когда накопилось”
Публикации идут по четырём слотам:
- Утро (08:00-11:00) — 2 поста
- День (12:00-16:00) — 2 поста
- Вечер (18:00-22:00) — 2 поста
- Ночь (00:00-06:00) — 2 поста
Итого: 8 постов в день. Раньше было 28. Это был шум, а не канал.

OpenClaw и агенты: оркестрация вместо ручного управления
Воркеры — исполнители. Агенты — те, кто принимает решения. Разница, по-моему, ключевая. Без неё это просто автоматизация, а не система.
OpenClaw — платформа для AI-агентов с доступом к инструментам. Агент не просто отвечает текстом: он вызывает API, меняет настройки, запускает процессы. Живёт на том же домашнем мини-ПК.
Координатор — оркестратор внутри OpenClaw. Он управляет всеми остальными агентами пайплайна: раздаёт задачи, следит за выполнением, реагирует на сбои.
Сейчас в пайплайне 5 агентов плюс аналитик:
| Агент | Роль | Расписание |
|---|---|---|
| AgentEditor | Шеф-редактор: выбор кандидатов по слотам, approve-text/approve-final | 07/13/19/01 ВЛАД |
| AgentLLMEditor | Переработка текстов под формат канала | каждые 20 мин |
| AgentPipelineManager | Менеджер потока: наблюдение → решение → действие → лог | 4 раза в сутки |
| AgentSourceAuditor | Аудит источников, отключение мёртвых | еженедельно |
| AgentAnalyst | Аналитика: очередь, срезы, темы | вечер 21:05 |
Координатор управляет ими всеми. Я пишу ему в Telegram:
“Снизь лимит публикаций до 8 в день”
Он смотрит в API, меняет настройку, отвечает: “Готово, max_per_day = 8”.
Без терминала. Без кода.


Дашборд: всё видно сразу
Дашборд рос вместе с системой. Сначала просто статусы воркеров. Потом метрики. Потом полноценный интерфейс — с обзором, агентами, источниками, очередью, воркерами, слотами, опубликованными, настройками, GitHub Discovery.
Когда что-то ломается — вижу сразу. Не гадаю где застряло. Открываю дашборд — всё на экране.


Что работает без меня
Сбор из 160 источников каждые 15 минут. Фильтрация и дедупликация. Перевод через локальный Qwen — бесплатно. LLM-редактура. Генерация картинок. Публикация по расписанию. Мониторинг GitHub. Ежедневная аналитика и отчёты.
Мне остаётся: посмотреть дашборд раз в день, написать Координатору если нужно что-то поменять, иногда одобрить пост вручную через HITL. Всё.

Главный инсайт
Начинал в Cursor. Perplexity помогал разобраться в архитектуре. Но по-настоящему понял, что значит “описать задачу и получить работающую систему” — только когда пересел на Claude Code.
Я не пишу код. Я принимаю решения и ставлю задачи.
Семь воркфлоу в n8n превратились в единый Python-пайплайн с агентами за полтора месяца. Хаос — в систему, которую видно насквозь.
Если бы не попробовал — до сих пор чинил бы воркфлоу номер восемь.
Канал: @news_all_ai — посмотреть что выдаёт система на выходе.
Вопросы про архитектуру, OpenClaw, локальные LLM или как именно это строилось — пишите в комментарии, отвечу.
Теги: AI, автоматизация, Python, агенты, Telegram, новостной пайплайн, Claude Code, OpenClaw, локальные LLM, llama.cpp