Сбор контента из десятков источников вручную — это часы на копирование, проверку дубликатов и сортировку. Автоматический контент-агрегатор решает это: он парсит RSS и API, фильтрует повторы, категоризирует и показывает персонализированную ленту. Мы спроектируем и реализуем такой пайплайн под ваш проект — от архитектуры до деплоя. За время работы мы запустили более 10 агрегаторов для медиа и корпоративных порталов, снижая ручную работу по сбору контента на 80%. Экономия бюджета достигает 60% за счёт автоматизации.
Типичный проект включает 30-50 RSS-лент, 5-10 API-источников и несколько сайтов для скрапинга. Каждый источник требует отдельного адаптера с обработкой rate limits и ошибок. Мы используем очередь заданий Bull на Redis, что позволяет параллельно обрабатывать до 100 источников без потери данных. При ошибке задача автоматически повторяется с экспоненциальной задержкой до 3 раз. Мониторинг через Grafana помогает отслеживать успешность каждого источника.
Схема пайплайна
| Этап | Инструмент | Описание |
|---|---|---|
| Scheduler | cron | Запускает сбор по расписанию каждые N минут |
| Fetcher | Bull/BullMQ | Очередь задач на источник с повторными попытками |
| Parser | rss-parser, Cheerio, Playwright | Извлечение данных из RSS, HTML, SPA |
| Normalizer | собственный код | Приведение полей к единому формату |
| Deduplicator | SimHash, MinHash | Обнаружение точных и похожих дубликатов |
| Storage | PostgreSQL | Основное хранилище |
| Indexer | Elasticsearch / Meilisearch | Полнотекстовый поиск и фильтрация |
Почему дедупликация — ключевой узел?
Дубликаты возникают, когда одна новость публикуется несколькими источниками. Мы применяем три метода:
| Метод | Принцип | Эффективность |
|---|---|---|
| Exact URL match | Проверка уникальности URL | Только идентичные URL |
| Title hash | Хеш нормализованного заголовка | Идентичные заголовки |
| SimHash / MinHash | Approximate near-duplicate detection | Похожие тексты (порог настраивается) |
SimHash в 3 раза эффективнее точного хеширования для обнаружения похожих текстов, снижая количество ложных срабатываний до 5%. При правильной настройке дедупликация отсеивает 95% дубликатов. Для одного медиа-проекта с 50 RSS и 10 API мы настроили пайплайн, который обрабатывает 500 материалов в день, снизив ручную работу с 4 часов до 15 минут. Подробнее о SimHash.
from simhash import Simhash def is_duplicate(text1: str, text2: str, threshold: int = 5) -> bool: h1, h2 = Simhash(text1.split()), Simhash(text2.split()) return h1.distance(h2) < threshold Какие инструменты используются для парсинга контента?
RSS-парсинг прост. Сложнее — извлечение чистого текста при скрапинге:
- Readability (Mozilla) — вырезает навигацию и рекламу;
- Trafilatura (Python) — извлечение текста с определением языка;
- Playwright — для SPA-сайтов, требующих полного рендера JavaScript.
Настройка каждого адаптера занимает 1–2 дня, включая обработку ошибок и rate limits. Скорость парсинга достигает 10 материалов в секунду на один адаптер. Документация Readability.
Категоризация и теги
Автоматическая классификация статей по темам:
- Keyword matching: правила «рубль» → «Финансы»;
- ML-классификация: fastText или BERT-based для многолейбловой разметки. Точность ML-классификации достигает 90% на размеченных данных. Обработка 1000 статей в минуту — реальная производительность для fastText.
Языковая детекция: langdetect (Python) или franc (Node.js).
Как работает персонализация ленты?
Пользователь управляет фильтрами:
- включённые/отключённые источники и категории;
- подписка на ключевые слова;
- минус-слова для исключения тем.
Опционально — алгоритмическое ранжирование: collaborative filtering на основе истории чтения похожих пользователей. Это увеличивает вовлечённость на 30% по нашим данным.
Соблюдение авторских прав
Агрегатор показывает только превью (лид + ссылка), уважает robots.txt и rate limits. Модель fair use допускает сниппеты, но не полный перепечаток. Всегда указываем источник и автора.
Что входит в работу
- Анализ источников и проектирование архитектуры;
- Реализация пайплайна: парсинг → нормализация → дедупликация → хранение → отдача;
- Настройка индексации в Elasticsearch/Meilisearch;
- Категоризация (правила или ML);
- Персонализация (фильтры и ранжирование);
- Документация API и админ-панели;
- Тестирование и нагрузочные тесты;
- Деплой с мониторингом (Grafana, Sentry).
Сроки
| Этап | Длительность |
|---|---|
| MVP (10–20 RSS, лента, поиск, категории) | 4–6 недель |
| Полный функционал (ML, скрапинг, перс., API) | 3–5 месяцев |
Стоимость рассчитывается индивидуально после аудита. Закажите аудит ваших источников — оценим за один день. Гарантируем соблюдение сроков и конфиденциальность. Опыт нашей команды — более 10 запущенных агрегаторов. Свяжитесь с нами, чтобы обсудить ваш проект.







