Kravtsov Lab
Главная Статьи Кейсы Знания Обо мне Контакт

Как я собрал автономный 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, база данных, первые версии пайплайна — тоже Cursor.

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) — флагует посты, которые требуют ручной проверки.

Снимок экрана 2026-03-30 в 23.57.31.png


Что происходит с каждой новостью

Pipeline flow в реальном времени:

18 собрано (новые)
  → 58 в filter queue
    → pending selection
      → 4 translation queue (локальный Qwen)
        → 48 text approval
          → image queue
            → 2 final approval
              → опубликовано

Каждый этап — отдельный статус в базе. Застряло — видно сразу и на каком именно шаге.

Снимок экрана 2026-03-30 в 23.46.54.png


Из 160 источников — 8 постов в день

Пайплайн не постит всё подряд.

За неделю система собирает тысячи материалов. На выходе — 8 постов в день, прошедших несколько уровней отбора:

  1. relevance_score ≥ 80 (ai_filter)
  2. LLM-редактор проверяет и ставит approved или needs_review
  3. Pipeline Manager распределяет по слотам

В таблице источников видно pass rate по каждому:

ИсточникСобрано (7д)Pass rate
Anthropic News2100%
MarkTechPost1050%
The Next Web8021%
iXBT.com50914%
TechCrunch13813%

iXBT пишет много, но большинство не по теме канала. Anthropic пишет мало — зато каждый материал попадает в цель.

Снимок экрана 2026-03-30 в 23.51.52.png


Расписание: слоты вместо “постить когда накопилось”

Публикации идут по четырём слотам:

  • Утро (08:00-11:00) — 2 поста
  • День (12:00-16:00) — 2 поста
  • Вечер (18:00-22:00) — 2 поста
  • Ночь (00:00-06:00) — 2 поста

Итого: 8 постов в день. Раньше было 28. Это был шум, а не канал.

Снимок экрана 2026-03-30 в 23.57.23.png


OpenClaw и агенты: оркестрация вместо ручного управления

Воркеры — исполнители. Агенты — те, кто принимает решения.

OpenClaw — платформа для создания AI-агентов с доступом к инструментам. Агент не просто отвечает текстом: он вызывает API, меняет настройки, запускает процессы. Живёт на том же домашнем мини-ПК.

Координатор — оркестратор внутри OpenClaw. Он управляет всеми остальными агентами пайплайна: раздаёт задачи, следит за выполнением, реагирует на сбои.

Сейчас в пайплайне 5 агентов плюс аналитик:

АгентРольРасписание
AgentEditorШеф-редактор: выбор кандидатов по слотам, approve-text/approve-final07/13/19/01 ВЛАД
AgentLLMEditorПереработка текстов под формат каналакаждые 20 мин
AgentPipelineManagerМенеджер потока: наблюдение → решение → действие → лог4 раза в сутки
AgentSourceAuditorАудит источников, отключение мёртвыхеженедельно
AgentAnalystАналитика: очередь, срезы, темывечер 21:05

Координатор управляет ими всеми. Я пишу ему в Telegram:

“Снизь лимит публикаций до 8 в день”

Он смотрит в API, меняет настройку, отвечает: “Готово, max_per_day = 8”.

Без терминала. Без кода.

Снимок экрана 2026-03-30 в 23.59.10.png

Снимок экрана 2026-03-31 в 00.23.22.png


Дашборд: всё видно сразу

Дашборд рос вместе с системой. Сначала просто статусы воркеров. Потом метрики. Потом полноценный интерфейс.

Сейчас в нём: обзор, агент, источники, очередь, воркеры, слоты, опубликованные, настройки, GitHub Discovery.

Когда что-то ломается — вижу сразу. Не гадаю где застряло. Открываю дашборд — всё на экране.

Снимок экрана 2026-03-30 в 23.58.10.png

Снимок экрана 2026-03-30 в 23.58.31.png


Что работает без меня

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

Мне остаётся: посмотреть дашборд раз в день, написать Координатору если нужно что-то поменять, иногда одобрить пост вручную через HITL.

Снимок экрана 2026-03-31 в 00.01.59.png


Главный инсайт

Я начинал в Cursor. Perplexity помогал разобраться в архитектуре. Но по-настоящему распробовал что значит “описать задачу и получить работающую систему” — только когда пересел на Claude Code.

Я не пишу код. Я принимаю решения и ставлю задачи.

Семь воркфлоу в n8n превратились в единый Python-пайплайн с агентами за полтора месяца. Хаос превратился в систему, которую видно насквозь.

Если бы не попробовал — до сих пор чинил бы воркфлоу номер восемь.


Канал: @news_all_ai — посмотреть что выдаёт система на выходе.

Вопросы про архитектуру, OpenClaw, локальные LLM или как именно это строилось — пишите в комментарии, отвечу.


Теги: AI, автоматизация, Python, агенты, Telegram, новостной пайплайн, Claude Code, OpenClaw, локальные LLM, llama.cpp