videotomp3transcriptor/CLAUDE.md
2025-12-04 20:57:51 +08:00

129 lines
4.3 KiB
Markdown

# Video to MP3 Transcriptor - Instructions pour Claude
## À propos du projet
Ce projet est une API Node.js/Express pour télécharger des vidéos YouTube en MP3, les transcrire, les traduire et les résumer.
## Documentation
### Documentation API
La documentation complète de l'API se trouve dans **`docs/API.md`**.
**IMPORTANT** : Cette documentation doit TOUJOURS être maintenue à jour. Chaque fois qu'un endpoint est modifié, ajouté ou supprimé, la documentation doit être mise à jour en conséquence.
### Responsabilités de maintenance de la documentation
Quand tu modifies le code, tu DOIS mettre à jour `docs/API.md` si :
- Un nouvel endpoint est ajouté
- Un endpoint existant est modifié (paramètres, réponses, etc.)
- Un endpoint est supprimé
- Les modèles par défaut changent
- De nouveaux paramètres sont ajoutés
- Le format des réponses change
## Structure du projet
```
videotoMP3Transcriptor/
├── docs/
│ └── API.md # Documentation complète de l'API
├── src/
│ ├── server.js # Serveur Express et routes API
│ ├── services/
│ │ ├── youtube.js # Téléchargement YouTube
│ │ ├── transcription.js # Transcription OpenAI
│ │ ├── translation.js # Traduction GPT
│ │ └── summarize.js # Résumé GPT-5.1
│ └── cli.js # Interface en ligne de commande
├── public/ # Interface web (si présente)
├── output/ # Répertoire de sortie par défaut
├── .env # Variables d'environnement
└── package.json
```
## Configuration
### Port du serveur
- Port par défaut : **8888**
- Configurable via `process.env.PORT` dans `.env`
### Modèles par défaut
- **Transcription** : `gpt-4o-mini-transcribe`
- **Résumé** : `gpt-5.1`
- **Traduction** : `gpt-4o-mini` (hardcodé)
### Variables d'environnement requises
```env
OPENAI_API_KEY=sk-...
PORT=8888 # optionnel
OUTPUT_DIR=./output # optionnel
```
## Commandes importantes
```bash
# Lancer le serveur
npm run server
# Lancer le CLI
npm run cli
# Installer les dépendances
npm install
```
## Points d'attention
### Paramètres outputPath
Tous les endpoints supportent maintenant un paramètre `outputPath` optionnel pour spécifier un répertoire de sortie personnalisé. Si non spécifié, le répertoire par défaut `OUTPUT_DIR` est utilisé.
### Modèles de transcription disponibles
- `gpt-4o-mini-transcribe` (par défaut) - Rapide et économique
- `gpt-4o-transcribe` - Qualité supérieure
- `whisper-1` - Modèle original Whisper (supporte plus de formats)
### Formats de sortie
- **Transcription** : txt, json, srt, vtt (selon le modèle)
- **Traduction** : txt
- **Résumé** : txt
## Règles de développement
1. **Documentation d'abord** : Avant de modifier un endpoint, vérifie `docs/API.md`
2. **Après modification** : Mets à jour immédiatement `docs/API.md`
3. **Tests** : Redémarre le serveur après chaque modification
4. **Cohérence** : Garde la même structure de réponse pour tous les endpoints similaires
## Architecture des endpoints
### Endpoints streaming (SSE)
- `/download-stream`
- `/process-stream`
- `/summarize-stream`
Ces endpoints utilisent Server-Sent Events pour envoyer des mises à jour de progression en temps réel.
### Endpoints non-streaming
- `/download`
- `/process`
- Tous les endpoints POST avec upload de fichiers
Ces endpoints retournent une réponse unique une fois le traitement terminé.
## Maintenance
Lors de l'ajout de nouvelles fonctionnalités :
1. Implémente la fonctionnalité dans le service approprié (`src/services/`)
2. Ajoute les routes dans `src/server.js`
3. **Mets à jour `docs/API.md` IMMÉDIATEMENT**
4. Teste l'endpoint avec curl ou Postman
5. Vérifie que la documentation est claire et complète
## Notes importantes
- Le serveur doit toujours être sur le port **8888**
- Les clés API OpenAI sont requises pour transcription/traduction/résumé
- Le répertoire `output/` est créé automatiquement si inexistant
- Les fichiers uploadés sont stockés dans `OUTPUT_DIR`
- Les vidéos YouTube sont téléchargées en MP3 automatiquement