couple-repo/Projects/DONE/videotoMP3Transcriptor.md
StillHammer c408959fdf Major repo update: First DONE project + execution patterns validated
## 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>
2025-11-30 17:41:24 +08:00

362 lines
7.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`