--- title: YouTube Digest url: https://blog.guigpap.com/fr/workflows/youtube-digest/ url_md: https://blog.guigpap.com/fr/workflows/youtube-digest.md category: automation date: '2026-01-31' maturite: production techno: - n8n - telegram - claude - qdrant application: - ai - content - knowledge --- # YouTube Digest > Pipeline complet pour transformer des vidéos YouTube en résumés exploitables avec IA ## 1. Quoi ? — Définition et contexte Le workflow **YouTube Digest** est un pipeline complet qui extrait, transcrit et résume des vidéos YouTube. Il supporte plusieurs sources d'entrée et génère des résumés TLDR avec enrichissement on-demand via Telegram. > **Note - Pipeline** > > Un **pipeline** est une chaîne d'étapes automatisées. Ici : récupérer une vidéo → la transcrire → la résumer → stocker le résultat → notifier. Chaque étape peut être personnalisée selon vos besoins. ### Fonctionnalités | Fonction | Description | |----------|-------------| | **3 sources d'entrée** | Schedule (playlists), Telegram (URL), Watch Later | | **Transcription intelligente** | Préfère les captions YouTube (gratuites), fallback Whisper | | **Résumé TLDR** | Points clés extraits via Claude | | **Stockage vectoriel** | Embeddings dans Qdrant pour recherche sémantique | | **Enrichissement on-demand** | Boutons Telegram pour approfondir | ### Sources d'entrée | Source | Déclenchement | Usage | |--------|---------------|-------| | **Schedule** | Cron configuré | Playlists tech/news | | **Telegram URL** | Message au bot | Vidéo ponctuelle | | **Watch Later** | Playlist YouTube | Vidéos sauvées | --- ## 2. Pourquoi ? — Enjeux et motivations ### Problèmes résolus | Problème | Sans digest | Avec digest | |----------|-------------|-------------| | **Temps de visionnage** | Regarder la vidéo entière | TLDR en 30 secondes | | **Pas de recherche** | Impossible de retrouver un passage | Recherche sémantique Qdrant | | **Notes manuelles** | Prendre des notes pendant | Points clés auto-extraits | | **Backlog de vidéos** | Watch Later qui s'accumule | Traitement automatique | ### Pourquoi prioriser les captions YouTube ? | Méthode | Coût | Vitesse | Qualité | |---------|------|---------|---------| | **Captions YouTube** | Gratuit | Instant | Variable (auto-générées) | | Whisper API | ~$0.36/h | ~10-30s | Excellente | > **Tip - Optimisation coûts** > > En utilisant les captions YouTube quand disponibles, le coût moyen par vidéo est de ~$0.02 (juste Claude + embedding) au lieu de ~$0.40 avec transcription complète. --- ## 3. Comment ? — Mise en œuvre technique ### Architecture ```mermaid flowchart TD subgraph Sources["Sources d'entrée"] direction TB Cron["Schedule · playlists"] TG["Telegram URL"] WL["Watch Later · YouTube"] end Norm["Normalize Input · extract video_id"] Check{"Already processed ?"} Skip["Skip"] Meta["Get Metadata · title, duration"] Transcribe["Transcription · captions ou Whisper"] Summarize["TLDR via cli-ollama"] Storage["Storage · Qdrant + Data Table"] Notify["Telegram notification + enrichment buttons"] Sources --> Norm --> Check Check -->|already| Skip Check -->|new| Meta --> Transcribe --> Summarize --> Storage --> Notify ``` ### Transcription intelligente ```mermaid flowchart TD Captions["Try YouTube Captions"] Found{"Captions found ?"} Parse["Parse SRT / VTT"] Download["Download Audio · yt-dlp"] Whisper["Whisper API"] Clean["Clean Transcript"] Captions --> Found Found -->|Yes| Parse --> Clean Found -->|No| Download --> Whisper --> Clean ``` **Gestion des fichiers longs :** | Durée | Stratégie | |-------|-----------| | < 25 min | Whisper direct | | ≥ 25 min | Split en chunks (limite ~25MB) | | > 2h | Skip ou confirmation | ### Résumé TLDR (Claude) **Prompt :** ```javascript { "model": "claude-haiku-yolo", "prompt": `Analyse cette transcription YouTube et génère: 1. TLDR (2-3 phrases max) 2. Key points (5 max, bullet points) 3. Topics (3-5 tags) 4. Sentiment (educational/entertaining/promotional/technical) 5. Language (code ISO) Transcription: ${transcript}` } ``` **Output :** ```json { "tldr": "2-3 phrases résumé concis", "key_points": ["point1", "point2", "point3"], "topics": ["tech", "ai", "tutorial"], "sentiment": "educational", "language": "en" } ``` ### Notification Telegram ``` 📺 NOUVEAU DIGEST **How AI is Changing Software Development** Channel: Fireship • 12:34 **TLDR:** Les outils AI comme Copilot et Cursor transforment le dev. Focus sur les gains de productivité et les risques. **Points clés:** • GitHub Copilot augmente la vélocité de 40% • Risque: développeurs juniors moins autonomes • Cursor = IDE AI-first prometteur • Tendance: "vibe coding" vs "intentional coding" Tags: #ai #development #tools [📜 Full transcript] [🧠 Atomic notes] [📎 Link to Odoo] [❓ Q&A] ``` ### Enrichissement on-demand | Bouton | Action | |--------|--------| | 📜 Full transcript | Transcription complète structurée avec chapitres | | 🧠 Atomic notes | Notes Zettelkasten (une par concept) | | 📎 Link to Odoo | Lier à un contact/projet CRM | | ❓ Q&A | Générer questions-réponses flashcard-style | ### Stockage Qdrant ```javascript { "collection": "youtube_digests", "vector": embedding, "payload": { "video_id": "dQw4w9WgXcQ", "title": "...", "tldr": "...", "key_points": [...], "topics": [...] } } ``` ### Data Table N8N | Colonne | Type | Description | |---------|------|-------------| | video_id | string | YouTube video ID | | title | string | Titre vidéo | | channel | string | Nom chaîne | | duration | number | Durée en secondes | | processed_at | datetime | Date traitement | | tldr | text | Résumé court | | key_points | json | Liste points clés | | topics | json | Tags extraits | | qdrant_id | string | ID vecteur Qdrant | --- ## 4. Et si ? — Perspectives et limites ### Estimation des coûts | Opération | Vidéo 10min | Vidéo 60min | |-----------|-------------|-------------| | YouTube captions | Gratuit | Gratuit | | Whisper (si nécessaire) | ~$0.06 | ~$0.36 | | Claude TLDR | ~$0.01 | ~$0.05 | | Embedding | ~$0.0001 | ~$0.001 | | **Total** | **~$0.01-0.07** | **~$0.05-0.41** | ### Limites actuelles | Limite | Impact | Mitigation | |--------|--------|------------| | **Vidéos > 2h** | Timeout possible | Confirmation manuelle | | **Captions absentes** | Coût Whisper | Acceptable pour vidéos importantes | | **Multi-langue** | Résumé dans langue source | Traduction optionnelle | ### Scénarios d'évolution **Si besoin de multi-langue** : - Détecter la langue automatiquement - Option de traduction du résumé - Embeddings multilingues **Si volume de vidéos augmente** : - Filtrage par score de pertinence - Digest quotidien groupé - Queue avec priorités **Si besoin de recherche avancée** : - Interface web de recherche Qdrant - Filtres par topic/channel - Suggestions de vidéos similaires ### Commandes utiles ```bash # Tester l'extraction de video_id echo "https://www.youtube.com/watch?v=dQw4w9WgXcQ" | \ grep -oP '(?<=v=)[^&]+' # Vérifier les captions disponibles yt-dlp --list-subs "https://www.youtube.com/watch?v=VIDEO_ID" # Télécharger audio pour test yt-dlp -x -f bestaudio "https://www.youtube.com/watch?v=VIDEO_ID" # Recherche sémantique dans Qdrant curl -X POST "http://qdrant:6333/collections/youtube_digests/points/search" \ -H "Content-Type: application/json" \ -d '{"vector": [...], "limit": 5}' ``` ### Troubleshooting | Problème | Vérification | |----------|--------------| | Pas de captions | Vidéo sans sous-titres → Whisper fallback | | Whisper timeout | Fichier trop long ? Augmenter timeout | | Claude erreur | Quota épuisé ? Check usage claude-ollama | | Qdrant 404 | Collection existe ? Créer si nécessaire | --- ## Pages liées ### Workflows - [Telegram Orchestrator](/fr/workflows/telegram-orchestrator/) — Envoi URL - [Notification Hub](/fr/workflows/notification-hub/) — Routage notifications ### Infrastructure - [AI Stack](/fr/infrastructure/ai-stack/) — Claude Ollama + Qdrant - [N8N Queue Mode](/fr/infrastructure/n8n-queue-mode/) — Backend workers ## Metadonnees agent - Cet article est issu du blog GuiGPaP Lab. - Contexte global du blog: https://blog.guigpap.com/llms.txt - Contact auteur: https://odoo.guigpap.com/mon-cv - Licence: CC-BY-SA 4.0