🗂 Corpus & recherche
État global du corpus : volumes (vidéos, mots, durée), types de nœuds, familles, chaînes suivies, dernier run, moteur de recherche.
Paramètres : aucun.
RAG hybride BM25 (FTS5) + dense e5, fusion RRF — scores affichés (bm25_rank, dense, rrf), repli BM25 pur si l'index dense manque.
Paramètres : q (requis, requête libre) · chaine, famille, date (filtres, défaut aucun) · locuteur (id de nœud invité:/journaliste:) · page (défaut 1, réponse paginée avec total/nb_pages).
Frise par chaîne : chaque vidéo avec publie_le (ISO UTC), heure de Paris et statut d'analyse (faite|partielle|absente).
Paramètres : chaine, famille, date (filtres, défaut aucun).
Retranscription complète d'une vidéo : segments, diarisation (tours multi-locuteurs), chapitres et résumé global, nb sophismes.
Paramètres : v (requis, identifiant YouTube 11 caractères).
Fiche d'une vidéo : source (titre, chaîne, URL), métadonnées de collecte, citation de référence.
Paramètres : v (requis).
Export Markdown d'une retranscription enrichie — provenance complète, détections vérifiées, timestamps cliquables (réponse text/markdown).
Paramètres : v (requis).
Mots-clés extraits d'une vidéo ; sans v : inventaire global (nombre de vidéos + exemples).
Paramètres : v (optionnel).
Les 120 premiers mots du nuage pondéré IDF (le « vocabulaire signature » du corpus).
Paramètres : aucun.
Dernières arrivées + fraîcheur (vidéos du jour, dernier run) — consommé par l'onglet Direct en polling 60 s.
Paramètres : aucun.
Vidéos à traiter : diarisation / résumé / analyse manquantes et analyses partielles (< 60 % de la durée couverte).
Paramètres : aucun.
Dernier run du manifest de collecte + exclusions comptées par raison.
Paramètres : aucun.
Statut du pipeline d'ajout manuel : étapes (collecte, indexation, graphe, diarisation, résumé, analyse) en running/done/error.
Paramètres : aucun.
🕸 Graphe & référentiels
Nœuds et liens du graphe de connaissances (médias, vidéos, personnalités, partis…, arêtes datées et sourcées).
Paramètres : mode (défaut carte) · type (filtre par type de nœud) · chaine · depuis (fenêtre en heures : seules les vidéos récentes + nœuds structuraux).
Fiche d'un nœud (type, couleurs, sources curatées) + jusqu'à 60 liens entrants/sortants.
Paramètres : id (requis, ex. video:…, media:bfmtv, parti:…).
Invités et journalistes du graphe avec leurs vidéos (chaîne, date, titre), triés par nb_videos ↓ — un locuteur sans vidéo garde son entrée (0).
Paramètres : q (sous-chaîne du nom, sans accents/casse) · type (invité|journaliste).
Partis politiques : positions (économique/sociétal), couverture en mentions, personnalités rattachées — référentiel curaté + disclaimer honnête.
Paramètres : aucun.
Qui possède les médias : arêtes « possède » datées et sourcées + comptage factuel « mentionne son actionnaire » (vidéos du média avec arête NER vers l'actionnaire).
Paramètres : aucun.
🔬 Analyse & assistant
Analyse LLM d'une vidéo : sophismes, affirmations, chiffres — citations vérifiées dans le transcript ; renvoie l'existante sans regénérer.
Paramètres : v (requis) · generate=1 (force la régénération, défaut : l'analyse existante).
Assistant IA cité (RAG sur le corpus, modèle local) : flux ndjson — une ligne {sources} puis des lignes {delta} du texte de réponse.
Paramètres : q (requis, question en langage naturel).
Échos croisés : par média, vidéos / extraits qui matchent la requête + sophismes ; et chiffres recoupés rapportés par ≥ 2 médias.
Paramètres : q (optionnel — sans q : tout le corpus).
📰 Événements & écarts
Faits CONVERGENTS (rapportés par ≥ 2 chaînes distinctes) puis événements MONOMÉDIA, triés par sophismes liés — comptage sur les arêtes, zéro LLM.
Paramètres : aucun.
Dossier d'un événement : chronologie des médias, chiffres rapportés (+ méthode), RÉVISIONS du chiffre dans l'ordre chronologique, sophismes et sondages liés.
Paramètres : id (requis, fait:…).
Comparateur lexical par média SUR un événement : occurrences du lexique « chargé » (data/lexique_charge.json, éditable) avec citation source exacte et t0 — déterministe, avertissement de prudence inclus.
Paramètres : id (requis, fait:…).
Framing dans le temps : densité de mots chargés ‰ par semaine de publication (et par catégorie) pour une chaîne suivie.
Paramètres : chaine (requis, id de chaîne) · semaines (défaut 8).
Omissions par événement : les médias qui en parlent vs les médias qui suivent le thème mais restent muets.
Paramètres : theme (theme_dominant, sans accents/casse) · genre (evenement|fait) — sans filtre : fichier intégral.
Diversité des sources par thème : nb chaînes / ratio_couverture, vidéos du thème, monocanal signalé, top 3 vidéos les plus vues.
Paramètres : aucun.
🔥 Populaires & médias
Vidéos les plus vues du corpus (vues/likes mesurés) avec sophismes par vidéo ; sans vues mesurées : exclues et comptées honnêtement.
Paramètres : theme (politique|geopolitique|societe|economie|tous, défaut politique) · jours (7|30|0, défaut 0 = tout) · zone (fr|monde|tous, défaut tous) · limite (défaut 20, max 100).
Console des médias : suivis (enrichis du corpus — nb vidéos, 3 derniers épisodes, sophismes cumulés) vs seulement référencés (propriétaire sourcé).
Paramètres : zone (fr|monde) · famille · suivi (1|0) — défaut : tout.
Comportement des médias : par chaîne, vidéos analysées/total, sophismes vérifiés, sophismes par heure, densité de mots chargés ‰, 3 top catégories, répartition des thèmes (data/stats_medias.json, rechargé sur mtime).
Paramètres : aucun.
🔎 Veille & alertes
Briefing quotidien (07:05) : chiffres clés, top sophismes de la période, convergences nouvelles, occurrences des mots veillés — texte intégral dans briefing_txt.
Paramètres : aucun.
Liste des mots veillés (persistée côté serveur, lue par le briefing du matin).
Paramètres : aucun. Réponse : {mots: […]}.
Remplace la liste des mots veillés (30 maximum) — le briefing de 07:05 signalera les occurrences.
Corps JSON : {"mots": ["réforme", "Kramatorsk"]} — réponse : {"mots": […], "statut": "…"}.
⚙️ Actions (POST)
Ajoute une vidéo YouTube au corpus et déclenche le pipeline (collecte → indexation → graphe → options LLM) ; suivi via /api/pipeline_status.
Corps JSON : {"yt": "URL ou id 11 car.", "diar": true, "resume": true, "analyse": true}.
Rattrapage : traite une vidéo (ou toutes les retardataires) — diarisation, résumé, approfondissement d'analyse.
Corps JSON : {"vid": "…", "diar": true, "resume": true, "approfondir": true} — sans vid : tout le corpus en retard.
Génère (ou renvoie) l'analyse LLM d'une vidéo — même moteur que GET /api/analysis.
Corps JSON : {"v": "…"}.
Dossier d'enquête Markdown à partir des items épinglés (panneau Références) — provenance complète, réponse text/markdown.
Corps JSON : {"items": [{type, vid, t0, citation, chaine}, …]}.
Documentation statique générée depuis les ROUTES de server/server.py · aucune dépendance externe · mediascan — lecture critique de l'actualité.