Автопостинг новостей: конвейер собирает источники, режет дубли и готовит посты
Система на n8n проверяет новостные источники, убирает дубли, готовит публикации с медиа и ведёт их в Телеграм и MAX.
- Проверка источников
- ручной обход → 37 источников каждые 15 мин
- Маршрутизация
- общий поток новостей → 6 ДНК и 6 получателей
- Повторы
- дубли ловит человек → антидубль до рассылки
Автопостинг новостей: конвейер собирает источники, режет дубли и готовит посты

- ручной обход → 37 источников каждые 15 минПроверка источников
- общий поток новостей → 6 ДНК и 6 получателейМаршрутизация
- дубли ловит человек → антидубль до рассылкиПовторы
- писать руками → кнопка генерации в ботеЧерновик поста
Проблема
Новостному проекту нужно было регулярно выпускать материалы без ручной сборки каждой новости: отслеживать источники, не плодить повторы, сохранять фото и видео, готовить текст в стиле канала и публиковать материалы в мессенджеры.
Задача
У новостного проекта быстро появляется одно и то же узкое место: редактору нужно открыть источники, выбрать важное, не повториться, сохранить медиа, переписать текст под стиль канала и выпустить пост в нужные площадки.
Пока канал маленький, это ещё можно держать руками. Когда источников становится больше, ручная схема начинает ломаться: новости пропускаются, похожие события выходят дважды, фото теряются из-за коротких ссылок, а публикация зависит от того, успел ли человек всё проверить вовремя.
Задача была собрать систему, которая берёт эту рутину на себя: сама проверяет открытые Телеграм-источники, собирает посты, режет дубли, готовит черновики и ведёт публикацию дальше в Телеграм и MAX.
Что я собрал
Я сделал self-hosted систему на n8n, PostgreSQL и pgvector. Она работает на сервере заказчика и не требует отдельного Телеграм-аккаунта или userbot.
Сбор идёт через публичное веб-превью Телеграма t.me/s/.... Система каждые 30 минут обходит заданные источники, забирает свежие посты, сохраняет текст, время публикации и медиа.
Дальше посты проходят несколько фильтров:
- одинаковые или близкие новости группируются через эмбеддинги и pgvector
- темы, которые уже отклоняли, не возвращаются в очередь
- история публикаций за последние дни помогает не повторяться
- важные факты сверяются с доверенными источниками
- если подтверждения нет, админ получает предупреждение со ссылкой на исходник
После фильтрации система готовит публикацию через AI-модель, сохраняет медиа локально и отправляет готовую карточку в редакционный чат.
Как выглядит рабочий маршрут
Открытые Телеграм-источники
→ сбор постов каждые 30 минут
→ дедупликация похожих новостей
→ фильтр по редакционным правилам
→ фактчекинг по доверенным источникам
→ генерация текста и сбор медиа
→ очередь готовых публикаций
→ Телеграм и MAX
Человек не собирает каждую новость с нуля. Он смотрит готовую очередь и вмешивается там, где выпуск нужно поправить, отложить, заменить фото или проверить перед публикацией.
Почему это не просто бот с кнопками
Кнопки модерации тут не главная часть системы. Главная часть — конвейер до них.
Система сама делает то, что обычно съедает редакторское время: мониторит источники, убирает повторы, собирает медиа, готовит текст и хранит маршрут публикации. Кнопки нужны, чтобы у проекта оставался контроль над спорными выпусками, а не чтобы человек продолжал делать всю работу руками.
В карточке редактора можно:
- опубликовать пост сразу
- отложить публикацию
- поправить текст ответным сообщением
- заменить фото
- удалить тему, чтобы она не возвращалась в очередь
Если проекту нужен более жёсткий автопилот, ручной шаг можно упростить. Если важнее редакционная безопасность, проверку можно оставить как обязательную.
Что важно под капотом
Система сделана не как разовый скрипт, а как рабочий контур для ежедневной редакции.
Дедупликация. Похожие новости объединяются до генерации. После генерации есть дополнительная проверка готового текста, чтобы дайджесты и пересказы не создавали второй пост про то же событие.
Источники для редактора. В карточке видно, откуда пришла новость, когда она была опубликована и где лежит исходный пост. Если новость ссылается на мэрию, суд, Е1 или другой источник, система старается сохранить эту привязку в тексте.
Медиа без коротких ссылок. Фото и видео скачиваются в локальное хранилище n8n. Публикация не зависит от того, сколько проживёт CDN-ссылка в исходном Телеграм-посте.
Публикация в MAX. Для MAX используется официальный Bot API через HTTP-запросы. Отдельно пришлось закрыть край с загрузкой видео: upload-сервер MAX нестабильно принимал chunked multipart, поэтому публикация медиа отправляется с рассчитанным Content-Length.
Управление из Телеграма. Источники, доверенные каналы, маршруты, промпт, пауза и статистика управляются slash-командами. Админу не нужно заходить в n8n или базу.
Как проверял перед сдачей
Перед передачей система прошла тест на реальных данных заказчика: было собрано больше 100 исходных постов и сделано больше 10 успешных публикаций в Телеграм и MAX.
Это не метрика результата для бизнеса, а технический пруф: сбор, фильтры, генерация, модерация, публикация и медиа прошли полный путь на живом материале.
Дополнительно проверялись:
- импорт и активация workflow в n8n
- работа Docker Compose на сервере заказчика
- схема PostgreSQL и pgvector-индексы
- публикация фото и видео
- предупреждения по фактчекингу
- редактирование текста и замена фото перед выпуском
- команды администратора в Телеграме
- очистка старых черновиков и медиа
Итог
Получился не просто бот для публикации, а автоматизированная редакционная линия.
Она снимает с человека самую неприятную часть ежедневной работы: искать новости, не повторяться, собирать медиа и готовить посты. Человек остаётся там, где действительно нужен вкус, ответственность и решение по спорной новости.
Такую систему можно собрать для городских медиа, тематических каналов, новостных подборок, отраслевых дайджестов и проектов, где важно выпускать контент регулярно, но без ручного дежурства у источников.
Похожие задачи:
Новостной конвейер больше не держится на ручной сборке каждого поста: система проверяет источники по расписанию, убирает повторы, готовит публикации с медиа и ведёт их дальше по маршруту выпуска.