В декабре 2020 года мы запустили в браузере Brave новый сервис — новостную ленту Brave Today (aka Brave News). Она собирает информацию из проверенных нами источников и распределяет ее по 15 категориям, среди которых каждый пользователь сможет найти что-то интересное для себя. Чтобы просмотреть новости в Brave Today, нужно открыть новую вкладку в браузере Brave и проскроллить страницу вниз. В статье мы расскажем о том, как мы выбираем и ранжируем контент.
В будущих релизах пользователи смогут самостоятельно добавлять интересные для них RSS-ленты. Пока что реализовано самое простое и понятное для всех решение — мы просто отобрали RSS-ленты от ведущих издателей из списков Comscore, Alexa и Feedly, причём сфокусировались на источниках с финансовой поддержкой — либо у них есть рекламодатели, либо платные подписки, либо и то, и другое. Кроме того, это должны были быть источники со стабильными и валидными RSS-лентами — по этому критерию несколько крупных паблишеров не прошло отбор.
В итоге в наш список вошло около 300 источников. Такое количество позволяет нам контролировать объем данных, который наша приватная (как и все остальное) сеть доставки контента передает в браузер. К тому же наши пользователи ценят скорость работы Brave, и мы не вправе жертвовать ей ради новостной ленты. Brave Today не должна снижать производительность браузера, поэтому расширенные возможности по добавке новых источников и кастомизации будем катить только после того, как протестируем наш чудо-агрегатор и получим достаточно обратной связи.
Чтобы показывать пользователю только самые свежие и интересные новости, мы придумали свой алгоритм ранжирования.
Естественно, основная загвоздка в реализации — это поддержка свойств приватности наших продуктов. Очевидно, что контент должен собираться сами браузером, при этом не оставляя идентификаторов и других следов, доступных кому-либо, включая нас. Какой контент пользователи просматривали, куда кликали, какие источники включали или выключали — то что происходило в браузере, остаётся в браузере. Поэтому нам нужна модель ранжирования, которая могла бы работать локально на клиенте и не требующая передачи данных куда-либо из браузера.
В первой версии нашей ленты мы матчим отобранные нами источники с историей посещений страниц браузере. В дальнейшем, мы будем использовать модель похожую на механизм Brave Ads, где учитывается количество времени и активность пользователя на посещенных страницах (опять-таки, строго на клиенте).
В простом виде, текущий способ ранжирования выглядит так:
Сортируем баллы в обратном порядке
Каждая новость на начальном этапе имеет 0 баллов.
На стороне сервера каждая новость получает количество баллов, равное логарифму от возраста новости в секундах. Эти баллы отвечают за свежесть контента.
На стороне браузера каждая новость получает -5 баллов за пересечение источника со списком недавно посещенных пользователем сайтов. Так мы делаем ленту более интересной для вас.
К этому мы добавляем немного локальной рандомизации, чтобы лента не была предсказуемой и предлагала новые и неожиданные источники.
Пример: недавно вы читали что-то про восстание машин. Сутки назад в одном из наших источников была опубликована новость про искусственный интеллект. На сервере она получает 11 баллов (ln(86400 секунд) = 11,37). В браузере -5 баллов, итого 6. А новость про уличные протесты из другого источника, опубликованная 12 часов назад, получит 10 баллов, т.к. браузер не считает, что пользователь этим интересуется.
Само собой, у разных людей разные вкусы, поэтому источники можно настраивать. Brave Today позволяет выключить или включить любой из них. В ленте также есть новости от нас и наших партнеров, но и их можно убрать. Кроме того, если новостная лента слишком сильно вас отвлекает, её можно полностью отключить. Когда мы тестировали Brave Today, многие из нашей команды не раз обнаруживали, что добрая часть рабочего дня пропадала из жизни из-за просмотра ленты, поэтому одна из идей для премиальной версии это настройка расписания появления новостной ленты. Также в премиум-продукте можно будет отключать промо-блоки.
Чтобы поддержать авторов и издателей, мы не собираем новости в отдельную ленту. Вы читаете их прямо на сайтах, где они опубликованы, в таком виде, в котором они были задуманы.
Пока что количество источников ограничено, но в будущих релизах мы настроим возможность добавлять их вручную. RSS — это важнейший инструмент управления потоками информации, который позволяет дышать свежим воздухом за пределами информационного пузыря медийных лент.