Retour aux projets
2026 - Aujourd'hui

Sapiens Studio

Studio de production de contenus éducatifs assisté par IA

Next.js Claude AI OpenAI Stable Diffusion FramePack
Aperçu de Sapiens Studio

Contexte

A l'ère des formats courts et de l'économie de l'attention, la culture générale est souvent soit trop scolaire, soit trop superficielle. Sapiens Studio se positionne à l'intersection entre apprentissage intelligent, storytelling et création de contenu automatisée.

Le constat de départ : produire une vidéo éducative de qualité (script, voix off, visuels, montage) prend des heures de travail manuel et nécessite plusieurs outils disjoints. L'objectif était de créer un pipeline de production bout-en-bout où chaque étape est assistée par l'IA, tout en conservant un contrôle éditorial humain à chaque phase.

Type : Outil interne de production
Rôle : Développeur fullstack unique
Optimisé pour : Poste de travail avec GPU NVIDIA

Workflow de création

1Sujet

Saisie libre + choix du modèle IA et du style de prompt

2Fiche texte

Génération par Claude/GPT, éditable manuellement

3Audio

TTS multi-voix (OpenAI ou Qwen3 local)

4Scènes visuelles

Images Stable Diffusion + clips FramePack/Sora

5Vidéo finale

Assemblage FFmpeg avec sous-titres

Fonctionnalités

Génération de fiches

  • Choix du modèle IA : Claude Sonnet 4 / Claude 3.5 Sonnet / Claude 3 Haiku / GPT-4o / GPT-4o Mini
  • 3 styles de prompt : Standard (200-300 mots), Rapide (100-150 mots), Storytelling (250-350 mots)
  • Prompts stockés en base et éditables via l'interface
  • Contenu généré éditable avant sauvegarde

Gestion éditoriale

  • Bibliothèque de fiches avec recherche full-text (SQLite FTS5)
  • Système de tags, statuts (brouillon / validé / publié), export PDF
  • Système de notes et d'idées de sujets

Génération audio (Text-to-Speech)

  • OpenAI TTS (cloud) : 9 voix, 3 modèles, vitesse ajustable 0.25x-4x
  • Qwen3-TTS (local) : gratuit, 10 voix presets, clonage de voix avec 3 secondes d'audio
  • Éditeur audio intégré avec lecteur, visualisation et versioning
  • Enregistrement vocal intégré pour le clonage de voix

Video Studio

  • Découpage en scènes : Claude analyse le texte et découpe en scènes avec descriptions visuelles
  • Génération d'images : Stable Diffusion local (SDXL Turbo / SDXL), résolutions 16:9, 9:16, 1:1
  • Génération de clips : FramePack Image-to-Video (HunyuanVideo 13B), 1-120s par clip + Sora API
  • Assemblage final : FFmpeg — concaténation, sync audio, sous-titres
  • Suivi temps réel de la progression via SSE (Server-Sent Events)

Stack technique

CoucheTechnologieRôle
FrameworkNext.js 16 (App Router)Full-stack TypeScript, SSR, API Routes
FrontendReact 19 + Tailwind CSS v4UI réactive, dark mode
BDDSQLite (better-sqlite3)WAL mode, FTS5, migrations versionnées
ValidationZod v4Schémas sur toutes les routes API
IA TexteAnthropic Claude + OpenAI GPTGénération de contenu éducatif
TTSOpenAI TTS + Qwen3-TTS (local)Narration audio multi-provider
ImagesStable Diffusion (local GPU)Via API Gradio
VidéoFramePack I2V + SoraImage-to-Video local + API cloud
AssemblageFFmpeg (fluent-ffmpeg)Concaténation, merge audio/video
TestsVitest 4250 tests unitaires, 10 suites
CI/CDGitHub ActionsLint + TypeCheck + Tests + Build

Architecture

src/
├── app/                          # Next.js App Router
│   ├── api/                      # 27 routes API REST
│   │   ├── generate-fiche/       # Génération de texte IA
│   │   ├── generate-audio/       # TTS OpenAI
│   │   ├── qwen-tts/             # TTS Qwen3 local
│   │   ├── generate-scenes/      # Découpage scènes par Claude
│   │   ├── generate-images/      # Stable Diffusion
│   │   ├── generate-clips/       # FramePack / Sora
│   │   ├── assemble-video/       # FFmpeg assemblage
│   │   └── job-stream/           # SSE temps réel
│   ├── studio/                   # Page principale
│   ├── fiches/                   # Bibliothèque + détail
│   └── login/                    # Authentification
├── components/                   # 19 composants React
│   └── video-studio/             # 9 sous-composants Video Studio
├── lib/                          # 41 modules métier
│   ├── video/                    # 7 modules
│   ├── tts/                      # 5 modules
│   ├── migrations/               # Système de migration DB
│   └── validators/               # Schémas Zod
└── middleware.ts                 # Auth HMAC + CSRF

Patterns architecturaux

  • Multi-provider : chaque capacité (texte, TTS, images, vidéo) supporte plusieurs providers interchangeables
  • Job tracking hybride : Map in-memory pour les lectures rapides + SQLite pour la persistance
  • SSE : endpoint pour le suivi temps réel de la progression des générations
  • Rate limiting : 4 profils (génération/média/standard/readonly) avec sliding window
  • Async buffered logger : flush toutes les 500ms ou 100 messages

Processus de développement

Approche itérative "make it work, make it right" avec 3 rounds de refactoring :

Round 1 — Refactoring structural (13 points)

  • Décomposition de VideoStudio.tsx (2028 lignes → 9 sous-composants + Context React)
  • Séparation de video.ts (1527 lignes → 7 modules)
  • Standardisation de la validation Zod sur les 27 routes API
  • Remplacement de 95 appels fs.*Sync par fs.promises.*
  • Remplacement de 208 console.log par un logger structuré

Round 2 — Consolidation (20 points)

  • Security headers + CSRF protection
  • Cache TTL + résolution des requêtes N+1
  • SSE endpoint pour le suivi temps réel des jobs
  • CI/CD GitHub Actions + OpenAPI 3.0 documentation
  • APM monitoring (p95, taux d'erreur, slow requests)

Round 3 — Logs et tests

  • Logger réécrit avec I/O async bufférisée
  • 250 tests unitaires couvrant 10 modules critiques

Chiffres clés

~18 500Lignes de code
27Routes API
19Composants React
41Modules métier
250Tests unitaires
6Intégrations IA
11Tables SQLite
53Points de refactoring