抓取、转录并汇总YouTube或Bilibili视频,支持字幕、云端STT、本地Whisper或描述回退,并提供代理与登录功能。
视频内容获取器( YouTube & bilibili)是一项面向实际任务的技能,主要用于在您开始前, 此技能需要配置1-3 个根据您的使用大小写配置的功能 :::6.;What. why.;
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
该技能根据您的使用场景,需配置 1–3 项内容:
| 项目 | 原因 | 配置方式 |
|---|---|---|
| 住宅 IP 代理(Residential IP proxy) | YouTube 封禁数据中心 IP。您 必须 使用住宅宽带代理(例如:中国香港家庭宽带)。VPS/云服务器 IP 将无法通过验证。 | --proxy socks5h://127.0.0.1:1080(同时需安装 pysocks:pip install pysocks) |
| ElevenLabs API 密钥 | 当视频无字幕时,默认使用该服务进行语音转文字(STT)。其准确率远超本地 Whisper 模型,尤其在中文识别方面表现更优。 | export ELEVENLABS_API_KEY="sk_..." 或 --stt-api-key @~/.elevenlabs_key。获取密钥地址:https://elevenlabs.io/app/settings/api-keys |
| Bilibili Cookie | Bilibili 的 AI 字幕功能需登录后方可调用。若未提供 Cookie,则自动降级至 STT 方式处理。 | 从浏览器导出 SESSDATA 和 bili_jct 值,保存至 ~/.bilibili_cookie 文件,并通过 --cookie @~/.bilibili_cookie 参数加载。详见下文说明。 |
YouTube 最小化配置:代理 + ElevenLabs API 密钥(或本地 Whisper)
Bilibili 最小化配置:ElevenLabs API 密钥(或本地 Whisper)。Cookie 为可选项,但强烈推荐配置。
# YouTube python3 scripts/youtube_fetch.py "https://www.youtube.com/watch?v=VIDEO_ID" --proxy socks5h://127.0.0.1:1080 # Bilibili python3 scripts/youtube_fetch.py "https://www.bilibili.com/video/BVxxxxxxxxxx"
1. 字幕/转录 API(最高保真度 — 完整口语内容)
| 若不可用
v
2. ElevenLabs STT(默认云端方案,标点准确、识别精度高)
| 若未提供 API 密钥或调用失败
v
3. 本地 Whisper(自动回退,需提前本地安装)
| 若不可用
v
4. 视频简介(最低保真度 — 仅含创作者撰写的文字摘要)
务必向用户明确说明所采用的内容来源。若仅使用简介作为输入,须明确指出其并非完整转录文本。
| 平台 | 字幕来源 | STT 回退方案 | 简介回退方案 |
|---|---|---|---|
| YouTube | youtube-transcript-api | ElevenLabs / Whisper | HTML meta 标签提取 |
| Bilibili | 播放器 API(需 Cookie 才能获取 AI 字幕) | ElevenLabs / Whisper | View API |
平台类型将根据 URL 自动识别。如需强制指定,可使用 --platform youtube 或 --platform bilibili 参数。
# YouTube(带代理) python3 scripts/youtube_fetch.py VIDEO_URL --proxy socks5h://127.0.0.1:1080 # Bilibili(获取字幕需提供 Cookie;否则自动降级至 STT 或简介) # 重要:始终使用 @filepath 语法,避免凭据泄露至 shell 历史记录或进程列表中 python3 scripts/youtube_fetch.py "https://www.bilibili.com/video/BVxxxxxxxxxx" --cookie @~/.bilibili_cookie # Bilibili 短链接 python3 scripts/youtube_fetch.py "https://b23.tv/xxxxxx" # 指定字幕语言(默认:zh-Hans,zh-Hant,zh,en) python3 scripts/youtube_fetch.py VIDEO_URL --langs "en,ja" --proxy PROXY # 强制使用本地 Whisper 替代 ElevenLabs python3 scripts/youtube_fetch.py VIDEO_URL --stt whisper --whisper-model medium # 完全禁用音频转文字(STT) python3 scripts/youtube_fetch.py VIDEO_URL --stt none # 输出 JSON 格式 python3 scripts/youtube_fetch.py VIDEO_URL --json --proxy PROXY # 保存结果至文件 python3 scripts/youtube_fetch.py VIDEO_URL --output /tmp/transcript.txt --proxy PROXY
必需依赖:
youtube-transcript-api(pip 安装)— 用于获取 YouTube 字幕requests(pip 安装)— 用于发起 HTTP 请求调用各类 API语音转文字(STT)必需依赖:
yt-dlp(pip 或 brew 安装)— 用于从 YouTube/Bilibili 下载音频可选依赖(用于本地 Whisper,当 ElevenLabs 不可用时自动回退):
openai-whisper(pip 安装)— 本地音频转文字ffmpeg(系统级安装)— Whisper 运行所必需可选依赖(用于 SOCKS5 代理):
pysocks(pip 安装)— 若使用 socks5h:// 类型代理则必需# 必需依赖 pip install youtube-transcript-api requests # STT 所需依赖 pip install yt-dlp # 若使用 SOCKS5 代理 pip install pysocks # 可选:本地 Whisper 回退支持 pip install openai-whisper brew install ffmpeg # 或 apt install ffmpeg
ElevenLabs Scribe v2 是默认的语音转文字引擎。相比本地 Whisper 模型,其识别准确率显著更高,尤其在中文识别方面——可正确还原汉字、自动添加标点,并规范格式(如书名号等)。
配置方式:
# 方式一:环境变量(推荐) export ELEVENLABS_API_KEY="sk_your_key_here" # 方式二:密钥文件 echo "sk_your_key_here" > ~/.elevenlabs_key && chmod 600 ~/.elevenlabs_key # 后续使用:--stt-api-key @~/.elevenlabs_key
若未提供 API 密钥,该技能将自动回退至本地 Whisper 模型。
安全性说明:与 Bilibili Cookie 相同,应始终通过环境变量或 @filepath 方式传入密钥,切勿直接在命令行中明文传递。
获取 API 密钥地址:https://elevenlabs.io/app/settings/api-keys
YouTube 需要代理以绕过地理封锁。Bilibili 在中国大陆通常可直连访问。
socks5h://127.0.0.1:1080http://127.0.0.1:1081重要提示:YouTube 必须使用住宅 IP 代理。 YouTube 明确封禁数据中心/云服务器 IP。住宅宽带 IP(例如中国香港家庭宽带)稳定可靠;而 VPS/云服务器 IP 极大概率被拦截。建议仅对 YouTube 相关域名启用代理路由。
Bilibili 字幕几乎全部由 AI 自动生成,且 必须登录后才能调用字幕接口。若未提供 Cookie,字幕 API 对绝大多数视频均返回空结果,此时技能将自动降级至 STT 或简介模式。
如何获取您的 Cookie:
SESSDATA 和 bili_jct 两个字段的值echo "SESSDATA=xxx;bili_jct=xxx" > ~/.bilibili_cookie && chmod 600 ~/.bilibili_cookie--cookie @~/.bilibili_cookie安全警告:
--cookie @filepath 而非将 Cookie 字符串直接写入命令行,原因如下:ps aux)~/.zsh_history、~/.bash_history)chmod 600 ~/.bilibili_cookie.gitignore响应语言需与用户当前对话语言保持一致。 不得硬编码默认语言。
此行为无需额外配置 — Claude 可自然适配当前对话语言。