Studio de production de contenus éducatifs assisté par IA
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.
Saisie libre + choix du modèle IA et du style de prompt
Génération par Claude/GPT, éditable manuellement
TTS multi-voix (OpenAI ou Qwen3 local)
Images Stable Diffusion + clips FramePack/Sora
Assemblage FFmpeg avec sous-titres
| Couche | Technologie | Rôle |
|---|---|---|
| Framework | Next.js 16 (App Router) | Full-stack TypeScript, SSR, API Routes |
| Frontend | React 19 + Tailwind CSS v4 | UI réactive, dark mode |
| BDD | SQLite (better-sqlite3) | WAL mode, FTS5, migrations versionnées |
| Validation | Zod v4 | Schémas sur toutes les routes API |
| IA Texte | Anthropic Claude + OpenAI GPT | Génération de contenu éducatif |
| TTS | OpenAI TTS + Qwen3-TTS (local) | Narration audio multi-provider |
| Images | Stable Diffusion (local GPU) | Via API Gradio |
| Vidéo | FramePack I2V + Sora | Image-to-Video local + API cloud |
| Assemblage | FFmpeg (fluent-ffmpeg) | Concaténation, merge audio/video |
| Tests | Vitest 4 | 250 tests unitaires, 10 suites |
| CI/CD | GitHub Actions | Lint + TypeCheck + Tests + Build |
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
Approche itérative "make it work, make it right" avec 3 rounds de refactoring :
VideoStudio.tsx (2028 lignes → 9 sous-composants + Context React)video.ts (1527 lignes → 7 modules)fs.*Sync par fs.promises.*console.log par un logger structuré