Полтора месяца назад у меня было семь воркфлоу в 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 постов в день, прошедших несколько уровней отбора:
-
relevance_score ≥ 80 (ai_filter)
-
LLM-редактор проверяет и ставит
approvedилиneeds_review -
Pipeline Manager распределяет по слотам
В таблице источников видно pass rate по каждому:
|
Источник |
Собрано (7 дн.) |
Pass rate |
|---|---|---|
|
Anthropic News |
2 |
100% |
|
MarkTechPost |
10 |
50% |
|
The Next Web |
80 |
21% |
|
509 |
14% |
|
|
TechCrunch |
138 |
13% |
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 поста
Почему 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.
Когда что-то ломается открываю дашборд — всё сразу видно и не нужно гадать.
Что работает без меня
Сбор из 160 источников — запускается каждые 15 минут, без выходных. Фильтрация, дедупликация, перевод через локальный Qwen версии 3.5 — бесплатно, без облака. LLM-редактура, генерация картинок, публикация по расписанию. Мониторинг GitHub, ежедневная аналитика, отчёты в рабочую группу.
Всё это работает само. Пока я занимаюсь своими делами или сплю.
Мне остаётся только наблюдать за выходом новостей, открывать дашборд раз в день, написать Координатору если нужно что-то поменять и периодически смотреть логи и отчеты в моей рабочей группе.
Что важно:
Есть много хороших инструментов, а в текущее время все это стало на столько доступно что теперь создать реально что то интересное достаточно легко. Можно без знания того же программирования создать полноценно работающий продукт.
Perplexity, Claude, Cursor — это всё инструменты и разобраться в них сейчас сможет практически каждый, степень вхождения опустилась до минимума.
И да, я не написал ни строчки кода, я только ставил задачи, обсуждал, принимал решения и оркестрировал.
Семь воркфлоу в n8n превратились в единый Python-пайплайн с агентами — за полтора месяца. Хаос превратился в систему, которую видно насквозь.
Если бы я не попробовал, то до сих пор чинил бы воркфлоу номер восемь.
Канал: @news_all_ai — посмотреть что выдаёт система на выходе.
Вопросы про архитектуру, OpenClaw, локальные LLM или как именно это строилось — пишите в комментарии, отвечу.
ссылка на оригинал статьи https://habr.com/ru/articles/1023446/