Как превратить Википедию в бесконечную ленту соцсетей

29 May, 2026

Поймал себя на мысли, что чтение Википедии часто превращается в бесконечный квест по гиперссылкам. Начинаешь со статьи про квантовую физику, а через час обнаруживаешь себя на странице о видах австралийских пауков. Разработчик под ником rebane2001 решил довести этот процесс до абсолюта и создал xikipedia — проект, который упаковывает свободную энциклопедию в формат бесконечной ленты в духе TikTok или запрещенных соцсетей.

Что это такое и зачем оно нужно

Xikipedia — это веб-приложение (PWA), которое берет статьи из Simple Wikipedia и подсовывает их пользователю одну за другой. Главная фишка здесь не в самом контенте, а в алгоритме рекомендаций. Автор хотел показать, что даже простая математическая модель без использования тяжелых нейросетей и сбора данных о миллионах пользователей может отлично угадывать ваши интересы.

Вся магия происходит прямо в браузере. Никакие данные об «лайках» или прокрутках не улетают на сервер. Это полностью локальная история, которая работает даже без интернета, если вы один раз загрузили базу.

Как работает «движок» интересов

В основе лежит довольно прозрачная система начисления баллов. Каждая статья в Википедии имеет дерево категорий и ссылки на другие страницы. Алгоритм использует их как теги для профилирования ваших предпочтений.

Система оценивает ваши действия в баллах:

Реклама
  • Просто проскроллили пост? Получите -5 баллов к категориям этой статьи.
  • Поставили лайк? +50 баллов (и бонус за то, как давно вы не лайкали ничего другого).
  • Кликнули на статью, чтобы почитать подробнее? +75 баллов.
  • Открыли картинку? +100 баллов.

Когда приходит время показать следующий пост, система выбирает 10 000 случайных статей из базы и применяет к ним веса. С вероятностью 42% вам покажут самый релевантный контент, в 40% случаев — случайный выбор с учетом весов (взвешенный рандом), а в оставшихся 18% — абсолютно случайную статью, чтобы лента не превратилась в «эхо-камеру» и вы могли наткнуться на что-то кардинально новое.

Техническая начинка

Проект написан на чистом HTML и JavaScript. Для работы с данными используется огромный JSON-файл, который содержит выжимку из дампов Википедии. В репозитории уже есть готовый файл для Simple Wikipedia, но автор предусмотрительно оставил скрипт process_data.py. С его помощью можно скормить системе любой WikiMedia дамп и собрать свою тематическую «соцсеть», например, только по историческим фактам или компьютерным играм.

Интересно реализована работа с офлайном. Благодаря Service Workers приложение весит прилично из-за базы данных, но зато открывается мгновенно и работает в самолете или метро. Есть поддержка темной и светлой тем, статистика использования и управление профилями. Можно завести один профиль для изучения точных наук, а другой — для чтения странных фактов о животных, и алгоритмы не будут перемешиваться.

Почему это стоит потыкать

Для разработчика xikipedia — это отличный пример того, как делать рекомендательные системы «на коленке». Мы привыкли, что для рекомендаций нужны терабайты данных и кластеры с GPU, но здесь всё работает на простых коэффициентах и базовой логике.

Что можно почерпнуть из кода:

  • Реализация бесконечного скролла на PWA.
  • Локальное хранение и обработка больших объемов данных в браузере.
  • Логика весовых коэффициентов для контента.

Конечно, проект не лишен нюансов. Например, категории вроде «имена» или «фамилии» настолько часто встречаются в статьях, что автору пришлось вручную прописать им огромный отрицательный рейтинг в -1000 баллов на старте, иначе лента быстро забивалась бы биографиями малоизвестных личностей.

Практическая польза

Помимо того, что это просто «убийца времени» с пользой для мозга, xikipedia можно использовать как базу для своих проектов. Если вам нужно быстро набросать прототип приложения с лентой новостей или рекомендациями, механика из этого репозитория переносится в любой проект за вечер.

Попробовать живое демо можно на xikipedia.org. Только осторожно: можно легко выпасть из реальности на пару часов, изучая статьи о том, как устроены паровые двигатели или почему небо синее, пока алгоритм усердно подсовывает вам всё более интересные факты.

Если решите запустить проект локально или собрать свою базу, загляните в process_data.py. Там простая логика парсинга XML-дампов Википедии, которую легко адаптировать под свои нужды. Проект распространяется под лицензией AGPLv3, так что для открытых инструментов это отличный фундамент.