open-news: упоминания и новостной дайджест компании на Python
Python-библиотека open-news ищет новости через Google News и DuckDuckGo, убирает дубли и ранжирует их. Проверил лицензию, возраст, русский язык и риски, показал, как собрать утреннюю сводку упоминаний бренда.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Автоматизация бизнеса: сбор упоминаний и дайджест в Telegram и MAXУтренний обзор прессы руками
Маркетолог каждое утро вбивает в поиск название компании, трёх конкурентов и отрасль, листает выдачу и копирует ссылки руководителю. Условный пример: 40 минут в день, 20 рабочих дней, около 13 часов в месяц. Допущения мои, у вас цифры другие.
Разговоры в городских чатах и пабликах я разбирал в статье про мониторинг упоминаний компании, отзывы и соцсети в материале про репутацию бренда. Здесь речь о СМИ и новостных сайтах. Для страниц без новостной ленты, вроде прайса поставщика, есть changedetection.io.
Что это за проект и что я проверил
Проверял 21.10.2026 по репозиторию и PyPI. Репозиторий не архивирован, в файле LICENSE текст MIT. Создан 16 мая 2026 года, сейчас 47 звёзд, 5 форков, открытых обращений нет.
Автор один: в pyproject.toml указан Arajit Paul, и все 211 коммитов из списка участников принадлежат одному аккаунту. Последний коммит в ветке main от 22 сентября, в тот день вышел релиз v1.0.4. Отдельная ветка feat/v1.1-architecture-workflows обновлялась 10 октября, в основную она не влита.
Ставится командой pip install open-news-api: пакет на PyPI назван иначе, чем репозиторий, версия 1.0.4 от 22.09.2026, нужен Python 3.10 или новее. Есть командная строка open-news, терминальный интерфейс open-news-tui и Python API.
Откуда берутся новости и как с русским
Своих данных у проекта нет, он ходит в поисковую выдачу. Функция fetch проходит цепочку из пяти источников: DuckDuckGo через библиотеку ddgs, Google News RSS, Bing News, Yahoo News и HTML-выдача DuckDuckGo. Берётся первый источник, который что-то вернул, результаты разных не смешиваются. Поиск по словам search идёт только через Google News RSS. Для мониторинга нужен он: запрос с названием, исключениями и диапазоном дат.
Про условия источников. В README ddgs написано, что библиотека предназначена только для образовательных целей. Официальных правил для автоматических запросов к RSS Google News я не нашёл, поэтому лимиты и коммерческое использование считаю неподтверждёнными.
Теперь русский. По коду фильтры слов, дедупликация и ранжирование работают с Unicode, кириллица обрабатывается, фильтр языка знает ru. Адрес Google News собирается из параметров country и language, для России получится gl=RU и ceid=RU:ru, но я это не проверял, документация приводит примеры про Индию и хинди. В цепочке fetch код превращает location «ru» в регион ru-en, поэтому русскую выдачу нужно задавать явно как ru-ru. Встроенное краткое изложение рассчитано на английский: на кириллице оно сводится к первым предложениям или опирается на английский токенизатор. Краткое изложение я делаю отдельным шагом.
Дубли, сюжеты и ранжирование
Дубли убираются в два шага. Сначала адреса приводятся к одному виду: уходят utm-метки и www, ссылки-редиректы Google News раскрываются. Затем по умолчанию идёт нечёткое сравнение заголовков с порогом сходства 0,85, на выборке больше 300 статей оно пропускается. Сравнение идёт по символам, поэтому заметка с переписанным заголовком о том же событии может не склеиться.
Для сюжетов есть cluster_articles: статьи группируются по похожести заголовков (порог по умолчанию 0,75), ничего не выбрасывается, размер группы показывает, сколько изданий написали об одном. В дайджесте сюжет из шести изданий важнее заметки на одном сайте.
Сортировка по умолчанию идёт по дате, есть варианты по порядку выдачи и по популярности. Функция rank_articles считает релевантность запросу: BM25, если поставлен пакет nlp, иначе TF-IDF.
Чего в библиотеке нет. Хранение истории между запусками я в документации не нашёл: потоковый режим подавляет повторы, но по описанию архитектуры это происходит в рамках работающего процесса. Нет расписания и нет отправки сообщений. Эти части я делаю сам: база увиденных ссылок в SQLite, запуск по расписанию, доставка в Telegram или MAX.
Что важно учесть
Проект молодой, автор один, в main месяц без коммитов. Если он остановится, исправлять будет некому, поэтому версию фиксируем (open-news-api==1.0.4) и перед запуском проверяем результат на своих запросах.
Всё держится на чужой выдаче. Поисковик поменял формат или ограничил частоту, и источник вернёт пустой ответ. Автор сам перечисляет известные проблемы: location это подсказка для поиска, даты у агрегаторов приблизительные, описания иногда состоят из шаблонного текста. Нужен контроль «сегодня пришло ноль новостей» с сигналом мне.
Вежливость к источникам. Краулер сайтов по умолчанию читает robots.txt, но запросы идут по 10 одновременно, без пауз, до 40 страниц за проход, с браузерным User-Agent из списка. Проверку robots я нашёл только у краулера. Потоковый режим не принимает интервал короче 5 секунд, дайджесту хватит прохода в сутки. Сайты я беру через их RSS, список источников согласуем. JavaScript-рендеринг идёт через Playwright с браузером Chromium и нужен там, где текст подгружается скриптом. Закрытые разделы и платные статьи мы не собираем.
Авторское право. По статье 1259 ГК РФ (пункт 6, подпункт 4) сообщения о новостях дня, имеющие исключительно информационный характер, объектами авторских прав не являются. Авторская статья, аналитика и фотографии защищены. Статья 1274 допускает цитирование в информационных целях без согласия автора, если указаны автор и источник, а объём оправдан целью. Поэтому в дайджесте заголовок, издание, ссылка и короткий фрагмент. Полные тексты скачиваются для внутреннего анализа и дальше не уходят. Я не юрист, уточняйте у юриста.
Что можно сделать уже сейчас
Составьте список запросов: название во всех написаниях, три-пять конкурентов, две-три отраслевые темы, слова-исключения для тёзок и однофамильцев.
Поставьте библиотеку в отдельное окружение и неделю гоняйте поиск с country=ru и language=ru. Посчитайте долю нужных заметок. Если полезных меньше половины, источники для вас слабые.
Выпишите 10-15 сайтов с RSS: отраслевые СМИ, региональные издания, пресс-центры конкурентов. Для страниц без ленты подойдёт отслеживание изменений, регулярный запуск описан в статье про задачи по расписанию.
Неделю присылайте руководителю дайджест вручную и спросите, что лишнее. Потом автоматизируйте. Весь конвейер (сбор, дедупликация, краткое изложение, доставка) я собираю в рамках услуги по автоматизации бизнеса, формат сообщения близок к дашборду руководителю в Telegram и MAX.
Частые вопросы
Можно ли использовать библиотеку в коммерческом проекте?
Код под MIT, это разрешает. Условия источников, Google News и DuckDuckGo, лицензия кода не отменяет, и я их не подтвердил.
Есть ли Яндекс.Новости и другие российские источники?
В списке источников их нет. Остаются Google News с русской локалью и RSS-ленты конкретных сайтов.
Коротко о главном
open-news под MIT собирает новости из открытой выдачи, убирает дубли, группирует сюжеты и ранжирует их. Для русского языка почти всё придётся проверять, краткое изложение и расписание делаются отдельно, а стабильность зависит от одного автора и чужих сайтов.
Если хотите получать утром в Telegram или MAX сводку упоминаний компании, конкурентов и отрасли со ссылками на источники, напишите мне в Telegram кодовое слово «УПОМИНАНИЯ». Соберу пробный дайджест на ваших запросах.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


