NanoSkill
Добавить навык

Навык агента транскриптов YouTube

отJimLiu1Kзвезды GitHubGitHub

Скачивайте транскрипты видео, субтитры и обложки YouTube по URL или ID видео. Поддерживает несколько языков, перевод, главы и идентификацию говорящих для улучшения доступности контента. Начните бесплатно за считанные секунды.

ютубПроверка безопасности пройдена
Превью результата

Полное демо

Ознакомьтесь с профессиональным отчетом об анализе видео, созданным с помощью этого навыка.

Начало работы

Запустите первую задачу

  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

    Установить

    Добавьте навык агента транскриптов YouTube в своего ИИ-агента.

  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

    Предоставьте контент

    Поделитесь ссылкой на YouTube и укажите желаемый формат вывода.

  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

    Извлеките инсайты

    Создавайте структурированные транскрипты, резюме, ключевые выводы и многоразовый контент.

Команда установки

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

Описание

Навык загрузчика транскриптов YouTube предоставляет надежное решение для извлечения полной информации из видео YouTube. Этот навык позволяет пользователям легко скачивать полные транскрипты, субтитры и даже обложки видео YouTube, просто указав URL или ID видео. Он предназначен для создателей контента, исследователей и всех, кому необходимо преобразовать устный контент в текст, предлагая такие функции, как поддержка нескольких языков, возможности перевода и расширенные опции структурирования.

Используя прямой доступ к InnerTube API YouTube и умный резервный вариант с `yt-dlp`, навык обеспечивает надежное и эффективное получение данных без необходимости личных API-ключей. Он предлагает гибкие форматы вывода, включая Markdown для детального анализа с временными метками и маркерами глав, и SRT для стандартной интеграции субтитров. Кроме того, он поддерживает сегментацию глав из описаний видео и предоставляет рабочий процесс для идентификации говорящих на основе ИИ, создавая хорошо организованный и атрибутированный текст.

Благодаря интеллектуальному кешированию навык минимизирует избыточные сетевые запросы, делая последующие операции с тем же видео исключительно быстрыми. Будь то анализ видеоконтента, создание доступных субтитров, перевод материалов для глобальной аудитории или просто извлечение метаданных и миниатюр видео, этот навык упрощает процесс, предоставляя мощный инструмент для управления контентом YouTube.

Ключевые функции

Почему это мощно

  • Прямой доступ к YouTube

    Осуществляет прямой доступ к InnerTube API YouTube для быстрого получения транскриптов, автоматически переключаясь на `yt-dlp`, если прямой API заблокирован, обеспечивая надёжный доступ без ключей API.

  • Поддержка нескольких языков и перевод

    Укажите предпочитаемые языки для транскриптов и переведите их на целевой язык, делая контент доступным для глобальной аудитории.

  • Сегментация по главам и идентификация говорящих

    Автоматически сегментирует транскрипты по главам видео и поддерживает последующую обработку ИИ для идентификации говорящих, предоставляя структурированный и атрибутированный текст.

  • Гибкие форматы вывода

    Создаёт транскрипты в формате Markdown с временными метками или файлы субтитров SRT, подходящие для различных применений от анализа контента до видеоплееров.

  • Умное кэширование для эффективности

    Кэширует необработанные данные видео, метаданные и сегментированные транскрипты, обеспечивая быстрое переформатирование и уменьшая сетевые запросы при последующих обращениях к тому же видео.

Сценарии

Когда использовать

  • Создание транскриптов YouTube для анализа контента

    Создатели контента и исследователи могут быстро получать полные транскрипты YouTube, включая временные метки и метки глав, для анализа видеоконтента, извлечения ключевой информации или преобразования устного контента в текстовые статьи.

  • Создание файлов субтитров для доступности

    Видеоредакторы и специалисты по доступности могут генерировать файлы субтитров SRT из видео YouTube, обеспечивая доступность контента для слабослышащей аудитории или тех, кто предпочитает потреблять контент без звука.

  • Перевод видеоконтента для глобального охвата

    Маркетологи и преподаватели могут переводить транскрипты YouTube на несколько языков, расширяя охват своего видеоконтента на неносителей языка и улучшая глобальное вовлечение.

  • Извлечение метаданных и изображений обложек

    Пользователи могут легко извлекать метаданные видео и высококачественные изображения обложек, что полезно для каталогизации, продвижения в социальных сетях или создания визуальных ресурсов, связанных с видеоконтентом.

SKILL.md

Транскрипт YouTube

Загружает расшифровки (субтитры/титры) из видео YouTube. Работает как с созданными вручную, так и с автоматически сгенерированными транскриптами. Не требует API-ключа или браузера — использует InnerTube API YouTube напрямую и автоматически переключается на yt-dlp, когда YouTube блокирует прямой путь API.

При первом запуске извлекает метаданные видео и обложку, кэширует необработанные данные для быстрого переформатирования.

Директория скриптов

Скрипты в поддиректории scripts/. {baseDir} = путь к директории этого SKILL.md. Определение среды выполнения ${BUN_X}: если bun установлен → bun; если доступен npxnpx -y bun; иначе предложить установить bun. Замените {baseDir} и ${BUN_X} на фактические значения.

СкриптНазначение
scripts/main.tsCLI для загрузки транскриптов

Использование

# По умолчанию: markdown с метками времени (английский)
${BUN_X} {baseDir}/scripts/main.ts <youtube-url-or-id>

# Указать языки (в порядке приоритета)
${BUN_X} {baseDir}/scripts/main.ts <url> --languages zh,en,ja

# Без меток времени
${BUN_X} {baseDir}/scripts/main.ts <url> --no-timestamps

# С сегментацией по главам
${BUN_X} {baseDir}/scripts/main.ts <url> --chapters

# С идентификацией говорящих (требуется постобработка ИИ)
${BUN_X} {baseDir}/scripts/main.ts <url> --speakers

# Файл субтитров SRT
${BUN_X} {baseDir}/scripts/main.ts <url> --format srt

# Перевести транскрипт
${BUN_X} {baseDir}/scripts/main.ts <url> --translate zh-Hans

# Показать доступные транскрипты
${BUN_X} {baseDir}/scripts/main.ts <url> --list

# Принудительно перезапросить (игнорировать кэш)
${BUN_X} {baseDir}/scripts/main.ts <url> --refresh

Опции

ОпцияОписаниеПо умолчанию
<url-or-id>URL YouTube или ID видео (можно несколько)Обязательно
--languages <codes>Коды языков, через запятую, в порядке приоритетаen
--format <fmt>Формат вывода: text, srttext
--translate <code>Перевести на указанный код языка
--listПоказать доступные транскрипты вместо загрузки
--timestampsВключать метки времени [ЧЧ:ММ:СС → ЧЧ:ММ:СС] на каждый абзацвкл
--no-timestampsОтключить метки времени
--chaptersСегментация по главам из описания видео
--speakersНеобработанный транскрипт с метаданными для идентификации говорящих
--exclude-generatedПропустить автоматически сгенерированные транскрипты
--exclude-manually-createdПропустить транскрипты, созданные вручную
--refreshПринудительно перезапросить, игнорировать кэшированные данные
-o, --output <path>Сохранить в указанный файлавто-генерация
--output-dir <dir>Базовая директория выводаyoutube-transcript

Необязательные переменные окружения

ПеременнаяОписание
YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSERПередаётся в yt-dlp --cookies-from-browser при откате, например chrome, safari, firefox или chrome:Profile 1

Входные форматы

Допускаются любые из следующих вариантов ввода видео:

  • Полный URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
  • Короткий URL: https://youtu.be/dQw4w9WgXcQ
  • URL встраивания: https://www.youtube.com/embed/dQw4w9WgXcQ
  • URL Shorts: https://www.youtube.com/shorts/dQw4w9WgXcQ
  • ID видео: dQw4w9WgXcQ

Форматы вывода

ФорматРасширениеОписание
text.mdMarkdown с frontmatter (включая description), заголовок, краткое содержание, опционально TOC/обложка/метки времени/главы/говорящие
srt.srtФормат субтитров SubRip для видеоплееров

Выходная директория

youtube-transcript/
├── .index.json                          # Сопоставление ID видео → путь директории (для поиска в кэше)
└── {channel-slug}/{title-full-slug}/
    ├── meta.json                        # Метаданные видео (название, канал, описание, длительность, главы и т.д.)
    ├── transcript-raw.json              # Необработанные фрагменты транскрипта из API YouTube (кэшировано)
    ├── transcript-sentences.json        # Транскрипт, сегментированный по предложениям (разделённый по знакам препинания, объединённый между фрагментами)
    ├── imgs/
    │   └── cover.jpg                    # Миниатюра видео
    ├── transcript.md                    # Транскрипт в формате Markdown (сгенерирован из предложений)
    └── transcript.srt                   # Субтитры SRT (сгенерированы из необработанных фрагментов, если указан --format srt)
  • {channel-slug}: Название канала в kebab-case
  • {title-full-slug}: Полное название видео в kebab-case

Режим --list выводит только в stdout (файл не сохраняется).

Кэширование

При первом запросе скрипт сохраняет:

  • meta.json — метаданные видео, главы, путь к обложке, информация о языке
  • transcript-raw.json — необработанные фрагменты транскрипта из API YouTube ({ text, start, duration }[])
  • transcript-sentences.json — транскрипт, сегментированный по предложениям ({ text, start: "ЧЧ:мм:сс", end: "ЧЧ:мм:сс" }[]), разделённый по знакам конца предложения (.?!…。?! и т.д.), временные метки пропорционально распределяются по длине символов, с учетом слияния текста для CJK
  • imgs/cover.jpg — миниатюра видео

Последующие запуски для того же видео используют кэшированные данные (без сетевых вызовов). Используйте --refresh для принудительного перезапроса. Если запрошен другой язык, кэш автоматически обновляется.

Когда YouTube возвращает антибот / заблокированные ответы на прямом пути InnerTube, скрипт повторяет попытку с альтернативными идентификаторами клиента, а затем, при наличии, переключается на yt-dlp. Если требуется откат, но yt-dlp недоступен, агент должен решить, как сделать yt-dlp доступным, и продолжить, вместо того чтобы перекладывать решение об установке на пользователя.

Вывод SRT (--format srt) генерируется из transcript-raw.json. Текстовый/markdown вывод использует transcript-sentences.json для естественных границ предложений.

Рабочий процесс

Когда пользователь предоставляет URL YouTube и хочет получить транскрипт:

  1. Сначала запустите с --list, если пользователь не указал язык, чтобы показать доступные варианты
  2. Всегда заключайте URL в одинарные кавычки при запуске скрипта — zsh обрабатывает ? как глобальный шаблон, поэтому незакавыченный URL YouTube вызывает "no matches found": используйте 'https://www.youtube.com/watch?v=ID'
  3. По умолчанию: запускайте с --chapters --speakers для наиболее полного вывода (главы + идентификация говорящих)
  4. Скрипт автоматически сохраняет кэшированные данные + выходной файл и выводит путь к файлу
  5. Для режима --speakers: после того как скрипт сохранит необработанный файл, выполните приведённый ниже рабочий процесс идентификации говорящих для постобработки с метками говорящих

Если пользователь хочет только изображение обложки или метаданные, запуск скрипта с любой опцией также кэширует meta.json и imgs/cover.jpg.

При переформатировании одного и того же видео (например, сначала текст, затем SRT) кэшированные данные используются повторно — повторный запрос не требуется.

Рабочий процесс для глав и говорящих

Главы (--chapters)

Скрипт анализирует временные метки глав из описания видео (например, 0:00 Введение), сегментирует транскрипт по границам глав, группирует фрагменты в читаемые абзацы и сохраняет как .md с оглавлением. Дополнительная обработка не требуется.

Если в описании нет временных меток глав, транскрипт выводится как сгруппированные абзацы без заголовков глав.

Идентификация говорящих (--speakers)

Идентификация говорящих требует обработки ИИ. Скрипт выводит необработанный .md файл, содержащий:

  • YAML frontmatter с метаданными видео (название, канал, дата, обложка, описание, язык)
  • Описание видео (для извлечения имён говорящих)
  • Список глав из описания (при наличии)
  • Необработанный транскрипт в формате SRT (предварительно вычисленные временные метки начала/конца, эффективное использование токенов)

После того как скрипт сохранит необработанный файл, породите подагента (используйте более дешёвую модель, например Sonnet, для экономии) для обработки идентификации говорящих:

  1. Прочитайте сохранённый .md файл
  2. Прочитайте шаблон промпта из {baseDir}/prompts/speaker-transcript.md
  3. Обработайте необработанный транскрипт в соответствии с промптом:
    • Идентифицируйте говорящих, используя метаданные видео (название → гость, канал → ведущий, описание → имена)
    • Определите смены говорящих по течению разговора, паттернам вопрос-ответ и контекстным подсказкам
    • Сегментируйте на главы (используйте главы из описания, если есть, иначе создайте из смен тем)
    • Форматируйте с метками **Имя говорящего:**, группировкой абзацев (2-4 предложения) и временными метками [ЧЧ:ММ:СС → ЧЧ:ММ:СС]
  4. Перезапишите .md файл обработанным транскриптом (сохраните YAML frontmatter)

При использовании --speakers подразумевается --chapters — обработанный вывод всегда включает сегментацию по главам.

Ошибки

ОшибкаЗначение
Транскрипты отключеныУ видео вообще нет субтитров
Транскрипт не найденЗапрошенный язык недоступен
Видео недоступноВидео удалено, приватно или заблокировано по региону
IP заблокированСлишком много запросов, повторите попытку позже
Возрастное ограничениеВидео требует входа для проверки возраста
Обнаружен ботСкрипт повторяет попытку с альтернативными клиентами, затем yt-dlp; если инструменты отката отсутствуют, агент должен решить эту проблему самостоятельно, в противном случае, если всё равно не удаётся, попробуйте YOUTUBE_TRANSCRIPT_COOKIES_FROM_BROWSER=safari (или ваш браузер)

FAQ