## Projects - ✅ videotoMP3Transcriptor → DONE (first shipped project! 🎉) - GroveEngine → WIP (reference doc with 46 commits/3 weeks) - WeChat Homework Bot → WIP (comprehensive mini program plan) - ocr_pdf_service → CONCEPT (from PAUSE) - SecondVoice → PAUSE (failed attempt, will restart) ## Execution Patterns (Nov 2025) - 102 commits in 3 weeks (aissia: 33, groveengine: 46, confluent: 23) - 71% active time (15/21 days) - VERDICT: Alexis EXECUTES, not "plan only" - Balance: Big architectural projects + Fast shipping (videotoMP3 in 2 days) ## Couple - Hospital incident 29 nov documented (successful deescalation) - Pattern confirmed: Physical needs > Emotional management - Pattern confirmed: Retreat > Insist when tension ## Updated files - Status_Projets.md: Full project status with execution data - Alexis.md: Profile update with execution proof + hospital incident - CLAUDE.md: Current project state (5 WIP, 6 PAUSE, 1 DONE, 4 CONSTANT, 6 CONCEPT) - New: Projects/DONE/ folder structure - New: wechat_miniapp_homework.md (880 lines) - New: couple_backlog/29_novembre_2025_hopital.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
362 lines
7.5 KiB
Markdown
362 lines
7.5 KiB
Markdown
# 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`
|