SPB Git

spb/crea-ka

Public

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

20.6 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 791 créateurs et 18 942 comptes reliés sur 19 plateformes (au 2026-08-24). 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


Accueil — l'annuaire des créateurs (desktop)

Accueil — version mobile

Étape 1 · Explorez l'annuaire depuis l'accueil

Étape 2 · Découvrez par plateforme

Étape 3 · Ouvrez la fiche d'un créateur

Étape 4 · Consultez les statistiques sur /stats

Annuaire filtrable — niches, régions, plateformes

Fiche créateur — tous ses liens et métriques

Tableau de bord analytique /stats

Parcours mobile

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

Métrique Valeur Source
Créateurs publiés 12 791 GET /api/stats → creators
Comptes reliés 18 942 GET /api/stats → accounts
Plateformes avec comptes 19 (YouTube 9 990 · Instagram 3 374 · Facebook 1 543 · TikTok 995 · X 854 · Twitch 612 · balados 273 · OnlyFans 260 · Discord 235 · Spotify 205…) by_platform
Niches 20 GET /api/taxonomies
Régions administratives 17 GET /api/taxonomies
Tiers d'audience nano 11 644 · micro 842 · macro 242 · méga 63 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 publique — GET /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).
  • 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
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, kapdf + connectors/ (22)
├── frontend/        # src/ (template) → dist/ (généré par build_frontend.py, tracké — incl. doc/)
├── scripts/         # build_frontend.py · deploy-m3u96b.sh · 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/            # captures d'écran + docs 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).

# 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.

# 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).

Files · e11b98eb4d7bd17a80f84a57b8411d018d0956d1
Menu

Theme