SPB Git forge

spb/crea-ka

Public

Créa·Ka — annuaire public cross-plateforme des créateurs de contenu québécois (crea-ka.com)

52commits 1branches 0releases
11.3 MBsize
maindefault branch
19 days agolast push
Python 73.6% HTML 13.2% TypeScript 6% JavaScript 4.5% CSS 1.7% Dockerfile 0.6%
25.7 KB · 520 lines markdown
Rendered Raw Blame History
1<!--2================================================================================3  Author: Simon-Pierre Boucher <contact@spboucher.ai>4  File:   CLAUDE.md5  Project: Créa·Ka — Agrégateur des créateurs de contenu & influenceurs québécois6================================================================================7-->89# CLAUDE.md — Créa·Ka1011> **Agrégateur exhaustif des créateurs de contenu et influenceurs québécois,12> avec liens vers TOUTES leurs plateformes.**13> Chaque créateur, tous ses comptes (Instagram, TikTok, YouTube, Twitch, X,14> Facebook, Snapchat, Kick, Substack, Patreon…), regroupés, cherchables et15> découvrables par niche, région, langue et taille d'audience.1617Ce fichier est la source de vérité pour tout agent Claude (ou humain) qui travaille18sur ce dépôt. Lis-le **en entier** avant d'écrire une seule ligne de code.1920---2122## 0. À LIRE EN PREMIER — Règles non négociables23241. **En-tête d'auteur obligatoire.** **Chaque fichier** du dépôt (code, config,25   doc, script) doit commencer par un en-tête mentionnant l'auteur :26   `Simon-Pierre Boucher <contact@spboucher.ai>`. Voir la **section 17** pour le27   format exact. Aucun fichier ne doit être commité sans cet en-tête.28292. **Inspire-toi du dépôt Lou·Ka.** Avant de concevoir ou d'écrire **le moindre30   connecteur**, va lire le **dépôt de Lou·Ka** (le site jumeau, agrégateur de31   logements). Ses connecteurs sont le patron de référence : structure des modules,32   extraction (Firecrawl / Scrapfly), normalisation, déduplication, gestion des33   mises à jour, planification. **Ne réinvente rien** : reprends les mêmes34   conventions, la même architecture, les mêmes utilitaires partagés. Créa·Ka doit35   être cohérent avec l'écosystème `·Ka`. Voir **section 3**.36373. **Travail de moine.** L'agrégation est minutieuse, créateur par créateur,38   plateforme par plateforme, sans rien précipiter. Un mauvais rattachement de39   compte (attribuer à un créateur un profil qui n'est pas le sien) est une faute40   grave. Mieux vaut un lien vérifié de moins qu'un lien erroné.41424. **Vérifie l'existant avant d'ajouter.** Avant d'intégrer un créateur ou une43   source, confirme qu'il/elle n'est **pas déjà couvert(e)** (index créateurs,44   registre des sources — sections 9 et 12). Un créateur = **une fiche canonique**,45   quelles que soient les plateformes et sources qui l'alimentent.46475. **Chaque plateforme a son connecteur sur mesure**, mais les sources qui48   partagent une même mécanique (API d'une plateforme, agrégateurs de liens type49   Linktree) sont couvertes par un **connecteur générique templatisé** réutilisable.50   Voir **section 8**.51526. **VIE PRIVÉE & ÉTHIQUE — règle sacrée.** Créa·Ka n'agrège **que des profils53   publics et professionnels** de créateurs qui se présentent publiquement comme54   tels. **Jamais** de données privées, de coordonnées personnelles non publiées,55   ni de compilation intrusive. Mécanisme d'**opt-out** obligatoire. Prudence56   extrême avec les **créateurs mineurs**. Voir **section 15** — cette section prime57   sur toute autre considération de complétude ou de volume.5859---6061## 1. Mission6263Rendre visible, en un seul endroit, **l'ensemble des créateurs de contenu et64influenceurs québécois**, avec **un lien direct vers chacune de leurs plateformes**,65et permettre de les **découvrir** par niche, région, langue et taille d'audience.6667En clair : un croisement entre un **annuaire** (recherche et découverte) et un68**« Linktree collectif »** (tous les comptes d'un créateur au même endroit),69centré sur le Québec.7071### Ce qui nous distingue7273Les bases d'influenceurs existantes (Heepsy, Upfluence, HypeAuditor) sont74**payantes, généralistes et anglophones**, pensées pour les marques. Les « tops75influenceurs » des médias québécois sont **ponctuels et non exhaustifs**. Personne76n'offre un **annuaire public, québécois, exhaustif et cross-plateforme**. C'est le77créneau de Créa·Ka.7879---8081## 2. Périmètre — TOUS les créateurs québécois8283Périmètre maximaliste. Si la personne crée du contenu publiquement et a une audience84au Québec, elle a sa place :8586- **Influenceurs** (Instagram, TikTok, Snapchat) : mode, beauté, lifestyle, famille.87- **YouTubeurs** : vlog, humour, gaming, tech, éducation, cuisine.88- **Streamers** : Twitch, Kick, YouTube Live (gaming, IRL, just chatting).89- **Créateurs TikTok** toutes niches.90- **Podcasteurs** et créateurs audio.91- **Créateurs écrits** : Substack, blogues, infolettres.92- **Créateurs sur abonnement** : Patreon (contenu grand public/professionnel).93- **Créateurs de niche** : sport, plein air, finance, humour, musique, arts,94  cuisine, parentalité, tech, jeux vidéo, etc.95- **Micro et nano-créateurs** locaux (souvent ignorés des bases existantes).9697> Règle d'or : en cas de doute sur l'inclusion, **on inclut** et on catégorise —98> **sauf** si la règle de vie privée/éthique (section 15) s'y oppose.99100---101102## 3. Dépôts de référence — étudier Lou·Ka AVANT de coder103104Créa·Ka fait partie de la famille `·Ka`. **Le dépôt de Lou·Ka est la référence105canonique pour l'architecture des connecteurs.** Avant tout développement :1061071. **Ouvrir le dépôt de Lou·Ka** et localiser le dossier des connecteurs108   (typiquement `connectors/`, `scrapers/` ou `sources/`).1092. **Lire 2 ou 3 connecteurs complets** pour comprendre : structure d'un module,110   extraction (Firecrawl / Scrapfly, endpoints JSON), normalisation, déduplication,111   mises à jour, planification (cadence, retries, backoff), erreurs, logging.1123. **Réutiliser** les utilitaires partagés de Lou·Ka (clients Firecrawl/Scrapfly,113   helpers de normalisation, déduplication, géocodage) plutôt que d'en réécrire.1144. **Calquer** conventions de nommage, structure des dossiers et style de code.115116> Adaptation propre à Créa·Ka : là où Lou·Ka normalise une **annonce**, Créa·Ka117> normalise un **créateur + N comptes de plateformes rattachés**. Le défi central118> n'est pas le volume par source mais la **résolution d'identité** : rattacher les119> bons comptes à la bonne personne (section 12).120121> Si tu ne trouves pas le dépôt Lou·Ka ou l'accès aux connecteurs, **arrête-toi et122> demande** plutôt que d'inventer une architecture divergente.123124Écosystème complet, pour contexte :125126| Site         | Domaine          | Agrège                                       |127|--------------|------------------|----------------------------------------------|128| Lou·Ka       | lou-ka.com       | Logements à louer                            |129| Immo·Ka      | immo-ka.com      | Propriétés à vendre                          |130| Auto·Ka      | auto-ka.com      | Véhicules usagés                             |131| Food·Ka      | food-ka.com      | Prix d'épicerie & circulaires                |132| Fabri·Ka     | fabri-ka.com     | Produits québécois                           |133| Sorti·Ka     | sorti-ka.com     | Sorties & événements                         |134| Resto·Ka     | resto-ka.com     | Restaurants, menus & prix                    |135| **Créa·Ka**  | **crea-ka.com**  | **Créateurs & influenceurs (ce dépôt)**      |136137---138139## 4. Architecture140141Pipeline `·Ka`, adapté aux créateurs (l'étape clé en plus : **résolution d'identité**) :142143```144  ┌────────────┐   ┌────────────┐   ┌──────────────┐   ┌──────────────┐   ┌──────────┐   ┌────────┐145  │ DÉCOUVERTE │──▶│ EXTRACTION │──▶│ RÉSOLUTION   │──▶│ NORMALISATION│──▶│ DÉDUP.   │──▶│STOCKAGE│146  │ (trouver   │   │ FC/Scrapfly│   │ D'IDENTITÉ   │   │ (schéma      │   │ (créateur│   │  (DB)  │147  │  créateurs)│   │ + APIs     │   │ (lier comptes)│   │  commun)     │   │  unique) │   │        │148  └────────────┘   └────────────┘   └──────────────┘   └──────────────┘   └──────────┘   └───┬────┘149                                                                                             │150                                                                                  ┌──────────▼──────────┐151                                                                                  │ API / RECHERCHE / UI │152                                                                                  │ (annuaire + liens)   │153                                                                                  └─────────────────────┘154```155156- **Découverte** : trouver les créateurs québécois (hashtags, géo, listes, agences).157- **Extraction** : enrichir chaque profil (bio, abonnés, liens) via API ou scraping.158- **Résolution d'identité** : rattacher tous les comptes d'une même personne159  (souvent via sa page de liens type Linktree).160- **Normalisation / Déduplication / Stockage** : une fiche créateur canonique.161- **API / UI** : recherche et découverte par niche, région, langue, taille.162163---164165## 5. Modèle de données — schéma Créateur + Plateformes166167```jsonc168{169  "id": "string",                       // * id interne canonique170  "source_ids": ["linktree:handle"],    // * id(s) d'origine par source171  "display_name": "string",             // * nom public / nom de scène172  "legal_name": "string|null",          // seulement si rendu public par le créateur173  "bio": "string",                      // bio publique agrégée / résumée174  "niches": ["humour", "gaming"],       // * taxonomie (section 6)175  "creator_type": "streamer",           // influenceur|youtubeur|streamer|podcasteur|...176  "region": "string",                   // une des 17 régions si connu (section 7)177  "city": "string|null",178  "languages": ["fr"],                  // fr | en | bilingue179  "primary_platform": "youtube",        // * plateforme principale180  "platforms": [                        // * TOUS les comptes rattachés181    {182      "platform": "youtube",            // * (section 6.2)183      "handle": "@nom",                 // *184      "url": "https://youtube.com/@nom",// *185      "followers": 125000,              // abonnés (peut être null)186      "verified": true,187      "confidence": 0.98,               // * confiance du rattachement (section 12)188      "last_checked": "ISO-8601"        // *189    }190  ],191  "link_in_bio_url": "https://linktr.ee/nom", // page de liens source, si trouvée192  "total_reach": 350000,                // somme dédupliquée des audiences (indicatif)193  "audience_tier": "macro",             // section 6.3194  "business_contact": "string|null",    // courriel pro SEULEMENT si public (section 15)195  "agency": "string|null",              // agence / management si public196  "is_minor": false,                    // * drapeau si le créateur est mineur (§15)197  "status": "active",                   // active | inactive | opted_out198  "first_seen": "ISO-8601",             // *199  "last_seen":  "ISO-8601",             // *200  "updated_at": "ISO-8601"              // *201}202```203204Règles :205- `platforms` est le cœur : **tous** les comptes publics, chacun avec son `url` et206  son `confidence` de rattachement.207- Ne jamais inscrire `legal_name`, `business_contact` ou toute coordonnée **non208  rendue publique** par le créateur lui-même (section 15).209- `is_minor` : si détecté, appliquer le régime restreint de la section 15.210211---212213## 6. Taxonomies214215### 6.1 Niches216`humour` · `mode` · `beaute` · `lifestyle` · `famille-parentalite` · `cuisine` ·217`gaming` · `tech` · `sport-fitness` · `plein-air` · `voyage` · `musique` · `arts` ·218`danse` · `education` · `finance-affaires` · `sante-mieux-etre` · `bouffe-resto` ·219`actualite-opinion` · `autre`220221### 6.2 Plateformes (`platform`)222`instagram` · `tiktok` · `youtube` · `twitch` · `kick` · `x` · `facebook` ·223`snapchat` · `substack` · `patreon` · `linkedin` · `threads` · `podcast` ·224`site-web` · `autre`225226### 6.3 Taille d'audience (`audience_tier`) — basée sur l'audience principale227- `nano` (< 10k) · `micro` (10k–100k) · `macro` (100k–1M) · `mega` (> 1M).228229### 6.4 Langue230`fr` · `en` · `bilingue`231232---233234## 7. Régions du Québec (quand connu)235236Bas-Saint-Laurent · Saguenay–Lac-Saint-Jean · Capitale-Nationale · Mauricie ·237Estrie · Montréal · Outaouais · Abitibi-Témiscamingue · Côte-Nord ·238Nord-du-Québec · Gaspésie–Îles-de-la-Madeleine · Chaudière-Appalaches · Laval ·239Lanaudière · Laurentides · Montérégie · Centre-du-Québec.240241La région est souvent **inconnue ou non déclarée** pour un créateur — c'est242acceptable (`region: null`). Ne **jamais** deviner ou inférer une localisation243précise à partir de données privées. Se limiter à ce que le créateur déclare244publiquement.245246---247248## 8. Philosophie des connecteurs249250- **Deux familles de connecteurs :**251  1. **Découverte** — trouver de nouveaux créateurs québécois (hashtags, géo,252     listes médias, agences, palmarès).253  2. **Enrichissement** — pour un handle donné, récupérer profil, abonnés, liens.254- **Le levier nº 1 : les pages de liens (link-in-bio).** Linktree, Beacons,255  Linkin.bio, etc. exposent **d'un coup tous les comptes** d'un créateur → c'est la256  source la plus efficace pour remplir `platforms`. Un connecteur générique257  « link-in-bio » (templatisé par service) est prioritaire.258- **Connecteurs templatisés par plateforme** pour l'enrichissement (un connecteur259  YouTube, un Twitch, etc.), à réutiliser pour tous les créateurs.260- Interface commune (à calquer sur Lou·Ka) : `fetch()` → `normalize()` → `emit()`.261  Idempotent, incrémental quand c'est possible.262- **Robustesse** : timeouts, retries + backoff, tolérance aux changements, alerte si263  un connecteur cesse de retourner des données (probable blocage).264265---266267## 9. Catalogue des sources à connecter (priorisé)268269> ⚠️ Vérifie l'index des créateurs et le registre des sources **avant** d'ajouter.270271### Palier 1 — Pages de liens (link-in-bio) : révèlent toutes les plateformes272- **Linktree**, **Beacons**, **Linkin.bio (Later)**, **Milkshake**, **Campsite**,273  **Snipfeed**. Une seule page → tous les comptes du créateur. À templatiser.274275### Palier 2 — API officielles des plateformes (enrichissement fiable)276- **YouTube Data API**, **Twitch API**, **X/Threads API** (selon accès), **TikTok**277  et **Instagram** (via API officielles/Graph quand disponibles). Respecter quotas278  et CGU. À privilégier sur le scraping.279280### Palier 3 — Découverte de créateurs québécois281- **Hashtags & mots-clés** : #quebec, #mtl, #madeinquebec, #créateurquébécois, etc.282- **Signaux de langue (français) et de lieu** déclarés publiquement.283- **Listes et palmarès médias** (« influenceurs québécois »), articles de presse.284- **Palmarès / galas** du milieu (récompenses de création numérique).285- **Agences de talents / management** québécoises (rosters publics).286287### Palier 4 — Profils publics des plateformes (scraping encadré)288- Pages de profil publiques (bio, liens, abonnés) quand l'API ne suffit pas —289  **Scrapfly** requis, **CGU à respecter**, voir section 15.290291### Palier 5 — Créateurs sur abonnement / écrits292- **Substack**, **Patreon** (pages publiques : nom, thème, liens ; **pas** le293  contenu réservé ni les données d'abonnés).294295---296297## 10. Extraction — Firecrawl, Scrapfly & APIs298299- **API officielle de la plateforme** → toujours privilégié (YouTube, Twitch, etc.).300  Fiable, structuré, conforme.301- **Parsing des pages link-in-bio** (Firecrawl) → extraire la liste des liens/comptes.302- **Firecrawl** → pages publiques relativement ouvertes (agences, listes, blogues).303- **Scrapfly** → plateformes hostiles au scraping (Instagram, TikTok) : anti-bot,304  rendu JS, rotation d'IP. À **minimiser** et n'utiliser que faute d'API, dans le305  respect des CGU (section 15).306307Chaque connecteur **documente** en tête son mode d'accès (API / Firecrawl / Scrapfly)308et pourquoi. Réutiliser les clients partagés de Lou·Ka.309310---311312## 11. Normalisation313314- Nettoyer noms, bios, handles (emoji superflus, doublons, casse).315- Mapper vers le **schéma Créateur + Plateformes** (section 5).316- Classer **niches**, **type de créateur**, **langue**, **taille d'audience**.317- Normaliser chaque `url` de plateforme (forme canonique par plateforme).318- Rattacher une **région** uniquement si déclarée publiquement (sinon `null`).319- Renseigner `confidence` de chaque rattachement de compte (section 12).320- Conserver les **`source_ids`** préfixés (ex. `linktree:nom`, `youtube:UCxxxx`).321322---323324## 12. Résolution d'identité & déduplication — LE cœur du projet325326Le vrai défi n'est pas le volume, c'est de **rattacher les bons comptes à la bonne327personne** et de **ne pas fusionner deux personnes distinctes**.328329### 12.1 Rattachement des comptes (identity resolution)330Signaux, du plus fort au plus faible :3311. **Page link-in-bio** listant explicitement les comptes → rattachement **fort**.3322. **Liens croisés** : un profil qui pointe vers un autre (IG → TikTok en bio).3333. **Handle identique** + même nom d'affichage + même photo sur plusieurs plateformes.3344. **Mentions réciproques / mêmes liens externes**.335- Chaque rattachement reçoit un score `confidence`. En dessous d'un seuil, marquer336  « à vérifier » plutôt que de rattacher à tort.337338### 12.2 Déduplication des créateurs339- **Clé** : ensemble de comptes rattachés + nom d'affichage normalisé.340- Deux fiches qui partagent au moins un compte à `confidence` élevée → fusion.341- **Homonymes** : ne **jamais** fusionner sur le seul nom. Exiger un compte partagé.342- À la fusion : union des `platforms`, meilleure source par champ, on **ne perd343  aucun** lien vérifié.344345S'inspirer de la déduplication de **Lou·Ka** (entités multi-sources), en gardant à346l'esprit qu'ici une erreur de fusion mélange deux **personnes réelles** — donc347**prudence maximale**.348349---350351## 13. Fraîcheur & états352353- **Abonnés / audience** changent constamment → rafraîchir et horodater354  (`last_checked` par plateforme).355- **Comptes disparus / renommés** : marquer inactifs, conserver l'historique ; ne356  pas supprimer brutalement (politique de grâce via `last_seen`, comme Lou·Ka).357- **Créateur inactif** (plus de publication) → `status: inactive`.358- **Opt-out** : si un créateur demande le retrait → `status: opted_out`, fiche359  masquée et **non ré-agrégée** (voir section 15).360361---362363## 14. Cadence de rafraîchissement364365- Métriques d'audience des gros créateurs : **hebdomadaire**.366- Enrichissement standard : **mensuel**.367- Découverte de nouveaux créateurs : **continu / hebdomadaire** selon les sources.368- Toujours mettre à jour `last_checked` et `last_seen` à chaque passage réussi.369370---371372## 15. Vie privée, éthique & conformité — PRIME SUR TOUT373374> Créa·Ka agrège des **personnes**. Cette section a **priorité absolue** sur la375> complétude et le volume. En cas de doute, **on n'inclut pas** et on demande.376377- **Uniquement du public et du professionnel.** N'agréger que les profils publics de378  créateurs qui se présentent publiquement comme créateurs/influenceurs, et **que**379  les informations qu'ils rendent publiques (nom de scène, comptes, bio, liens,380  courriel *pro* affiché). **Jamais** d'adresse personnelle, de téléphone privé, de381  courriel personnel, ni de données déduites/privées.382- **Pas de compilation intrusive.** Ne pas croiser des sources pour reconstituer des383  informations qu'une personne n'a pas choisi de rendre publiques.384- **Opt-out obligatoire et respecté.** Fournir un mécanisme simple de retrait ;385  une fois `opted_out`, la fiche est masquée et **exclue des ré-agrégations futures**386  (liste de suppression persistante).387- **Créateurs mineurs — prudence extrême.** Si `is_minor` est détecté (ou probable),388  appliquer un régime restreint : pas de données de contact, pas de métriques389  précises de localisation, et en cas de doute **exclure**. Ne jamais produire quoi390  que ce soit qui pourrait faciliter le ciblage ou l'identification d'un mineur.391- **CGU & robots.txt** de chaque plateforme respectés. Privilégier les **API392  officielles** ; minimiser le scraping ; rate-limiting raisonnable ; identification393  honnête. Les plateformes (Instagram, TikTok) sont restrictives : ne pas394  industrialiser un accès contraire à leurs conditions — **demander en cas de doute**.395- **Attribution & exactitude.** Lien vers la source ; ne republier que le nécessaire396  à la découverte ; corriger vite toute erreur de rattachement (une fausse397  association est un préjudice réel pour la personne).398- **Loi 25 (protection des renseignements personnels au Québec).** Concevoir en399  tenant compte des obligations applicables aux renseignements personnels ; documenter400  les finalités, permettre l'accès/rectification/retrait.401402---403404## 16. Conventions de code405406- Suivre **les mêmes conventions que Lou·Ka** (langage, dossiers, nommage, linting,407  formatage). Cohérence > préférences personnelles.408- Un connecteur = un module isolé, testable indépendamment.409- Secrets (clés API des plateformes, Firecrawl/Scrapfly) via variables410  d'environnement / gestionnaire de secrets. Jamais en clair.411- Logging structuré (source, nb de créateurs, nb de comptes rattachés, confiance412  moyenne, erreurs, durée).413- Commits atomiques, messages clairs.414415---416417## 17. En-tête d'auteur — OBLIGATOIRE dans chaque fichier418419**Tout fichier** du dépôt doit débuter par un en-tête d'auteur. L'auteur est420toujours **Simon-Pierre Boucher \<contact@spboucher.ai\>**.421422**Python / Shell / YAML / TOML / Dockerfile :**423```python424# ==============================================================================425# Author: Simon-Pierre Boucher <contact@spboucher.ai>426# File:   <nom_du_fichier>427# Desc:   <brève description>428# ==============================================================================429```430431**JavaScript / TypeScript / Go / Rust / Java / C :**432```javascript433// ==============================================================================434// Author: Simon-Pierre Boucher <contact@spboucher.ai>435// File:   <nom_du_fichier>436// Desc:   <brève description>437// ==============================================================================438```439440**Markdown / HTML / XML :**441```html442<!--443  Author: Simon-Pierre Boucher <contact@spboucher.ai>444  File:   <nom_du_fichier>445  Desc:   <brève description>446-->447```448449**CSS / SCSS :**450```css451/*452  Author: Simon-Pierre Boucher <contact@spboucher.ai>453  File:   <nom_du_fichier>454*/455```456457Règles :458- **Aucun** fichier commité sans cet en-tête.459- Pour un connecteur, indiquer dans `Desc:` la **source/plateforme couverte**, le460  **mode d'accès** (API / Firecrawl / Scrapfly / link-in-bio) et s'il fait de la461  **découverte** ou de l'**enrichissement**.462- Vérifier la présence de l'en-tête en revue de code (idéalement hook de pré-commit).463464---465466## 18. Tests & qualité467468- Chaque connecteur : **tests unitaires** de normalisation sur fixtures réelles469  (réponses API, pages link-in-bio, profils publics figés).470- Tests de **résolution d'identité** : cas connus de comptes multi-plateformes +471  cas-pièges d'**homonymes** à ne pas fusionner.472- **Validation de schéma** : toute fiche émise doit valider le schéma ; rejeter un473  compte sans `url`/`confidence`.474- **Contrôle éthique automatisé** : vérifier qu'aucune donnée privée n'entre en base475  et que les fiches `opted_out` restent exclues.476- **Monitoring** : alerte si une source cesse de retourner des données (blocage).477478---479480## 19. Checklist — ajouter un connecteur / créateur4814821. [ ] Lire les connecteurs de référence dans le **dépôt Lou·Ka** (section 3).4832. [ ] Vérifier que la source/le créateur **n'est pas déjà couvert** (index/registre).4843. [ ] Découverte ou enrichissement ? Identifier la **plateforme/template** réutilisable.4854. [ ] Choisir le **mode d'accès** : API officielle > link-in-bio > Firecrawl >486       Scrapfly (section 10), dans le respect des CGU.4875. [ ] Implémenter `fetch()` → `normalize()` → `emit()` (interface commune).4886. [ ] Mapper le schéma créateur + plateformes ; renseigner `confidence` par compte.4897. [ ] Brancher la **résolution d'identité** et la **déduplication** (section 12).4908. [ ] Appliquer les **règles de vie privée/éthique** (section 15) : public seulement,491       opt-out respecté, régime mineurs, pas de données privées.4929. [ ] Gérer **fraîcheur, comptes disparus, inactifs, opt-out** (section 13).49310. [ ] Ajouter l'**en-tête d'auteur** (section 17).49411. [ ] Écrire les **tests** + fixtures, dont identité et contrôle éthique (section 18).49512. [ ] Enregistrer la source dans le **registre** avec sa cadence.49613. [ ] Valider volume, confiance des rattachements et qualité sur un premier run.497498---499500## 20. Roadmap / MVP501502**MVP** : templatiser **un** connecteur **link-in-bio** (Linktree/Beacons) pour503remplir `platforms` d'un coup, + les **API officielles** YouTube et Twitch pour504l'enrichissement fiable. Découverte initiale via listes médias, agences et hashtags505québécois. Résolution d'identité de base (link-in-bio + liens croisés). UI d'annuaire506avec recherche/filtres par **niche, région, langue, plateforme, taille d'audience**,507et **page créateur** listant tous ses comptes.508509**Ensuite** : Instagram/TikTok (API officielles en priorité), Substack/Patreon,510métriques d'audience historisées, score de confiance affiné, opt-out en libre-service,511et cross-linking avec les autres sites `·Ka`.512513**Nord stratégique** : être l'**annuaire public de référence** des créateurs514québécois — exhaustif, cross-plateforme et respectueux de la vie privée — là où les515bases existantes sont payantes, généralistes et anglophones.516517---518519*Fin de CLAUDE.md — Créa·Ka. Auteur : Simon-Pierre Boucher \<contact@spboucher.ai\>.*520