Aller au contenu

YouTube Digest

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.

FonctionDescription
3 sources d’entréeSchedule (playlists), Telegram (URL), Watch Later
Transcription intelligentePréfère les captions YouTube (gratuites), fallback Whisper
Résumé TLDRPoints clés extraits via Claude
Stockage vectorielEmbeddings dans Qdrant pour recherche sémantique
Enrichissement on-demandBoutons Telegram pour approfondir
SourceDéclenchementUsage
ScheduleCron configuréPlaylists tech/news
Telegram URLMessage au botVidéo ponctuelle
Watch LaterPlaylist YouTubeVidéos sauvées

ProblèmeSans digestAvec digest
Temps de visionnageRegarder la vidéo entièreTLDR en 30 secondes
Pas de rechercheImpossible de retrouver un passageRecherche sémantique Qdrant
Notes manuellesPrendre des notes pendantPoints clés auto-extraits
Backlog de vidéosWatch Later qui s’accumuleTraitement automatique
MéthodeCoûtVitesseQualité
Captions YouTubeGratuitInstantVariable (auto-générées)
Whisper API~$0.36/h~10-30sExcellente

┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 1. SCHEDULE │ │ 2. TELEGRAM │ │ 3. WATCH │
│ Playlists │ │ URL │ │ LATER │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────┐
│ NORMALIZE INPUT │
│ Extrait video_id depuis URL ou playlist │
└───────────────────────┬─────────────────────────┘
┌─────────────────────────────────────────────────┐
│ CHECK PROCESSED │
│ Évite de traiter 2 fois la même vidéo │
└───────────────────────┬─────────────────────────┘
┌──────────────┴──────────────┐
│ Nouveau │ Déjà traité
▼ ▼
┌─────────────────┐ ┌─────────────┐
│ GET METADATA │ │ SKIP │
│ title, duration │ └─────────────┘
└────────┬────────┘
┌─────────────────────────────────────────────────┐
│ TRANSCRIPTION │
│ YouTube captions → sinon Whisper │
└───────────────────────┬─────────────────────────┘
┌─────────────────────────────────────────────────┐
│ RÉSUMÉ TLDR │
│ Claude Ollama → key points + topics │
└───────────────────────┬─────────────────────────┘
┌─────────────────────────────────────────────────┐
│ STOCKAGE │
│ Qdrant + Data Table N8N │
└───────────────────────┬─────────────────────────┘
┌─────────────────────────────────────────────────┐
│ NOTIFICATION TELEGRAM │
│ TLDR + boutons enrichissement │
└─────────────────────────────────────────────────┘
Try YouTube Captions
┌────┴────┐
│ Found │ Not found
▼ ▼
Parse Download Audio
SRT/VTT (yt-dlp)
│ │
│ ▼
│ Whisper API
│ │
└────┬────┘
Clean Transcript

Gestion des fichiers longs :

DuréeStratégie
< 25 minWhisper direct
≥ 25 minSplit en chunks (limite ~25MB)
> 2hSkip ou confirmation

Prompt :

{
"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 :

{
"tldr": "2-3 phrases résumé concis",
"key_points": ["point1", "point2", "point3"],
"topics": ["tech", "ai", "tutorial"],
"sentiment": "educational",
"language": "en"
}
📺 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]
BoutonAction
📜 Full transcriptTranscription complète structurée avec chapitres
🧠 Atomic notesNotes Zettelkasten (une par concept)
📎 Link to OdooLier à un contact/projet CRM
❓ Q&AGénérer questions-réponses flashcard-style
{
"collection": "youtube_digests",
"vector": embedding,
"payload": {
"video_id": "dQw4w9WgXcQ",
"title": "...",
"tldr": "...",
"key_points": [...],
"topics": [...]
}
}
ColonneTypeDescription
video_idstringYouTube video ID
titlestringTitre vidéo
channelstringNom chaîne
durationnumberDurée en secondes
processed_atdatetimeDate traitement
tldrtextRésumé court
key_pointsjsonListe points clés
topicsjsonTags extraits
qdrant_idstringID vecteur Qdrant

OpérationVidéo 10minVidéo 60min
YouTube captionsGratuitGratuit
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
LimiteImpactMitigation
Vidéos > 2hTimeout possibleConfirmation manuelle
Captions absentesCoût WhisperAcceptable pour vidéos importantes
Multi-langueRésumé dans langue sourceTraduction optionnelle

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
Fenêtre de terminal
# 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}'
ProblèmeVérification
Pas de captionsVidéo sans sous-titres → Whisper fallback
Whisper timeoutFichier trop long ? Augmenter timeout
Claude erreurQuota épuisé ? Check usage claude-ollama
Qdrant 404Collection existe ? Créer si nécessaire