Automatisez la synthèse de vidéos YouTube avec n8n : de la transcription au résumé par IA

Introduction. Nous sommes submergés de contenu vidéo à l’ère de « l’infobésité », cette surabondance d’informations qui dépasse notre capacité à les traiter. YouTube voit par exemple plus de 500 heures de vidéo mises en ligne chaque minute, et la vidéo représente près de 90 % des médias consommés sur Internet. Il devient impossible de tout visionner ! Face à ce flot continu, pouvoir résumer automatiquement le contenu des vidéos présente un intérêt énorme : on peut rapidement saisir l’essentiel sans passer des heures à regarder chaque vidéo en entier. Dans cet article, nous allons apprendre à créer un workflow no-code avec l’outil n8n pour automatiser ce processus : récupération des nouvelles vidéos via un flux RSS, extraction de leur transcription texte, génération d’un résumé automatique avec un agent IA (ex. OpenAI), puis sauvegarde du résumé dans un fichier JSON. Le tout, pas à pas et sans une ligne de code manuel.

Avant de plonger dans la pratique, quelques mots sur n8n. C’est un outil d’automatisation open-source qui permet de connecter des services et d’automatiser des tâches via une interface visuelle, sans programmation. Autrement dit, n8n va nous permettre de construire un flux de travail (workflow) reliant différentes étapes (« nœuds ») très simplement. Même en étant débutant, on peut combiner des nodes (blocs fonctionnels) pour créer des automatisations puissantes.

Dans ce tutoriel pédagogique, nous allons configurer un workflow n8n de A à Z : depuis l’installation de n8n en local jusqu’à l’exécution finale. Chaque section détaille une étape, avec des explications claires pour les débutants en n8n et en no-code. Vous trouverez également des définitions simples pour chaque terme technique au fil du texte. Suivez le guide !

Installation de n8n en local avec Docker et ajout du nœud communautaire

Pour commencer, il nous faut une instance n8n fonctionnelle en local. La méthode la plus simple et universelle est d’utiliser Docker (assurez-vous d’avoir Docker installé sur votre machine). Nous allons utiliser l’image officielle de n8n pour créer un conteneur isolé. Voici comment procéder :

  1. Créer un répertoire de travail (facultatif) – Vous pouvez créer un dossier dédié où seront stockées les données n8n (cela facilitera l’accès aux fichiers générés via un volume Docker). Par exemple : mkdir n8n-local && cd n8n-local.
  2. Lancer le conteneur n8n – Exécutez la commande Docker suivante :
docker run -it -p 5678:5678 -v $(pwd)/n8n-data:/home/node/.n8n n8nio/n8n

Cette commande télécharge et lance l’image n8n. On mappe le port 5678 du conteneur sur celui de l’hôte (vous pourrez accéder à l’interface sur http://localhost:5678), et on monte un volume n8n-data sur le répertoire /home/node/.n8n du conteneur. Ce montage est important : il permettra de persister les données (workflows, fichiers) en dehors du conteneur, sur votre machine hôte. Vous pourrez ainsi récupérer le fichier JSON de résumé que nous créerons plus tard.

  1. Accéder à l’interface n8n – Une fois le conteneur lancé, ouvrez votre navigateur sur http://localhost:5678. Vous devriez voir l’interface web de n8n s’afficher, prête à être utilisée.

Activer les nœuds communautaires. Par défaut, n8n intègre un grand nombre de nœuds officiels (intégrations standard). Mais notre cas d’usage nécessite un nœud communautaire spécifique (non officiel) pour obtenir les transcriptions YouTube. Il faut donc autoriser les nœuds communautaires dans notre instance. Pour cela, rendez-vous dans les Settings de n8n (roue crantée en haut à droite > Community Nodes), et activez l’option.

Installer le nœud « YouTube Transcript ». Une fois les nœuds communautaires activés, nous pouvons installer le nœud dont nous avons besoin. Dans les settings (Community Nodes > Install), recherchez youtube transcript – le paquet s’appelle @anpigon/n8n-nodes-youtube-transcript. Ce nœud communautaire va permettre de télécharger directement la transcription d’une vidéo YouTube dans un workflow n8n. Sélectionnez-le puis cliquez sur Install. N8n va télécharger et installer ce module. Note : Ce module utilise en interne un navigateur automatisé (Puppeteer) pour récupérer le texte, car YouTube ne fournit pas d’API publique pour toutes les transcriptions. L’utilisation d’un vrai navigateur garantit d’obtenir la transcription affichée sous la vidéo, quel que soit le type de vidéo (à condition qu’un transcript soit disponible).

Interface de n8n – Installation d’un nœud communautaire via son nom de package. Ici, on ajoute le nœud “YouTube Transcript” qui permet d’extraire la transcription d’une vidéo YouTube.

Installer les dépendances Puppeteer (Chromium). Après l’installation du nœud, il reste une étape cruciale : Puppeteer, la librairie de navigation web utilisée par le nœud, doit être disponible dans l’environnement Docker. En effet, le nœud YouTube Transcript nécessite un navigateur headless (Chromium) pour fonctionner. Sur n8n installé via Docker (basé sur Alpine Linux), nous devons manuellement installer Chromium et d’autres librairies système nécessaires, puis Puppeteer lui-même.

Heureusement, la communauté fournit les instructions. Voici la démarche recommandée : ouvrez un terminal sur votre hôte et exécutez une commande dans le conteneur n8n en cours d’exécution pour installer Chromium et les polices manquantes. Par exemple :

docker exec -it -u root n8n apk add --no-cache udev chromium harfbuzz freetype ttf-freefont nss

Cette commande utilise le gestionnaire de paquets Alpine (apk) pour installer Chromium et ses dépendances (bibliothèques nss, freetype, support des fontes, etc.) directement dans le conteneur. Ensuite, toujours dans le conteneur, installez Puppeteer lui-même (en évitant le téléchargement redondant de Chromium intégré) :

docker exec -it -u root n8n bash -c "PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g puppeteer"

Ici on passe la variable d’environnement PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true pour empêcher Puppeteer de retélécharger une version de Chromium (puisque nous venons d’en installer une). On indique également, si nécessaire, le chemin de l’exécutable Chrome via PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser (ce qui correspond à l’installation faite).

Une alternative plus propre, si vous êtes à l’aise avec Docker, serait de construire une image Docker personnalisée incluant ces dépendances dès le départ. Le créateur du nœud fournit par exemple un Dockerfile prêt à l’emploi qui installe Chromium et Puppeteer sur l’image n8n. Mais la méthode ci-dessus a l’avantage d’être rapide à tester.

À ce stade, nous avons une instance n8n fonctionnelle avec le nœud YouTube Transcript installé et prêt à l’emploi, ainsi que toutes les dépendances résolues pour Puppeteer/Chromium. Nous allons maintenant pouvoir construire notre workflow étape par étape.

Configuration du flux RSS pour détecter les nouvelles vidéos YouTube

La première étape de notre workflow consiste à détecter automatiquement les nouvelles vidéos publiées sur une chaîne YouTube donnée. Pour cela, nous utilisons un flux RSS. En effet, chaque chaîne YouTube expose un flux RSS (Media RSS) listant ses dernières vidéos mises en ligne. Il suffit de connaître l’URL de ce flux pour y abonner n8n.

Obtenir l’URL RSS d’une chaîne YouTube. L’URL du flux n’est pas forcément évidente à trouver car YouTube ne l’affiche pas directement sur la page de la chaîne. Cependant, elle suit un format standard :

https://www.youtube.com/feeds/videos.xml?channel_id=<ID_de_la_chaîne>

Il vous faut donc l’ID unique de la chaîne YouTube que vous voulez suivre. Cet ID se trouve souvent dans l’URL de la chaîne (après channel/), ou vous pouvez le copier depuis les paramètres de la chaîne. Si la chaîne a un nom personnalisé (URL simplifiée), vous pouvez utiliser une extension navigateur comme Get RSS Feed URL (sur Chrome/Firefox) pour détecter l’URL du flux RSS automatiquement sur la page de la chaîne. En dernier recours, rendez-vous sur la page de la chaîne, affichez le code source (clic droit > Afficher le code source), et recherchez le terme rssUrl – l’URL du flux est généralement indiquée dans le code HTML.

Une fois le lien RSS obtenu, on peut configurer n8n. Sur l’interface n8n, créez un nouveau workflow et ajoutez le nœud RSS Feed Trigger (déclencheur de flux RSS). Ce nœud va “scruter” le flux à intervalle régulier et déclencher le workflow dès qu’un nouvel item apparaît. Dans les paramètres du nœud, collez l’URL du flux de votre chaîne YouTube. Par exemple, pour une chaîne donnée cela ressemble à :

https://www.youtube.com/feeds/videos.xml?channel_id=UCSAMPLEID12345678

Choisissez également une fréquence de poll (par exemple Every hour ou Every X minutes selon vos besoins). Ainsi, toutes les heures (ou autre intervalle choisi), n8n vérifiera le flux et récupérera les nouvelles vidéos publiées.

Quand le flux RSS détecte une nouvelle vidéo, le nœud output les informations associées (titre, lien, description, date, etc.). Dans le cas d’un flux YouTube, chaque item contiendra notamment un identifiant de vidéo (videoId) et/ou un lien de la forme https://www.youtube.com/watch?v=<ID>. Si le lien complet n’est pas fourni tel quel, nous pouvons le reconstruire nous-mêmes.

Générer l’URL complète de la vidéo (nœud Code). Pour s’assurer d’avoir un lien exploitable de la vidéo, nous allons utiliser un petit nœud de code JavaScript. Ajoutez un nœud Code (catégorie Function dans n8n) connecté après le RSS. Configurez-le en mode Run Once for Each Item (exécution pour chaque item du flux). Ce nœud va prendre l’identifiant de la vidéo reçu et formater un URL complet. Par exemple, on peut écrire :

// Récupérer l’ID de la vidéo depuis l’entrée du RSS
const videoId = $json["videoId"] || $json["id"];
// Construire l’URL complète YouTube
$item().$node.context["videoUrl"] = `https://www.youtube.com/watch?v=${videoId}`;
return $input.all();

Ce script récupère l’ID (en fonction de comment le flux l’a fourni, soit dans un champ videoId, soit dans un champ id), puis ajoute un nouveau champ videoUrl avec l’adresse complète. De cette façon, pour chaque nouvelle vidéo détectée, nous aurons directement son URL YouTube prête à l’emploi dans le workflow.

Extraction de la transcription de la vidéo YouTube

Maintenant que nous attrapons les nouvelles vidéos et connaissons leur URL, la prochaine étape est de récupérer la transcription texte de chaque vidéo. C’est ici qu’entre en jeu le nœud communautaire YouTube Transcript que nous avons installé.

Ajoutez au workflow le nœud Youtube Transcript (si vous ne le trouvez pas, vérifiez que les Community Nodes sont bien activés et installé, comme vu précédemment). Connectez-le juste après le nœud Code (de façon à ce qu’il reçoive l’URL de la vidéo en entrée). Dans les paramètres du nœud Youtube Transcript, vous aurez un champ pour l’URL ou l’ID de la vidéo. Choisissez l’option d’entrer une expression, et pointez vers le champ videoUrl que nous avons défini dans le nœud précédent.

Ce nœud, lorsqu’il s’exécute, va lancer en coulisse un navigateur headless via Puppeteer pour charger la page YouTube et extraire le texte des sous-titres/transcription. Notez que si la vidéo a des sous-titres auto-générés, ils seront également récupérés. Si en revanche la vidéo n’a pas de transcription disponible (par exemple si l’auteur l’a désactivée et qu’il n’y a pas de sous-titres auto), le nœud renverra un contenu vide ou une erreur. Pour notre usage, on supposera que les vidéos ont des transcriptions (ce qui est courant pour les vidéos en anglais notamment).

En sortie, le nœud Youtube Transcript nous fournit le texte intégral de la vidéo. Celui-ci peut être relativement volumineux (plusieurs pages de texte pour une vidéo longue). C’est ici qu’un agent IA va nous aider à condenser cette information.

Exemple d’un workflow n8n avec plusieurs nœuds connectés entre eux. Dans notre cas, le flux commence par un déclencheur RSS (nouvelle vidéo YouTube), suivi d’un nœud de transformation (code pour construire l’URL), puis du nœud communautaire récupérant la transcription, d’un nœud OpenAI pour le résumé, et enfin d’un nœud de sauvegarde.

Génération d’un résumé avec OpenAI (agent IA)

Nous avons la transcription brute de la vidéo : probablement un long bloc de texte reprenant tout ce qui a été dit. L’objectif est d’en produire un résumé concis mettant en avant les points clés. C’est un travail parfaitement adapté aux modèles d’IA tels que ChatGPT d’OpenAI. N8n propose un nœud intégré pour OpenAI, ce qui rend son utilisation très simple pour notre besoin.

Configurer l’accès à l’API OpenAI. Avant d’ajouter le nœud, assurez-vous d’avoir une clé API OpenAI (vous pouvez créer un compte sur openai.com et générer une clé secrète). Dans n8n, allez dans Credentials et ajoutez une nouvelle authentification de type OpenAI. Renseignez-y votre clé API. Une fois cette étape faite, vous pourrez utiliser le nœud OpenAI.

Ajouter le nœud OpenAI (résumé). Dans le workflow, ajoutez un nœud OpenAI après le nœud Youtube Transcript. Ce nœud propose plusieurs modes (Completion, Chat, etc.) selon les versions de n8n. Le plus simple pour notre cas est d’utiliser l’opération de completion textuelle (ou l’agent de chat). L’idée est de fournir la transcription en entrée et de demander un résumé en sortie. Configurez les champs comme suit :

  • Model: choisissez un modèle de langage (par exemple gpt-3.5-turbo qui est rapide et suffisant pour un résumé, ou gpt-4 pour potentiellement meilleure qualité).
  • Prompt: c’est ici que nous formulons la demande à l’IA. Par exemple, en français : « Tu es un assistant qui résume des vidéos. Résume le contenu de la vidéo suivante de manière concise en français : {{$json[« transcript »]}} ». Le {{$json["transcript"]}} insère le texte de la transcription récupérée par le nœud précédent. On peut ajuster la consigne : demander un certain nombre de phrases, ou un plan en bullet points, etc., selon le style de résumé souhaité.
  • Max Tokens: on peut limiter la longueur de la réponse (par exemple 200 tokens, environ 150-200 mots) pour forcer un résumé court.
  • Temperature: garder une valeur basse (0.2-0.3) si on veut un style factuel et concis, ou un peu plus élevée pour un résumé plus créatif.

Assurez-vous de lier le nœud OpenAI avec vos credentials OpenAI (menu déroulant Credentials dans le nœud). Désormais, lorsque ce nœud s’exécutera, il enverra la transcription à l’API d’OpenAI et recevra en retour un résumé généré par l’IA. Comme le souligne un développeur, avec le nœud OpenAI de n8n, il est très facile de fournir un prompt texte et de récupérer la réponse de l’IA en sortie – tout se fait en quelques clics, sans code.

En sortie du nœud OpenAI, vous aurez le texte du résumé (souvent dans un champ nommé message ou text selon la configuration). Il s’agit généralement d’une ou plusieurs phrases résumant la vidéo. Vous pouvez tester le workflow manuellement sur une vidéo pour voir le résultat et ajuster le prompt si nécessaire (par exemple, ajouter « en 3 points » pour obtenir une liste de 3 points clés, etc.).

Exemple de résultat de résumé automatique intégré dans un message sur Discord (autre utilisation possible du workflow). Ici, le workflow n8n a posté un résumé en bullet points via un webhook Discord, offrant aux lecteurs un aperçu du contenu sans regarder la vidéo en entier.

(Illustration : Le screenshot ci-dessus montre un message Discord contenant le titre de la vidéo et un résumé généré par l’IA. C’est une application annexe : on pourrait imaginer étendre notre workflow pour partager automatiquement les nouveaux résumés sur un canal Discord, mais dans ce tutoriel nous nous concentrons sur la sauvegarde locale en JSON.)

Sauvegarde du résumé dans un fichier JSON local

Dernière étape de notre pipeline : conserver le résultat (titre de la vidéo et résumé IA) dans un fichier JSON sur notre machine, pour pouvoir le consulter plus tard ou l’exploiter avec d’autres outils. Puisque nous faisons tourner n8n en Docker, il faut tenir compte du fait que les chemins de fichiers sont interprétés à l’intérieur du conteneur. Grâce au volume que nous avons monté au départ (n8n-data), nous avons une solution : toute écriture dans le dossier /home/node/.n8n du conteneur sera en réalité sauvegardée dans n8n-data sur l’hôte. Nous pouvons donc écrire dans ce répertoire pour que le fichier soit accessible depuis notre machine.

Utiliser le nœud de fichier (Write Binary/File). n8n fournit un nœud Core nommé Read/Write Files from Disk (ou dans certaines versions un nœud Write Binary File séparé). Ce nœud nous permet d’écrire un contenu dans un fichier sur le disque du serveur n8n. Ajoutez ce nœud à votre workflow, en dernier maillon (après le nœud OpenAI). Configurez l’opération sur “Write File” (écriture).

  • File Path: indiquez un chemin absolu dans le conteneur, par exemple /home/node/.n8n/summaries/{{ $json["videoId"] }}.json. Ici, on utilise le videoId ou un autre identifiant pour nommer le fichier de manière unique par vidéo. Vous pouvez aussi choisir d’avoir un seul fichier JSON cumulatif (mais il faudrait alors fusionner les données, ce qui est plus complexe ; on restera sur un fichier par vidéo pour la simplicité).
  • Input Data Field: spécifiez le champ contenant les données à écrire. Dans notre cas, on veut sauver du JSON comprenant possiblement plusieurs champs (titre, URL, résumé…). Une astuce est de d’abord utiliser un nœud Set ou Function juste avant, pour structurer proprement les données en un seul objet JSON. Par exemple, ajouter un nœud Set où l’on définit des champs comme titre_video (valeur provenant du RSS), url_video, et resume (valeur provenant de l’OpenAI). Ce nœud combinera les informations provenant de différents nœuds en un seul objet JSON bien formé. Ensuite, on envoie cet objet au nœud Write File.
  • Binary vs JSON: le nœud d’écriture de fichier attend généralement des données binaires. S’il attend un champ binaire, on doit convertir notre JSON en binaire. Pour ce faire, n8n propose un nœud Move Binary Data qui peut transformer un champ JSON en un fichier texte brut. Vous pouvez utiliser ce nœud : prenez le JSON structuré de l’étape précédente, et convertissez-le en binaire (type de données file), en spécifiant par exemple le nom de fichier summary.json et le contenu qui provient de votre JSON. Une fois cela fait, le nœud Write File écrira effectivement le fichier.

En résumé, la suite finale de nœuds pourrait être : OpenAI -> Set (prépare JSON) -> Move Binary (JSON -> fichier) -> Write File (enregistre sur disque). N8n vous permet aussi de chaîner autrement selon vos préférences, l’important est d’obtenir un fichier JSON valide en sortie.

Après exécution, vous devriez voir apparaître (sur l’hôte) un fichier *.json dans le dossier n8n-data (ou celui que vous avez monté). Vous pouvez l’ouvrir avec un éditeur pour vérifier le contenu. Par exemple, il pourrait ressembler à :

{
    "titre_video": "Comment utiliser n8n pour r\u00e9sumer des vid\u00e9os YouTube",
    "url_video": "https://www.youtube.com/watch?v=abc12345",
    "resume": "Cette vid\u00e9o explique comment configurer un workflow n8n pour r\u00e9cup\u00e9rer automatiquement les vid\u00e9os d'une cha\u00eene YouTube via un flux RSS, en extraire la transcription, puis g\u00e9n\u00e9rer un r\u00e9sum\u00e9 concis de son contenu gr\u00e2ce \u00e0 OpenAI."
}

(Les caractères Unicode \u00e9 sont des accents échappés, pas d’inquiétude si vous voyez ça dans un éditeur brut.)

En cas de difficulté pour retrouver le fichier, assurez-vous que le chemin utilisé correspond bien à un emplacement du volume Docker. Pour rappel, nous avons monté ./n8n-data sur /home/node/.n8n – donc un fichier écrit dans /home/node/.n8n/ à l’intérieur du conteneur se trouvera dans le dossier n8n-data de votre répertoire local.

Conclusion et idées d’extensions

Bravo 🎉, vous avez construit un système no-code complet qui va synthétiser automatiquement des vidéos YouTube ! Pour récapituler, notre workflow n8n réalise les tâches suivantes :

  1. Surveille un flux RSS de chaîne YouTube et détecte les nouvelles vidéos dès leur sortie.
  2. Récupère l’ID/la URL de chaque nouvelle vidéo.
  3. Télécharge la transcription texte de la vidéo via un nœud communautaire (en pilotant un navigateur).
  4. Fait appel à un agent IA (OpenAI) pour résumer le texte de la transcription en quelques phrases.
  5. Enregistre le résumé au format JSON dans un fichier local accessible.

Une telle automatisation ouvre de nombreuses possibilités. Par exemple, vous pourriez facilement adapter ce workflow pour réaliser une veille automatique par thématique : suivre les chaînes YouTube d’influenceurs ou de médias dans un domaine précis (technologie, science, formation, etc.), et obtenir chaque jour/chaque semaine un digest des vidéos sous forme de résumés. Cela permettrait de rester informé des contenus longs sans avoir à tout consommer vous-même. De même, une entreprise pourrait s’en servir pour synthétiser les prises de parole d’experts sur YouTube et partager en interne ces insights sous forme de fiches rapides.

On peut aussi imaginer d’autres actions à la place (ou en plus) de la sauvegarde JSON : par exemple, envoyer automatiquement le résumé par email aux abonnés intéressés, le poster sur un Slack/Discord de votre communauté (comme illustré plus haut), ou l’insérer dans une base de connaissances. N8n rend les intégrations très flexibles, vous pourriez ajouter un nœud Gmail ou Discord après le résumé pour envoyer le contenu où vous le souhaitez.

En guise de bonnes pratiques, pensez à ne pas abuser de l’API OpenAI (des coûts et des limites peuvent s’appliquer selon votre volume de résumés) et respectez les droits d’auteur des créateurs : vos résumés doivent rester pour un usage personnel ou interne, sauf accord explicite.

En conclusion, ce tutoriel vous a montré comment allier la puissance d’un workflow automatisé et l’intelligence d’un modèle IA pour gagner du temps face à l’explosion des contenus vidéos en ligne. Avec n8n, un peu d’inventivité et ces étapes guidées, vous avez maintenant entre les mains un outil pour digérer l’information plus efficacement. À vous de le tester et de l’adapter à vos besoins ! Bon automatisation 🤖✨

Sources : N8n Documentation, Community Forum et autres (voir références), Statistiques infobésité et YouTube, Tutoriels et guides n8n, Exemples d’utilisation d’OpenAI avec n8n.

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *