МАЙПЛ Bot: поиск похожих музыкальных артистов

Обновлено:
ML Нейросети1.2 месяца

Поиск новой музыки «в духе» любимых исполнителей мы упаковали в Telegram-бота: пользователь называет артиста — и получает подборку музыкантов, близких по жанру и звучанию. Проект реализован в партнёрстве с Orbyx. Бот собирает данные через Music API, разбирает жанр, стиль и другие характеристики и по алгоритму матчинга формирует персональный список рекомендаций. Команда полного цикла на Python прошла путь от идеи до работающего продукта за 1,2 месяца — и дала меломанам простой способ открывать новых музыкантов прямо в мессенджере.

МАЙПЛ Bot: поиск похожих музыкальных артистов

Задача

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

Заказ, с которым к нам пришли, звучал конкретно: нужен бот, способный парсить информацию о схожих артистах по указанным данным. Система должна анализировать эти данные и находить исполнителей с похожим стилем, жанром или другими характеристиками — то есть не просто выдавать случайные имена, а обоснованно подбирать музыку под вкус конкретного человека.

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

Ручной поиск новой музыки

Чтобы найти исполнителей, похожих на любимого артиста, слушатель перебирает форумы, тематические подборки и чужие плейлисты. Это часы поиска с непредсказуемым результатом — и большинство просто остаётся в привычном круге из десятка групп.

Рекомендации заперты в стримингах

Алгоритмы музыкальных платформ работают как чёрный ящик: не объясняют логику подбора и не переносятся между сервисами. Слушатель не управляет признаками схожести — не может попросить похожих по жанру, а не по популярности.

Разрозненные данные об артистах

Жанры, стили, теги и справочная информация о музыкантах разбросаны по разным источникам и форматам. Сопоставлять их вручную по каждому исполнителю — неподъёмная задача даже для увлечённого меломана, а тем более на потоке запросов.

Что делает система

Диалог с ботом в Telegram

Точка входа для пользователя. Человек отправляет боту исходные данные — например, имя любимого исполнителя — и через несколько секунд получает результат. Мы построили диалог на Telegram Bot API: понятные подсказки, обработка опечаток и некорректного ввода, аккуратное форматирование ответов. Никакой регистрации и отдельного приложения — бот работает там, где пользователь уже общается каждый день.

Сбор данных через Music API

По запросу бот обращается к музыкальному API и получает справочные данные об артисте: жанры, стилистические теги и другие характеристики, доступные в источнике. Мы обернули интеграцию в отдельный слой с обработкой ошибок и повторными запросами, чтобы временная недоступность внешнего сервиса не ломала сценарий пользователя и не оставляла его без ответа.

Парсинг и нормализация данных

Сырые данные из внешних источников приходят в разном виде: различаются написания имён, наборы тегов и структура полей. Модуль парсинга приводит их к единому внутреннему формату — вычищает дубли, сводит синонимичные жанры, отбрасывает неинформативные поля. Именно нормализация делает дальнейшее сравнение артистов корректным, а рекомендации — предсказуемыми по качеству.

Профиль артиста для сравнения

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

Алгоритм матчинга артистов

Ядро системы. Алгоритм сравнивает профиль исходного исполнителя с профилями кандидатов: совпадение жанров, близость стилистических тегов и других характеристик складываются в оценку схожести. Кандидаты ранжируются по этой оценке, и в выдачу попадают наиболее релевантные — а не просто самые популярные — артисты, что и отличает осмысленную рекомендацию от случайной.

Персональные рекомендации

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

Устойчивость и лимиты запросов

Внешние музыкальные API ограничивают частоту обращений, поэтому мы добавили типовой для таких интеграций контур устойчивости: очередь запросов, контроль лимитов и кэширование уже полученных данных. Повторный запрос по известному артисту отрабатывает быстрее и не расходует квоту API, а бот стабильно отвечает даже при всплесках активности пользователей.

Технологический стек

Python

Основной язык проекта. Для задач, где сходятся работа с внешними API, парсинг данных и алгоритмическая логика, Python даёт самый короткий путь от идеи до результата: зрелые библиотеки для HTTP-запросов и обработки данных, лаконичный код, лёгкая доработка. Для проекта со сроком 1,2 месяца скорость разработки была решающим аргументом.

Telegram Bot API

Интерфейс продукта. Telegram избавил нас от разработки и поддержки собственного приложения: у пользователя уже есть мессенджер, а бот получает готовую доставку сообщений, форматирование и работу на любых устройствах. Официальный Bot API стабилен и хорошо документирован, поэтому диалоговая часть собиралась быстро и предсказуемо.

Music API

Источник музыкальных данных. Вместо того чтобы годами накапливать собственную базу артистов, мы подключили готовый музыкальный API с жанрами, тегами и справочной информацией об исполнителях. Это сократило срок запуска и сняло вопрос актуальности данных: сведения о новых артистах появляются в источнике без нашего участия.

Data Parsing

Слой обработки данных между внешними источниками и алгоритмом. Парсинг извлекает нужные поля из ответов API, нормализует написания и приводит характеристики артистов к единому формату. Без этого слоя матчинг сравнивал бы несопоставимые записи — и точность рекомендаций рассыпалась бы на первых же нестандартных данных.

Artist Matching + Recommendation Algorithm

Связка, ради которой существует проект: алгоритм матчинга считает схожесть исполнителей по жанру, стилю и другим характеристикам, а рекомендательная логика превращает оценки в ранжированный список. Мы сделали правила сопоставления настраиваемыми, чтобы калибровать выдачу на реальных примерах, не переписывая ядро системы.

PythonTelegram Bot APIMusic APIData ParsingArtist MatchingRecommendation Algorithm

Как шла разработка

Формулировка сценариев

Готово

Вместе с Orbyx разобрали, как будущие пользователи ищут музыку и что считают удачной рекомендацией. Зафиксировали главный сценарий — от имени артиста к списку похожих — и договорились о критериях качества выдачи ещё до старта разработки.

Исследование источников

Готово

Сравнили доступные музыкальные API: полноту данных о жанрах и стилях, покрытие малоизвестных исполнителей, лимиты запросов и условия использования. По итогам выбрали источник и спроектировали слой парсинга под его формат ответов.

Прототип матчинга

Готово

Собрали первую версию алгоритма схожести и прогнали её на подборке реальных артистов разных жанров. Быстрый прототип показал, какие признаки действительно влияют на качество рекомендаций, и уберёг финальную версию от лишней сложности.

Сборка бота

Готово

Подключили диалоговую часть на Telegram Bot API к пайплайну данных: приём запроса, обращение к Music API, парсинг, матчинг и форматированная выдача. Отдельно проработали пограничные случаи — опечатки, неизвестные имена, недоступность внешнего сервиса.

Калибровка выдачи

Готово

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

Релиз и наблюдение

Готово

Запустили бота через 1,2 месяца после старта. После релиза следили за реальными запросами, укрепили обработку нестандартного ввода и кэширование частых обращений — так бот вышел на стабильную работу без ручного присмотра.

Результаты

За 1,2 месяца мы прошли путь от постановки задачи до работающего продукта: в Telegram появился функциональный бот, который успешно решает задачу поиска схожих артистов. Пользователь указывает исходные данные — и получает список исполнителей, подобранных по жанру, стилю и другим характеристикам, а не случайный набор имён. Для слушателя это простой способ расширить кругозор и открыть новых любимых музыкантов без раскопок в форумах и плейлистах.

Проект подтвердил работоспособность выбранной архитектуры: связка Python, Music API и собственного алгоритма матчинга собирается в цельный рекомендательный пайплайн за считаные недели. Слои системы разделены — источник данных, парсинг, матчинг и интерфейс независимы друг от друга, поэтому решение можно развивать: подключать дополнительные источники, углублять признаки схожести или переносить ту же логику из Telegram в другие каналы.

1,2 месяца

от старта до работающего бота

1 запрос

от имени артиста до подборки похожих

6 технологий

в пайплайне от парсинга до выдачи

Telegram

интерфейс без отдельного приложения

Партнёрский проект

МАЙПЛ Bot создан в партнёрстве с Orbyx — и мы публикуем этот кейс открыто, с именем партнёра. Инженерная часть — Python-пайплайн, интеграция с Music API, алгоритм матчинга и сам Telegram-бот — работа нашей команды разработчиков полного цикла.

Совместный формат помог пройти путь от идеи до релиза за 1,2 месяца: продуктовые решения и техническая реализация двигались параллельно. Указывать вклад каждой стороны в таких проектах мы считаем нормой — читатель кейса должен понимать, кто за чем стоит.

Вопросы о проекте

Обсудим похожий проект?

Расскажите о задачах вашего бизнеса — предложим архитектуру и оценим сроки

Разработка чат-ботов