Créa·Ka — annuaire public cross-plateforme des créateurs de contenu québécois (crea-ka.com)
-
Mon, Aug 24, 2026 2
-
feat(doc): page documentation /doc (guide + captures) + lien footer + PDF téléchargeable
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sun, Aug 23, 2026 3
-
Favoris unifiés « Mon univers Ka » (KA ID) — hub groupe-ka.com
…
- creaka/hubfav.py : client HMAC du hub (GET liste cache 30 s, POST toggle synchrone, aucun stockage local) — magasin central des favoris du groupe - creaka/web.py : routes GET /api/favorites + POST /api/favorites/toggle (session KA ID requise, 401 sinon), déclarées avant le fallback SPA - frontend : cœur ♥ sur les cartes de créateurs et CTA sur la fiche (« Se connecter avec KA ID » si déconnecté), page /favoris (grille des favoris lus au hub, retrait en place), nav header + footer + tab bar mobile (5 onglets) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
SEO : pages programmatiques /plateformes + /plateforme/{p} rendues en HTML
…
- creaka/seo.py : menu des plateformes + top 100 créateurs par plateforme (ItemList + BreadcrumbList, contenu dans #app), sitemap-pages enrichi (plateformes >= 3 créateurs) - frontend : routeur SPA — /plateforme/{p} ouvre l annuaire filtré sur la plateforme ; shell reconstruit (build_frontend.py) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sat, Aug 22, 2026 4
-
header opaque + z-index en tokens (standard header/menu KA 2026-08-22)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
SEO : SSR léger des fiches créateur + head complet + robots/sitemaps
…
- creaka/seo.py (nouveau, pattern lou-ka) : routes /createur/{id} servies avec head unique (title « {nom} (@{pseudo}) — profils et liens | Créa-Ka », description dérivée de la bio, canonical, OG complet dont og:type profile et og:image = avatar unavatar stable) + JSON-LD ProfilePage/Person avec sameAs = toutes les URL de plateformes du créateur + BreadcrumbList, et contenu essentiel injecté dans #app pour les bots ; 404 fiches inconnues, 410 fiches retirées/opt-out ; pages /stats /retrait /contact avec canonical propre, /compte en noindex ; robots.txt (Disallow /api/ et /compte, ligne Sitemap) ; sitemap index + chunks de 10 000 (12 827 fiches, lastmod) - gabarit : lang fr-CA, bloc <head> SEO entre marqueurs KA:SEO (canonical, og:url/locale/type/site_name, twitter:title/description, JSON-LD WebSite avec SearchAction + Organization), titre descriptif, lecture de ?q= par le routeur pour rendre la SearchAction réelle - web.py : app.include_router(seo.router) avant le fallback SPA Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
connecteurs: chaine de fetch anti-bot resiliente (Oxylabs->Scrapfly->Bright Data)
…
Auto-escalade de BaseConnector.get() sur blocage (403/429/503/challenge CF) ou coupure reseau, via connectors/_resilient.py. Cles lues de l env avec repli sur ~/.claude/.env (accepte SCRAPFLY_KEY et SCRAPFLY_API_KEY). Reponse compatible requests.Response; coupe-circuit par hote. Aucun connecteur modifie. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
-
Fri, Aug 21, 2026 3
-
Couverture Apify forcée : mode APIFY_FORCE=1 (ignore fraîcheur + caps, délai élargi), tampon des miss définitifs (handle mort/mur de login → rotation hebdo au lieu d'un re-scan quotidien en pure perte), concurrence X réduite à 4 + retries 429 avec backoff et rotation d'IP dans ka-x (0.1.7)
…
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Thu, Aug 20, 2026 5
-
Seeds vague 3 : +392 créateurs QC (Serper niches fines + linktree/beacons), -53 marques/médias purgés de la vague 2 — revue de moine : wall2wallmtl (434 muralistes internationaux) et 947 candidats écartés
…
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Périmètre QC : garde-fous snowball-ig + purge 4 605 fiches hors-Québec
…
La boule de neige IG (profils reliés) ramenait les vedettes mondiales (cristiano, selenagomez, bellahadid…) et _find_existing exigeait une confiance forte des deux côtés, créant des doublons orphelins. Correctifs : - snowball : filtre is_quebec obligatoire + blocklist organismes/marques/ médias/partis QC (villes, tourisme, ministères… ne sont pas des créateurs) - _QC_MARKERS : « queb » nu matchait « QUEBra » (pt) et « jacQUEBrazil » → « quebec » complet ou « queb » en fin de mot (vague 4) - db : rapprochement par compte identique (plateforme+handle) sans condition de confiance — fini les secondes fiches qui volaient le compte (691 cas) - purge base : 4 439 snowball hors-QC, 95 organismes QC non-créateurs, 1 182 orphelines/doublons → 12 445 créateurs propres - tests/test_perimetre_qc.py : régressions vedettes, organismes, faux positifs de marqueur, anti-doublons Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Seeds : +1043 créateurs QC moissonnés (Serper 137 requêtes + Tavily + linktree/beacons), revue manuelle stricte — 14 701 fiches en base après sync tavily-seed
…
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
Wed, Aug 19, 2026 5
-
Mobile : zone tactile du wordmark .brand étendue à 44 px effectifs (::after, pointer coarse)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
tokens.css : overflow-x clip aussi sur html (quirk WebKit iOS — le clip sur body seul laisse défiler le viewport)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
stats v2 (note) : /stats ultra complet + 5 rapports PDF — contenu livré dans 42581a0
…
Le commit 42581a0 (KA Agent v2) a aussi embarqué le module Stats v2 : - kapdf.py vendorisé remplacé par le canonique ka-ui v2 (5 modes PDF) - /api/stats/dashboard enrichi (données réelles seulement) : 10 KPI avec sparklines + deltas, 5 jauges de couverture/complétude, 4 séries, multi- courbes croissance par plateforme (top 4), empilé ajouts par source, 4 répartitions (deltas), 3 distributions, géo, heatmap calendrier + horaire 7x24, 5 tableaux, 10 records ; cache 5 min - /api/stats/report : complet|synthese|tendances|repartitions|donnees, mode inconnu -> complet, filename(.., mode) - page /stats vanilla : sparklines, jauges demi-arc, multi-courbes (motifs de trait distincts), barres empilées, histogrammes, heatmap 7x24, stats de séries min/max/moy/med/sigma, deltas sur barres, menu PDF 5 rapports Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Mobile : socle mobile tokens.css injecté, champs ≥16 px jusqu au breakpoint tabbar, logo tactile, ka-agent corrigé
…
- frontend/src/ka/tokens.css : socle mobile obligatoire (échelle z-index --z-*, --vh100 dvh, .ka-bottombar, .ka-scroll-lock, .ka-menu/.ka-overlay, filet anti-zoom iOS 16 px, zone tactile étendue du gk-badge) — inliné au build. - frontend/src/index.template.html : champs de recherche/filtres (.search-input input, select.f) ≥16 px étendus de ≤760 px à ≤940 px (breakpoint tabbar) ; zone tactile ≥44 px du logo .brand (::after inset -8px, rendu inchangé). - frontend/src/ka-agent.js : safe-areas, textarea 16 px, plein écran ≤640 px + verrou kaa-lock — recopié dans dist/ par build_frontend.py. - Vérifié : les boutons d en-tête masqués ≤940 px restent tous joignables — Statistiques et Explorer l annuaire via la tabbar basse, Contact via la nav du footer local ; le bouton compte KA ID reste visible dans le header. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Tue, Aug 18, 2026 8
-
frontend: page créateur repensée — métriques calculées + onglet par plateforme + grille contenu images/vidéos
…
- bandeau KPI multi-plateforme calculé (portée, engagement moyen, cadence, contenus) - onglets: Vue densemble (barres de portée) + un onglet par plateforme - par plateforme: grille KPI détaillée + badges statut + grille de contenu récent (images/vidéos, play/durée, métriques) avec repli icône si CDN expiré Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
crea-ka: couverture 13 plateformes (Apify) + refresh auto 7j + max-parallélisme
…
- +patreon-apify +discord-apify (code invit sensible à la casse via URL) - run_actor_sharded : N runs parallèles (défaut 32x2Go), retry+jitter, hook target_of - rotation hebdo (APIFY_REVISIT_DAYS=7) : le watch PM2 quotidien couvre tout le bassin en <=7j - +tavily-seed (1271 graines moissonnées) +snowball-ig (related_profiles) pour lexpansion - frontend : stats/badges/contenu récent par plateforme Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
crea-ka: 12 connecteurs Apify maison (enrichissement multi-plateforme ultra détaillé)
…
Acteurs KA (compte Apify gorgeous_thistle, proxy résidentiel) branchés comme connecteurs denrichissement: - instagram/tiktok/x/youtube/twitch/kick/facebook/threads/snapchat/fansly-apify - profils détaillés: abonnés, bio, badges, engagement, cadence + contenu récent (posts/vidéos/tweets avec likes/commentaires/vues), liens croisés (cross_link) - rotation par fraîcheur (revisit_days), garde-fous Scrapfly (_fresh 72h) - onlyfans-apify + instagram-decouverte présents mais hors ordre auto (SPA / topsearch fermé aux sessions anonymes) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
Vague 4 — expansion massive : twitch-decouverte + kick-decouverte (Scrapfly), YT 1361 requêtes (bloc EN, 13 thèmes×56 villes, +100 passe-temps), iTunes 146 requêtes, +5 catégories Wikipédia, enrichisseur region-bio (ville déclarée en bio → région §7)
…
+3 596 créateurs (5 841 → 9 437), +3 684 comptes (10 512). Twitch 292, Kick 122 comptes. region-bio : 1 391 fiches localisées. Avatars 96,5 %. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Vague 3 : Twitch GQL public sans clé (abonnés), stats YouTube sans clé (InnerTube), découvertes wikipedia-qc + palmares-apple, fix marqueurs QC
…
- twitch : plus de SkipSource — API GQL publique du site (Client-ID public, requêtes groupées 20/POST) : abonnés, bio, avatar, partenaire/affilié, dernière diffusion ; voie Helix officielle conservée si clés fournies ; repli curl-binaire si empreinte TLS refusée. 21/26 comptes avec abonnés. - youtube : voie publique complète sans clé — page de chaîne + InnerTube browse du panneau À propos (vues totales, nb vidéos, pays) + page /videos (date de la dernière vidéo → dormant >12 mois) ; bannière, avatar, description → bio ; cap 300 chaînes/passage, rotation 14 j (yt_checked). Passage initial : 264 chaînes (vues+vidéos 264, last_video 261, bannières 245). - wikipedia-qc (découverte) : catégories fr+en de créateurs QC (API MediaWiki) → marqueur QC obligatoire pour les catégories pan-canadiennes → handles sociaux curés Wikidata (P2003/P7085/P2397/P2002/P5797/P2013 + P856) ; décédés exclus, is_minor via P569. 76 nouvelles fiches + 35 fusions. - palmares-apple (découverte) : top 100 podcasts Canada (API marketing officielle Apple, sans clé) + lookup groupé + attribution QC prudente (langue fr ET marqueur dans l en-tête du flux). Spotify charts (API morte), ADISQ (SPA sans liens) et Bible urbaine (prose sans handles) évalués et écartés — documenté dans sources.json. - fix _QC_MARKERS : frontières de mot (« levis » matchait teLEVISion, « estrie » tapESTRIEs) — faux positifs purgés de la base. - sources.json (16 sources), docs connecteurs régénérées, tests vague 3 (46 verts). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
docs: documentation standardisée des 14 sources (générateur + fiches)
…
scripts/gen_connector_docs.py : générateur 100 % programmatique et rejouable qui croise data/sources.json (famille, palier, accès, signal d identité), l introspection statique (ast) de creaka/connectors/*.py et la BD live (creators/doc JSON, accounts par plateforme, sync_log : cadence, alertes). Écrit docs/connecteurs/INDEX.md + une fiche par source (sections fixes). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Vague 2 : balados-rss (RSS sans clé), Podcast Index (prêt — clés requises), abonnés X sans clé, bio-liens, plateformes spotify/discord/apple-podcasts
…
- balados-rss : flux RSS auto-déclarés (cap 150/passage, re-visite 7 j, fetch parallèle poli, repli regex) → épisodes réels, dernier épisode/dormant, pochette→avatar, description→bio, catégories→niches, <link>→site-web (portails partagés et domaines de plateformes exclus — anti-fusion §12.2) - podcastindex : connecteur complet API officielle, sauté proprement sans clés (SkipSource) ; PODCASTINDEX_API_KEY/SECRET dans .env.example - x-profil : abonnés/abonnements/badge X via le service public de syndication (widgets officiels) + repli page x.com ; fetch via curl (requests 429-é par empreinte TLS, constaté) ; followbutton mort et Facebook bloqué → documenté - bio-liens : liaison croisée conservatrice depuis les URLs complètes des bios déjà stockées (cross_link, cap 5/fiche, jamais de @handle textuel) - normalize/frontend : plateformes spotify, discord, apple-podcasts→podcast (fusion par collectionId) ; icônes simple-icons ; PLAT du SPA - sources.json : 4 nouvelles sources documentées ; tests vague 2 (35 verts) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Correctifs audit : fix 500 threads, durées sync, twitch sauté proprement, onlyqueb RSC, avatars YouTube, balados enrichis, archivage §13
…
- web.py : connexion SQLite PAR THREAD (threading.local) — corrige le 500 intermittent sur /api/stats (curseurs entrelacés sur connexion partagée) - db.py : sync_log.seconds/errors réels persistés ; log des comptes retirés dans _write_creator ; archive_missing() (§13 — non revu depuis 72 h → inactive, réversible au retour, opt-out intouchés) - ingest.py : durée+erreurs transmises à sync_source ; archivage en fin de passage complet ; SkipSource journalisé sans fausse alerte - twitch : clés absentes → SkipSource (« sauté : clés manquantes »), plus de run 0 ni d alerte « source bloquée » - onlyqueb : parseur du payload Next.js/RSC — displayName réel, bio+headline, categories→niches, mym/fansly/ofUrl→comptes, websiteUrl→compte site-web - normalize : plateformes mym + fansly (URL canoniques + détection) - dedup : le statut de l observation fraîche gagne (dormant/retour) ; un vrai nom public remplace un display_name pseudo-handle - youtube-recherche : avatar_url extrait du channelRenderer (meilleure rés.) - balados-itunes : feed_url/artist_id/last_episode dans le doc, genres[] complets → niches, dormant >12 mois → status inactive (§13) - wikidata-qc : échec SPARQL journalisé + compté dans sync_log.errors - frontend : libellés MYM/Fansly Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Mon, Aug 17, 2026 9
-
Câblage du widget KA Agent (bulle de chat IA Groupe KA)
…
- ka-agent.js déplacé vers frontend/src/ (emplacement pérenne) ; build_frontend.py le copie vers frontend/dist/ à chaque build, un rebuild ne perd donc plus le fichier. - Balises window.KA_AGENT={site:"crea-ka"} + /ka-agent.js (defer) dans le gabarit source ; dist régénéré. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Footer/contact : Job-Ka rejoint l écosystème (ecosystem.json 13 sites)
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat(stats): tableau de bord analytique /stats + rapport PDF Groupe-KA
…
- creaka/stats.py : GET /api/stats/dashboard (contrat ka-stats SPEC.md) — KPI avec deltas calculables, séries quotidiennes (ajouts, taille cumulative), répartitions (anneau plateformes, barres tiers/niches), heatmap d ajouts, tableaux (top créateurs, niches), records générés des données ; cache 5 min. - creaka/kapdf.py + GET /api/stats/report : PDF estampillé Groupe-KA (fpdf2), modes complet/synthèse, graphiques vectoriels, filename kapdf normé ; correctif : plus de pied de page sur la couverture. - frontend : vue /stats refaite en vanilla JS + SVG (kit kacharts reproduit) — chips de période + plage personnalisée, courbes avec infobulle et légende cliquable, anneau, barres, calendrier de chaleur, tableaux triables/ cherchables/paginés (25/pg), records, fraîcheur + rafraîchir, boutons PDF ; mobile 360/768/1440 sans débordement horizontal. - frontend/src/ka/stats : kit commun (SPEC.md, kacharts.tsx, kapdf.py) versionné. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Corrige le débordement horizontal du header (761–1040 px) et ajoute les assets de partage (og.png, favicon.svg, apple-touch-icon)
…
- Bascule mobile du header (masquage des boutons + tab bar) déplacée de 760 à 940 px : le contenu réel du header exige 937 px - Masquage du brand-tag jusqu à 1040 px (le header complet avec slogan exige 1021 px) - Masquage du badge Groupe KA sous 400 px (débordement de 15 px à 360 px) - Nouveau favicon SVG, apple-touch-icon et image Open Graph 1200×630 servis à la racine via frontend/dist - Meta og:image / twitter:card ajoutées au gabarit Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
design: harmonisation « éditorial sharp » Groupe KA (ka-ui) — accent violet, footer commun, page /contact
…
- Vendorisation du package ka-ui dans frontend/src/ka/ (tokens.css, ecosystem.json, KaFooter.tsx, GroupeKaBadge.tsx) ; tokens.css injecté EN PREMIER dans le <head> via le nouveau marqueur __KA_TOKENS__, écosystème via __KA_ECO__ (scripts/build_frontend.py gère désormais les 3 marqueurs) - Accent attribué à Créa-Ka : VIOLET (--accent:#7048e8, --accent-soft:#ece5fc, --accent-deep:#5433b8, --on-accent:#ffffff) + alias --lime/--lime-soft ; socle dédupliqué (body, grain, sélection, boutons) ; couleurs codées en dur (#c9a3ff, #5b34a8, rgba violettes) pointées vers les variables du groupe ; textes posés sur accent passés à --on-accent, textes sur encre à --accent-soft - Header : badge « Un service Groupe KA » cliquable vers le hub (desktop + mobile, préfixe replié sous 560 px) ; bouton « Se connecter avec KA » ; « Créer un compte KA ID » vers groupe-ka.com/connexion sur /compte - Footer : remplacement par le footer commun KaFooter (fond encre, avertissement agrégateur, 3 courriels, 15 liens de l'écosystème, mentions légales du hub + /retrait local) ; nav locale conservée au-dessus - Nouvelle route SPA /contact : courriels & rôles du groupe, avertissement, lien hub et liste des 12 plateformes (ecosystem.json) - SEO : <title> « Créa-Ka — Un service Groupe KA » - Responsive : cibles tactiles >=44 px (header, nav footer, cartes contact), aucun débordement horizontal (overflow-x:clip du socle), breakpoints 360/768/1024/1440 du design system Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat(auth): connexion « Se connecter avec KA ID » via le hub groupe-ka.com
…
- creaka/auth.py : SSO délégué au hub (state signé, JWT HS256 vérifié en stdlib, session cookie creaka_session sans table users), /api/me enrichi par le profil hub (fetch signé HMAC, cache 60 s), logout, config - frontend : bouton compte dans l'en-tête (visible mobile), page /compte avec carte de membre Groupe KA (gabarit encre + lime du hub) - hub : client crea-ka enregistré (secret partagé KA_SSO_SECRET_CREA_KA) - testé bout-en-bout en prod (login → callback → session → me → logout) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
feat(youtube-recherche): profondeur — pagination par continuations (~4 pages/requête, 5x le rendement de découverte)
…
- API interne de la page publique (INNERTUBE) pour les pages 2-4 de chaque requête - fix: IDs de chaîne UC… — casse préservée + URL /channel/ canonique - fix: parse_count ne lit plus un handle comme un compteur (bug 5 G abonnés) - cartes de comptes : pastille de confiance sur sa propre ligne Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>