# youtube-fetcher

Достаёт субтитры и расшифровки из YouTube, Instagram, TikTok, X и Vimeo, отвечает по содержанию ролика и сохраняет заметку в Markdown.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · ★ 509
- Автор: JimmySadek
- Лицензия: MIT · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/JimmySadek/video-fetcher-to-markdown/tree/HEAD/SKILL.md
- Обновлён: 2026-10-07
- HTML: https://affpapa.org/nevibecode/skills/youtube-fetcher

## Что делает

Скилл работает с двумя сценариями. Для YouTube с готовыми субтитрами запускается `scripts/fetch_transcript.py`: он читает дорожку субтитров, ничего не скачивает и не просит API-ключ. Для Instagram, TikTok, X, Vimeo, Facebook, а также для YouTube без субтитров и локальных видеофайлов используется `scripts/fetch_media.py` — он скачивает ролик через `yt-dlp` и расшифровывает его локально с помощью Whisper. Оба скрипта умеют выгружать Markdown, обычный текст, JSON, SRT и WebVTT.

Перед запуском второго скрипта стоит выполнить `fetch_media.py --check-deps`: ему нужны `ffmpeg`, `yt-dlp` для ссылок и консольный Whisper (`mlx_whisper` на Apple Silicon, иначе `whisper`). Для роликов до 3 минут заметка встраивает контактный лист кадров `<note>.frames.jpg` — по нему видно, что было на экране, а не только в речи. Расшифровка машинная: имена и термины она слышит неверно, поверх музыки может дописать лишнее, поэтому правьте только то, что подтверждают кадры или сам пользователь.

Если сайт требует входа, скрипт завершается с кодом `4` и печатает варианты. Сначала проверьте, не устарел ли `yt-dlp` — площадки меняются часто, обновление снимает часть блокировок. Дальше можно открыть страницу в браузере и выполнить там `scripts/browser_media_links.js`, забрать ссылки на аудио и видео через `curl -L -o` и передать файлы скрипту. Чтение куки браузера (`--cookies-from-browser chrome`) — только по прямой просьбе пользователя в текущем разговоре.

## Требования
- Работает с: Obsidian

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add JimmySadek/video-fetcher-to-markdown --skill youtube-fetcher -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/youtube-fetcher/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/youtube-fetcher/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add JimmySadek/video-fetcher-to-markdown --skill youtube-fetcher -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/youtube-fetcher/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add JimmySadek/video-fetcher-to-markdown --skill youtube-fetcher -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/youtube-fetcher/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install JimmySadek/video-fetcher-to-markdown youtube-fetcher
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/youtube-fetcher/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add JimmySadek/video-fetcher-to-markdown --skill youtube-fetcher -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/JimmySadek/video-fetcher-to-markdown
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/youtube-fetcher/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add JimmySadek/video-fetcher-to-markdown --skill youtube-fetcher -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/JimmySadek/video-fetcher-to-markdown/tree/HEAD/SKILL.md

## Когда брать
- вытащить расшифровку ролика YouTube без скачивания видео
- получить текст видео из TikTok или Instagram, где субтитров нет
- ответить на вопрос по содержанию ролика со ссылками на таймкоды
- сохранить видео в базу знаний Obsidian как заметку Markdown
- разобрать, что было написано на экране, по кадрам ролика

## Примеры запросов агенту
- Сделай заметку из этого ролика: https://youtu.be/VIDEO_ID
- О чём говорят в этом видео? Дай ответ с таймкодами: https://www.tiktok.com/@user/video/123
- Расшифруй локальный файл `/path/to/video.mp4` и сохрани в мой vault

## Похожие
- [baoyu-youtube-transcript](https://affpapa.org/nevibecode/skills/baoyu-youtube-transcript.md) — скилл · 21600 установок
- [youtube-transcript](https://affpapa.org/nevibecode/skills/michalparkola-youtube-transcript.md) — скилл · 861 установка
- [video-lens](https://affpapa.org/nevibecode/skills/video-lens.md) — скилл · 864 установки
- [youtube-downloader](https://affpapa.org/nevibecode/skills/youtube-downloader.md) — скилл · 1500 установок
- [youtube-transcribe-skill](https://affpapa.org/nevibecode/skills/youtube-transcribe-skill.md) — скилл · 353 установки
- [youtube-full](https://affpapa.org/nevibecode/skills/youtube-full.md) — скилл · 78 установок

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
