Как я собрал автономную AI-новостную систему за полтора месяца. ai.. ai. llm.. ai. llm. n8n.. ai. llm. n8n. python.. ai. llm. n8n. python. telegram.. ai. llm. n8n. python. telegram. автоматизация.. ai. llm. n8n. python. telegram. автоматизация. агенты.. ai. llm. n8n. python. telegram. автоматизация. агенты. искусственный интеллект.. ai. llm. n8n. python. telegram. автоматизация. агенты. искусственный интеллект. Машинное обучение.. ai. llm. n8n. python. telegram. автоматизация. агенты. искусственный интеллект. Машинное обучение. новостной пайплайн.. ai. llm. n8n. python. telegram. автоматизация. агенты. искусственный интеллект. Машинное обучение. новостной пайплайн. Системное администрирование.

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

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

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

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

Вот как это вышло.


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

Я не программист в классическом смысле. Еще год назад я впервые узнал о n8n и no-code системах. Я строил различные автоматизации такие как Rag системы, автоматизация получения различных данных, обработка картинок, личные ассистенты и многое другое.

Затем я захотел построить свою новостную систему, создал канал, начал делать воркфлоу, сделал один, второй, третий, добавил генерацию картинок для каждой новости, потом я понял что так не очень хорошо получается и доработал воркфлоу так, чтобы он сначала парсил новости и тянул оттуда оригиналы картинок а затем уже если не нашел то запускал генерацию по смыслу. Так я создал полноценную систему для своего Telegram-канала @news_all_ai и постепенно обрастал воркфлоу.

Один воркфлоу тянул новости с источников. Второй чистил дубли и проводил фильтрацию новостей. Третий переводил. Четвёртый генерировал картинки. Пятый, шестой, седьмой — делали свои задачи.

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


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

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

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

В целом первая рабочая Новостная система появилась когда я решил в очередной раз попробовать Claude Code. Кстати я был очень удивлен и доволен результатом.

Я просто скинул ему все семь воркфлоу и написал примерно так:

“Вот мои семь воркфлоу. Они сейчас работают на моем сервере n8n, все это работает но постоянно происходят сбои, ты можешь перегнать эти воркфлоу в питон и запустить проект в контейнере на моем сервере.”

Клод задал мне несколько уточняющих вопросов, предложил архитектуру, и приступил к выполнению задачи. Буквально в течение часа он запустил готовый проект.
Затем я просто попросил его прогнать систему целиком и вот тут-то я был удивлен насколько всё это работает быстрее и без задержек.

Итог: один проект вместо семи и полностью работающая система но пока только с ручным утверждением. Этот момент мы с ним обсудили на этапе вопросов.

Что самое интересное — все сделал ИИ и я не написал нистрочки кода.


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

Отдельная история — с переводом новостей.

Использовать облачные 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 – она достаточно шустрая и неплохо с этим справляется.

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
              → опубликовано

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

Админка - наблюдаю за этапами прохождения новостей.

Админка – наблюдаю за этапами прохождения новостей.

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

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

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

  1. relevance_score ≥ 80 (ai_filter)

  2. LLM-редактор проверяет и ставит approved или needs_review

  3. Pipeline Manager распределяет по слотам

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

Источник

Собрано (7 дн.)

Pass rate

Anthropic News

2

100%

MarkTechPost

10

50%

The Next Web

80

21%

iXBT.com

509

14%

TechCrunch

138

13%

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

Админка - список rss источников.

Админка – список rss источников.

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


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

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

  • Утро (08:00–11:00) — 2 поста

  • День (12:00–16:00) — 2 поста

  • Вечер (18:00–22:00) — 2 поста

  • Ночь (00:00–06:00) — 2 поста

Почему 8 постов в день? Раньше было 28 — это был шум, люди читали последние 1-2 новости а выше не листали.. Теперь меньше, но каждый проходит отбор и теперь меньше шансов что его пропустят.

Админка - очередь ожидания публикации

Админка – очередь ожидания публикации

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

Я изначально когда проектировал эту систему принял решение что на сервере просто бэкэнд а решение о публикации кто-то должен принять. Сначала это делал я каждый день и не очень системно. Затем появился OpenClaw – он как раз был тогда на пике восхождения.

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

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

Сейчас 5 агентов работают именно с новостной системой включая аналитика:

Агент

Роль

Расписание

AgentLLMEditor

Переработка текстов под формат канала

каждые 20 минут

AgentPipelineManager

Менеджер потока: наблюдение → решение → действие → лог

4 раза в сутки

AgentSourceAuditor

Аудит источников, отключение мёртвых

еженедельно

AgentAnalyst

Аналитика: очередь, срезы, темы

вечер 21:05

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

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

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

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

Прошу Координатора скинуть список источников новостей

Прошу Координатора скинуть список источников новостей
Ответ координатора по количеству Агентов которые работают с новостной системой

Ответ координатора по количеству Агентов которые работают с новостной системой

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

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

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

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

Админка - опубликованные новости

Админка – опубликованные новости
Админка GitHub Discovery.

Админка GitHub Discovery.

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

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

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

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

Рабочая группа с 8 агентами.

Рабочая группа с 8 агентами.

Что важно:

Есть много хороших инструментов, а в текущее время все это стало на столько доступно что теперь создать реально что то интересное достаточно легко. Можно без знания того же программирования создать полноценно работающий продукт.
Perplexity, Claude, Cursor — это всё инструменты и разобраться в них сейчас сможет практически каждый, степень вхождения опустилась до минимума.

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

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

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


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

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

Автор: Dembelk2020

Источник