1. 为什么需要本地提取B站AI字幕每次在B站看视频想保存字幕时你是不是也遇到过这样的尴尬要么得安装来路不明的浏览器插件要么得把视频链接丢给第三方网站处理。这两种方式都存在明显痛点——插件可能偷偷收集你的浏览数据而云端服务又无法保证字幕内容的隐私安全。我最近做技术调研时就深有体会。当时需要批量分析上百个科普视频的字幕文本试了七八个插件不是突然失效就是要求过多权限有个在线转换工具甚至把我上传的JSON文件缓存到了他们的服务器。这让我意识到对于开发者或数据敏感型用户来说掌握一套完全本地化的字幕提取方案有多重要。B站其实早就提供了AI生成字幕的接口只是没开放下载按钮。这些字幕以JSON格式传输包含精确的时间轴和文本内容。通过开发者工具我们能直接拿到原始数据再配合本地工具解析就能实现零隐私风险的字幕提取。整个过程就像自己从果园摘水果既新鲜又不用担心中间商做手脚。2. 五分钟获取字幕原始数据2.1 定位AI字幕请求打开任意带AI字幕的B站视频认准播放器右下角的AI小图标按下F12召唤开发者工具。切换到Network面板后在筛选框输入subtitle快速定位字幕请求。这里有个实用技巧先清空现有请求记录点击垃圾桶图标再点击AI字幕按钮这样能精准捕获到字幕接口的请求。我实测发现最新版的接口URL通常包含ai_subtitle关键词响应内容形如{ body: [ { content: 大家好我是科技猿, from: 1.23, to: 3.45 } ] }如果找不到目标请求试试勾选Preserve log选项或者刷新页面后立即点击AI字幕按钮。有时候接口会被折叠在xhr或fetch分类下这时候取消筛选直接翻看最新请求反而更快。2.2 保存JSON数据找到目标请求后右键选择Copy response直接复制完整JSON或者在请求上右键Save as...保存到本地。我建议同时保存两份一份原始JSON备用一份用文本编辑器去掉元数据只保留body部分。这样后续处理时能减少干扰数据特别是当需要批量处理多个视频字幕时。遇到过接口返回乱码的情况别急这通常是编码问题。尝试在开发者工具的Response面板顶部切换编码格式从UTF-8到GBK轮流测试。有次我遇到个老视频的字幕显示为问号切到GB18030编码立刻正常了。3. CyberChef瑞士军刀级数据处理3.1 基础正则提取法把JSON数据粘贴到CyberChef的输入区添加Regular expression操作。假设我们要提取所有content字段的内容可以用这个经过验证的正则content:([^])设置输出格式为List capture groups就能立即看到所有匹配的字幕文本。这里有个避坑经验B站的AI字幕有时会在文本里包含转义引号如\直接正则匹配会提前截断。这时候需要把表达式改成content:((?:\\|[^]))才能完整捕获。我经常用这个配方处理单个视频字幕JSON Beautify整理格式Regular expression提取文本Remove whitespace清理多余空行Merge把所有行连成段落3.2 无正则的JSON解析技巧更优雅的方式是使用CyberChef的JPath expression功能。添加这个操作后输入查询语句$.body[*].content这行代码的意思是从根对象开始找到body数组里的每个元素的content字段。相比正则提取这种方法有三大优势完全规避转义字符问题可以同时提取时间轴修改为$.body[*].[from,to,content]输出结果自带结构化方便后续处理有次我需要分析字幕的时间分布就用JPath提取了所有时间戳再导出到Excel生成分布直方图。这种灵活度是浏览器插件永远无法提供的。4. 进阶技巧与自动化方案4.1 批量处理脚本当需要处理整个系列视频时可以写个简单的Python脚本自动化流程import json import os def extract_subtitles(json_folder): for filename in os.listdir(json_folder): if filename.endswith(.json): with open(f{json_folder}/{filename}) as f: data json.load(f) with open(f{filename[:-5]}.txt, w) as out: for line in data[body]: out.write(f{line[content]}\n)这个脚本会遍历指定文件夹下的所有JSON文件把字幕内容提取为同名的txt文件。我在处理科技区UP主的教程合集时用这个脚本半小时就整理出了20万字的教学文本库。4.2 时间轴保留方案有些场景需要保留时间码比如制作双语字幕可以用这个改良版CyberChef配方JSON BeautifyJPath expression输入$.body[*].[from,content]Merge合并数组Find/Replace把逗号换成制表符最终会得到类似这样的TSV格式1.23 大家好我是科技猿 3.45 今天我们来聊聊大模型导入字幕编辑软件时选择Tab分隔文本就能自动识别时间轴。实测比手工整理效率提升至少十倍特别是处理两小时以上的长视频时。5. 常见问题解决方案乱码问题除了编码格式外还可能是因为B站接口返回了Unicode转义序列如\u4f60\u597d。这时候在CyberChef里添加Decode text操作选择Unicode Escape Sequence即可解码成中文。分段异常经常发生在口语化视频中AI会把长句子拆成不合理的短句。我的应对策略是用Find/Replace把所有句号替换为特殊标记如|||处理完再替换回来。对于无标点字幕则添加Text processing操作按字数重新分段。最近发现部分视频的JSON结构变成了嵌套格式这时候需要调整JPath表达式为$..segments[*].content。这种变化提醒我们永远先检查JSON结构再设计处理流程可以先用JSON可视化功能快速浏览整体架构。
B站AI字幕高效提取:无需插件的JSON解析实战
发布时间:2026/6/2 7:16:33
1. 为什么需要本地提取B站AI字幕每次在B站看视频想保存字幕时你是不是也遇到过这样的尴尬要么得安装来路不明的浏览器插件要么得把视频链接丢给第三方网站处理。这两种方式都存在明显痛点——插件可能偷偷收集你的浏览数据而云端服务又无法保证字幕内容的隐私安全。我最近做技术调研时就深有体会。当时需要批量分析上百个科普视频的字幕文本试了七八个插件不是突然失效就是要求过多权限有个在线转换工具甚至把我上传的JSON文件缓存到了他们的服务器。这让我意识到对于开发者或数据敏感型用户来说掌握一套完全本地化的字幕提取方案有多重要。B站其实早就提供了AI生成字幕的接口只是没开放下载按钮。这些字幕以JSON格式传输包含精确的时间轴和文本内容。通过开发者工具我们能直接拿到原始数据再配合本地工具解析就能实现零隐私风险的字幕提取。整个过程就像自己从果园摘水果既新鲜又不用担心中间商做手脚。2. 五分钟获取字幕原始数据2.1 定位AI字幕请求打开任意带AI字幕的B站视频认准播放器右下角的AI小图标按下F12召唤开发者工具。切换到Network面板后在筛选框输入subtitle快速定位字幕请求。这里有个实用技巧先清空现有请求记录点击垃圾桶图标再点击AI字幕按钮这样能精准捕获到字幕接口的请求。我实测发现最新版的接口URL通常包含ai_subtitle关键词响应内容形如{ body: [ { content: 大家好我是科技猿, from: 1.23, to: 3.45 } ] }如果找不到目标请求试试勾选Preserve log选项或者刷新页面后立即点击AI字幕按钮。有时候接口会被折叠在xhr或fetch分类下这时候取消筛选直接翻看最新请求反而更快。2.2 保存JSON数据找到目标请求后右键选择Copy response直接复制完整JSON或者在请求上右键Save as...保存到本地。我建议同时保存两份一份原始JSON备用一份用文本编辑器去掉元数据只保留body部分。这样后续处理时能减少干扰数据特别是当需要批量处理多个视频字幕时。遇到过接口返回乱码的情况别急这通常是编码问题。尝试在开发者工具的Response面板顶部切换编码格式从UTF-8到GBK轮流测试。有次我遇到个老视频的字幕显示为问号切到GB18030编码立刻正常了。3. CyberChef瑞士军刀级数据处理3.1 基础正则提取法把JSON数据粘贴到CyberChef的输入区添加Regular expression操作。假设我们要提取所有content字段的内容可以用这个经过验证的正则content:([^])设置输出格式为List capture groups就能立即看到所有匹配的字幕文本。这里有个避坑经验B站的AI字幕有时会在文本里包含转义引号如\直接正则匹配会提前截断。这时候需要把表达式改成content:((?:\\|[^]))才能完整捕获。我经常用这个配方处理单个视频字幕JSON Beautify整理格式Regular expression提取文本Remove whitespace清理多余空行Merge把所有行连成段落3.2 无正则的JSON解析技巧更优雅的方式是使用CyberChef的JPath expression功能。添加这个操作后输入查询语句$.body[*].content这行代码的意思是从根对象开始找到body数组里的每个元素的content字段。相比正则提取这种方法有三大优势完全规避转义字符问题可以同时提取时间轴修改为$.body[*].[from,to,content]输出结果自带结构化方便后续处理有次我需要分析字幕的时间分布就用JPath提取了所有时间戳再导出到Excel生成分布直方图。这种灵活度是浏览器插件永远无法提供的。4. 进阶技巧与自动化方案4.1 批量处理脚本当需要处理整个系列视频时可以写个简单的Python脚本自动化流程import json import os def extract_subtitles(json_folder): for filename in os.listdir(json_folder): if filename.endswith(.json): with open(f{json_folder}/{filename}) as f: data json.load(f) with open(f{filename[:-5]}.txt, w) as out: for line in data[body]: out.write(f{line[content]}\n)这个脚本会遍历指定文件夹下的所有JSON文件把字幕内容提取为同名的txt文件。我在处理科技区UP主的教程合集时用这个脚本半小时就整理出了20万字的教学文本库。4.2 时间轴保留方案有些场景需要保留时间码比如制作双语字幕可以用这个改良版CyberChef配方JSON BeautifyJPath expression输入$.body[*].[from,content]Merge合并数组Find/Replace把逗号换成制表符最终会得到类似这样的TSV格式1.23 大家好我是科技猿 3.45 今天我们来聊聊大模型导入字幕编辑软件时选择Tab分隔文本就能自动识别时间轴。实测比手工整理效率提升至少十倍特别是处理两小时以上的长视频时。5. 常见问题解决方案乱码问题除了编码格式外还可能是因为B站接口返回了Unicode转义序列如\u4f60\u597d。这时候在CyberChef里添加Decode text操作选择Unicode Escape Sequence即可解码成中文。分段异常经常发生在口语化视频中AI会把长句子拆成不合理的短句。我的应对策略是用Find/Replace把所有句号替换为特殊标记如|||处理完再替换回来。对于无标点字幕则添加Text processing操作按字数重新分段。最近发现部分视频的JSON结构变成了嵌套格式这时候需要调整JPath表达式为$..segments[*].content。这种变化提醒我们永远先检查JSON结构再设计处理流程可以先用JSON可视化功能快速浏览整体架构。