Skip to content
eulogepPublic

Latest commit

 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


CI status Apache-2.0 license





AlgoLens est le premier SaaS de rétro-ingénierie algorithmique en temps réel. Il transforme les signaux cachés des plateformes en stratégies de contenu actionnables — en secondes.


Démo Live →  ·  Documentation →  ·  Commencer gratuitement →


🎬 Aperçu

Génération de stratégie · TikTok FYP

Demo Strategy

Décrivez votre profil. Obtenez un plan de contenu sur 30 jours en 3 secondes.

📊 Dashboard Analytics — Surveillance cache temps réel

Demo Analytics

Le dashboard expose en live le ratio L1/L2/API miss, les économies générées et la distribution des requêtes par plateforme — avec auto-refresh toutes les 30 secondes.

🔍 Veille Algorithmique — Feed des changements détectés

Demo Updates

Chaque lundi à 8h UTC, le cron collecteur conserve les newsrooms officielles comme sources de référence, normalise les signaux disponibles et publie les changements d'algo avec leur impact, leur niveau de confiance et leurs preuves.

🔐 Auth & Dashboard utilisateur — Magic links Supabase

Demo Auth

Connexion sans mot de passe via magic link. Chaque utilisateur dispose de son historique de stratégies, son quota mensuel et son statut Pro.


⚡ Ce qui rend AlgoLens différent

┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│   USER REQUEST                                                      │
│       │                                                             │
│       ▼                                                             │
│   ┌─────────┐   HIT    ┌──────────────────────┐                    │
│   │  L1     │ ──────▶  │  Response < 1ms      │  66% of traffic   │
│   │  RAM    │          │  In-Memory Map        │                    │
│   └────┬────┘          └──────────────────────┘                    │
│        │ MISS                                                        │
│        ▼                                                             │
│   ┌─────────┐   HIT    ┌──────────────────────┐                    │
│   │  L2     │ ──────▶  │  Response ~50ms      │  27% of traffic   │
│   │  DB     │          │  Supabase Postgres    │                    │
│   └────┬────┘          └──────────────────────┘                    │
│        │ MISS                                                        │
│        ▼                                                             │
│   ┌─────────┐          ┌──────────────────────┐                    │
│   │ Claude  │ ──────▶  │  Response 2-5s       │   7% of traffic   │
│   │   API   │          │  Anthropic Sonnet     │                    │
│   └─────────┘          └──────────────────────┘                    │
│                                                                     │
│   💰 $35/mois estimé  vs  $500/mois sans cache  →  -93% de coût   │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

🗺️ Fonctionnalités

🤖 Génération de stratégie IA

  • 7 plateformes couvertes (TikTok, Reels, Feed, YT Shorts, YT Long, LinkedIn, X)
  • Prompt engineering hyper-structuré par plateforme
  • Réponse JSON validée + fallback automatique si API down
  • Plan d'action 30 jours personnalisé par profil créateur

🗄️ Cache Hybride L1/L2

  • L1 : In-Memory Map Node.js, TTL 1h, max 500 entrées, <1ms
  • L2 : Supabase Postgres persistant, ~50ms, survit aux redéploiements
  • Hash SHA-256 par profil + plateforme comme clé de cache
  • Stats temps réel via /api/cache/stats

🕵️ Veille Algorithmique Auto

  • Cron Vercel chaque lundi 8h UTC
  • Scraping des newsrooms officielles (zero dépendance Puppeteer)
  • Normalisation des signaux officiels et des flux de tendances configurés
  • Moteur déterministe : vélocité, accélération, engagement, nouveauté, diffusion multi-plateforme et confiance
  • Analyse par Claude limitée à la qualification des changements issus de sources officielles
  • Feed /updates filtrable par plateforme, avec score de tendance et compte de preuves
  • Contrat d’intégration documenté dans ALGORITHM_OBSERVATORY.md

📊 Dashboard Analytics Premium

  • Design dark inspiré Vercel Analytics + Linear
  • Inter 300 + JetBrains Mono
  • Chart.js : courbes L1/L2/misses sur 24h
  • Snapshot quotidien en DB (compatible avec le plan Vercel Hobby)
  • Export CSV intégré

💳 Monétisation Stripe

  • Freemium : 3 analyses/mois
  • Pro : illimité à 9€/mois
  • Webhook Stripe → mise à jour plan en DB automatique
  • Gating côté API (pas côté client)

🔐 Auth Multi-user

  • Magic links Supabase (zero mot de passe)
  • Middleware Next.js SSR — routes protégées
  • Profil utilisateur + compteur d'analyses
  • Dashboard historique personnel

🛠️ Stack Technique

Couche Technologie Rôle
Frontend Next.js 14 App Router Server Components + routing
Styling Tailwind CSS + Chart.js UI + visualisations
IA Claude 3.5 Sonnet via SDK Génération stratégies
Auth Supabase Auth SSR Magic links + sessions
Database Supabase Postgres Cache L2 + profils + updates
Cache L1 In-Memory Map (Node.js) <1ms — volatile
Paiements Stripe Webhooks + abonnements
Cron Vercel Cron Jobs Veille algo hebdomadaire
Déploiement Vercel Serverless Edge + serverless functions

État de production vérifié

L’Algorithm Observatory est déployé sur l’instance de production. Le schéma historique d’algorithm_updates a été réconcilié avant l’application de la migration 008_algorithm_observatory.sql, sans supprimer de données existantes.

Contrôle Résultat vérifié
Exécution de production Le cron /api/cron/weekly-scrape a terminé avec un statut HTTP 200.
Observations persistées 53 lignes ont été enregistrées dans trend_observations lors du test de mise en service.
Répartition des preuves 28 observations proviennent des newsrooms officielles ; 25 proviennent du flux SocialCrawl YouTube (trend_feed).
Cohérence des preuves Pour les 53 lignes contrôlées, evidence_count est cohérent avec la taille du tableau JSON evidence.
Planification active La veille est exécutée le lundi à 08:00 UTC ; le snapshot de cache est quotidien pour rester compatible avec Vercel Hobby.

La première collecte SocialCrawl a validé l’accès, la normalisation et la persistance. Les 25 résultats YouTube de ce premier jeu de données n’exposent toutefois pas encore de titre ni de métriques exploitables dans le format normalisé : ils sont temporairement enregistrés sous la forme youtube trending item N, avec un score de tendance de 18 et une confiance de 26. L’adaptateur doit être enrichi lorsque le schéma de contenu précis du fournisseur sera disponible afin de substituer ces libellés de secours par les métadonnées réelles.

L’analyse sémantique des articles officiels dépend également d’une clé Anthropic créditée. En l’absence de crédit, les erreurs d’analyse sont isolées et n’empêchent ni le cron ni la persistance des signaux SocialCrawl. Le détail de l’activation est conservé dans reports/production-activation-findings.md.


🚀 Installation locale

Prérequis

  • Node.js 20+
  • Compte Supabase
  • Clé API Anthropic
  • Compte Stripe (optionnel pour les paiements)

1. Cloner et installer

git clone https://github.com/ton-user/algolens.git
cd algolens
npm install

2. Variables d'environnement

cp .env.example .env.local

Remplir .env.local :

# Supabase
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
SUPABASE_SERVICE_ROLE_KEY=eyJ...

# Anthropic
ANTHROPIC_API_KEY=sk-ant-...

# Stripe
STRIPE_SECRET_KEY=sk_live_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_PRO_PRICE_ID=price_...

# App
NEXT_PUBLIC_SITE_URL=http://localhost:3000
VERCEL_CRON_SECRET=ton_secret_random

# Algorithm Observatory — SocialCrawl direct (facultatif)
# Clé serveur uniquement : ne jamais l’exposer côté navigateur.
SOCIALCRAWL_API_KEY=sc_...
SOCIALCRAWL_REGION=US
# Valeur initiale recommandée : youtube. Ajouter tiktok/instagram après validation du budget.
SOCIALCRAWL_SOURCES=youtube

# Algorithm Observatory — adaptateur externe alternatif (facultatif)
# Le flux doit répondre avec { "signals": SocialSignal[] }, voir ALGORITHM_OBSERVATORY.md
ALGOLENS_SIGNAL_FEED_URL=https://votre-adaptateur.example.com/signals
ALGOLENS_SIGNAL_FEED_TOKEN=optionnel_bearer_token

3. Migrations Supabase

Dans Supabase Dashboard → SQL Editor, exécuter dans l'ordre :

supabase/migrations/002_strategy_cache.sql  # Cache L2
supabase/migrations/003_algorithm_updates.sql # Veille algo
supabase/migrations/004_cache_stats_history.sql # Snapshots analytics
supabase/migrations/005_profiles.sql        # Auth multi-user
supabase/migrations/006_billing_history_and_security.sql
supabase/migrations/007_b2b_workspaces_and_experiments.sql
supabase/migrations/008_algorithm_observatory.sql # Signaux, preuves et tendances

4. Lancer

npm run dev
URL Description
localhost:3000 Landing + sélection plateforme
localhost:3000/dashboard/analytics Dashboard cache
localhost:3000/updates Feed veille algorithmique
localhost:3000/api/cache/stats Stats cache JSON

📁 Structure du projet

algolens/
├── app/
│   ├── page.tsx                          # Landing
│   ├── login/page.tsx                    # Auth magic link
│   ├── auth/callback/route.ts            # OAuth callback
│   ├── analyze/[platform]/page.tsx       # Formulaire profil
│   ├── results/page.tsx                  # Stratégie générée
│   ├── updates/page.tsx                  # Feed veille algo
│   ├── history/page.tsx                  # Historique
│   ├── dashboard/
│   │   ├── layout.tsx                    # Layout protégé
│   │   └── analytics/page.tsx            # Dashboard cache
│   └── api/
│       ├── analyze/route.ts              # POST → stratégie
│       ├── cache/stats/route.ts          # GET → stats cache
│       ├── cache/history/route.ts        # GET → historique 24h
│       ├── stripe/route.ts               # Webhook Stripe
│       └── cron/
│           ├── weekly-scrape/route.ts    # Veille algo (lundi 8h)
│           └── cache-snapshot/route.ts   # Snapshot stats (quotidien)
├── lib/
│   ├── anthropic.ts                      # SDK Claude + retry + fallback
│   ├── cache.ts                          # Cache hybride L1/L2
│   ├── scraper.ts                        # Web scraping natif
│   ├── algo-analyzer.ts                  # Analyse updates par Claude
│   ├── supabase/                         # Clients Supabase
│   ├── supabase-server.ts                # Helper SSR
│   ├── rate-limit.ts                     # Rate limiting 5 req/min
│   └── types.ts                          # Types TypeScript
├── supabase/migrations/                  # 5 migrations SQL
├── middleware.ts                         # Protection routes
└── vercel.json                           # Cron jobs config

🔐 Sécurité

  • Les clés Anthropic ne sont jamais exposées côté client — tous les appels passent par les API Routes Next.js
  • Rate limiting : 5 requêtes/minute/IP (lib/rate-limit.ts)
  • RLS Supabase sur toutes les tables — chaque user ne voit que ses données
  • Cron protégé par header Authorization: Bearer + secret
  • Webhook Stripe vérifié par signature cryptographique

📊 Performance & Coûts

Avant cache :  ~1 000 req/mois × $0.50/req = $500/mois
Après cache :  ~70 req Claude (7%) × $0.50 = $35/mois

Économie : $465/mois · Réduction : 93%
Métrique Valeur
L1 Hit Rate ~66% · <1ms
L2 Hit Rate ~27% · ~50ms
API Miss Rate ~7% · 2-5s
Fallback strategy <10ms · score 65/100

🗓️ Roadmap

  • SDK Anthropic + Fallback strategy
  • Cache hybride L1/L2
  • Intégration Stripe + paywalls
  • Veille algorithmique automatisée
  • Dashboard analytics premium
  • Auth multi-user Supabase
  • Algorithm Observatory : modèle social unifié, preuves et score de tendance
  • Activation de production : migration, cron et premier flux SocialCrawl vérifiés
  • Enrichir le mapping SocialCrawl avec les titres, URLs et métriques réelles des tendances YouTube
  • Adaptateurs dédiés pour les APIs sociales autorisées
  • Mode comparaison 2 plateformes
  • Streaming responses (progressive rendering)
  • Smart TTL adaptatif
  • API publique AlgoLens

Fait pour les créateurs qui veulent comprendre les règles du jeu.

algolens.app · Twitter · LinkedIn

Releases

Packages

Contributors

Languages