youtube-skills: расширения для агента, которые дают доступ к YouTube
📂 Исходный код на GitHubOpen-source набор agent skills для работы с YouTube: расшифровки видео с таймкодами, поиск видео и каналов, обход лент канала, плейлисты. Работает через TranscriptAPI, без yt-dlp и headless-браузеров.
youtube-skills: расширения, которые дают агенту доступ к YouTube
Агент не умеет смотреть видео. Он умеет читать текст. Набор youtube-skills закрывает эту дыру: после установки агент получает расшифровку любого видео с YouTube, поиск по платформе и данные каналов. Всё это — обычные HTTP-запросы к REST API, без yt-dlp, без headless-браузеров и без бинарных файлов.
Сам продукт устроен просто: 12 файлов SKILL.md, в каждом — список эндпоинтов, параметры и примеры запросов. Вся логика живёт в файлах, агент читает их и сам собирает вызовы.
Почему не yt-dlp
Обычный путь «поставить yt-dlp и скачать субтитры» работает плохо в двух местах. Первое: YouTube блокирует запросы с основных облачных IP, поэтому на CI и в контейнерах yt-dlp упирается в капчу. Второе: headless-браузер — это сотни мегабайт зависимостей и отдельный процесс, который надо чинить при каждом обновлении Chrome.
Здесь всё решается на стороне сервиса. Агент отправляет один запрос к TranscriptAPI и получает JSON с текстом и таймкодами. Тот же бэкенд работает под сайтом YouTubeToTranscript.com.
Установка
Для большинства случаев нужен один скилл youtube-full — в нём есть всё сразу.
# Claude Code, Cursor, Codex, Cline, Antigravity
npx skills add ZeroPointRepo/youtube-skills --skill youtube-full
# Все 12 скиллов разом
npx skills add ZeroPointRepo/youtube-skills
# OpenClaw (ClawdBot/Moltbot)
npx clawhub@latest install youtube-full
# Hermes Agent
hermes skills install skills-sh/ZeroPointRepo/youtube-skills/skills/youtube-full
Ручная установка — обычный git clone и копирование каталога в папку скиллов агента:
git clone https://github.com/ZeroPointRepo/youtube-skills.git
cp -r youtube-skills/skills/youtube-full ~/.claude/skills/
Что внутри пакета
| Скилл | Зачем нужен |
|---|---|
youtube-full |
Полный набор: расшифровки, поиск, каналы, плейлисты |
transcript |
Расшифровка видео с таймкодами |
youtube-search |
Поиск видео и каналов по всей платформе |
youtube-channels |
Лента канала, свежие видео, разрешение @handle |
youtube-playlist |
Список всех видео в плейлисте |
Ещё семь скиллов — узкие варианты и алиасы (captions, subtitles, youtube-data, transcriptapi, yt и другие). Они лежат для подстраховки: агент найдёт нужный скилл, даже если вы переформулировали запрос. Полный список — в каталоге skills.
Как выглядит работа с агентом
После установки настройки не нужны. Пишете обычную фразу на английском или русском, агент сам выбирает эндпоинт:
| Задача | Пример запроса |
|---|---|
| Получить расшифровку | «Сделай краткое содержание этого видео: [ссылка]» |
| Найти видео | «Найди видео про машинное обучение» |
| Посмотреть канал | «Что TED выложил на этой неделе?» |
| Разобрать плейлист | «Покажи все видео из этого плейлиста» |
| Получить субтитры | «Дай субтитры к этому видео на испанском» |
| Массовая обработка | «Скачай расшифровки всех видео с этого канала» |
| Исследование темы | «Найди и законспектируй 5 видео про квантовые вычисления» |
API-ключ и автонастройка
Ключ нужен для всех запросов. При первом запуске агент сам проходит регистрацию: спрашивает email, просит ввести код подтверждения из письма и сохраняет ключ в конфиг агента и в файл вашего shell. Бесплатный тариф даёт 100 кредитов, карта не нужна.
Ключ можно задать и самому:
export TRANSCRIPT_API_KEY="sk_your_key_here"
В зависимости от рантайма агент кладёт ключ в разные файлы: ~/.openclaw/openclaw.json для OpenClaw, ~/.zshenv и ~/.zprofile на macOS, ~/.profile и ~/.bashrc на Linux, ~/.config/fish/config.fish для fish. Запасной вариант — файл ~/.transcriptapi с правами 600. Самый частый сбой: ключ сохранён, но агент запущен из другого shell и файл не подхватился. Помогает перезапуск агента.
Два обязательных заголовка
Каждый запрос несёт заголовок Authorization с ключом и заголовок User-Agent с именем агента. Второй заголовок обязателен, хотя выглядит необязательным: без Cloudflare отдаёт 403 с кодом 1010.
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
Стоимость запросов
| Тариф | Цена | Кредиты | Лимит |
|---|---|---|---|
| Free | $0 | 100 при регистрации | 300 запросов в минуту |
| Starter | $5 в месяц | 1 000 в месяц | 300 запросов в минуту |
| Starter Annual | $54 в год | 1 000 в месяц | 300 запросов в минуту |
Большинство операций стоит один кредит. Разрешение @handle и список свежих видео — бесплатно. Поиск и обход ленты стоят один кредит за страницу. Ошибочные запросы кредиты не списывают.
Что реально лежит в SKILL.md
Файлы скиллов — не обёртка над CLI, а подробная документация по API. Например, в SKILL.md навыка youtube-full есть таблица стоимости каждого эндпоинта, правила валидации (@handle, UC-ID или URL для канала; префиксы PL, UU, LL, FL, OL для плейлиста), список кодов ошибок и готовые сценарии: «поиск → выбор видео → расшифровка» для исследования темы и «свежие видео → расшифровка» для мониторинга канала.
Есть полезные мелочи про формат ответа. Флаг include_timestamp=false даёт чистый текст — его удобно переводить и анализировать. В ленте канала поле members_only равно true только у видео с пометкой «Members only», и у таких видео нет счётчика просмотров. На вкладке Shorts поля lengthText и publishedTimeText приходят пустыми: сам YouTube их не публикует.
Если что-то пошло не так
| Симптом | Причина | Что делать |
|---|---|---|
401 Unauthorized |
Ключ не задан или опечатан | Проверьте TRANSCRIPT_API_KEY и начало sk_ |
402 Payment Required |
Кончились кредиты | Проверьте баланс на transcriptapi.com/billing |
403 с кодом 1010 |
Нет заголовка User-Agent |
Добавьте имя агента в User-Agent |
404 Not Found |
У видео нет субтитров или оно не публичное | Откройте ссылку в браузере и проверьте, есть ли дорожка |
408 Request Timeout |
Временная нагрузка на стороне YouTube | Повторите запрос через пару секунд |
422 Validation Error |
Неверный формат параметра | Каналы принимают @handle, URL или UC-ID; плейлисты — префиксы PL, UU, LL, FL, OL |
429 Too Many Requests |
Упёрлись в лимит | Подождите и посмотрите заголовок Retry-After |
Отдельные случаи: расшифровки стримов появляются только после окончания трансляции, пока идёт эфир их нет. Многие видео имеют субтитры только на языке оригинала — тогда просите нужный язык параметром или перевод результата.
Итог
Пакет решает одну задачу узко и понятно: дать агенту текст из YouTube. Файлы SKILL.md честно описывают все эндпоинты, примеры запросов готовы к копированию, а платный слой можно не трогать — бесплатных 100 кредитов хватает на первые эксперименты. Лицензия MIT, вклад принимается, правила есть в CONTRIBUTING.md.
Один нюанс стоит держать в голове: это не самостоятельный продукт, а тонкая обвязка над коммерческим API. Сами скиллы бесплатны, кредиты — нет. Зависимость от одного внешнего сервиса здесь никуда не спрятана.