yt-fts 项目介绍
yt-fts
是一个命令行程序,专为 YouTube 视频的文本搜索而设计。通过利用 yt-dlp,它可以抓取一个 YouTube 频道中的所有字幕,并将其加载到一个可通过命令行进行搜索的 SQLite 数据库中。用户可以在特定频道中查询关键字或短语,并生成包含关键字的特定时间戳的 YouTube 链接。此外,项目还支持通过 OpenAI embeddings API 使用 chromadb 进行语义搜索。
功能与特点
- 抓取字幕并存储:
yt-fts
能够从指定频道抓取视频字幕,并将其存储于数据库中供后续查询使用。 - 全文搜索:用户可以在保存的频道中进行详细的文本搜索,无需完全匹配关键词。
- 语义搜索:通过启用语义搜索,可以根据语义相关性查找视频内容。
- 交互式聊天机器人:利用 GPT-4 模型在可配置的上下文中回答用户提问。
- 视频摘要:生成并输出 YouTube 视频的文本摘要。
- 导出功能:搜索结果可以导出为 CSV 文件。
安装步骤
用户可以通过以下命令安装 yt-fts
:
pip install yt-fts
基本命令用法
字幕下载
用户可以通过 download
命令下载指定频道的字幕,支持多线程,使用 --jobs
指定线程数,并可以使用浏览器的 Cookie 来辅助下载:
yt-fts download --jobs 5 "https://www.youtube.com/@3blue1brown"
yt-fts download --cookies-from-browser firefox "https://www.youtube.com/@3blue1brown"
列出频道
通过 list
命令查看已保存的频道。带有 (ss)
标记的频道表示已启用语义搜索。
yt-fts list
全文搜索
使用 search
命令在频道中进行文字搜索,支持高级查询语法,例如前缀查询、AND/OR 搜索以及通配符:
yt-fts search "[search query]"
yt-fts search "[search query]" --channel "[channel name or id]"
语义搜索与 RAG
用户可以通过 embeddings
命令为指定频道获取 OpenAI 嵌入数据,这需要预先设置 OpenAI API 密钥。启用后,即可通过 vsearch
命令进行语义搜索:
yt-fts embeddings --channel "3Blue1Brown"
yt-fts vsearch "[search query]" --channel "[channel name or id]"
交互式聊天
启动与 GPT-4 模型的聊天会话,回答基于视频搜索上下文的问题:
yt-fts llm --channel "3Blue1Brown" "How does back propagation work?"
视频总结
为指定的 YouTube 视频生成摘要和时间戳 URL:
yt-fts summarize "https://www.youtube.com/watch?v=9-Jl0dxWQs8"
其他操作
- 导出:可将搜索结果导出为 CSV,命令示例如下:
yt-fts search "life in the big city" --export
- 删除频道:通过
delete
命令删除不再需要的频道:
yt-fts delete --channel "3Blue1Brown"
- 更新频道:更新字幕数据库,但不更新语义嵌入数据:
yt-fts update --channel "3Blue1Brown"
- 导出频道字幕:将频道的字幕批量导出为文本或 VTT 格式:
yt-fts export --channel "[id/name]" --format "[vtt/txt]"
yt-fts
提供了一种高效的方式来管理和搜索 YouTube 频道的文本内容,使用户能够更便捷地获取所需的信息。