Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BiliTextPicker · B 站字幕一键提取器

在哔哩哔哩视频页一键提取字幕 —— 复制到剪贴板 或 下载成 TXT,把视频变成可以喂给 AI 的纯文本。

Manifest V3 Chrome / Edge License No Server

界面预览

⬇️ 下载最新版 · 未上架应用商店,需要手动加载,步骤见 安装


这是什么

字幕是视频里信息密度最高的东西。把字幕抠出来交给大模型,可以顺手完成很多事:

  • 长视频摘要:一小时的技术分享,30 秒读完核心结论
  • 值不值得看:先看大纲再决定要不要花时间
  • 翻译 / 术语提取 / 知识卡片:把口播内容转成可检索、可复用的笔记
  • 检索与对比:多个视频的字幕放到一起找差异

问题是 B 站没有字幕导出的入口。这个扩展只做一件事,并且做干净:纯本地运行,不经过任何第三方服务器,拿到字幕后一键复制或下载。


功能

功能 说明
一键提取字幕 打开视频页点一下图标即可,字幕按时间轴列在面板里
复制到剪贴板 纯文本一行一句,直接粘给 ChatGPT / Claude / DeepSeek 就能总结
下载 TXT 自动命名为 视频标题_分集名.txt,文件名非法字符自动替换
多版本字幕切换 官方字幕、AI 自动生成字幕、翻译字幕在下拉框里自由切换
多分集支持 自动识别当前播放的分集,字幕不会张冠李戴
📚 合集批量下载 视频属于合集时,面板里多出一行合集入口(默认折叠),展开后可勾选视频/分P,一次性保存全部字幕
番剧 / 短链支持 番剧播放页、b23.tv 短链跳转后都能正常识别
🎚 音量增强(附加) 滚轮在播放器区域直接调音量,最高 500%,突破 B 站 100% 上限;↑ / ↓ 方向键同样可用
🎨 控制栏美化(附加) 把 B 站播放器控制栏的文字与图标改为亮白色,暗色背景下更清晰

附加的两个播放器功能是作者自用的顺带产物,默认常开,不影响字幕提取。


安装

方式一:下载 Release(推荐,最省事)

  1. 到 Releases 下载 BiliTextPicker-v1.6.7.zip 并解压
  2. 打开 chrome://extensions/(Edge 为 edge://extensions/),打开右上角的 开发者模式
  3. 点击 加载已解压的扩展程序,选择解压出来的 BiliTextPicker-v1.6.7 文件夹
  4. 打开任意 B 站视频页,点击工具栏里的扩展图标(建议在扩展页固定图标)

方式二:从仓库加载

下载本仓库(Code → Download ZIP,或 git clone)并解压,第 3 步选择仓库里的 dist 文件夹。

⚠️ 未上架应用商店。Windows 稳定版 Chrome 会拦截非商店来源的 .crx,所以只能通过「开发者模式加载」这一种方式安装,.zip 不能直接拖进浏览器。


使用

  1. 打开一个有字幕的 B 站视频(例如 https://www.bilibili.com/video/BVxxxxxxxxxx/)
  2. 点击扩展图标,面板会显示当前视频标题、分集名与字幕条数
  3. 需要的话在 字幕语言 下拉框里换一个版本
  4. 点击 复制字幕 或 下载字幕
  5. 粘贴给 AI,附上一句提示词即可

推荐的提示词模板:

以下是一个视频的字幕文本(按时间顺序,一行一句)。请:
1. 用 5 句话总结核心内容
2. 输出一份带层级的知识大纲
3. 列出 3 个最值得深入的点,并说明原因

字幕:
<在这里粘贴>

其他按钮

  • 刷新字幕:重新加载当前标签页并重新抓取,用于切换分集后字幕没跟着变的情况
  • 下载字幕:文件默认落在浏览器的下载目录,只含正文、不含时间码(时间码会白白占用 AI 的上下文)

合集批量下载

当前视频属于某个合集时(视频页右侧有「合集」列表),面板里会多出一行合集入口 —— 默认是折叠的,只占一行,点右侧「展开」才露出视频列表:

合集折叠状态

展开后:

  1. 勾选想要的视频。点整行任意位置就能勾选(不用去点那个小复选框),再点一次取消;多P视频右侧有「展开」,可以只挑其中几集;勾父级复选框等于勾上它的全部分P,半选状态说明只选了一部分
  2. 全选 一键勾完整部合集
  3. 选导出方式:
    • 单独 TXT(默认):每个视频一个 .txt,文件名以合集名 / 当前视频名打头,多P时按 合集名_序号_视频标题_P2_分P标题.txt 排开
    • 打包为 ZIP:全部字幕打成一个 zip
    • 合并 TXT:全部字幕拼进一个文件,每段用 ===== 文件名 ===== 分隔
  4. 选「单独 TXT」时,下面还有 统一存放 开关(默认关闭):
    • 不勾:文件直接落在浏览器下载目录,名字里带合集名,脱离目录也能看出归属
    • 勾上:收进一个以合集名命名的文件夹(期末速成课合集!/01_视频标题_P2_分P标题.txt),文件名里就不重复带合集名了
  5. 点 下载选中字幕,面板底部会实时显示抓取与保存进度

保存走扩展的下载接口,文件直接落进浏览器下载目录(不会一个个弹「另存为」)。抓取期间请保持面板打开,结果要回到面板里才能保存。


常见问题

Q:提示「该视频没有字幕」? A:B 站字幕有两个来源 —— UP 主手动上传的 CC 字幕,以及站方 AI 自动生成的字幕,两者都需要 UP 主或站方开启才存在。请先在网页播放器里确认能打开字幕面板。

Q:字幕列表是空的 / 只有一种语言? A:先登录 B 站账号再刷新页面。翻译字幕和部分 CC 字幕要求登录,且需要在播放器里把字幕打开过一次才会出现。

Q:提示「扩展未激活,请刷新页面」? A:常见于扩展刚加载、或页面早于扩展打开。刷新页面即可。

Q:多分集视频的字幕对不上? A:先确认地址栏里的分集参数与正在播放的分集一致,再点「刷新字幕」。

Q:复制按钮没反应? A:剪贴板需要页面焦点,先把鼠标移回面板再点;仍失败就直接「下载字幕」拿 TXT。

Q:音量增强会不会把声音弄坏? A:它接管的是播放器的音频输出,音量以浮层里的百分比为准。若同时装了其他改音频的扩展可能相互冲突。刷新页面即恢复默认。

Q:直播页面能用吗? A:能注入、能音量增强,但直播没有字幕数据,字幕功能不适用。

Q:面板里怎么没有合集区域? A:只有视频确实属于某个合集时才会出现。UP 主没建合集、或者单个投稿视频,都不会显示;如果页面右侧的合集列表还没加载出来,面板会稍等一会儿再检测一次。

Q:合集里点了十几个视频,下载的 ZIP 里却少几个文件? A:那些视频没有字幕(UP 主没开 CC 字幕、站方也没生成 AI 字幕),会被自动跳过,进度提示里会写明「N 个视频没有字幕」。其余字幕照常打包。

Q:一次勾太多会不会被 B 站限流? A:请求之间做了间隔,但整部合集上百集时仍可能有个别请求失败,失败的会在进度里标出来,重新勾选那几个再下一次即可。

Q:点了「下载选中字幕」,没看到文件? A:看面板底部的进度文字:

  • 停在「正在抓取 x/y」→ 还在抓(每个视频之间有间隔,整部合集可能要几十秒),期间别关面板;
  • 「抓取失败:…」→ 扩展和页面失联了,刷新页面重试;
  • 「保存失败」→ 浏览器拦了下载,检查 chrome://settings/downloads 里的下载位置是否可写。

文件默认落在浏览器的下载目录,每个 .txt 的名字都带合集名 / 当前视频名,从目录里挪走也能看出属于哪一批; 勾上 统一存放 则会收进一个以合集名命名的文件夹。


仓库说明

  • 本仓库是发布仓库:dist/ 里是可以直接加载运行的构建版本,不是开发源码
  • 作者保留开发源码,因此仓库内的脚本做过变量改名与压缩,可读性较低 —— 这会导致无法被独立审计,请自行评估后使用;扩展本身不上架商店,也不收集任何数据
  • 目录结构:
BiliTextPicker/
├── dist/                 ← 可直接加载的扩展(选这个文件夹)
│   ├── manifest.json
│   ├── background.js
│   ├── content.js
│   ├── popup.html / popup.js
│   └── assets/           ← 图标
├── docs/images/          ← 本页预览图
├── README.md
└── LICENSE

权限说明

权限 用途
activeTab / scripting 读取当前标签页标题、按需注入内容脚本
storage 预留扩展设置存储
cookies 部分字幕(尤其是 UP 主上传的 CC 字幕、翻译字幕)需要登录态才能读取
downloads 预留(当前下载不依赖该权限)
B 站域名访问 读取视频信息与字幕文件

扩展不收集、不上传、不存储任何用户数据;所有网络请求都直接发往 B 站官方接口,没有作者自己的服务器。


更新日志

v1.6.7(当前版本)

  • 修复「一次的点击下载,包含了我这次要下载的、和上次已经下载的」: 批量下载完成后勾选不会自动清空,接着勾下一批再点下载时,上一次那些会被一起再下发一遍 (文件名与上次完全相同,下载目录里还会多出 (1) 副本)。现在一次下载 = 消费掉当前勾选, 落盘后自动清空并提示「已清空勾选,可继续勾下一批」;整批都没存下来时保留勾选,方便直接重试
  • 修复「选集」面板的目录/文件名变成「视频选集」:B 站给「选集」面板的标题是个固定占位词 (不是真的合集名),现在会换成当前视频标题,例如 黑马程序员Java微服务课程(SpringCloud+RabbitMQ+Docker)/01_SpringCloud微服务课程导学.txt; 面板顶部显示的名称也一并改为视频标题

v1.6.6

  • 批量下载的每个 .txt 文件名统一以「合集名 / 当前视频名」打头, 例如 期末速成课合集!_01_《大学物理》3小时期末速成课!_P2_质点动力学.txt
  • 新增 统一存放 开关(默认关闭):勾上后把文件收进一个以合集名命名的文件夹, 不勾则直接落在下载目录(靠文件名里的合集名区分归属)
  • 导出方式文案精简为 单独 TXT / 打包为 ZIP / 合并 TXT
  • 修复选集面板的文件名:那里取回来的组标题其实是第一集的标题,旧逻辑会把它粘到后面每一集上; 现在只用分集自己的标题(某门课的选集_02_P3 第三讲.txt),分集名已带序号时也不再补一遍 _P3

v1.6.5

  • 修复「选中的视频都没有可用字幕」:B 站的「选集」面板把分P 的 cid 放在条目上, 旧版拿它当视频号去查接口,一律被拒(-400 请求错误),整批视频因此全部抓不到
  • 现在能区分两种面板:合集面板取 bvid、选集面板取 cid,并按 cid 精确抓取对应分集 (勾哪集抓哪集,不会再退化成把整个视频的上百个分P 全抓一遍)
  • 修复限流:短时间连打上百个分P 会被 B 站限流,现在连续失败会自动放慢节奏 (进度里显示「接口限流,已自动放慢」),恢复正常后自动提速
  • 区分「真没字幕」和「被风控」:只有接口确实没有字幕才提示没有字幕, 其余情况把真实原因(风控、请求错误等)直接显示在进度里
  • 抓取请求补上 wbi 签名,与播放器自身的请求特征保持一致
  • 只与页面主框架通信,避免页面里 iframe 的副本重复抓取、抢占响应

v1.6

  • 新增 合集批量下载:自动识别当前视频所属合集,面板里以折叠的一行呈现(点「展开」才显示列表)
  • 展开后可勾选视频与分P(多P视频支持单独挑集),点整行任意位置即可勾选,一次性抓取并保存全部字幕
  • 三种保存方式:每个单独 TXT(默认,收进以合集名命名的文件夹)/打包为 ZIP/合并为一个 TXT
  • 保存改用扩展下载接口,文件直接落进下载目录;带实时抓取与保存进度,无字幕的视频自动跳过
  • 修复:合集下载必定提示「抓取失败」、随后又被进度刷成「已完成」、实际不产出任何文件的问题 (批量抓取的响应被消息通道提前丢弃)
  • 抓取加固:某个接口失败时自动换备用接口并退避重试,降低触发 B 站风控的概率

v1.5

  • 基础版:字幕抓取、多语言切换、复制到剪贴板、下载 TXT
  • 多分集识别、短链与番剧页支持
  • 附加:滚轮音量增强(最高 500%)、播放器控制栏亮白配色

免责声明

  • 本项目仅供个人学习、研究与自用,请遵守哔哩哔哩用户协议及相关法律法规
  • 字幕内容的版权归原视频作者 / UP 主所有,请勿用于商业用途或二次分发
  • 项目通过官方公开接口读取数据,未做任何破解;接口若发生变更,功能可能失效
  • 使用本扩展产生的一切后果由使用者自行承担

License

MIT

About

哔哩哔哩字幕一键提取 Chrome 扩展|一键复制 / 下载字幕 TXT,把视频变成能喂给 AI 的纯文本

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors