NanoSkill
Enviar tu skill

Habilidad del Agente de Transcripción de TúTubo

porJimLiu1Kestrellas de GitHubGitHub

Descarga transcripciones de vídeos de TúTubo, subtítulos e imágenes de portada por URL o ID de vídeo. Soporta múltiples idiomas, traducción, capítulos e identificación de hablantes para mejorar la accesibilidad del contenido. Comienza gratis en segundos.

tutuboEscaneo de seguridad aprobado
Vista previa del resultado

Demo completa

Explora un informe de análisis de vídeo profesional impulsado por esta Habilidad.

Primeros pasos

Ejecuta tu primera tarea

  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

    Instalar

    Añade la Habilidad de Agente de Transcripción de TúTubo a tu agente de 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

    Proporcionar Contenido

    Comparte un enlace de TúTubo y especifica el formato de salida deseado.

  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

    Extraer información clave

    Genera transcripciones estructuradas, resúmenes, conclusiones clave y contenido reutilizable.

Comando de instalación

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

Acerca de

La Habilidad de Descarga de Transcripciones de TúTubo proporciona una solución robusta para extraer información completa de vídeos de TúTubo. Esta habilidad permite a los usuarios descargar sin esfuerzo transcripciones completas de TúTubo, subtítulos e incluso imágenes de portada simplemente proporcionando una URL o ID de vídeo. Está diseñada para creadores de contenido, investigadores y cualquier persona que necesite convertir contenido hablado en texto, ofreciendo funciones como soporte multilingüe, capacidades de traducción y opciones avanzadas de estructuración.

Aprovechando el acceso directo a la API InnerTube de TúTubo y un sistema de respaldo inteligente a `yt-dlp`, la habilidad garantiza una recuperación de datos fiable y eficiente sin necesidad de claves API personales. Ofrece formatos de salida flexibles, incluyendo Markdown para análisis detallado con marcas de tiempo y marcadores de capítulo, y SRT para la integración estándar de subtítulos. Además, soporta la segmentación de capítulos a partir de las descripciones de vídeo y proporciona un flujo de trabajo para la identificación de hablantes potenciada por IA, ofreciendo un texto altamente organizado y atribuido.

Con almacenamiento en caché inteligente, la habilidad minimiza las solicitudes de red redundantes, haciendo que las operaciones posteriores sobre el mismo vídeo sean excepcionalmente rápidas. Ya sea que necesites analizar contenido de vídeo, crear subtítulos accesibles, traducir material para una audiencia global o simplemente extraer metadatos y miniaturas de vídeo, esta habilidad agiliza el proceso, proporcionando una herramienta poderosa para la gestión de contenido de TúTubo.

Funciones clave

Qué la hace potente

  • Acceso directo a YouTube

    Accede directamente a la API InnerTube de YouTube para una rápida recuperación de transcripciones, recurriendo automáticamente a `yt-dlp` si la API directa está bloqueada, garantizando un acceso confiable sin claves API.

  • Soporte multilingüe y traducción

    Especifica los idiomas preferidos para las transcripciones y tradúcelas a un idioma de destino, haciendo que el contenido sea accesible para una audiencia global.

  • Segmentación por capítulos e identificación de hablantes

    Segmenta automáticamente las transcripciones por capítulos de video y admite el posprocesamiento con IA para la identificación de hablantes, proporcionando texto estructurado y atribuido.

  • Formatos de salida flexibles

    Genera transcripciones en Markdown con marcas de tiempo o archivos de subtítulos SRT, adecuados para diversos usos desde el análisis de contenido hasta reproductores de video.

  • Almacenamiento en caché inteligente para eficiencia

    Almacena en caché los datos de video sin procesar, los metadatos y las transcripciones segmentadas, lo que permite un rápido reformateo y reduce las llamadas de red en solicitudes posteriores para el mismo video.

Casos de uso

Cuándo usarla

  • Generar transcripciones de YouTube para análisis de contenido

    Los creadores de contenido e investigadores pueden obtener rápidamente transcripciones completas de YouTube, incluidas marcas de tiempo y marcadores de capítulo, para analizar el contenido de video, extraer información clave o reutilizar el contenido hablado en artículos de texto.

  • Crear archivos de subtítulos para accesibilidad

    Los editores de video y especialistas en accesibilidad pueden generar archivos de subtítulos SRT a partir de videos de YouTube, asegurando que el contenido sea accesible para audiencias con discapacidad auditiva o para aquellos que prefieren consumir contenido en silencio.

  • Traducir contenido de video para alcance global

    Los especialistas en marketing y educadores pueden traducir transcripciones de YouTube a varios idiomas, ampliando el alcance de su contenido de video a hablantes no nativos y mejorando la participación global.

  • Extraer metadatos e imágenes de portada

    Los usuarios pueden extraer fácilmente metadatos de video e imágenes de portada de alta calidad, útiles para catalogar, promocionar en redes sociales o crear recursos visuales relacionados con el contenido del video.

SKILL.md

Transcripción de YouTube

Descarga transcripciones (subtítulos/leyendas) de videos de YouTube. Funciona tanto con transcripciones creadas manualmente como con las generadas automáticamente. No requiere clave de API ni navegador — utiliza la API InnerTube de YouTube directamente y recurre automáticamente a yt-dlp cuando YouTube bloquea la ruta directa de la API.

Obtiene metadatos del video e imagen de portada en la primera ejecución, almacena en caché los datos sin procesar para un reformateo rápido.

Directorio de scripts

Scripts en el subdirectorio scripts/. {baseDir} = ruta del directorio de este SKILL.md. Resolver el entorno de ejecución ${BUN_X}: si bun está instalado → bun; si npx está disponible → npx -y bun; de lo contrario, sugerir instalar bun. Reemplazar {baseDir} y ${BUN_X} con los valores reales.

ScriptPropósito
scripts/main.tsCLI de descarga de transcripciones

Uso

# Predeterminado: markdown con marcas de tiempo (inglés)
${BUN_X} {baseDir}/scripts/main.ts <url-o-id-de-youtube>

# Especificar idiomas (orden de prioridad)
${BUN_X} {baseDir}/scripts/main.ts <url> --languages zh,en,ja

# Sin marcas de tiempo
${BUN_X} {baseDir}/scripts/main.ts <url> --no-timestamps

# Con segmentación por capítulos
${BUN_X} {baseDir}/scripts/main.ts <url> --chapters

# Con identificación de hablantes (requiere post-procesamiento con IA)
${BUN_X} {baseDir}/scripts/main.ts <url> --speakers

# Archivo de subtítulos SRT
${BUN_X} {baseDir}/scripts/main.ts <url> --format srt

# Traducir transcripción
${BUN_X} {baseDir}/scripts/main.ts <url> --translate zh-Hans

# Listar transcripciones disponibles
${BUN_X} {baseDir}/scripts/main.ts <url> --list

# Forzar re-obtención (ignorar caché)
${BUN_X} {baseDir}/scripts/main.ts <url> --refresh

Opciones

OpciónDescripciónPredeterminado
<url-o-id>URL de YouTube o ID del video (se permiten varios)Requerido
--languages <códigos>Códigos de idioma, separados por comas, en orden de prioridaden
--format <fmt>Formato de salida: text, srttext
--translate <código>Traducir al código de idioma especificado
--listListar transcripciones disponibles en lugar de obtener
--timestampsIncluir marcas de tiempo [HH:MM:SS → HH:MM:SS] por párrafoactivado
--no-timestampsDesactivar marcas de tiempo
--chaptersSegmentación por capítulos a partir de la descripción del video
--speakersTranscripción cruda con metadatos para identificación de hablantes
--exclude-generatedOmitir transcripciones generadas automáticamente
--exclude-manually-createdOmitir transcripciones creadas manualmente
--refreshForzar re-obtención, ignorar datos en caché
-o, --output <ruta>Guardar en una ruta de archivo específicaauto-generado
--output-dir <directorio>Directorio base de salidayoutube-transcript

Variables de entorno opcionales

VariableDescripción
YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSERSe pasa a yt-dlp --cookies-from-browser durante el fallback, p. ej. chrome, safari, firefox, o chrome:Profile 1

Formatos de entrada

Acepta cualquiera de estos como entrada de video:

  • URL completa: https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • URL corta: https://youtu.be/dQw4w9WgXcQ
  • URL incrustada: https://www.youtube.com/embed/dQw4w9WgXcQ
  • URL de Shorts: https://www.youtube.com/shorts/dQw4w9WgXcQ
  • ID del video: dQw4w9WgXcQ

Formatos de salida

FormatoExtensiónDescripción
text.mdMarkdown con frontmatter (incl. description), título, resumen, opcional TOC/portada/marcas de tiempo/capítulos/hablantes
srt.srtFormato de subtítulos SubRip para reproductores de video

Directorio de salida

youtube-transcript/
├── .index.json                          # Mapeo de ID de video → ruta del directorio (para búsqueda en caché)
└── {nombre-del-canal}/{titulo-completo-en-slug}/
    ├── meta.json                        # Metadatos del video (título, canal, descripción, duración, capítulos, etc.)
    ├── transcript-raw.json              # Fragmentos de transcripción crudos de la API de YouTube (en caché)
    ├── transcript-sentences.json        # Transcripción segmentada por oraciones (dividida por puntuación, fusionada entre fragmentos)
    ├── imgs/
    │   └── cover.jpg                    # Miniatura del video
    ├── transcript.md                    # Transcripción en Markdown (generada a partir de oraciones)
    └── transcript.srt                   # Subtítulo SRT (generado a partir de fragmentos crudos, si se usa --format srt)
  • {nombre-del-canal}: Nombre del canal en kebab-case
  • {titulo-completo-en-slug}: Título completo del video en kebab-case

El modo --list solo imprime en stdout (no guarda archivo).

Caché

En la primera obtención, el script guarda:

  • meta.json — metadatos del video, capítulos, ruta de la imagen de portada, información del idioma
  • transcript-raw.json — fragmentos de transcripción crudos de la API de YouTube ({ text, start, duration }[])
  • transcript-sentences.json — transcripción segmentada por oraciones ({ text, start: "HH:mm:ss", end: "HH:mm:ss" }[]), dividida por puntuación de fin de oración (.?!…。?! etc.), marcas de tiempo asignadas proporcionalmente por longitud de caracteres, fusión de texto con reconocimiento CJK
  • imgs/cover.jpg — miniatura del video

Ejecuciones posteriores para el mismo video utilizan datos en caché (sin llamadas de red). Usa --refresh para forzar la re-obtención. Si se solicita un idioma diferente, la caché se actualiza automáticamente.

Cuando YouTube devuelve respuestas anti-bot / bloqueadas en la ruta directa de InnerTube, el script reintenta con identidades de cliente alternativas y luego recurre a yt-dlp si está disponible. Si se necesita el fallback pero yt-dlp no está disponible, el agente debe decidir cómo hacer que yt-dlp esté disponible y continuar, en lugar de trasladar la decisión de instalación al usuario.

La salida SRT (--format srt) se genera a partir de transcript-raw.json. La salida de texto/markdown utiliza transcript-sentences.json para límites de oración naturales.

Flujo de trabajo

Cuando el usuario proporciona una URL de YouTube y quiere la transcripción:

  1. Ejecutar con --list primero si el usuario no ha especificado un idioma, para mostrar las opciones disponibles
  2. Siempre poner la URL entre comillas simples al ejecutar el script — zsh trata ? como un comodín global, por lo que una URL de YouTube sin comillas causa "no se encontraron coincidencias": usar 'https://www.youtube.com/watch?v=ID'
  3. Predeterminado: ejecutar con --chapters --speakers para la salida más rica (capítulos + identificación de hablantes)
  4. El script guarda automáticamente los datos en caché + el archivo de salida e imprime la ruta del archivo
  5. Para el modo --speakers: después de que el script guarda el archivo crudo, seguir el flujo de trabajo de identificación de hablantes a continuación para post-procesar con etiquetas de hablantes

Cuando el usuario solo quiere una imagen de portada o metadatos, ejecutar el script con cualquier opción también almacenará en caché meta.json y imgs/cover.jpg.

Al reformatear el mismo video (por ejemplo, primero texto y luego SRT), los datos en caché se reutilizan — no es necesario re-obtener.

Flujo de trabajo de capítulos e identificación de hablantes

Capítulos (--chapters)

El script analiza las marcas de tiempo de los capítulos de la descripción del video (por ejemplo, 0:00 Introducción), segmenta la transcripción por los límites de los capítulos, agrupa fragmentos en párrafos legibles y guarda como .md con una Tabla de Contenidos. No se requiere procesamiento adicional.

Si no existen marcas de tiempo de capítulos en la descripción, la transcripción se emite como párrafos agrupados sin encabezados de capítulo.

Identificación de hablantes (--speakers)

La identificación de hablantes requiere procesamiento de IA. El script genera un archivo .md crudo que contiene:

  • Frontmatter YAML con metadatos del video (título, canal, fecha, portada, descripción, idioma)
  • Descripción del video (para extracción de nombres de hablantes)
  • Lista de capítulos de la descripción (si está disponible)
  • Transcripción cruda en formato SRT (marcas de tiempo de inicio/fin precalculadas, eficiente en tokens)

Después de que el script guarda el archivo crudo, generar un sub-agente (usar un modelo más barato como Sonnet para eficiencia de costos) para procesar la identificación de hablantes:

  1. Leer el archivo .md guardado
  2. Leer la plantilla de prompt en {baseDir}/prompts/speaker-transcript.md
  3. Procesar la transcripción cruda siguiendo el prompt:
    • Identificar hablantes usando metadatos del video (título → invitado, canal → anfitrión, descripción → nombres)
    • Detectar turnos de hablantes a partir del flujo de la conversación, patrones de pregunta-respuesta y pistas contextuales
    • Segmentar en capítulos (usar capítulos de la descripción si están disponibles, de lo contrario crear a partir de cambios de tema)
    • Formatear con etiquetas **Nombre del hablante:**, agrupación de párrafos (2-4 oraciones) y marcas de tiempo [HH:MM:SS → HH:MM:SS]
  4. Sobrescribir el archivo .md con la transcripción procesada (mantener el frontmatter YAML)

Cuando se usa --speakers, --chapters está implícito — la salida procesada siempre incluye segmentación por capítulos.

Casos de error

ErrorSignificado
Transcripciones desactivadasEl video no tiene subtítulos en absoluto
No se encontró transcripciónEl idioma solicitado no está disponible
Video no disponibleVideo eliminado, privado o bloqueado por región
IP bloqueadaDemasiadas solicitudes, intente de nuevo más tarde
Restricción de edadEl video requiere iniciar sesión para verificación de edad
bot detectadoEl script reintenta con clientes alternativos y luego yt-dlp; si faltan herramientas de fallback, el agente debe resolverlo por sí mismo; de lo contrario, si aún falla, intentar YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER=safari (o tu navegador)

FAQ