{
  "_author": "Simon-Pierre Boucher <contact@spboucher.ai>",
  "_file": "data/sources.json",
  "_desc": "Registre des sources connectées — famille, mode d'accès, cadence (CLAUDE.md §9, §14, §19)",
  "updated": "2026-08-17",
  "sources": [
    {
      "id": "listes-medias",
      "famille": "decouverte",
      "palier": 3,
      "acces": "dataset local (listes & palmarès médias publics compilés : billie, frank, metricool, Favikon QC, canadult…)",
      "signal_identite": "listes_medias (0.85)",
      "cadence": "mensuelle (recompilation du dataset)",
      "notes": "376 créateurs québécois, handles par plateforme + audiences approximatives"
    },
    {
      "id": "wikidata-qc",
      "famille": "decouverte",
      "palier": 3,
      "acces": "API SPARQL publique Wikidata (nés/résidant au Québec, occupation créateur, handles sociaux curés)",
      "signal_identite": "base_publique (0.85)",
      "cadence": "hebdomadaire",
      "notes": "humoristes, youtubeurs, vidéastes web, streamers, podcasteurs notables ; is_minor levé via l'année de naissance publique"
    },
    {
      "id": "onlyqueb",
      "famille": "decouverte",
      "palier": 3,
      "acces": "requêtes directes (sitemap.xml + JSON-LD ProfilePage des pages profil publiques SSR)",
      "signal_identite": "cross_link (0.90) — liens sameAs auto-déclarés par la personne",
      "cadence": "hebdomadaire",
      "notes": "annuaire public onlyqueb.com — créateurs québécois sur abonnement (18+) ; nom public, photo, liens OnlyFans/Instagram/TikTok/X"
    },
    {
      "id": "youtube-recherche",
      "famille": "decouverte",
      "palier": 3,
      "acces": "requêtes directes (recherche publique YouTube filtre « chaînes », ytInitialData) — ~120 requêtes thématiques × marqueurs QC",
      "signal_identite": "profil_source (0.98) — la chaîne est le compte d'origine de la fiche",
      "cadence": "quotidienne (watch) — la couverture s'accumule à chaque passage",
      "notes": "filtre conservateur : marqueur québécois requis dans titre/description de la chaîne"
    },
    {
      "id": "balados-itunes",
      "famille": "decouverte",
      "palier": 2,
      "acces": "API de recherche iTunes/Apple Podcasts (officielle, gratuite, sans clé)",
      "signal_identite": "profil_source (0.98)",
      "cadence": "quotidienne (watch)",
      "notes": "podcasteurs québécois : nom, artiste, pochette, genre, nb d'épisodes, flux RSS ; marqueur QC requis"
    },
    {
      "id": "instagram-profil",
      "famille": "enrichissement",
      "palier": 4,
      "acces": "Scrapfly (profil public web_profile_info — pas d'API publique de lecture)",
      "signal_identite": "cross_link (0.90) pour les liens de bio découverts",
      "cadence": "hebdomadaire (gros créateurs) / mensuelle",
      "notes": "abonnés, badge, bio, liens de bio → link_in_bio_url + comptes croisés"
    },
    {
      "id": "tiktok-profil",
      "famille": "enrichissement",
      "palier": 4,
      "acces": "Scrapfly (JSON d'hydratation de la page publique @handle)",
      "signal_identite": "cross_link (0.90) pour le lien de bio",
      "cadence": "hebdomadaire (gros créateurs) / mensuelle",
      "notes": "abonnés, badge, bio, lien de bio"
    },
    {
      "id": "youtube",
      "famille": "enrichissement",
      "palier": 2,
      "acces": "YouTube Data API v3 (officielle) si YOUTUBE_API_KEY, sinon page publique /@handle",
      "signal_identite": "api_officielle (0.95) quand confirmé par l'API",
      "cadence": "hebdomadaire",
      "notes": "abonnés par chaîne"
    },
    {
      "id": "twitch",
      "famille": "enrichissement",
      "palier": 2,
      "acces": "API officielle Helix (client_credentials) — sauté sans clés",
      "signal_identite": "api_officielle (0.95)",
      "cadence": "hebdomadaire",
      "notes": "existence, type de diffuseur, description"
    },
    {
      "id": "link-in-bio",
      "famille": "enrichissement",
      "palier": 1,
      "acces": "requêtes directes (pages publiques SSR : linktr.ee, beacons.ai, bio.link, msha.ke, campsite.bio, snipfeed.co), repli Firecrawl",
      "signal_identite": "link_in_bio (0.95) — le signal le plus fort (§12.1)",
      "cadence": "mensuelle",
      "notes": "une page → TOUS les comptes du créateur ; consomme les link_in_bio_url découvertes par instagram-profil/tiktok-profil"
    }
  ]
}
