NanoSkill
Soumettre votre skill

Compétence d'agent de transcription YouTube

parJimLiu1Kétoiles GitHubGitHub

Téléchargez les transcriptions, sous-titres et images de couverture des vidéos YouTube par URL ou ID vidéo. Prend en charge plusieurs langues, la traduction, les chapitres et l'identification des locuteurs pour améliorer l'accessibilité du contenu. Commencez gratuitement en quelques secondes.

youtubeAnalyse de sécurité réussie
Aperçu du résultat

Démo complète

Découvrez un rapport d'analyse vidéo professionnel alimenté par cette compétence.

Démarrer

Exécuter votre première tâche

  1. A screenshot showing the installation process of the 'baoyu-youtube-transcript' AI agent skill from a GitHub repository using an NPX command. At the top, a blue command banner displays the installation command for adding the skill from the GitHub repository. Below, a conversational interface explains the installation workflow, including handling an interactive installation prompt, detecting that the process did not complete automatically, rerunning the command with a '-y' flag to bypass prompts, and explicitly targeting the Hermes Agent environment. The log then describes creating a symbolic link from the agent skills directory to the Hermes skills directory so the skill can be recognized by the Hermes Agent. A final confirmation states that the 'baoyu-youtube-transcript' skill was successfully installed, linked, and is available for use through a skill invocation command. The interface uses a clean chat-style layout with gray response panels, dark blue command highlighting, and monospaced code snippets for file paths and terminal commands.
    01

    Installer

    Ajoutez la compétence d'agent de transcription YouTube à votre agent IA.

  2. A screenshot showing a prompt and response workflow for a YouTube transcript analysis skill. The top section contains a dark blue prompt panel describing an AI-powered content research and knowledge extraction system designed to analyze YouTube videos and transform them into structured knowledge assets. The prompt outlines requirements such as extracting complete transcripts, metadata, chapter structures, timestamps, speaker distinctions, key topics, major insights, statistics, examples, and actionable takeaways. It also lists supported output formats including executive summaries, study notes, blog articles, social media content, newsletter drafts, and research reports. Additional instructions emphasize transcript quality evaluation, improved readability, information hierarchy, redundancy removal, and generating a polished final deliverable. The requested output is a visually engaging PDF report with chapter navigation, highlighted takeaways, and presentation-ready layouts. Beneath the prompt, a gray response panel shows the AI acknowledging that the skill has been loaded successfully but explaining that a YouTube URL is still required before transcript extraction and report generation can begin. The interface uses a clean chat-style layout with large rounded panels, white text on a dark blue background, and structured instructional formatting.
    02

    Fournir du contenu

    Partagez un lien YouTube et spécifiez le format de sortie souhaité.

  3. A presentation cover slide for a TED Talk analysis and knowledge report. The slide features a bold red background with a teal accent bar running along the bottom edge. Centered at the top is the large white title 'This Is How Kids Should Be Learning with AI.' Below the title, the speaker attribution reads 'Priya Lakhani | TEDNext 2025,' followed by the subtitle 'TED Talk Analysis & Knowledge Report' in italicized white text. In the center of the slide is a thumbnail image from the TED Talk showing Priya Lakhani on stage. The thumbnail includes the prominent message 'AI Isn't a Shortcut to Learning' alongside the TED logo. The overall design resembles a professional research report cover, using strong typography, high contrast colors, and a clean layout to introduce an educational analysis focused on artificial intelligence, learning science, and the future of education.
    03

    Extraire des informations

    Générez des transcriptions structurées, des résumés, des points clés et du contenu réutilisable.

Commande d’installation

$ npx skills add https://github.com/JimLiu/baoyu-skills/tree/main/skills/baoyu-youtube-transcript

À propos

La compétence de téléchargement de transcription YouTube offre une solution robuste pour extraire des informations complètes des vidéos YouTube. Cette compétence permet aux utilisateurs de télécharger sans effort des transcriptions YouTube complètes, des sous-titres et même des images de couverture en fournissant simplement une URL ou un ID vidéo. Elle est conçue pour les créateurs de contenu, les chercheurs et toute personne ayant besoin de convertir du contenu parlé en texte, offrant des fonctionnalités telles que la prise en charge multilingue, les capacités de traduction et des options de structuration avancées.

En exploitant un accès direct à l'API InnerTube de YouTube et un repli intelligent vers `yt-dlp`, la compétence garantit une récupération de données fiable et efficace sans avoir besoin de clés API personnelles. Elle propose des formats de sortie flexibles, notamment Markdown pour une analyse détaillée avec horodatages et marqueurs de chapitres, et SRT pour une intégration standard des sous-titres. De plus, elle prend en charge la segmentation des chapitres à partir des descriptions vidéo et fournit un flux de travail pour l'identification des locuteurs alimentée par l'IA, fournissant un texte hautement organisé et attribué.

Avec une mise en cache intelligente, la compétence minimise les requêtes réseau redondantes, rendant les opérations ultérieures sur la même vidéo exceptionnellement rapides. Que vous ayez besoin d'analyser le contenu vidéo, de créer des sous-titres accessibles, de traduire du matériel pour un public mondial ou simplement d'extraire les métadonnées et les vignettes des vidéos, cette compétence rationalise le processus, offrant un outil puissant pour la gestion de contenu YouTube.

Fonctionnalités clés

Ce qui la rend puissante

  • Accès direct à YouTube

    Accède directement à l'API InnerTube de YouTube pour une récupération rapide des transcriptions, avec basculement automatique vers `yt-dlp` si l'API directe est bloquée, garantissant un accès fiable sans clé API.

  • Prise en charge multilingue et traduction

    Spécifiez les langues préférées pour les transcriptions et traduisez-les dans une langue cible, rendant le contenu accessible à un public mondial.

  • Segmentation par chapitres et identification des locuteurs

    Segmente automatiquement les transcriptions par chapitres vidéo et prend en charge le post-traitement par IA pour l'identification des locuteurs, fournissant un texte structuré et attribué.

  • Formats de sortie flexibles

    Génère des transcriptions au format Markdown avec horodatages ou des fichiers de sous-titres SRT, adaptés à diverses utilisations, de l'analyse de contenu aux lecteurs vidéo.

  • Mise en cache intelligente pour plus d'efficacité

    Met en cache les données vidéo brutes, les métadonnées et les transcriptions segmentées, permettant un reformatage rapide et réduisant les appels réseau lors des requêtes ultérieures pour la même vidéo.

Cas d’usage

Quand l’utiliser

  • Générer des transcriptions YouTube pour l'analyse de contenu

    Les créateurs de contenu et les chercheurs peuvent obtenir rapidement des transcriptions YouTube complètes, y compris des horodatages et des marqueurs de chapitre, pour analyser le contenu vidéo, extraire des informations clés ou transformer le contenu parlé en articles textuels.

  • Créer des fichiers de sous-titres pour l'accessibilité

    Les monteurs vidéo et les spécialistes de l'accessibilité peuvent générer des fichiers de sous-titres SRT à partir de vidéos YouTube, garantissant ainsi que le contenu est accessible aux personnes malentendantes ou à celles qui préfèrent consommer le contenu en silence.

  • Traduire le contenu vidéo pour une portée mondiale

    Les marketeurs et les éducateurs peuvent traduire les transcriptions YouTube en plusieurs langues, élargissant ainsi la portée de leur contenu vidéo aux locuteurs non natifs et améliorant l'engagement mondial.

  • Extraire les métadonnées et les images de couverture

    Les utilisateurs peuvent facilement extraire les métadonnées vidéo et les images de couverture de haute qualité, utiles pour le catalogage, la promotion sur les réseaux sociaux ou la création d'actifs visuels liés au contenu vidéo.

SKILL.md

Transcription YouTube

Télécharge les transcriptions (sous-titres/légendes) à partir de vidéos YouTube. Fonctionne avec les transcriptions créées manuellement et celles générées automatiquement. Aucune clé API ni navigateur requis — utilise directement l'API InnerTube de YouTube et bascule automatiquement sur yt-dlp lorsque YouTube bloque le chemin API direct.

Récupère les métadonnées de la vidéo et l'image de couverture lors de la première exécution, met en cache les données brutes pour une reformatation rapide.

Répertoire des scripts

Scripts dans le sous-répertoire scripts/. {baseDir} = chemin du répertoire de ce SKILL.md. Résoudre l'exécution ${BUN_X} : si bun est installé → bun ; si npx est disponible → npx -y bun ; sinon suggérer d'installer bun. Remplacer {baseDir} et ${BUN_X} par les valeurs réelles.

ScriptObjectif
scripts/main.tsCLI de téléchargement de transcription

Utilisation

# Par défaut : markdown avec horodatages (anglais)
${BUN_X} {baseDir}/scripts/main.ts <youtube-url-or-id>

# Spécifier les langues (ordre de priorité)
${BUN_X} {baseDir}/scripts/main.ts <url> --languages zh,en,ja

# Sans horodatages
${BUN_X} {baseDir}/scripts/main.ts <url> --no-timestamps

# Avec segmentation par chapitres
${BUN_X} {baseDir}/scripts/main.ts <url> --chapters

# Avec identification des locuteurs (nécessite un post-traitement IA)
${BUN_X} {baseDir}/scripts/main.ts <url> --speakers

# Fichier de sous-titres SRT
${BUN_X} {baseDir}/scripts/main.ts <url> --format srt

# Traduire la transcription
${BUN_X} {baseDir}/scripts/main.ts <url> --translate zh-Hans

# Lister les transcriptions disponibles
${BUN_X} {baseDir}/scripts/main.ts <url> --list

# Forcer une nouvelle récupération (ignorer le cache)
${BUN_X} {baseDir}/scripts/main.ts <url> --refresh

Options

OptionDescriptionPar défaut
<url-or-id>URL YouTube ou ID de la vidéo (plusieurs autorisés)Requis
--languages <codes>Codes de langue, séparés par des virgules, dans l'ordre de prioritéen
--format <fmt>Format de sortie : text, srttext
--translate <code>Traduire dans le code de langue spécifié
--listLister les transcriptions disponibles au lieu de les récupérer
--timestampsInclure les horodatages [HH:MM:SS → HH:MM:SS] par paragrapheactivé
--no-timestampsDésactiver les horodatages
--chaptersSegmentation par chapitres à partir de la description de la vidéo
--speakersTranscription brute avec métadonnées pour l'identification des locuteurs
--exclude-generatedIgnorer les transcriptions générées automatiquement
--exclude-manually-createdIgnorer les transcriptions créées manuellement
--refreshForcer une nouvelle récupération, ignorer les données en cache
-o, --output <path>Enregistrer dans un chemin de fichier spécifiquegénéré automatiquement
--output-dir <dir>Répertoire de sortie de baseyoutube-transcript

Variables d'environnement optionnelles

VariableDescription
YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSERPassé à yt-dlp --cookies-from-browser lors du repli, par ex. chrome, safari, firefox, ou chrome:Profile 1

Formats d'entrée

Accepte l'un des formats suivants en entrée vidéo :

  • URL complète : https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • URL courte : https://youtu.be/dQw4w9WgXcQ
  • URL d'intégration : https://www.youtube.com/embed/dQw4w9WgXcQ
  • URL Shorts : https://www.youtube.com/shorts/dQw4w9WgXcQ
  • ID de la vidéo : dQw4w9WgXcQ

Formats de sortie

FormatExtensionDescription
text.mdMarkdown avec frontmatter (incl. description), titre, résumé, table des matières/image de couverture/horodatages/chapitres/locuteurs optionnels
srt.srtFormat de sous-titres SubRip pour lecteurs vidéo

Répertoire de sortie

youtube-transcript/
├── .index.json                            # Correspondance ID vidéo → chemin du répertoire (pour la recherche en cache)
└── {channel-slug}/{title-full-slug}/
    ├── meta.json                        # Métadonnées de la vidéo (titre, chaîne, description, durée, chapitres, etc.)
    ├── transcript-raw.json              # Fragments de transcription bruts de l'API YouTube (en cache)
    ├── transcript-sentences.json        # Transcription segmentée par phrases (découpée par ponctuation, fusionnée entre les fragments)
    ├── imgs/
    │   └── cover.jpg                    # Vignette de la vidéo
    ├── transcript.md                    # Transcription Markdown (générée à partir des phrases)
    └── transcript.srt                   # Sous-titres SRT (générés à partir des fragments bruts, si --format srt)
  • {channel-slug} : Nom de la chaîne en kebab-case
  • {title-full-slug} : Titre complet de la vidéo en kebab-case

Le mode --list génère une sortie uniquement sur stdout (aucun fichier enregistré).

Mise en cache

Lors de la première récupération, le script enregistre :

  • meta.json — métadonnées de la vidéo, chapitres, chemin de l'image de couverture, informations de langue
  • transcript-raw.json — fragments de transcription bruts de l'API YouTube ({ text, start, duration }[])
  • transcript-sentences.json — transcription segmentée en phrases ({ text, start: "HH:mm:ss", end: "HH:mm:ss" }[]), découpée par la ponctuation de fin de phrase (.?!…。?! etc.), horodatages alloués proportionnellement à la longueur des caractères, fusion de texte sensible aux caractères CJK
  • imgs/cover.jpg — vignette de la vidéo

Les exécutions suivantes pour la même vidéo utilisent les données en cache (aucun appel réseau). Utilisez --refresh pour forcer une nouvelle récupération. Si une langue différente est demandée, le cache est automatiquement actualisé.

Lorsque YouTube renvoie des réponses anti-bot / bloquées sur le chemin InnerTube direct, le script réessaie avec des identités de client alternatives, puis bascule sur yt-dlp si disponible. Si le repli est nécessaire mais que yt-dlp n'est pas disponible, l'agent doit décider comment rendre yt-dlp disponible et continuer plutôt que de repousser la décision d'installation à l'utilisateur.

La sortie SRT (--format srt) est générée à partir de transcript-raw.json. La sortie texte/markdown utilise transcript-sentences.json pour des limites de phrases naturelles.

Flux de travail

Lorsque l'utilisateur fournit une URL YouTube et souhaite la transcription :

  1. Exécutez d'abord avec --list si l'utilisateur n'a pas spécifié de langue, pour afficher les options disponibles
  2. Toujours mettre l'URL entre guillemets simples lors de l'exécution du script — zsh traite ? comme un caractère générique, donc une URL YouTube non entre guillemets provoque une erreur "aucune correspondance trouvée" : utilisez 'https://www.youtube.com/watch?v=ID'
  3. Par défaut : exécutez avec --chapters --speakers pour la sortie la plus riche (chapitres + identification des locuteurs)
  4. Le script enregistre automatiquement les données en cache + le fichier de sortie et affiche le chemin du fichier
  5. Pour le mode --speakers : après que le script a enregistré le fichier brut, suivez le flux de travail d'identification des locuteurs ci-dessous pour post-traiter avec des étiquettes de locuteurs

Lorsque l'utilisateur ne souhaite qu'une image de couverture ou des métadonnées, l'exécution du script avec n'importe quelle option mettra également en cache meta.json et imgs/cover.jpg.

Lors du reformatage de la même vidéo (par exemple, d'abord en texte puis en SRT), les données en cache sont réutilisées — aucune nouvelle récupération nécessaire.

Flux de travail des chapitres et des locuteurs

Chapitres (--chapters)

Le script analyse les horodatages des chapitres à partir de la description de la vidéo (par ex., 0:00 Introduction), segmente la transcription selon les limites des chapitres, regroupe les fragments en paragraphes lisibles et enregistre en .md avec une table des matières. Aucun traitement supplémentaire nécessaire.

S'il n'y a pas d'horodatages de chapitres dans la description, la transcription est sortie sous forme de paragraphes groupés sans titres de chapitres.

Identification des locuteurs (--speakers)

L'identification des locuteurs nécessite un traitement par IA. Le script génère un fichier .md brut contenant :

  • Frontmatter YAML avec les métadonnées de la vidéo (titre, chaîne, date, couverture, description, langue)
  • Description de la vidéo (pour l'extraction des noms des locuteurs)
  • Liste des chapitres de la description (si disponible)
  • Transcription brute au format SRT (horodatages de début/fin pré-calculés, efficace en tokens)

Après que le script a enregistré le fichier brut, lancez un sous-agent (utilisez un modèle moins cher comme Sonnet pour l'efficacité des coûts) pour traiter l'identification des locuteurs :

  1. Lire le fichier .md enregistré
  2. Lire le modèle de consigne dans {baseDir}/prompts/speaker-transcript.md
  3. Traiter la transcription brute en suivant la consigne :
    • Identifier les locuteurs en utilisant les métadonnées de la vidéo (titre → invité, chaîne → hôte, description → noms)
    • Détecter les tours de parole à partir du flux de conversation, des schémas question-réponse et des indices contextuels
    • Segmenter en chapitres (utiliser les chapitres de la description si disponibles, sinon créer à partir des changements de sujet)
    • Formater avec les étiquettes **Nom du locuteur :**, le regroupement en paragraphes (2-4 phrases) et les horodatages [HH:MM:SS → HH:MM:SS]
  4. Écraser le fichier .md avec la transcription traitée (conserver le frontmatter YAML)

Lorsque --speakers est utilisé, --chapters est implicite — la sortie traitée inclut toujours la segmentation en chapitres.

Cas d'erreur

ErreurSignification
Transcriptions désactivéesLa vidéo n'a aucun sous-titre
Aucune transcription trouvéeLa langue demandée n'est pas disponible
Vidéo indisponibleVidéo supprimée, privée ou verrouillée par région
IP bloquéeTrop de requêtes, réessayez plus tard
Restriction d'âgeLa vidéo nécessite une connexion pour la vérification de l'âge
bot détectéLe script réessaie avec des clients alternatifs puis yt-dlp ; si l'outillage de repli est manquant, l'agent doit résoudre cela lui-même, sinon si cela échoue toujours essayez YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER=safari (ou votre navigateur)

FAQ