TubeScribe
2026-03-28
新闻来源:网淘吧
围观:19
电脑广告
手机广告
TubeScribe 🎬
将任何YouTube视频转化为精美的文档+音频摘要。
粘贴一个YouTube链接 → 即可获得一份精美的文字记录,包含说话者标签、关键引语、可链接回视频的时间戳,以及一份可供随时收听的音频摘要。
💸 免费且无需付费API
- 无需订阅或API密钥— 开箱即用
- 本地处理— 转录、说话者检测和文本转语音都在您的设备上运行
- 网络访问— 从YouTube获取数据(字幕、元数据、评论)需要互联网连接
- 无数据上传— 不会向外部服务发送任何数据;所有处理都保留在您的设备上
- 安全的子代理— 生成的子代理有严格指令:不安装软件,除YouTube外不进行网络调用
✨ 功能特色
- 📄 带摘要和关键引语的文字记录— 导出为DOCX、HTML或Markdown格式
- 🎯 智能说话者检测— 自动识别参与者
- 🔊 音频摘要— 收听关键要点(MP3/WAV格式)
- 📝 可点击的时间戳— 每条引述都直接链接到视频中的对应时刻
- 💬 YouTube评论— 观众情绪分析和精选评论
- 📋 队列支持— 发送多个链接,它们会按顺序处理
- 🚀 非阻塞工作流— 后台处理视频时,对话可继续进行
🎬 适用于任何视频
- 访谈与播客(多说话人检测)
- 讲座与教程(单人讲话)
- 音乐视频(歌词提取)
- 新闻与纪录片
- 任何带有字幕的YouTube内容
快速开始
当用户发送YouTube链接时:
- 立即创建子代理并分配完整处理流程任务立即
- 回复:"🎬 TubeScribe正在处理中——完成后我会通知您!"
- 继续对话(无需等待!)
- 子代理通知将在完成时公布标题和详细信息
不要阻塞——立即生成并继续。
首次设置
运行设置以检查依赖项并配置默认值:
python skills/tubescribe/scripts/setup.py
此项检查包括:摘要命令行界面pandoc、ffmpeg、Kokoro TTS
完整工作流程(单一子代理)
生成一个子代理来执行整个流水线:
sessions_spawn(
task=f"""
## TubeScribe: Process {youtube_url}
⚠️ CRITICAL: Do NOT install any software.
No pip, brew, curl, venv, or binary downloads.
If a tool is missing, STOP and report what's needed.
Run the COMPLETE pipeline — do not stop until all steps are done.
### Step 1: Extract
```bash
python3 skills/tubescribe/scripts/tubescribe.py "{youtube_url}"
请注意脚本打印的源文件和输出路径。在后续步骤中使用这些确切路径。
步骤 2:读取源 JSON
读取步骤1输出的源路径并注意:
- metadata.title(用于文件名)
- metadata.video_id
- metadata.channel、upload_date、duration_string
步骤3:创建格式化markdown
写入步骤1中的输出路径:
# **<标题>**
- 视频信息块 — 频道、日期、时长、URL(可点击)。每个字段之间空一行。
## **参与者**— 包含加粗标题的表格:| **Name** | **Role** | **Description** | |----------|----------|-----------------|
## **总结**— 3-5段叙述性文字
## **关键引述**— 最佳5条,附带可点击的YouTube时间戳。每条格式如下:
使用常规短横线"Quote text here." - [12:34](https://www.youtube.com/watch?v=ID&t=754s) "Another quote." - [25:10](https://www.youtube.com/watch?v=ID&t=1510s)-,而非长破折号—。请勿使用块引用>。仅使用纯文本段落。
## **观众情绪分析**(如果存在评论)
## **最佳评论**(如果存在评论)— 前5条,它们之间没有空行:
署名行:短横线 + 斜体。评论之间只有空行,没有Comment text here. *- ▲ 123 @AuthorName* Next comment text here. *- ▲ 45 @AnotherAuthor*分隔符。## **完整转录稿**
— 合并片段、说话人标签、可点击的时间戳第4步:创建DOCX文件
清理标题作为文件名(移除特殊字符),然后:
第5步:生成音频
pandoc <output_path> -o ~/Documents/TubeScribe/<safe_title>.docx
将摘要文本写入临时文件,然后使用TubeScribe内置的音频生成功能:
读取
# Write summary to temp file (use python3 to write, avoids shell escaping issues)
python3 -c "
text = '''YOUR SUMMARY TEXT HERE'''
with open('<temp_dir>/tubescribe_<video_id>_summary.txt', 'w') as f:
f.write(text)
"
# Generate audio (auto-detects engine, voice, format from config)
python3 skills/tubescribe/scripts/tubescribe.py \
--generate-audio <temp_dir>/tubescribe_<video_id>_summary.txt \
--audio-output ~/Documents/TubeScribe/<safe_title>_summary
~/.tubescribe/config.json并自动使用配置的TTS引擎(mlx/kokoro/builtin)、语音混合和速度。输出格式(mp3/wav)来自配置。第6步:清理
第7步:打开文件夹
python3 skills/tubescribe/scripts/tubescribe.py --cleanup <video_id>
报告
open ~/Documents/TubeScribe/
告知创建的内容:DOCX文件名、MP3文件名 + 时长、视频统计信息。""", label="tubescribe", runTimeoutSeconds=900, cleanup="delete" )
Tell what was created: DOCX name, MP3 name + duration, video stats. """, label="tubescribe", runTimeoutSeconds=900, cleanup="delete" )
**After spawning, reply immediately:**
> 🎬 TubeScribe is processing - I'll let you know when it's ready!
Then continue the conversation. The sub-agent notification announces completion.
## Configuration
Config file: `~/.tubescribe/config.json`
```json
{
"output": {
"folder": "~/Documents/TubeScribe",
"open_folder_after": true,
"open_document_after": false,
"open_audio_after": false
},
"document": {
"format": "docx",
"engine": "pandoc"
},
"audio": {
"enabled": true,
"format": "mp3",
"tts_engine": "mlx"
},
"mlx_audio": {
"path": "~/.openclaw/tools/mlx-audio",
"model": "mlx-community/Kokoro-82M-bf16",
"voice": "af_heart",
"lang_code": "a",
"speed": 1.05
},
"kokoro": {
"path": "~/.openclaw/tools/kokoro",
"voice_blend": { "af_heart": 0.6, "af_sky": 0.4 },
"speed": 1.05
},
"processing": {
"subagent_timeout": 600,
"cleanup_temp_files": true
}
}
输出选项
| 选项 | 默认值 | 描述 |
|---|---|---|
output.folder | ~/Documents/TubeScribe | 文件保存位置 |
output.open_folder_after | true | 完成后打开输出文件夹 |
output.open_document_after | false | 自动打开生成的文档 |
output.open_audio_after | false | 自动打开生成的音频摘要 |
文档选项
| 选项 | 默认值 | 可选值 | 描述 |
|---|---|---|---|
document.format | docx | docx,html,md | 输出格式 |
document.engine | pandoc | pandoc | DOCX转换器(回退到HTML) |
音频选项
| 选项 | 默认值 | 取值 | 描述 |
|---|---|---|---|
audio.enabled | true | true,false | 生成音频摘要 |
audio.format | mp3 | mp3,wav | 音频格式(mp3需要ffmpeg) |
audio.tts_engine | mlx | mlx,kokoro,builtin | TTS 引擎 (mlx = 在 Apple Silicon 上最快) |
MLX-Audio 选项 (在 Apple Silicon 上首选)
| 选项 | 默认值 | 描述 |
|---|---|---|
mlx_audio.path | ~/.openclaw/tools/mlx-audio | mlx-audio venv 位置 |
mlx_audio.model | mlx-community/Kokoro-82M-bf16 | 要使用的 MLX 模型 |
mlx_audio.voice | af_heart | 语音预设 (当未设置 voice_blend 时使用) |
mlx_audio.voice_blend | {af_heart: 0.6, af_sky: 0.4} | 自定义语音混合 (加权混合) |
mlx_audio.lang_code | a | 语言代码 (a=美式英语) |
mlx_audio.speed | 1.05 | 播放速度(1.0 = 正常,1.05 = 快5%) |
Kokoro PyTorch 选项(备用方案)
| 选项 | 默认值 | 描述 |
|---|---|---|
kokoro.path | ~/.openclaw/tools/kokoro | Kokoro 仓库位置 |
kokoro.voice_blend | {af_heart: 0.6, af_sky: 0.4} | 自定义语音混合 |
kokoro.speed | 1.05 | 播放速度(1.0 = 正常,1.05 = 快5%) |
处理选项
| 选项 | 默认值 | 描述 |
|---|---|---|
processing.subagent_timeout | 600 | 子代理处理秒数(针对长视频可增加此值) |
processing.cleanup_temp_files | true | 完成后删除 /tmp 文件 |
评论选项
| 选项 | 默认值 | 描述 |
|---|---|---|
comments.max_count | 50 | 要获取的评论数量 |
comments.timeout | 90 | 获取评论的超时时间(秒) |
队列选项
| 选项 | 默认值 | 描述 |
|---|---|---|
queue.stale_minutes | 30 | 经过此分钟数后,将处理作业视为陈旧 |
输出结构
~/Documents/TubeScribe/
├── {Video Title}.html # Formatted document (or .docx / .md)
└── {Video Title}_summary.mp3 # Audio summary (or .wav)
生成后,打开文件夹(而非单个文件),以便您可以访问所有内容。
依赖项
必需:
summarize命令行界面 —brew install steipete/tap/summarize- Python 3.8+
可选(质量更佳):
pandoc— DOCX 输出:brew install pandocffmpeg— MP3 音频:brew install ffmpegyt-dlp— YouTube 评论:brew install yt-dlp- mlx-audio — Apple Silicon 上最快的 TTS:
pip install mlx-audio(使用 MLX 后端支持 Kokoro) - Kokoro TTS — PyTorch 备用方案:请参阅https://github.com/hexgrad/kokoro
yt-dlp 搜索路径
TubeScribe 按顺序检查以下位置:
| 优先级 | 路径 | 来源 |
|---|---|---|
| 1 | 哪个yt-dlp | 系统PATH |
| 2 | /opt/homebrew/bin/yt-dlp | Homebrew(Apple Silicon) |
| 3 | /usr/local/bin/yt-dlp | Homebrew(Intel)/ Linux |
| 4 | ~/.local/bin/yt-dlp | pip install --user |
| 5 | ~/.local/pipx/venvs/yt-dlp/bin/yt-dlp | pipx |
| 6 | ~/.openclaw/tools/yt-dlp/yt-dlp | TubeScribe自动安装 |
如果未找到,设置会将独立的二进制文件下载到工具目录。 工具目录版本不会与系统安装冲突。
队列处理
当用户在处理一个YouTube URL时发送多个URL:
开始前检查
python skills/tubescribe/scripts/tubescribe.py --queue-status
如果已在处理
# Add to queue instead of starting parallel processing
python skills/tubescribe/scripts/tubescribe.py --queue-add "NEW_URL"
# → Replies: "📋 Added to queue (position 2)"
完成后
# Check if more in queue
python skills/tubescribe/scripts/tubescribe.py --queue-next
# → Automatically pops and processes next URL
队列命令
| 命令 | 描述 |
|---|---|
--queue-status | 显示正在处理的项目和队列中的项目 |
--queue-add URL | 将URL添加到队列 |
--queue-next | 处理队列中的下一项 |
--queue-clear | 清空整个队列 |
批处理(一次处理多个URL)
python skills/tubescribe/scripts/tubescribe.py url1 url2 url3
依次处理所有URL,并在最后提供摘要。
错误处理
脚本会检测并报告以下错误,并提供明确信息:
| 错误 | 信息 |
|---|---|
| 无效URL | ❌ 不是有效的YouTube URL |
| 私享视频 | ❌ 视频为私享状态 — 无法访问 |
| 视频已删除 | ❌ 未找到视频或视频已被删除 |
| 无字幕 | ❌ 此视频无字幕可用 |
| 年龄限制 | ❌ 年龄限制视频 — 未登录无法访问 |
| 地区屏蔽 | ❌ 视频在您所在地区被屏蔽 |
| 直播流 | ❌ 不支持直播 — 请等待直播结束 |
| 网络错误 | ❌ 网络错误 — 请检查您的网络连接 |
| 超时 | ❌ 请求超时 — 请稍后重试 |
当发生错误时,向用户报告并不要继续处理该视频。
提示
- 对于长视频(>30分钟),请将子代理超时时间增加至900秒
- 说话人检测在清晰的访谈/播客格式下效果最佳
- 单人讲话视频(教程、讲座)会自动跳过说话人标签
- 时间戳可直接链接到YouTube的对应时刻
- 处理多个视频时请使用批处理模式:
tubescribe 网址1 网址2 网址3
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Smart Follow-ups
下一篇:小红书长文发布


微信扫一扫,打赏作者吧~