mysurik.ru

Собрал свою читалку новостей с локальным ИИ

С чего всё началось

Я подписан на пару десятков RSS-лент, несколько YouTube-каналов и Hacker News. Каждое утро я открывал Inoreader, видел 200+ непрочитанных, вздыхал и закрывал. А потом шёл в Telegram — и читал то же самое, но уже отобранное чьим-то алгоритмом.

Меня это бесило. Алгоритмы Google и соцсетей решают, что мне интересно, а я просто потребляю. Захотелось вернуть контроль.

Решил: поставлю свою читалку, которая будет сама сортировать новости через локальный ИИ. Без рекламы, без сбора данных, без Big Tech.

Что я нашёл

Перерыл GitHub, налёг на r/selfhosted. Нашёл два проекта, которые делали ровно то, что я хотел:

CondenseIt — пишется на Python/FastAPI, собирает RSS, YouTube, Reddit, Hacker News, GitHub релизы. Всё это прогоняется через локальную LLM (Ollama), которая пишет саммари, оценивает релевантность и выдаёт готовый дайджест. Можно крутить в браузере, можно настроить ежедневную рассылку.

Cruxwire — более лёгкий, в одном Docker-контейнере. Тоже Ollama, тоже саммари, но фокус на том, чтобы кластеризовать похожие новости и не показывать одно и то же из десяти источников. Работает через Qwen3:8b и nomic-embed-text.

Как ставил

Начал с CondenseIt. Там два режима: локальный (Ollama на моём сервере) и удалённый (OpenRouter). Я выбрал локальный — у меня как раз стоит Ollama на Proxmox.

Ставится просто: склонировал репу, настроил config.yaml, запустил. CondenseIt поднял веб-интерфейс на 8899 порту.

«`bash
git clone https://github.com/wildlifechorus/condenseit
cd condenseit
# настроил config.yaml
condenseit serve —port 8899
«`

Потом поставил Cruxwire — тут вообще docker compose up и готово. Он подхватил Ollama на localhost:11434, сам натянул модели.

«`yaml
services:
cruxwire:
image: cruxwire:latest
ports: [«8090:8090»]
environment:
OLLAMA_HOST: http://192.168.0.130:11434
volumes:
— cruxwire-data:/data
«`

Что получилось

CondenseIt даёт нормальный дайджест раз в день. Утром заходишь — там 30-40 статей, каждая с саммари от Qwen3. Можно ткнуть звёздочку, если понравилось — система запоминает и подстраивается.

Cruxwire сделал красивее. У него magazine-style layout, карточки статей с картинками, кластеризация. Я закинул туда свои RSS-ленты — он сам склеил одинаковые новости из разных источников.

Сравнил оба за неделю. CondenseIt мощнее по источникам (YouTube, Reddit, HN), но интерфейс так себе. Cruxwire — эстетика, но с YouTube не дружит. В итоге оставил оба. CondenseIt для глубины, Cruxwire — для быстрого просмотра.

Главный профит

Я наконец-то перестал открывать соцсети по утрам. Вся инфа по IT, серверам и самохостингу приходит в одном месте. Никто не продаёт моё внимание. Никакой рекламы. Никаких «рекомендаций» от нейросети big tech.

Оба проекта живут в LXC-контейнерах на Proxmox. Жрут по 200-300 MB RAM каждый. На N100 с 16GB — вообще незаметно.

Теперь моё утро выглядит так: открываю Cruxwire, пролистываю карточки, читаю что интересно. Всё. Пара минут и я в курсе событий без тонны мусора.

Расшифрую подробнее, потому что в первой части я ужал много важных деталей. Начну с мотивации. У меня в подписках было под сотню разных источников: блоги про серверы, новости Linux, каналы про самохостинг, YouTube про железо. И я поймал себя на мысли, что реально читаю только то, что вытащил чей-то алгоритм — а остальное тонет. При этом я не хотел отдавать эти данные ни Google, ни Telegram. Выбор у меня был один: собрать свою читалку и решать самому, что мне показывать.

Теперь про сам выбор моделей. Ollama у меня уже стояла на сервере — я использовал её для других задач. Для саммари взял Qwen3:8b — она хорошо сжимает русский и английский текст, не теряя суть. Для эмбеддингов (чтобы кластеризовать похожие новости) — nomic-embed-text, лёгкая и быстрая. Важный момент: всё работает локально, никакие промпты и статьи наружу не уходят. Для меня это принципиально — я не хочу, чтобы мои подписки и интересы утекали в чей-то датасет.

Что меня удивило в процессе. Во-первых, скорость. Я думал, что локальная модель будет думать над каждой статьёй по минуте. На практике на N100 с 16GB саммари одной статьи занимает 5-10 секунд. За ночь читалка спокойно обрабатывает весь накопленный контент. Во-вторых, качество. Сначала я скептически относился к машинным саммари — казалось, что лучше прочитать оригинал. Но для 80% новостей саммари хватает, чтобы понять, стоит ли открывать полный текст. И это реально экономит час по утрам.

Настройка RSS-источников. Здесь я дам совет, о котором сам пожалел, что не узнал раньше. Не надо тащить в читалку все сто лент сразу. Сначала добавь десяток ключевых, посмотри, как они обрабатываются, какие категории появляются. Потом расширяй. Если навалить всё сразу — дайджест завалит мусором, и ты перестанешь его открывать, как я сначала с Inoreader. Постепенное расширение — это половина успеха.

Про релевантность. Мне нравится, что CondenseIt умеет оценивать, насколько статья мне интересна. Первое время он присылал всё подряд, и я честно проставлял звёздочки и убирал неинтересное. Через неделю он начал лучше фильтровать: темы про Proxmox, Docker и самохостинг — в топ, новости про смартфоны и игры — вниз. Это медленная, но заметная настройка под меня. Немного похоже на то, как подстраивается TikTok, но с одним отличием — я контролирую процесс и данные никуда не уходят.

Про интеграции. Я не ограничился только веб-интерфейсом. Настроил, чтобы дайджест раз в день приходил в мой мессенджер через ntfy — так я вижу заголовки и саммари прямо в телефоне, а разворачиваю полную версию уже на сервере. Плюс сделал небольшой скрипт, который раз в час подтягивает свежие статьи в читалку. В итоге у меня всегда актуальная лента, без необходимости самому заходить и обновлять.

Подводные камни, о которых стоит знать. Первый — ресурсы. Qwen3:8b в Ollama ест под 6-7 ГБ RAM, и если у тебя на сервере крутится ещё куча контейнеров — стоит ограничить модель в настройках или поставить версию поменьше. На моём N100 с 16GB всё помещается, но на более слабом железе нужно быть осторожнее. Второй — дедупликация. Без неё одна и та же новость придёт из пяти лент. Cruxwire с этим справляется кластеризацией, CondenseIt — хуже. Третий — обновления. Оба проекта активно развиваются, и я периодически обновляю контейнеры, чтобы не висели на старых версиях с багами.

Что я изменил в своём утреннем ритуале. Раньше: открыл Inoreader → 200 непрочитанных → выгорание. Теперь: открыл Cruxwire → 30-40 карточек с саммари → выбрал пять по-настоящему интересных → прочитал их полностью. На это уходит 10-15 минут вместо бесконечного скроллинга. И главное — я сам решаю, что мне интересно, а не чужой алгоритм. Это ощущение контроля стоит потраченного вечера на настройку.

Кому это подойдёт. Если ты читаешь новости из пяти-десяти источников и тебе хватает папок в Inoreader — может, и не стоит городить огород. Но если у тебя много лент, ты хочешь саммари и кластеризацию, и при этом не хочешь отдавать свои интересы Big Tech — своя читалка с локальным ИИ это то, что нужно. Оба проекта ставятся за вечер, работают стабильно, и с каждым обновлением становятся лучше. Я доволен результатом и не собираюсь возвращаться к сервисам с алгоритмами.

Добавлю про то, как я настраивал конкретные ленты и что из этого вышло. Для блогов и новостных сайтов — обычные RSS-фиды, их CondenseIt парсит без проблем. Для YouTube — не обошлось без утилиты yt-dlp, которая вытаскивает названия и описания роликов. Для Hacker News — там вообще своё API, читалка подключается к нему напрямую. Для Reddit — использует публичные JSON-фиды. Сложнее всего оказалось с GitHub-релизами: у некоторых репозиториев нет готового RSS, и я подписался через сторонний генератор фидов. Зато теперь я сразу вижу новые релизы любимых инструментов.

Ещё я хочу рассказать про то, как проверяю, что читалка не приврала в саммари. Это важно, потому что модель может пересказать неточно. Я заметил, что Qwen3 иногда путает имена или даты в английских технических текстах. Поэтому для критичных новостей я всё-таки открываю оригинал. Для всего остального — саммари достаточно. Правило простое: чем важнее новость, тем меньше я доверяю пересказу.

Теперь про то, что меня немного разочаровало. Во-первых, качество саммари сильно зависит от модели и её размера. Qwen3:8b — хороший баланс, но если поставить что-то совсем маленькое — результат будет кривой. Во-вторых, стартовые настройки обоих проектов не идеальны: их придётся донастроить под себя, и это время. В-третьих, оба проекта активно развиваются, и иногда между версиями меняется формат конфига — приходится перечитывать документацию. Но это всё мелочи на фоне того, что я получаю контроль над своей лентой новостей.

Отдельно про экономию. Я посчитал: на подписки на сервисы новостей и «умные» дайджесты у меня уходило около двухсот рублей в месяц. Теперь ноль. Плюс я перестал покупать тариф на Inoreader для больших лимитов. Всё это живёт на моём домашнем сервере за электричество, которого тут копейки. Для меня это ещё один аргумент в пользу self-hosted решений: тот же функционал, но под контролем и без подписки.

Если ты решишься повторить — вот мой чек-лист. Проверь, что Ollama уже стоит и тянет модель. Поставь CondenseIt или Cruxwire (можно оба). Добавь десяток ключевых лент, не все сто сразу. Дождись ночной обработки и посмотри на дайджест. Постепенно добавляй источники и проставляй релевантность. Подключи уведомления через ntfy или другой мессенджер. И главное — не бросай настройку на полпути: первые две недели — это время «притирки», потом читалка начинает реально работать на тебя.

В заключение скажу просто: своя читалка с локальным ИИ — это не игрушка, а рабочий инструмент, который вернул мне утро. Я снова открываю свои источники сам, без подсказок и рекламы, и выбираю, что читать. Если тебе надоело тонуть в лентах и отдавать своё внимание алгоритмам — собери свою. Вечер на настройку, немного терпения, и вот он, твой личный дайджест, который знает твои интересы и молчит, когда ты не просил.

Ваш комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *