
D’un morceau à 3 films à voir, avec leur disponibilité en streaming.
Festival Scope est une plateforme en ligne où le public regarde des films de festivals et où les organisateurs créent leurs festivals ou cinémas virtuels. Nous avons conçu Music2Watch : un moteur qui analyse les paroles d’un morceau Spotify, trouve les films qui lui répondent, vérifie où les regarder et les classe par pertinence.
Un morceau et un film peuvent se répondre de deux façons : littéralement (le titre figure dans la bande originale) ou par le thème et l’ambiance (même histoire, même émotion). Une bonne recommandation doit couvrir les deux.
Et une recommandation n’a de valeur que si le spectateur peut réellement regarder le film.
Chaque requête enchaîne la compréhension du morceau, la recherche de films, la vérification de disponibilité et le classement. Tout est tracé avec Langfuse pour suivre la qualité et les coûts.
Recherche Spotify (titre ou ID), paroles retrouvées via l’API Genius (recherche) puis extraites avec Firecrawl, caractéristiques audio via ReccoBeats (valence, énergie…) et métadonnées consolidées depuis TheAudioDB et MusicBrainz.
Un LLM analyse les paroles et produit des requêtes thématiques (intrigue et « vibe »). Des films sont proposés directement par le LLM et via une recherche web (Google ou DuckDuckGo) filtrée par le LLM, avec score de confiance. Les fiches sont enrichies par TMDB.
Les films sont recherchés sur JustWatch pour vérifier la disponibilité. Le classement final se fait par similarité cosinus entre les embeddings des paroles et des synopsis (text-embedding-3-small), ou par un reranker LLM selon la configuration. Les 3 meilleurs sont retournés.
API FastAPI (recherche de morceaux, recommandations, disponibilité, reranking) limitée en débit (10 requêtes/min, 100/jour), interface Next.js et démo Streamlit, traçage Langfuse et script de test sur une liste de morceaux dont les films sont connus.
Des LLM OpenAI pour l’analyse et le classement, des API musique et cinéma pour les données, et FastAPI pour exposer le tout.