Полтора месяца назад у меня было семь воркфлоу в 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 или как именно это строилось — пишите в комментарии, отвечу.

Комментарии (8)


  1. vtal007
    14.04.2026 14:40

    Ничего не понятно, но очень интересно :)

    вопрос имени Дудя, - "сколько ты зарабатываешь" (ну и во сколько это обходится)

    Я пока пробую простым советским opencode что-то настроить, по плану - на каждый этап, свой проект (один проект - генерация текста по ТЗ (скилл копирайтинг, пока не нашел толковый, ну пусть по ТЗ работает), второй проект - хуманизация (хоть в промте и стараются это учесть) - есть скил для хуманизации, третий проект - конвертнуть в csv и разместить на сайте)


    переводы пробовал локально сделать, спарсив статьи с одного зарубежного сайта (там тоже были свои приколы, парсинг из выдачи гугла), перевод через translate-gema локально, на видеокарте (около 1000 статей, 5060ти, работала часов 16 или больше), но проблема в том, что переводился хтмл, хоть гему и просили не переводить теги - все равно переводила. Ну и качество самого источника - не ахти (а вычищать его руками - муторно)

    С точки зрения новостного контента- да, в принципе так и работают редакции - смотрят источники, переводят и фигачат свои материалы (хобот уже давно не торт)

    У меня в планах отбирать, например, (не, 100500 статей у меня нет), пусть в неделю 50 статей, из них отбирать топ 10 и переводить - у меня не новостные, а по возможности "вечно-зеленые"

    и тут как будто просто - бери буржуйские сайты и переводи целиком. Но на каждый сайт пока настроишь парсинг, да и то, что опубликовано "там", не факт, что интересно тут

    Заканчивая мысль в стиле нейронок - автоматизация это не только ценных мех, а еще 3-4 килограмма высокоусвояемого диетического мяса"


    1. Dembelk2020 Автор
      14.04.2026 14:40

      Попробую ответить по порядку:
      Я описал чем пользуюсь - Это был Курсор за 20 долларов. И Клод код так же 20 долларов. Раньше я пользовался только Курсором. Но буквально 3 месяца назад еще раз вернулся к Клоду и вот он реально делает красоту.

      По поводу opencode - я так же его начал использовать но к нему я подключил свою кодинг подписку от MiniMax, она очень неплохо таки работает и так же отлично кодит.

      Бесплатные модели пробовал для кондинга, мне не очень понравились.
      А вот для обработки текста самое то - у меня тут используется свой Стэк: Мини Пк - CHUWI AuBox Ai365 на процессоре AMD Ryzen AI 9 365 и 32 гига оперативы. Локальная LLM Qwen 3.5 - она не плохо работает на нем - примерно 9 токенов в секунду.
      Но вот сейчас вышла к стати Gemma4 от Гугл и она рвет всех в своем классе по скорости. Я ее параллельно подключил к llama.cpp - она мне вечернюю свод прогоняет, думаю позже заменю на нее.

      По поводу копирайтинга и хуманизации - не ищи готовый создай свой. Их я создал совместно с Перплексити и Клодом - отлично получилось и смог выйти на 92% яеловечности) а что я по сути сделал, скормил перплексити свои тексты и переписки и попросил выдернуть все паттерны а дальше попросил его подготовить промпт для Клода чтобы он сделал эти скилы один назвали alexey-editor а второй ru-humanizer. Отлично справляются и проходит многие проверки.

      По поводу отбора статей(новостей). -- у меня система отбирает да примерно 100-200 в день, но дальше идет фильтрация которая проставляет рейтинг новости, дедупликация которая отсекает дубли, так же отсекаются битые новости, очень короткие менее 300 знаков уходят в мусор. Итого по подсчетам примерно 18%  новостей из данного пула доходят до Менеджера а тот в свою очередь отправляет в данный момент всего 10 топовых новостей в сутки. Я еще пока играюсь с количеством.
      И вот локальная LLM Qwen 3.5 - достаточно шустро справляется с этими задачами.
      Причем скрйапер у меня тянет весь текст новости после всех отборов и фильтраций. А там порой портянки на несколько страниц.

      По поводу настройки парсинга на каждый сайт проблем не было вообще - поставь jina я описал это в статье. Прекрасно парсит и все бесплатно - мне к стати нейронка сама предложила это сделать.

      Я полностью согласен с тем что еще и нужно все нормально подготовить и оформить, я еще дорабатываю канал. И добавляю новые фичи и аналитику плюс автоматизацию вплоть до исправления в авторежиме любых косяков.

      Я в статье хотел донести то что сейчас по сути создать автоматизацию может почти каждый и тут не нужно гигантских знаний. И вложения минимальные.
      Я на работе себе создаю различные автоматизации и crm системы которые мне помогают и все это без знания программирования.
      А так же вот на днях я собрал себе сайт https://kravtsovlab.space/ - статьи там публикуются прями из Obsidian - все сделал за 2 часа и все в автоматическом режиме.
      Пока там 2 статьи - буду расширять базу знаний. И в ближайшее время выпущу еще статью как я создал такой сайт.


  1. Lenaro
    14.04.2026 14:40

    у меня похожая система только собрал в н8н, разбил на этапы по статусам, их штук 20, чтобы если где-то сломалось вся работа не полетела, но собирать со 160 источников это конечно сильно
    я просто по ключам ищу свежую информацию в интернете а потом ее фильтрую, если релевантная то пишу пост


    1. Dembelk2020 Автор
      14.04.2026 14:40

      Ну вот я так делал в начале - тогда у меня было порядка 40 источников и все были rss и все долго обрабатывалось и были постоянные ретраи, реально кучу автоматизаций сделал, а потом после очередного Бага решил попробовать по другому. Спокойно добавили новости с Видео роликами.
      Сейчас к стати прихожу к тому что нужно писать посты, делать более живой канал а не просто новостная лента.


      1. Lenaro
        14.04.2026 14:40

        на новостях люди отписываются, но и не зарабатываешь ты потому что не нашел кому это продавать, у меня нормально выходит


  1. mikenerevarin
    14.04.2026 14:40

    А расскажите подробнее про ai_filter?


    1. Dembelk2020 Автор
      14.04.2026 14:40

      ai_filter — воркер после сбора новостей и удаления дублей, перед переводом. Берёт свежие новости, прогоняет через LLM и ставит оценку от 0 до 100 плюс короткое объяснение. На выходе три корзины: идём дальше в публикацию, откладываем как слабые или помечаем «ошибка модели».

      Пороги не в коде, а в таблице настроек — меняю без перезапуска. Сейчас порог публикации 75 в будни, на выходных выше: там поток мусорнее. Всё, что ниже 70 — молча в сторону. В промпте модели явно прописано: фандинг, иски, увольнения — это не AI-новости, ставь 20-40, даже если компания AI-шная. Фильтр режет около 81% того, что собрал коллектор.

      Главная оптимизация — отсев по длине текста до вызова LLM:

      body = strip_all_html(r.get(“full_text”) or r.get(“content”) or “”).strip() if len(body) < 300: # сразу в сторону, LLM не зовём continue

      Это платные статьи и RSS-заглушки на 150 символов. Без этого платил бы токенами за то, чтобы модель прочитала пустоту. Экономит 30+ вызовов в день.

      LLM получает пачку по 5 штук: id, заголовок и обрезанный до 500 символов текст. Ответ — JSON. Парсер с подстраховкой: сначала стандартный разбор, потом поиск по скобкам — локальные модели любят навалить лишнего вокруг ответа.

      Что не идеально: — Один поставщик LLM = одна точка отказа. Ретрай один раз через 20 секунд. — Пороги 70/75/80 подобрал на глаз. Собираю просмотры и реакции, но обратная связь на пороги ещё не замкнута. — Ложные срабатывания живут. Интересная научная статья может получить 65 и уйти мимо.

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


  1. vladkolchik
    14.04.2026 14:40

    Спасибо за развернутое описание системы, было интересно почитать, классная статья получилась