Как я создал автономную AI-новостную систему за полтора месяца

Как я создал автономную AI-новостную систему за полтора месяца

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

Итог: семь воркфлоу — семь точек отказа. Каждый ломался по-своему.

Сейчас всё иначе. У меня 160 уникальных источников, 7127 записей в базе, 11 воркеров, 5 AI-агентов и локальная LLM на домашнем мини-ПК. Есть оркестратор, которому я пишу задачу в Telegram — и он её выполняет.

Всё это работает без n8n, без ручного управления и почти без моего участия.

Всё началось с хаоса в n8n

Я не программист. Год назад я впервые узнал о no-code и n8n. Начал строить автоматизации: RAG-системы, обработку изображений, личных ассистентов.

Затем захотел создать новостную систему. Сделал Telegram-канал, начал собирать воркфлоу: один парсил новости, второй фильтровал, третий переводил, четвёртый генерировал изображения. Постепенно добавил ещё три.

Они работали. Но при сбое — например, когда n8n показывал «успешно», но на выходе был пустой результат — вся система останавливалась. Поиск проблемы занимал часы.

Инструменты, которые изменили подход

Всё началось с Cursor. Он помог настроить домашний мини-ПК: установил Ubuntu, llama.cpp, оптимизировал под Vulkan и архитектуру процессора. Прокси, VPN, база данных, первые версии пайплайна — тоже через Cursor.

Параллельно я консультировался с Perplexity, чтобы разобраться в архитектуре и технологиях.

Переломный момент наступил с Claude Code. Я скинул ему все семь воркфлоу и написал:

«Вот мои семь воркфлоу. Они работают, но часто падают. Можешь переписать это на Python и запустить в контейнере на моём сервере?»

Claude задал уточняющие вопросы, предложил архитектуру и за час запустил готовый проект. Я попросил прогнать систему — и был поражён: всё работало быстрее, стабильнее, без сбоев.

Результат: один проект вместо семи, полностью автономный, но пока с ручным утверждением. Это мы обсудили заранее.

Важно: ни строчки кода я не писал. Всё сделал ИИ.

Мини-ПК как часть системы

Перевод новостей — критичная задача. Облачные API для 160 источников каждые 15 минут — слишком дорого.

Я экспериментировал с локальными моделями и остановился на Qwen 3.5 (qwen3.5-9b-q5_k_m.gguf) через llama.cpp. Перевод теперь идёт локально, бесплатно, без утечки данных.

Cursor настроил Vulkan и оптимизировал под железо. Процесс работает быстро и стабильно.

На том же мини-ПК запущен OpenClaw — платформа для AI-агентов.

Архитектура: 11 воркеров, каждый делает свою работу

Система состоит из независимых Python-процессов, запускающихся по расписанию:

  • collector — собирает новости из RSS и API (160 источников: Arxiv, TechCrunch, The Verge, Wired, OpenAI Blog, Habr, VC.ru, GitHub и др.) каждые 15 минут.
  • scraper — извлекает полный текст, если RSS даёт только анонс. Раньше использовал Jina Reader с лимитом в 10 млн токенов. Теперь — свой инстанс Jina на сервере, без ограничений.
  • deduplicator — убирает дубли по семантическому сходству, а не по точному совпадению.
  • ai_filter — оценивает новость по relevance_score (0–100). Ниже 75 — в архив.
  • translator — переводит на русский через локальную LLM Qwen 3.5.
  • llm_editor — форматирует текст под стиль канала: заголовок с эмодзи, структура, атрибуция. Использует MiniMax M2.7 — быстрая и качественная модель.
  • image_worker — ищет оригинальные изображения, при отсутствии — запускает генерацию.
  • publisher — публикует по расписанию.
  • github_discovery — отслеживает новые AI-репозитории с высоким сигналом: рост звёзд, новые релизы.
  • hitl (Human-in-the-loop) — помечает посты, требующие ручной проверки.

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

Каждая новость проходит пошаговый пайплайн. На каждом этапе — статус в базе данных. Если процесс застревает, я сразу вижу, где и почему. Это делает систему прозрачной и управляемой.

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

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

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

Pass rate по источникам показывает качество сигнала:

iXBT пишет много, но большинство — не по теме. Anthropic — мало, но каждая статья релевантна. Это разница между объёмом и качеством.

Pass rate помогает отключать нерелевантные источники. Уже в первую неделю стало ясно, что 20 из них можно безопасно убрать.

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

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

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

Раньше было 28 постов в день — шум. Аудитория читала только последние 1–2. Теперь — меньше, но каждая публикация проходит отбор. Шанс, что её пропустят, минимален.

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

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

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

Пять агентов работают с новостной системой:

  • AgentLLMEditor — перерабатывает тексты под формат канала (каждые 20 минут)
  • AgentPipelineManager — управляет потоком: наблюдение → решение → действие → лог (4 раза в день)
  • AgentSourceAuditor — аудит источников, отключение нерабочих (еженедельно)
  • AgentAnalyst — аналитика: очереди, темы, срезы (ежедневно в 21:05)
  • Координатор — оркестратор всех агентов

Я пишу Координатору в Telegram:

«Координатор, снизь, пожалуйста, лимит публикаций в пайплайне до 8 в день»

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

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

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

Дашборд появился сразу после запуска и развивался вместе с системой. Сначала — статусы воркеров. Потом добавились метрики, аналитика, логи.

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

При сбое — открываю дашборд. Всё видно. Не нужно гадать.

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

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

Всё это работает автономно — пока я сплю или занимаюсь другими делами.

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

Что важно

Сейчас доступно множество мощных инструментов. Perplexity, Claude, Cursor — ими может пользоваться почти любой. Порог входа опустился до минимума.

Я не писал код. Я ставил задачи, обсуждал решения, принимал решения, оркестрировал процессы.

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

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

Читать оригинал