yt-fts CLI

yt-fts скачивает субтитры каналов и плейлистов YouTube в базу SQLite и ищет по ним фразы с ссылками на нужную секунду, есть смысловой поиск и чат

  • 1 811 ★ репозитория
  • Последний коммит
  • Unlicense
CLI

Широкий доступ

Почему такой уровень

  • Массово скачивает данные YouTube в несколько потоков, при ошибках 403 канал и IP могут быть ограничены самой площадкой
  • Ключ `--cookies-from-browser` читает куки браузера с данными вашей сессии
  • Тексты расшифровок уходят в OpenAI или Gemini по вашему ключу при смысловом поиске, чате и кратком изложении
Все причины и проверки

notjoemartinez/yt-fts

Установка

В терминале, через SkillFoxx CLI

npx skillfoxx add cli/yt-fts

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

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

Как мы проверяем

Широкий доступИнструмент может менять данные, выполнять команды или работать с секретами.

  • Массово скачивает данные YouTube в несколько потоков, при ошибках 403 канал и IP могут быть ограничены самой площадкой
  • Ключ `--cookies-from-browser` читает куки браузера с данными вашей сессии
  • Тексты расшифровок уходят в OpenAI или Gemini по вашему ключу при смысловом поиске, чате и кратком изложении

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

`yt-fts` — программа командной строки на Python, которая собирает субтитры YouTube и делает по ним поиск. Команда `download` принимает адрес канала или плейлиста (ключ `--playlist`), скачивает субтитры через `yt-dlp` в несколько потоков (по умолчанию 8, язык по умолчанию en, меняется ключом `--language`) и складывает их в локальную базу `SQLite`. Команда `update` дозагружает новые видео, `delete` удаляет канал со всеми данными после подтверждения, `export` выгружает расшифровки в файлы txt или vtt. Команда `search` ищет по тексту в сохраненных субтитрах: в одном канале, в одном видео или во всей базе. Строка запроса не длиннее 40 знаков, поддерживает операторы `AND` и `OR`, подстановки со звездочкой и префиксы из расширенного синтаксиса `SQLite`. Каждый результат выводится с адресом YouTube, который открывает видео на нужной секунде; результаты можно выгрузить в CSV ключом `--export`. Для смыслового поиска команда `embeddings` режет расшифровки каналов на отрезки (по умолчанию по 30 секунд) и получает векторы через API OpenAI или Gemini, а хранит их в `chromadb`. После этого работает `vsearch`: результаты упорядочены по близости к запросу. Команда `llm` открывает чат, где ответы строятся по найденным отрезкам, а при нехватке контекста запрос уточняется. `summarize` выдает краткое изложение видео по ссылке или идентификатору с таймкодами; если расшифровки нет в базе, команда пытается ее скачать. Вспомогательные команды: `list` показывает каналы, видео и текст расшифровки, `config` выводит пути к базам, `diagnose` проверяет соединение с YouTube.

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

Подходит, если

  • Нужно найти, в каком выпуске и на какой секунде автор канала сказал конкретную фразу
  • Для ИИ-агента надо собрать локальный корпус расшифровок целого канала или плейлиста и отдавать ему выдержки по запросу
  • Требуется выгрузить расшифровки канала в txt или vtt для анализа, монтажа или перевода
  • Поиск по ключевым словам не помогает, и нужен смысловой поиск по расшифровкам с ответами чата и таймкодами
  • Надо быстро получить краткое изложение одного видео со ссылками на моменты

Не подходит, если

  • Нужен MCP-сервер, который отдает агенту расшифровку одного видео по ссылке: для этого в каталоге есть YouTube Transcript MCP Server
  • У видео нет субтитров: программа берет только готовые субтитры, а саму речь в текст не переводит
  • Нужна постоянная поддержка и исправления: автор называет проект заброшенным
  • Нужен один Markdown-файл с расшифровкой видео для заметок: подойдет youtube-fetcher-to-markdown, без базы и поиска

Пример запроса к агенту

Скачай субтитры канала 3Blue1Brown и найди все места, где он говорит про обратное распространение ошибки, со ссылками на секунды

Ограничения

  • Лицензия Unlicense, передача в общественное достояние. В первых строках описания автор пишет, что проект заброшен и вернется к нему, только когда снова останется без работы, поэтому исправлений при изменениях на стороне YouTube ждать не стоит.
  • Нужен Python 3.10 или новее. Версии зависимостей закреплены (`yt-dlp` 2025.6.30, openai 1.93.0, `chromadb` 1.0.15), а YouTube меняется, поэтому загрузка может выдавать ошибки 403. Для их разбора есть команда `diagnose` и файл docs/TROUBLESHOOTING_403.md.
  • Команда `update` обновляет только полнотекстовый поиск, векторы для смыслового поиска она не пересчитывает. Их получают заново командой `embeddings`.
  • Для `embeddings`, `vsearch`, `llm` и `summarize` нужен ключ OpenAI или Gemini, текст расшифровок уходит в эти сервисы, а API OpenAI из России недоступен. По умолчанию язык субтитров en, для других языков указывайте `--language`.
  • Инструмент собирает данные с YouTube в большом объеме: применять его можно только к каналам и данным, на сбор и использование которых у вас есть разрешение и которые допускают правила площадки.

Как отключить. Удалите программу командой `pip uninstall yt-fts`. Данные остаются на диске: пути к базе `SQLite` и к хранилищу `chromadb` показывает `yt-fts config`, а канал со всеми расшифровками удаляет `yt-fts delete --channel`.

Частые вопросы

Как искать сразу по нескольким словам и частям слов?

Строка поиска понимает расширенный синтаксис полнотекстового поиска `SQLite`. Запрос `knife AND Malibu` находит оба слова, `knife OR Malibu` — любое из них, а `rea* kni* Mali*` ищет по началу слов. Длина строки ограничена 40 знаками. Ключи `--channel` и `--video-id` сужают область поиска до одного канала или видео.

Нужен ли ключ API для обычного поиска по тексту?

Нет. Ключ нужен только командам смыслового поиска, чата и краткого изложения: `embeddings`, `vsearch`, `llm` и `summarize`. Его задают переменной `OPENAI_API_KEY` или `GEMINI_API_KEY` либо ключом `--api-key`. Скачивание субтитров и команда `search` работают целиком на локальной базе и `yt-dlp`.

Что делает ключ `--cookies-from-browser`?

Берет куки из указанного браузера (`chrome`, `firefox` и других) и добавляет их к запросам скачивания. Автор советует его, когда YouTube просит войти в аккаунт. Он действует у команд `download`, `update` и `diagnose`. Куки содержат данные вашей сессии, поэтому используйте тот браузер и профиль, которые готовы отдать программе.

Как разбить расшифровку на отрезки для смыслового поиска?

Командой `embeddings` с ключом `--interval` в секундах, по умолчанию 30. Автор отмечает, что чем длиннее отрезок, тем точнее ответ языковой модели, зато в смысловом поиске придется читать больше текста. После сохранения векторов у канала в списке появляется метка (ss).

Куда выгружаются результаты и расшифровки?

Результаты `search` и `vsearch` с ключом `--export` сохраняются в CSV в текущей папке. Команда `export` создает в текущей папке каталог с идентификатором канала YouTube и пишет туда расшифровки в формате txt (по умолчанию) или vtt по выбору ключа `--format`.

Обсуждение

Вопросов и отзывов пока нет.

yutu управляет YouTube-каналом из терминала: видео, плейлисты, комментарии, субтитры. Есть MCP-сервер, встроенный агент и скилл для Claude Code и Codex

CLIШирокий доступ702Звезды репозитория
Выбор редакции

Скилл /watch: по ссылке или файлу достает кадры и субтитры, а при ключе Gemini передает видео целиком Google, чтобы агент отвечал на вопросы по ролику

СкиллШирокий доступ19 тыс.Звезды репозитория

YouTube Skills

YouTube Skills for AI Agents

Набор скиллов дает агенту транскрипты видео YouTube, поиск роликов и каналов и разбор плейлистов через один API

СкиллРасширенный доступ1,1 тыс.Звезды репозитория

Скилл для Claude Code: скачивает видео YouTube, делит на смысловые главы, вырезает выбранные фрагменты, переводит субтитры и вшивает двуязычные в ролик

СкиллРасширенный доступ2,3 тыс.Звезды репозитория

YouTube Data MCP (kirbah)

YouTube Data MCP Server (kirbah)

YouTube MCP с урезанными ответами: расшифровки без ключа, статистика видео и каналов, тренды, комментарии, кеш в MongoDB и поиск растущих каналов

MCP-серверРасширенный доступ32Звезды репозитория

CLI bili для агента: видео, субтитры, поиск, ленты, избранное и лайки на Bilibili, вывод в YAML или JSON

CLIШирокий доступ1,1 тыс.Звезды репозитория

Сравнение с похожими

Записи с тем же главным запросом: чем они отличаются.

ЗаписьОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
yt-fts (эта запись)нет1 811
YouTube Transcript MCP Serverнетне нужна491MCP-сервер отдает агенту расшифровку одного видео по ссылке, базы и поиска по каналу нет
YouTube Fetcher to Markdownнет495сохраняет расшифровку одного видео и метаданные в файл Markdown для Obsidian

Коротко о README

В репозитории есть описание всех команд с ключами и примерами, журнал изменений, отдельный разбор ошибок 403 при загрузке и пакет тестов на pytest для загрузки, экспорта, обычного и смыслового поиска. Описание начинается с пометки о том, что проект заброшен, и со ссылок на запись в блоге автора, чат с моделью, краткие изложения и смысловой поиск.

Бейдж для README

Сообщить о проблеме

Foxx AIyt-fts
Foxx AI

Я Foxx AI и уже разобрал этот инструмент. Спросите про установку, настройку или что угодно еще, отвечу простыми словами.