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%
26.9 KB

Créa·Ka — Les créateurs d'ici, tous leurs liens

Créa·Ka

Les créateurs d'ici, tous leurs liens

Site Documentation PDF Nœud Port PM2

Créateurs (live) Comptes reliés (live) YouTube (live) Instagram (live) TikTok (live) Twitch (live) Balados (live)
Python FastAPI SQLite Frontend pytest Apify ngrok Groupe KA remote-first spbgit

Les pastilles de la deuxième rangée sont dynamiques : elles interrogent en direct GET /api/stats du site via shields.io.

Créa·Ka (www.crea-ka.com) est l'annuaire public, québécois et cross-plateforme des créateurs de contenu — croisement entre un annuaire cherchable et un « Linktree collectif ». 12 014 créateurs et 19 333 comptes reliés sur 19 plateformes (au 2026-08-28). Chaque créateur québécois a une fiche canonique qui regroupe tous ses comptes publics — Instagram, TikTok, YouTube, Twitch, X, Facebook, Snapchat, Kick, Substack, Patreon, OnlyFans, balado… — chacun avec son URL canonique, ses métriques (abonnés, publications, j'aime, vues, épisodes) et son score de confiance de rattachement.

Pour qui ? Le public qui découvre des créateurs par niche, région, langue ou taille d'audience ; les créateurs eux-mêmes (fiche, opt-out) ; les marques et médias qui cherchent un annuaire public là où les bases existantes sont payantes, généralistes et anglophones. L'éthique prime sur tout : profils publics et professionnels seulement, purge des données privées, opt-out immédiat et persistant, régime restreint des mineurs, conformité Loi 25.

# Visite guidée

⚠️ Application archivée le 2026-09-04 — l'URL live (https://www.crea-ka.com) est hors fonction ; l'app a été retirée du cluster MacLustr (registre mld, admin-ka, gardiens, site groupe-ka). Ce dépôt spbgit reste la source de vérité pour une remise en service. Captures du 2026-08-28 (desktop 1440×900) — chiffres live du jour : 12 014 créateurs · 19 333 comptes reliés · 19 plateformes.

# 1 · Accueil — l'annuaire

Accueil Créa·Ka

Le héros « Chaque créateur québécois. Tous ses liens. » avec les compteurs live (12 014 créateurs · 19 333 comptes reliés · 19 plateformes), les quatre promesses du produit (cross-plateforme, découvrable, liens vérifiés, respectueux — Loi 25), la recherche plein texte et les six filtres (niche, région, plateforme, taille, langue, tri). En dessous, la grille de cartes créateurs : avatar, badge de tier (MÉGA/macro/micro/nano) et nombre de plateformes reliées. La bulle Ka en bas à droite est le widget KA Agent.

# 2 · /plateformes — page SEO programmatique (rendu serveur)

Page plateformes (SSR)

La page /plateformes telle que servie aux moteurs de recherche (HTML rendu côté serveur avant hydratation de la SPA) : « Créateurs québécois par plateforme — 19 plateformes », une entrée par plateforme avec le décompte de créateurs (YouTube 8 912 · Instagram 3 533 · Facebook 1 772 · TikTok 1 038 · X 931 · Twitch 634 · balado 250 · OnlyFans 250 · Spotify 221 · Discord 221 · site web 189 · Kick 147 · Threads 128 · LinkedIn 64 · Patreon 54 · Snapchat 29 · Substack 24 · MYM 24 · Fansly 19). Chaque entrée pointe vers /plateforme/{p} — dans le navigateur, la SPA reprend la main et affiche l'annuaire filtré.

# 3 · /stats — les créateurs québécois en chiffres

Tableau de bord statistiques

Le tableau de bord analytique : tuiles KPI (12 014 créateurs au répertoire, 19 333 comptes publics reliés, 3 018 créateurs multi-plateformes, 750 comptes vérifiés, 20 niches, 16 régions, 769,7 M d'abonnés en portée cumulée connue, 1,61 compte relié par créateur en moyenne), sélecteur de période (aujourd'hui → 12 mois → tout → plage libre), jauges « taux & couvertures » (créateurs multi-plateformes, fiches avec biographie, avec ville ou région, avec audience connue, complétude moyenne) et boutons Rapport PDF complet + catalogue « Autres rapports » (kapdf/ReportBuilder).

# 4 · /retrait — opt-out immédiat (Loi 25)

Formulaire de retrait

« Vie privée d'abord » : un créateur ou une créatrice qui ne veut plus figurer dans l'annuaire remplit nom public + un de ses comptes (plateforme:handle), raison et courriel facultatifs — la fiche est masquée immédiatement et exclue de toute ré-agrégation future (liste persistante data/optout.json). Le même formulaire sert aux corrections d'erreur (mauvais compte rattaché).

# 5 · /contact — nous joindre

Page contact

Les trois courriels du Groupe KA (contact@ projets & partenariats · info@ médias · admin@ légal, vie privée & Loi 25), le rappel de la posture d'agrégateur (« nous ne vendons rien, ne louons rien et ne sommes partie à aucune transaction »), le bouton « Demander un retrait (Loi 25) » et l'annuaire des plateformes du groupe.

# 6 · /plateforme/youtube — annuaire préfiltré par plateforme

Annuaire filtré YouTube

Chaque plateforme a son URL dédiée : ici /plateforme/youtube ouvre l'annuaire avec le filtre YouTube présélectionné — 8 912 créateurs trouvés. Même mécanique pour les 18 autres plateformes ; ces pages sont aussi rendues en HTML côté serveur pour le SEO.

# 7 · Fiche créateur — la fiche canonique

Fiche créateur

La fiche /createur/{id} (ici le magazine sportif 10-21-42KM) : bannière héro, avatar, badges tier/niche/langue (nano · sport & fitness · français), bio, tuiles de métriques cumulées (70 abonnés cumulés · 1 plateforme · 12 contenus analysés · plateforme nº 1 YouTube), onglets Vue d'ensemble + un onglet par plateforme reliée, et le Ka Score /100 avec ses jauges (audience…). Bouton « Se connecter avec KA ID » pour mettre le créateur en favori.

# 8 · /favoris — « Mon univers Ka »

Page favoris

Les créateurs favoris sont gardés dans le compte KA ID sur groupe-ka.com : les mêmes favoris suivent l'utilisateur sur toutes les plateformes du Groupe KA (« un seul compte pour tout le groupe — vos favoris sont entreposés au hub, jamais ici »). En bas : le footer commun de l'écosystème (ecosystem.json).

# 9 · /compte — connexion KA ID (SSO)

Connexion KA ID

« Connectez-vous avec votre KA ID » : le même compte que sur groupe-ka.com, Lou-Ka, Vrai-Prix et les autres plateformes du groupe (SSO du hub). Boutons se connecter / créer un compte / « Qu'est-ce que KA ID ? ».

# 10 · /doc — le guide en ligne

Documentation en ligne

« Comment fonctionne Créa·Ka » : la documentation illustrée intégrée au site (vue d'ensemble, parcours en 4 étapes, provenance des données, FAQ), avec cartes de synthèse (fiches canoniques, 20 niches · 17 régions, connecteurs) et bouton Télécharger le PDF.

# Vue mobile

Captures mobiles 390×844 du 2026-08-25, conservées dans docs/screenshots/mobile/ (et leurs pendants desktop .webp dans docs/screenshots/desktop/).

Accueil mobile
Annuaire — cartes créateurs, tabbar basse
Fiche créateur mobile
Fiche créateur — métriques multi-plateformes
Stats mobile
Tableau de bord analytique

🗄️ Les captures d'époque sont conservées dans docs/archive/.

# Chiffres clés (live, au 2026-08-28)

Métrique Valeur Source
Créateurs publiés 12 014 GET /api/statscreators
Comptes reliés 19 333 GET /api/statsaccounts
Plateformes avec comptes 19 (YouTube 9 405 · Instagram 3 654 · Facebook 1 849 · TikTok 1 097 · X 953 · Twitch 648 · balados 283 · OnlyFans 263 · Discord 258 · Spotify 230 · site web 192 · Kick 147 · Threads 128…) by_platform
Créateurs multi-plateformes 3 018 (+ 750 comptes vérifiés/badge) /stats
Portée cumulée connue 769,7 M d'abonnés (1,61 compte relié/créateur en moy.) /stats
Niches 20 GET /api/taxonomies
Régions administratives 17 (16 représentées) GET /api/taxonomies
Tiers d'audience nano 10 883 · micro 822 · macro 245 · méga 64 by_tier
Connecteurs 22 (comptés dans creaka/connectors/) code
Acteurs Apify maison 13 (actors/ka-*) code
Tests pytest 51 pytest --collect-only

# Fonctionnalités

  • Annuaire filtrable par niche (20), région (17 régions administratives), langue (fr/en/bilingue), plateforme et taille d'audience (nano/micro/macro/méga).
  • Page dédiée par créateur/createur/{id} avec tous ses liens et métriques, bannière héro, Ka Score /100, sparkline d'audience et bloc live.
  • Pages SEO programmatiques/plateformes + /plateforme/{p} rendues en HTML, SSR léger des fiches créateur, robots/sitemaps.
  • Tableau de bord analytique /stats + rapports PDF aux couleurs Groupe KA (catalogue + ReportBuilder).
  • API publiqueGET /api/creators (filtres q/niche/region/langue/plateforme/tier), /api/creators/{id}, /api/stats, /api/taxonomies, /api/sources, POST /api/optout, /healthz.
  • Connexion « Se connecter avec KA ID » (SSO du hub groupe-ka.com) + favoris unifiés « Mon univers Ka ».
  • Widget KA Agent — bulle de chat IA du Groupe KA câblée sur le site (v3 : bulle déplaçable, position mémorisée) + recommandations KA ID (modèle ALS collaboratif, v2.2).
  • Couverture cumulative — un watch quotidien relance découverte + enrichissement : nouveaux créateurs, métriques rafraîchies, comptes croisés révélés via les liens de bio et les pages link-in-bio.
  • Score de confiance sur chaque rattachement de compte — sous 0.50 → « à vérifier », jamais publié ; fusion des doublons uniquement sur compte fort partagé, jamais sur le nom (homonymes).
  • Opt-out immédiat et persistant (/retrait) : fiche masquée sur-le-champ, liste de suppression data/optout.json, jamais ré-agrégée.

# API (endpoints principaux)

Servis par creaka/web.py (FastAPI) sur le port 8160.

Méthode Endpoint Rôle
GET /api/creators annuaire filtrable (q, niche, region, langue, plateforme, tier)
GET /api/creators/{cid} fiche canonique d'un créateur (comptes, métriques, scores)
GET /api/taxonomies niches, régions, plateformes, tiers d'audience, langues
GET /api/sources registre des connecteurs : famille, mode d'accès, signal d'identité, cadence, dernière synchro
GET /api/stats statistiques agrégées (créateurs, comptes, par plateforme/tier/niche/région, dernier sync) — alimente les pastilles dynamiques ci-dessus
GET /api/stats/dashboard · /report · /catalog tableau de bord + rapports PDF (catalogue)
POST /api/stats/report/custom rapport PDF personnalisé (ReportBuilder)
POST /api/optout retrait immédiat et persistant d'un créateur
GET / POST /api/favorites · /api/favorites/toggle favoris « Mon univers Ka » (session KA ID)
GET /healthz · /api/health santé du service
GET /doc/ guide d'utilisation en ligne

# Connecteurs

22 connecteurs auto-découverts (creaka/connectors/), relancés par le watch quotidien (cycle de 24 h). Le registre live GET /api/sources documente pour chaque source : famille, palier d'accès, mode d'accès, signal d'identité et cadence (mensuelle pour les datasets compilés, hebdomadaire pour les bases publiques, quotidienne pour la découverte plateformes — la couverture s'accumule à chaque passage).

Famille Connecteurs Rôle
Découverte — listes & bases publiques listes_medias, wikidata_qc, wikipedia_qc, onlyqueb, region_bio, tavily_seed, snowball amorcer et étendre l'annuaire (listes médias, Wikidata/Wikipédia QC, villes déclarées en bio, moisson web Tavily, boule de neige sur les profils reliés Instagram)
Découverte — plateformes youtube_recherche, twitch_decouverte, kick_decouverte trouver de nouveaux créateurs québécois directement sur les plateformes (Twitch GQL public, Kick via Scrapfly)
Découverte — balados balados_itunes, balados_rss, podcastindex, palmares_apple baladodiffusion (iTunes, flux RSS, Podcast Index, palmarès Apple)
Enrichissement — profils instagram, tiktok, youtube, twitch, x_profil, apify_social métriques et bios des comptes (API officielles, Scrapfly, acteurs Apify)
Enrichissement — liens bio_liens, linkinbio comptes croisés révélés via les liens de bio et les pages link-in-bio

La couche réseau des connecteurs (_resilient.py) enchaîne Oxylabs → Scrapfly → Bright Data en cas de blocage anti-bot. L'enrichissement profond multi-plateforme passe par 13 acteurs Apify maison (actors/ka-* : instagram, tiktok, youtube, x, facebook, threads, twitch, kick, patreon, fansly, discord, onlyfans, snapchat), avec retries durcis, rotation d'IP et snapshots quotidiens d'audience.

# Architecture

Pipeline (calqué sur Lou·Ka) : découverte → extraction → résolution d'identité → normalisation → déduplication → SQLite → API/UI.

  • Backend Python 3.14 / FastAPI (creaka/web.py) : API + service du frontend statique.
  • SQLite (mode WAL) (creaka/db.py) : fiches canoniques, index des comptes, journal des syncs.
  • Résolution d'identité (creaka/identity.py) : signaux pondérés (profil_source 0.98 · link_in_bio 0.95 · cross_link 0.90 · listes/bases publiques 0.85 · handle_match 0.75).
  • Éthique (creaka/ethics.py) : purge des données privées, opt-out, régime restreint des mineurs.
  • Frontend SPA zéro build — template HTML généré par scripts/build_frontend.py (icônes SVG injectées), design ka-ui « éditorial sharp », footer commun (ecosystem.json) ; frontend/dist/ est tracké dans ce repo (y compris le guide /doc).
  • 51 tests pytest (identité, homonymes, éthique, périmètre QC, link-in-bio, normalisation…).

Processus PM2 sur le nœud :

Processus Rôle Commande de démarrage réelle Cadence
crea-ka-web API FastAPI + frontend sur le port 8160 .venv/bin/python run.py serve 8160 continu
crea-ka-sync watch de synchronisation : découverte + enrichissement .venv/bin/python run.py watch 24 cycle de 24 h
crea-ka-ngrok tunnel vers www.crea-ka.com ngrok http --url=www.crea-ka.com 8160 continu

# Démarrage rapide

bash
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp .env.example .env                     # remplir les clés (voir section suivante)
.venv/bin/python -m pytest tests/ -q     # 51 tests
python3 run.py sync                      # découverte + enrichissement (toutes sources)
python3 run.py sync youtube instagram    # …ou seulement certaines sources
python3 run.py watch 24                  # sync en boucle (cycle de 24 h)
python3 run.py serve 8160                # API + frontend → http://localhost:8160
python3 scripts/build_frontend.py        # regénère frontend/dist
python3 run.py optout "instagram:handle" # retrait manuel immédiat

# Variables d'environnement

Gabarit dans .env.example (copier vers .env — jamais commité, aucun secret dans le repo). Noms seulement :

Variable Rôle
SCRAPFLY_KEY profils Instagram/TikTok (palier 4, à minimiser)
FIRECRAWL_API_KEY repli pages link-in-bio / listes publiques
YOUTUBE_API_KEY API officielle YouTube (privilégiée)
TWITCH_CLIENT_ID · TWITCH_CLIENT_SECRET API officielle Twitch
PODCASTINDEX_API_KEY · PODCASTINDEX_API_SECRET enrichissement balados (gratuit ; sans clés, le connecteur est sauté proprement)
APIFY_TOKEN acteurs Apify maison (enrichissement 13 plateformes)
APIFY_FORCE · APIFY_MAX_SHARDS · APIFY_SHARD_SIZE · APIFY_REVISIT_DAYS · APIFY_RUN_CONCURRENCY · APIFY_RUN_MEMORY_MB réglages fins des passes Apify (couverture forcée, sharding, fraîcheur, concurrence, mémoire)
KA_HUB_URL · KA_SSO_SECRET · SESSION_SECRET SSO KA ID (hub groupe-ka.com) et sessions
CREAKA_BASE_URL URL publique du site (SEO/liens absolus)

# Données & conformité

  • Provenance : uniquement des profils publics et professionnels — listes et palmarès médias publics, Wikidata/Wikipédia, annuaires publics, recherche publique des plateformes, API officielles (YouTube, Twitch, Podcast Index) et pages de profil publiques. Le registre GET /api/sources documente chaque source (mode d'accès, signal d'identité, cadence).
  • Cadence de resync : le processus crea-ka-sync relance découverte + enrichissement en cycle de 24 h (run.py watch 24) ; dernier sync exposé dans /api/stats.last_sync.
  • Éthique & Loi 25 : purge des données privées (creaka/ethics.py), régime restreint des mineurs, opt-out immédiat et persistant via /retrait ou POST /api/optout (liste data/optout.json, jamais ré-agrégée).
  • Qualité d'identité : score de confiance par rattachement ; sous 0.50 le compte n'est jamais publié ; fusion des doublons uniquement sur compte fort partagé, jamais sur le nom (homonymes).
  • Périmètre québécois : marqueurs QC obligatoires à la découverte ; purge des fiches hors-Québec (4 605 fiches retirées le 2026-08-20).

# Structure du repo

text
crea-ka/
├── run.py           # CLI : sync · watch · serve · optout
├── creaka/          # cœur Python : schema, identity, dedup, ethics, db, web, auth, stats, kaid, kapdf, seo, hubfav + connectors/ (22)
├── frontend/        # src/ (template) → dist/ (généré par build_frontend.py, tracké — incl. doc/)
├── scripts/         # build_frontend.py · deploy-m3u96b.sh · gen_connector_docs.py · screenshots.sh
├── tests/           # 51 tests pytest
├── data/            # SQLite, optout.json, sources.json, datasets locaux (gitignorés au besoin)
├── actors/          # 13 acteurs Apify maison (ka-instagram, ka-tiktok, ka-youtube, ka-x, …)
└── docs/            # screenshots/ (visite guidée 01→10 + mobile/desktop webp) · archive/ · connecteurs/

# Documentation

  • Guide en ligne : www.crea-ka.com/doc/ — à quoi sert le site, le parcours en 4 étapes (annuaire → plateformes → fiche créateur → /stats), d'où viennent les données, FAQ.
  • Guide PDF : crea-ka-documentation.pdf — la même documentation, téléchargeable.
  • Les captures du guide sont versionnées dans frontend/dist/doc/img/ (etape1 → etape4) ; celles de la visite guidée ci-dessus dans docs/screenshots/.

# Historique

Jalons tirés du git log :

  • 2026-08-17 — commit initial : pipeline, premiers connecteurs, design ka-ui « éditorial sharp », SSO KA ID, tableau de bord /stats, widget KA Agent.
  • 2026-08-18 — vagues 2 à 4 d'expansion : balados (RSS, Podcast Index), Twitch GQL et InnerTube sans clé, twitch/kick-decouverte (Scrapfly), 1 361 requêtes YouTube, enrichisseur region_bio ; 12 connecteurs Apify maison + couverture 13 plateformes.
  • 2026-08-19 — campagne mobile (socle tokens.css, champs ≥16 px), KA Agent v2 plein écran, /stats v2 + 5 rapports PDF.
  • 2026-08-20 — seeds vague 3 (+392 créateurs QC) et périmètre QC durci : purge de 4 605 fiches hors-Québec ; « fiches légendaires » (bannières, Ka Score /100, sparklines, snapshots quotidiens d'audience).
  • 2026-08-21/22 — acteurs Apify durcis (retries, rotation d'IP, concurrence par acteur), chaîne anti-bot résiliente Oxylabs → Scrapfly → Bright Data, SEO SSR des fiches + robots/sitemaps, standard header KA.
  • 2026-08-23/24 — pages SEO programmatiques /plateformes, rapports PDF personnalisés (ReportBuilder), favoris unifiés « Mon univers Ka », page documentation /doc + guide PDF, README v3.
  • 2026-08-26/28 — KA ID v2 → v2.2 (kaid.py) : recommandations personnalisées par filtrage collaboratif (similarité utilisateurs, modèle ALS, langue transversale, pilules « Sauvegarder cette recherche »/« Pas pour moi » dans le SDK) ; README v4 + visite guidée en 10 captures (docs/screenshots/).

# Développement (remote-first)

La source de vérité est le repo git sur le nœud M3U96b (~/apps/crea-ka) — on n'édite jamais les copies laptop. Toute modification se fait sur le nœud via SSH : édition, tests, pm2 restart, puis commit/push depuis le nœud.

  • Remote origin = spbgit (git perso git.spboucher.ai, bare repos sur M3U96a). Pas GitHub.
  • L'agent forwarding SSH est actif : le git push origin main fonctionne pendant une session SSH depuis le laptop.
bash
pm2 restart crea-ka-web                  # après un changement en production

# Déploiement

  • Nœud : M3U96b (Mac Studio, cluster MacLustr) — répertoire ~/apps/crea-ka
  • Port : 8160 (local, exposé uniquement via le tunnel)
  • Processus PM2 : crea-ka-web (serveur) + crea-ka-sync (synchro) + crea-ka-ngrok (tunnel)
  • Domaine : https://www.crea-ka.com (tunnel ngrok)

# Écosystème Groupe KA

Plateforme Vocation
groupe-ka.com portail du groupe et compte unique KA ID
lou-ka.com logements à louer
immo-ka.com propriétés à vendre
vrai-prix.com estimation immobilière
auto-ka.com véhicules
fabri-ka.com produits québécois
food-ka.com épicerie et alimentation
resto-ka.com restaurants
sorti-ka.com sorties et événements
job-ka.com emplois
crea-ka.com créateurs de contenu (ce repo)
trouve-ka.com petites annonces
api-ka.com API de données

# Contact

Simon-Pierre Boucher — fondateur, Groupe KA 📧 contact@spboucher.ai


© Groupe KA — Simon-Pierre Boucher · contact@spboucher.ai Ce repo vit sur spbgit (git.spboucher.ai).