# VideoToMP3Transcriptor - YouTube Download & Transcription Service **Status**: DONE **Type**: Utility Service (Node.js) **Location**: `C:\Users\alexi\Documents\projects\videotoMP3Transcriptor` **Created**: 24 novembre 2025 **Shipped**: 25 novembre 2025 **Moved to DONE**: 30 novembre 2025 --- ## Vue d'ensemble **Service complet pour télécharger vidéos YouTube en MP3, transcrire, traduire et résumer.** ### Use Cases - Télécharger cours vidéo en MP3 - Transcrire automatiquement (chinois, français, anglais, etc.) - Traduire transcriptions - Générer résumés AI --- ## Stack Technique **Backend**: - Node.js 18+ - Express (REST API + SSE streaming) - OpenAI API (Whisper + GPT-4o-mini + GPT-5.1) **CLI Tools**: - yt-dlp (YouTube download) - ffmpeg (audio conversion) **Port**: 8888 (par défaut) --- ## Features ### Download - ✅ Single YouTube video → MP3 - ✅ Playlist complète → MP3 batch - ✅ Custom output directory ### Transcription - ✅ 3 modèles dispo : - `gpt-4o-mini-transcribe` (défaut) - Rapide, économique - `gpt-4o-transcribe` - Qualité supérieure - `whisper-1` - Legacy (supports SRT/VTT) - ✅ Multi-langue (auto-detect ou spécifié) - ✅ Formats : txt, json, srt, vtt ### Traduction - ✅ GPT-4o-mini - ✅ Multi-langue support ### Résumé - ✅ GPT-5.1 - ✅ Résumé intelligent contextuel ### Interfaces - ✅ CLI (commands via npm run) - ✅ REST API (endpoints POST/GET) - ✅ SSE Streaming (progress en temps réel) - ✅ Interface Web (public/) --- ## API Endpoints ### Core Endpoints **POST /download** - Télécharge vidéo/playlist en MP3 ```bash curl -X POST http://localhost:8888/download \ -H "Content-Type: application/json" \ -d '{"url": "https://youtube.com/watch?v=VIDEO_ID"}' ``` **POST /transcribe** - Transcrit fichier audio existant ```bash curl -X POST http://localhost:8888/transcribe \ -H "Content-Type: application/json" \ -d '{"filePath": "./output/video.mp3", "language": "en"}' ``` **POST /process** - Download + Transcribe en un appel ```bash curl -X POST http://localhost:8888/process \ -H "Content-Type: application/json" \ -d '{"url": "URL", "language": "zh", "format": "txt"}' ``` ### SSE Streaming Endpoints **POST /download-stream** - Download avec progress temps réel **POST /process-stream** - Process avec updates streaming **POST /summarize-stream** - Résumé avec streaming ### Utility Endpoints **GET /health** - Health check **GET /info?url=URL** - Info vidéo/playlist **GET /files-list** - Liste fichiers téléchargés **GET /files/:filename** - Download fichier spécifique --- ## Configuration **Environment Variables** (`.env`): ```env OPENAI_API_KEY=sk-... PORT=8888 OUTPUT_DIR=./output ``` **Modèles par défaut**: - Transcription : `gpt-4o-mini-transcribe` - Résumé : `gpt-5.1` - Traduction : `gpt-4o-mini` --- ## Usage ### CLI ```bash # Download vidéo npm run cli download "https://youtube.com/watch?v=VIDEO_ID" # Transcrire fichier npm run cli transcribe ./output/video.mp3 -l fr # Download + Transcribe npm run cli process "URL" -l en # Info vidéo npm run cli info "URL" ``` ### Linux Scripts (shortcuts) ```bash # Make executable (first time) chmod +x scripts/*.sh # Download ./scripts/download.sh "URL" # Transcribe ./scripts/transcribe.sh ./output/file.mp3 zh # Process all-in-one ./scripts/process.sh "URL" fr # Start server ./scripts/server.sh ``` ### API Server ```bash # Start server npm run server # Server runs on http://localhost:8888 ``` --- ## Structure Projet ``` videotoMP3Transcriptor/ ├── docs/ │ └── API.md # Documentation API complète ├── src/ │ ├── server.js # Express server + routes │ ├── cli.js # CLI interface │ └── services/ │ ├── youtube.js # YouTube download │ ├── transcription.js # OpenAI Whisper │ ├── translation.js # GPT translation │ └── summarize.js # GPT-5.1 summarization ├── scripts/ # Linux convenience scripts │ ├── download.sh │ ├── transcribe.sh │ ├── process.sh │ ├── server.sh │ └── info.sh ├── public/ # Web interface ├── output/ # Downloaded files (default) ├── .env # Configuration └── package.json ``` --- ## Git Activity **Commits**: 2 (24-25 nov 2025) **Timeline**: - 24 nov : Initial commit (download + transcription) - 25 nov : Add AI summarization (GPT-5.1) **Status**: Shipped et fonctionnel --- ## Use Cases Actuels ### 1. Cours Chinois - Download cours vidéo YouTube - Transcription automatique chinois - Révision texte pour Anki ### 2. Contenu Éducatif - Vidéos diverses langues - Génération transcriptions - Traduction si besoin ### 3. Prototype pour Homework Bot - **Code réutilisable** : - `services/transcription.js` → Whisper integration - `services/youtube.js` → Video download - Pattern SSE streaming → Feedback temps réel - **Overlap** : 50% du code homework bot déjà écrit ici --- ## Relation avec Autres Projets ### Chinese Audio TTS Pipeline (PAUSE) **Verdict** : OBSOLÈTE - videotoMP3 fait déjà exactement ça - Pas besoin de projet séparé - **Action** : ARCHIVE chinese_audio_tts_pipeline ### WeChat Homework Bot (WIP) **Synergies** : - Whisper API transcription ✅ - GPT-4 API correction (similaire résumé) ✅ - File upload/processing ✅ - Node.js/Express backend ✅ **Réutilisation** : Copy/paste `services/transcription.js` dans homework bot --- ## Pourquoi DONE **Critères "DONE"**: - ✅ Shipped et fonctionnel - ✅ Utilisé en production (cours chinois) - ✅ Pas de développement actif prévu - ✅ Maintenance seulement si bugs **Pas un projet "abandonné"** : C'est un **service terminé et opérationnel**. **Différence avec WIP** : - WIP = Développement actif en cours - DONE = Shipped, maintenance uniquement --- ## Installation & Démarrage Rapide ### Prerequisites ```bash # Windows winget install yt-dlp winget install ffmpeg # macOS brew install yt-dlp ffmpeg # Linux sudo apt install yt-dlp ffmpeg ``` ### Setup ```bash cd C:\Users\alexi\Documents\projects\videotoMP3Transcriptor # Install dependencies npm install # Configure cp .env.example .env # Edit .env: Add OPENAI_API_KEY # Start server npm run server # Or use CLI npm run cli download "https://youtube.com/watch?v=..." ``` --- ## Documentation **API complète** : `docs/API.md` dans le repo **Maintenance** : Documentation toujours à jour avec le code --- ## Performance **Transcription** : - 2min audio → ~10-15s (gpt-4o-mini-transcribe) - Dépend latence API OpenAI **Download** : - Dépend vitesse YouTube + taille fichier - Progress visible via SSE streaming --- ## Coûts **OpenAI API** (estimation 20 vidéos/mois, 10min moy) : - Transcription : 20 × 10min × $0.006/min = **$1.20/mois** - Résumé : 20 × $0.02 = **$0.40/mois** - **Total** : ~**$1.60/mois** **Infrastructure** : 0€ (local) --- ## Liens **Repo Git**: `C:\Users\alexi\Documents\projects\videotoMP3Transcriptor` **Documentation API**: `docs/API.md` **CLAUDE.md**: Instructions développement et maintenance --- ## Notes **Créé** : 24 novembre 2025 **Shipped** : 25 novembre 2025 **Moved to DONE** : 30 novembre 2025 **Auteur** : Alexis Trouvé **Pattern de travail** : Fast shipping (2 jours conception → shipped) **Lesson learned** : Service utilitaire bien scopé = 2 jours de dev = Utilisable immédiatement --- **Tags** : `#nodejs` `#youtube` `#whisper` `#transcription` `#openai` `#gpt` `#done`