OpenClaw Skills YouTube字幕获取(YouTube Watcher)技能使用参考手册
2026-03-05 17:21 更新
概述
YouTube Watcher 是一个用于获取 YouTube 视频字幕的 OpenClaw 技能,你可以使用它来总结视频内容、回答关于视频的问题,或者从视频中提取所需的信息。
技能信息
- 名称:youtube-watcher
- 描述:获取并读取 YouTube 视频的字幕,支持对视频内容进行总结、问答和信息提取。
- 作者:michael gathara
- 版本:1.0.0
- 触发词:
- "
watch youtube" - "
summarize video" - "
video transcript" - "
youtube summary" - "
analyze video"
- "
- 依赖要求:需要安装
yt-dlp工具,可通过以下方式安装:- 使用 brew:
brew install yt-dlp - 使用 pip:
pip install yt-dlp
- 使用 brew:
👤 作者:Michaelgathara
🦞 官方地址:https://clawhub.ai/Michaelgathara/youtube-watcher
👉 Skills 下载地址:youtube-watcher-1.0.0.zip
使用方法
获取视频字幕
要获取 YouTube 视频的文字字幕,使用以下命令:
python3 {baseDir}/scripts/get_transcript.py "https://www.youtube.com/watch?v=VIDEO_ID"
其中{baseDir}是该技能的基础目录路径,VIDEO_ID需要替换为目标 YouTube 视频的 ID。
示例
总结视频内容
- 首先获取目标视频的字幕:
-
python3 {baseDir}/scripts/get_transcript.py "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
- 读取脚本输出的字幕内容,为用户总结该视频的核心内容和关键信息。
查找视频中的特定信息
- 先获取目标视频的字幕文件
- 在字幕文本中搜索指定的关键词,或者根据用户的问题,从字幕内容中找到对应的答案并反馈给用户。
注意事项
- 请确保
yt-dlp已经安装完成,并且在系统的 PATH 环境变量中可以被访问到 - 该技能仅适用于带有隐藏字幕(CC)或自动生成字幕的 YouTube 视频
- 如果目标视频没有提供任何字幕,脚本会输出错误提示信息
工具代码说明
get_transcript.py(YouTube 字幕获取脚本)
#!/usr/bin/env python3
import argparse
import os
import re
import subprocess
import sys
import tempfile
from pathlib import Path
def clean_vtt(content: str) -> str:
"""
清理WebVTT格式的字幕内容,转换为纯文本格式
移除WebVTT的头部信息、时间戳和重复的行内容
"""
lines = content.splitlines()
text_lines = []
seen = set()
# 用于匹配WebVTT时间戳的正则表达式
timestamp_pattern = re.compile(r'\d{2}:\d{2}:\d{2}\.\d{3}\s-->\s\d{2}:\d{2}:\d{2}\.\d{3}')
for line in lines:
line = line.strip()
# 跳过空行、WebVTT标识行和纯数字行
if not line or line == 'WEBVTT' or line.isdigit():
continue
# 跳过时戳行
if timestamp_pattern.match(line):
continue
# 跳过NOTE和STYLE注释行
if line.startswith('NOTE') or line.startswith('STYLE'):
continue
# 跳过与上一行重复的内容
if text_lines and text_lines[-1] == line:
continue
# 移除文本中的HTML标签
line = re.sub(r'<[^>]+>', '', line)
text_lines.append(line)
return '\n'.join(text_lines)
def get_transcript(url: str):
"""
获取指定YouTube视频的字幕内容
参数:
url: 目标YouTube视频的完整URL
"""
# 创建临时目录用于存储下载的字幕文件
with tempfile.TemporaryDirectory() as temp_dir:
# 构建yt-dlp命令,用于下载视频字幕
cmd = [
"yt-dlp",
"--write-subs", # 写入字幕文件
"--write-auto-subs", # 同时写入自动生成的字幕
"--skip-download", # 跳过视频文件的下载
"--sub-lang", "en", # 仅下载英文字幕
"--output", "subs", # 字幕文件的输出前缀
url # 目标YouTube视频的URL
]
try:
# 执行yt-dlp命令,捕获输出内容
subprocess.run(cmd, cwd=temp_dir, check=True, capture_output=True)
except subprocess.CalledProcessError as e:
# 命令执行失败时输出错误信息
print(f"运行yt-dlp时出错: {e.stderr.decode()}", file=sys.stderr)
sys.exit(1)
except FileNotFoundError:
# 未找到yt-dlp工具时提示用户安装
print("错误: 未找到yt-dlp,请先安装该工具。", file=sys.stderr)
sys.exit(1)
# 在临时目录中查找vtt格式的字幕文件
temp_path = Path(temp_dir)
vtt_files = list(temp_path.glob("*.vtt"))
if not vtt_files:
# 未找到任何字幕文件时提示
print("未找到该视频的字幕文件。", file=sys.stderr)
sys.exit(1)
# 取找到的第一个字幕文件
vtt_file = vtt_files[0]
# 读取字幕文件的内容
content = vtt_file.read_text(encoding='utf-8')
# 清理字幕内容,转换为纯文本
clean_text = clean_vtt(content)
# 输出清理后的纯文字幕
print(clean_text)
def main():
# 创建命令行参数解析器
parser = argparse.ArgumentParser(description="获取YouTube视频字幕的工具。")
parser.add_argument("url", help="目标YouTube视频的完整URL")
args = parser.parse_args()
# 调用获取字幕的函数
get_transcript(args.url)
if __name__ == "__main__":
main()
元数据信息
该技能的元数据信息如下:
{
"ownerId": "kn70xwv21y5gnsycry0shkye6d7zx8jz",
"slug": "youtube-watcher",
"version": "1.0.0",
"publishedAt": 1769327779866
}以上内容是否对您有帮助:

免费 AI IDE


更多建议: