用途:当用户要求获取 YouTube 视频的文字记录、字幕、隐藏式字幕或口头内容提取时使用;在 DeepAPI 或本地回退工具可安全获取的前提下抓取记录并保存为干净的 .txt 文件。
主要能力:首选路径为 DeepAPI 的 POST /v1/scrape/youtube/transcript,服务端运行,可避免 yt-dlp 常见的本地 IP 被判定为机器人问题。需环境中已有 DEEPAPI_API_KEY,不读取 shell 启动文件、不打印密钥。请求保留 Idempotency-Key,重试必须复用同一个。非英语视频可在请求体中加 "language": "de" 等。返回 .status 为 succeeded/running/failed,文本位于 .output[0].text,费用见 .debitMicrousd(50000 = $0.05);.output[0].segments 含带时间轴的分段(startSecs、durationSecs、text)。空 output 表示视频没有字幕,应报告而非重试。
使用方式:先准备保存位置,用户在真实项目目录则存该项目,否则存 ~/Downloads;文件名用 Channel_Title(空格替换为 _),元数据不可用时退回视频 ID。频道名可用 yt-dlp --print "%(channel)s|%(title)s" --skip-download "URL" 获取,失败则用视频 ID。回退到 yt-dlp 的触发条件:环境缺少 DEEPAPI_API_KEY、HTTP 402 insufficient_credits(先提示用户在 deepapi.co/credits 充值)、或 DeepAPI 请求连续失败两次;每次回退都应告知用户。回退命令使用 --skip-download --write-subs --write-auto-subs --sub-langs "en.*" --sub-format json3,并始终使用 json3,绝不用 VTT/SRT(自动 VTT 会重复每行)。随后用 Python 将 json3 扁平化为纯文本并保存 .txt。
限制:非英语或未知语言需先运行 yt-dlp --list-subs "URL" 再设 --sub-langs;较新 yt-dlp 可能需要 PATH 中有 deno 才能提取 YouTube;首次失败可运行 yt-dlp -U 一次并重试一次,然后停止;出现 429 或“Sign in to confirm you're not a bot”表示 IP 被标记,应停止,不要循环重试;除非用户明确要求,不得回退到下载音频用 Whisper 转写。资料改编自 davidondrej/skills,行动前需验证本地路径、工具、凭据与代理功能;涉及命令、远程访问、调度、浏览器自动化或改动文件的工作流,应先获得用户明确批准并确认目标环境。