CLI 工具:输入 YouTube 链接,自动下载、分析并裁切精彩片段,输出多个 MP4 文件。
- 自动下载 YouTube 视频(支持字幕)
- 智能分析视频内容,提取精彩片段
- 支持多种 LLM 平台(DeepSeek、Gemini、OpenAI 等)
- 无损裁切视频(ffmpeg
-c copy) - 生成 Markdown 切片报告
# Ubuntu/Debian
sudo apt install ffmpeg
# macOS
brew install ffmpegpython3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple# CPU 版本(默认)
docker build -t yt-segment .
# GPU 版本(需要 nvidia-docker)
docker build -t yt-segment --build-arg GPU=true .# 基本用法
docker run --rm -v $(pwd)/output:/app/output yt-segment <YouTube URL>
# 传入 API Key
docker run --rm -v $(pwd)/output:/app/output yt-segment <URL> -p deepseek -k sk-xxx
# GPU 加速(需要 nvidia-docker)
docker run --rm --gpus all -v $(pwd)/output:/app/output yt-segment <URL>参数说明:
-v $(pwd)/output:/app/output- 挂载输出目录到宿主机--gpus all- 使用 GPU 加速 Whisper 转录
venv/bin/python3 main.py <YouTube URL>venv/bin/python3 main.py <URL> [选项]
必需参数:
url YouTube 视频链接
选项:
-p, --provider LLM 平台 (gemini/deepseek/siliconflow/openai/custom)
-m, --model 模型名称
-k, --api-key API Key
--min-segments 最小切片数量 (默认: 3)
--max-segments 最大切片数量 (默认: 5)
-o, --output 输出目录 (默认: ./output)
--temp 临时文件目录 (默认: ./temp)
--subtitle-langs 字幕语言优先级 (默认: zh-Hans,zh,zh-TW,en)
--keep-temp 保留临时文件
--dry-run 只分析不裁切
# 使用默认配置
venv/bin/python3 main.py https://www.youtube.com/watch?v=xxxxxx
# 指定 LLM 平台和输出目录
venv/bin/python3 main.py https://youtu.be/xxxxxx -p gemini -o ./clips
# 通过命令行传入 API Key
venv/bin/python3 main.py https://www.youtube.com/watch?v=xxxxxx -k YOUR_API_KEY
# 自定义切片数量
venv/bin/python3 main.py https://www.youtube.com/watch?v=xxxxxx --min-segments 2 --max-segments 10
# 测试模式(不裁切视频)
venv/bin/python3 main.py https://www.youtube.com/watch?v=xxxxxx --dry-runvenv/bin/python3 main.py \
https://www.youtube.com/watch?v=dQw4w9WgXcQ \
-p deepseek \
-k sk-xxxxxxxxxxxxxxxx \
-m deepseek-chat \
--min-segments 3 \
--max-segments 8 \
-o ./my_clips \
--subtitle-langs "en,zh-Hans,zh"参数解释:
| 参数 | 值 | 说明 |
|---|---|---|
URL |
https://www.youtube.com/watch?v=dQw4w9WgXcQ |
要处理的 YouTube 视频链接 |
-p deepseek |
deepseek |
使用 DeepSeek 作为 LLM 分析平台 |
-k sk-xxx |
sk-xxxxxxxxxxxxxxxx |
直接通过命令行传入 API Key(优先级最高) |
-m deepseek-chat |
deepseek-chat |
指定使用的模型(可选,默认根据平台自动选择) |
--min-segments 3 |
3 |
最少提取 3 个精彩片段 |
--max-segments 8 |
8 |
最多提取 8 个精彩片段 |
-o ./my_clips |
./my_clips |
切片视频保存到 my_clips 目录 |
--subtitle-langs "en,zh-Hans,zh" |
en,zh-Hans,zh |
字幕语言优先级:英文 > 简体中文 > 中文 |
执行流程:
- 下载视频到临时目录
./temp - 优先下载英文字幕,若无则尝试中文字幕
- 调用 DeepSeek API 分析字幕内容,提取 3-8 个精彩片段
- 使用 ffmpeg 无损裁切视频
- 输出文件到
./my_clips/目录 - 生成
./my_clips/segments.md报告 - 清理临时文件
| 变量 | 默认值 | 说明 |
|---|---|---|
LLM_PROVIDER |
deepseek |
LLM 平台 |
MIN_SEGMENTS |
3 |
最小切片数量 |
MAX_SEGMENTS |
5 |
最大切片数量 |
OUTPUT_DIR |
./output |
输出目录 |
TEMP_DIR |
./temp |
临时文件目录 |
SUBTITLE_LANGS |
zh-Hans,zh,zh-TW,en |
字幕语言优先级 |
优先级:命令行 > 环境变量 > 手动输入
| 平台 | 环境变量 |
|---|---|
| Gemini | GOOGLE_API_KEY |
| DeepSeek | DEEPSEEK_API_KEY |
| SiliconFlow | SILICONFLOW_API_KEY |
| OpenAI | OPENAI_API_KEY |
| Custom | CUSTOM_LLM_API_KEY |
支持自由切换 LLM 平台和模型:
# 使用 DeepSeek 默认模型 (deepseek-chat)
venv/bin/python3 main.py <URL> -p deepseek
# 使用 DeepSeek 推理模型
venv/bin/python3 main.py <URL> -p deepseek -m deepseek-reasoner
# 使用 Gemini
venv/bin/python3 main.py <URL> -p gemini
# 使用 Gemini 指定模型
venv/bin/python3 main.py <URL> -p gemini -m gemini-2.0-flash
# 使用 SiliconFlow (Qwen)
venv/bin/python3 main.py <URL> -p siliconflow
# 使用 SiliconFlow 指定模型
venv/bin/python3 main.py <URL> -p siliconflow -m deepseek-ai/DeepSeek-V3
# 使用 OpenAI
venv/bin/python3 main.py <URL> -p openai -m gpt-4o
# 使用自定义 OpenAI 兼容平台
export CUSTOM_LLM_BASE_URL=https://your-api.com/v1
export CUSTOM_LLM_MODEL=your-model-name
venv/bin/python3 main.py <URL> -p custom各平台默认模型:
| 平台 | 默认模型 |
|---|---|
| Gemini | gemini-2.5-flash-lite |
| DeepSeek | deepseek-chat |
| SiliconFlow | Qwen/Qwen2.5-72B-Instruct |
| OpenAI | gpt-4o-mini |
| Custom | 需通过环境变量配置 |
# 方式一:环境变量
export LLM_PROVIDER=deepseek
export DEEPSEEK_API_KEY=sk-xxxxx
venv/bin/python3 main.py https://www.youtube.com/watch?v=xxxxxx
# 方式二:.env 文件 (需自行加载)
cat > .env << EOF
LLM_PROVIDER=deepseek
DEEPSEEK_API_KEY=sk-xxxxx
MIN_SEGMENTS=2
MAX_SEGMENTS=10
EOF├── main.py # 入口,编排 4 步流水线
├── downloader.py # yt-dlp 下载视频和字幕
├── transcriber.py # 解析字幕或调用 API 转录音频
├── analyzer.py # LLM 分析字幕,提取精彩片段
├── cutter.py # ffmpeg 裁切视频
├── config.py # 配置管理
├── requirements.txt # Python 依赖
└── output/ # 输出目录(自动创建)
output/*.mp4- 切片视频文件,命名格式:NN_标题.mp4output/segments.md- Markdown 格式的切片详情报告
- 需要网络访问 YouTube
- 长视频的 AI 转录可能需要较长时间
- Gemini 转录长音频时可能返回截断的 JSON,已做容错处理