Skip to content

About

一个纯 API + 下载方式的命令行工具。输入 B站合集、系列、课堂 链接或单个 BV 链接后,工具会自动提取字幕、必要时调用 ASR 转写,再调用大模型生成每个视频的 Markdown 学习笔记和课程综合报告。

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

B站网课自动学习笔记生成工具

一个纯 API + 下载方式的命令行工具。输入 B站合集、系列、课堂 ss 链接或单个 BV 链接后,工具会自动提取字幕、必要时调用 ASR 转写,再调用大模型生成每个视频的 Markdown 学习笔记和课程综合报告。

功能

  • 自动读取合集标题、视频 BV 号、标题、时长、cid。
  • 优先读取 B站 x/player/v2 返回的官方字幕。
  • 无官方字幕时支持 OpenAI Whisper 或阿里云百炼 Paraformer ASR。
  • 笔记生成支持 OpenAI 或 DeepSeek;DeepSeek 通过 OpenAI 兼容接口调用。
  • 可选 OCR:默认每 30 秒抽取一帧,对板书/PPT 文字进行识别,可用 --no-ocr 关闭。
  • 单个视频失败不会中断后续视频,错误写入 failed.log。
  • B站 API、LLM、ASR、下载调用都带指数退避重试。
  • B站 API 请求间隔至少 2 秒;CLI 保留 --concurrency 参数,但实际固定串行处理。

推荐组合

国内模型场景推荐:

DeepSeek:负责把转写文本整理成学习笔记
阿里云百炼 Paraformer:负责无字幕视频的语音转文字

也就是:

python main.py "B站URL" --llm-provider deepseek --asr-provider aliyun --no-ocr

环境要求

  • Python 3.10+
  • yt-dlp Python 包,用于下载音频
  • DeepSeek/OpenAI API Key 至少一个
  • 无字幕视频需要 OpenAI API Key 或阿里云百炼 DashScope API Key
  • B站 Cookie 可选,读取私有合集或付费课程时需要
  • OCR 可选,开启时需要额外安装 PaddleOCR

安装核心依赖:

pip install -r requirements.txt

如需 OCR:

pip install -r requirements-ocr.txt

如需 OpenAI Whisper ASR,还需要安装 ffmpeg 并加入 PATH。

配置密钥

可以复制 .env.example 作为参考,但不要提交真实密钥。

PowerShell 临时设置示例:

$env:DEEPSEEK_API_KEY="你的 DeepSeek Key"
$env:DASHSCOPE_API_KEY="你的阿里云百炼 Key"

$env:BILIBILI_SESSDATA="你的 SESSDATA"
$env:BILIBILI_BUVID3="你的 buvid3"
$env:BILIBILI_BILI_JCT="你的 bili_jct"

公开课程通常不需要 B站 Cookie;付费课程需要 Cookie 对应账号有购买权限。

使用

先低成本验证前 1 个视频:

python main.py "https://www.bilibili.com/video/BV..." --llm-provider deepseek --asr-provider aliyun --no-ocr --limit 1 --skip-summary

生成完整课程笔记:

python main.py "https://www.bilibili.com/video/BV..." --llm-provider deepseek --asr-provider aliyun --no-ocr

只处理有官方字幕的视频,使用 DeepSeek 生成笔记:

python main.py "https://space.bilibili.com/1234567/channel/collectiondetail?sid=12345" --llm-provider deepseek --asr-provider none --no-ocr

使用 OpenAI:

python main.py "https://www.bilibili.com/video/BV..." --llm-provider openai --asr-provider openai --no-ocr

指定输出目录、模型或 OCR 抽帧间隔:

python main.py "https://www.bilibili.com/cheese/play/ss12345" --output-dir notes --model deepseek-chat --ocr-interval 45

输出目录:

notes/
  课程名/
    01_视频标题.md
    02_视频标题.md
    FULL_SUMMARY.md
    failed.log

notes/ 已被 .gitignore 排除,不会默认提交到 GitHub。

配置文件

可编辑 config.yaml:

output_dir: notes
enable_ocr: true
ocr_interval_seconds: 30

llm_provider: auto
llm_temperature: 0.2
openai_model: gpt-4o-mini
deepseek_model: deepseek-chat
deepseek_base_url: https://api.deepseek.com

max_context_tokens: 8000
bilibili_request_interval_seconds: 2.0
bilibili_trust_env_proxy: false

asr:
  provider: auto
  model: whisper-1
  aliyun_model: paraformer-v2

支持的链接

  • 空间合集:https://space.bilibili.com/1234567/channel/collectiondetail?sid=12345
  • 空间列表:https://space.bilibili.com/1234567/lists/12345?type=season
  • 空间系列:https://space.bilibili.com/1234567/lists/12345?type=series
  • B站课堂:https://www.bilibili.com/cheese/play/ss12345
  • 单个视频或多分 P 视频:https://www.bilibili.com/video/BV...

项目结构

main.py                 CLI 入口
bilibili_client.py      B站 API、合集解析、节流和 Cookie 鉴权
subtitle_extractor.py   B站官方字幕提取
asr.py                  OpenAI Whisper ASR
aliyun_asr.py           阿里云百炼 Paraformer ASR
ocr.py                  可选 PaddleOCR 抽帧识别
note_generator.py       DeepSeek/OpenAI 笔记生成和综合报告
utils.py                配置、重试、文件名、时间戳等工具函数
config.yaml             默认配置

注意事项

  • DeepSeek、MiniMax 等文本模型不能替代 ASR;无官方字幕视频必须配置语音转文字服务。
  • 付费课程不会绕过权限限制。若接口返回未购买、无权限或 Cookie 失效,程序会给出提示。
  • ASR 会产生费用,建议先用 --limit 1 --skip-summary 验证流程。
  • OCR 依赖较重;只需要字幕/ASR 笔记时,建议使用 --no-ocr。
  • 不要把真实 API Key 写入 config.yaml、README 或代码文件。

About

一个纯 API + 下载方式的命令行工具。输入 B站合集、系列、课堂 链接或单个 BV 链接后,工具会自动提取字幕、必要时调用 ASR 转写,再调用大模型生成每个视频的 Markdown 学习笔记和课程综合报告。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages