@@ -12,17 +12,7 @@ source:
1212
1313## Description
1414
15- Bilibili视频分析器是一个自动化视频内容分析工具。提供B站视频URL后,系统会自动下载视频、提取关键帧、使用AI分析视频内容,并生成包含截图和时间戳的Markdown总结报告。
16-
17- ## Features
18-
19- - 🔗 ** URL解析** : 支持标准B站URL和短链接(b23.tv)
20- - 📥 ** 智能下载** : 自动下载视频,支持重试和进度显示
21- - 🎬 ** 帧提取** : 智能帧提取,支持场景变化检测
22- - 🤖 ** AI分析** : 多Claude Code实例并行分析
23- - 📝 ** 报告生成** : 生成结构化Markdown报告,包含目录和摘要
24- - 📊 ** 日志记录** : 完整的执行日志和错误追踪
25- - 💾 ** 断点续传** : 支持部分结果保存,失败后可恢复
15+ 自动化B站视频内容分析工具。提供视频URL后,系统自动下载视频、提取关键帧、AI分析内容,生成带截图和时间戳的Markdown报告。
2616
2717## Trigger
2818
@@ -32,331 +22,52 @@ Bilibili视频分析器是一个自动化视频内容分析工具。提供B站
3222
3323## Usage
3424
35- ### 基本用法
36-
37- ``` bash
38- # 进入脚本目录
39- cd skills/tools/bilibili-analyzer/scripts
40-
41- # 分析视频(最简单的用法)
42- python main.py " https://www.bilibili.com/video/BV1xx411c7mD"
43-
44- # 使用短链接
45- python main.py " https://b23.tv/xxxxx"
46- ```
47-
48- ### 自定义参数
49-
5025``` bash
51- # 自定义帧提取间隔(每60秒提取一帧)
52- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -i 60
26+ # 基本用法
27+ python scripts/ main.py " https://www.bilibili.com/video/BV1xx411c7mD"
5328
54- # 限制最大帧数为30帧
55- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -m 30
29+ # 自定义帧间隔和最大帧数
30+ python scripts/ main.py " https://www.bilibili.com/video/BV1xx411c7mD" -i 60 -m 30
5631
57- # 指定输出目录
58- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -o ./my-reports
32+ # 指定输出目录和分析焦点
33+ python scripts/ main.py " https://www.bilibili.com/video/BV1xx411c7mD" -o ./output -f text,faces
5934
60- # 指定分析焦点(只分析文字和人脸)
61- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -f text,faces
62-
63- # 调整并行worker数量
64- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -w 8
65-
66- # 禁用场景检测(只按固定间隔提取)
67- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" --no-scene-detection
68- ```
69-
70- ### 组合使用
71-
72- ``` bash
73- # 完整示例:60秒间隔,最多20帧,只分析文字,输出到指定目录
74- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" \
75- -i 60 \
76- -m 20 \
77- -f text \
78- -o ./video-analysis \
79- -w 4
80-
81- # 详细日志模式
82- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -v
83-
84- # 静默模式(只显示错误)
85- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -q
35+ # 短链接
36+ python scripts/main.py " https://b23.tv/xxxxx"
8637```
8738
8839## Parameters
8940
90- | 参数 | 短参数 | 说明 | 默认值 | 示例 |
91- | ------| --------| ------| --------| ------|
92- | ` url ` | - | B站视频URL(必需) | - | ` https://www.bilibili.com/video/BV1xx411c7mD ` |
93- | ` --interval ` | ` -i ` | 帧提取间隔(秒) | 30 | ` -i 60 ` |
94- | ` --max-frames ` | ` -m ` | 最大帧数 | 50 | ` -m 30 ` |
95- | ` --output ` | ` -o ` | 输出目录 | ./bilibili | ` -o ./output ` |
96- | ` --focus ` | ` -f ` | 分析焦点(逗号分隔) | text,objects,faces,actions,scene | ` -f text,faces ` |
97- | ` --workers ` | ` -w ` | 并行分析worker数 | 4 | ` -w 8 ` |
98- | ` --no-scene-detection ` | - | 禁用场景变化检测 | false | ` --no-scene-detection ` |
99- | ` --retries ` | - | 下载失败重试次数 | 3 | ` --retries 5 ` |
100- | ` --verbose ` | ` -v ` | 显示详细日志 | false | ` -v ` |
101- | ` --quiet ` | ` -q ` | 静默模式 | false | ` -q ` |
102- | ` --version ` | - | 显示版本信息 | - | ` --version ` |
103-
104- ### 分析焦点选项
105-
106- | 焦点 | 说明 |
107- | ------| ------|
108- | ` text ` | 识别画面中的文字内容 |
109- | ` objects ` | 识别画面中的物体 |
110- | ` faces ` | 识别人脸和人物 |
111- | ` actions ` | 识别动作和行为 |
112- | ` scene ` | 识别场景类型和环境 |
113-
114- ## Output Structure
115-
116- 分析完成后,输出目录结构如下:
117-
118- ```
119- ./bilibili/{video_title}/
120- ├── report.md # Markdown分析报告
121- ├── frames/ # 提取的关键帧图片
122- │ ├── frame_001_00-00-00.jpg
123- │ ├── frame_002_00-00-30.jpg
124- │ ├── frame_003_00-01-00.jpg
125- │ └── ...
126- ├── analysis.log # 执行日志
127- ├── checkpoints/ # 检查点数据(用于断点续传)
128- │ ├── frames.json
129- │ └── analyses.json
130- └── partial_report.json # 部分结果(如果分析中断)
131- ```
132-
133- ### 报告内容
134-
135- 生成的Markdown报告包含:
136-
137- 1 . ** 视频元数据** : 标题、作者、时长、播放量等
138- 2 . ** 执行摘要** : AI生成的视频内容概述
139- 3 . ** 目录** : 带锚点链接的章节导航
140- 4 . ** 时间线分析** : 按时间顺序的帧分析结果
141- - 帧截图(嵌入图片)
142- - 时间戳(HH:MM: SS 格式)
143- - 场景描述
144- - 识别的物体、文字、人物等
41+ | 参数 | 说明 | 默认值 |
42+ | ------| ------| --------|
43+ | ` url ` | B站视频URL(必需) | - |
44+ | ` -i, --interval ` | 帧提取间隔(秒) | 30 |
45+ | ` -m, --max-frames ` | 最大帧数 | 50 |
46+ | ` -o, --output ` | 输出目录 | ./bilibili |
47+ | ` -f, --focus ` | 分析焦点 | text,objects,faces,actions,scene |
48+ | ` -w, --workers ` | 并行worker数 | 4 |
14549
14650## Requirements
14751
148- ### System Dependencies
149-
150- #### FFmpeg(必需)
151-
152- FFmpeg用于从视频中提取关键帧,必须安装。
153-
154- ** Windows:**
155- ``` powershell
156- # 使用 Chocolatey
157- choco install ffmpeg
158-
159- # 或使用 Scoop
160- scoop install ffmpeg
161-
162- # 或手动下载
163- # 访问 https://ffmpeg.org/download.html 下载并添加到PATH
164- ```
165-
166- ** macOS:**
167- ``` bash
168- # 使用 Homebrew
169- brew install ffmpeg
170- ```
52+ - ** FFmpeg** : 帧提取必需
53+ - ** Python** : requests, yt-dlp
17154
172- ** Ubuntu/Debian:**
173- ``` bash
174- sudo apt update
175- sudo apt install ffmpeg
176- ```
55+ 详细安装说明见 [ references/installation.md] ( references/installation.md )
17756
178- ** CentOS/RHEL:**
179- ``` bash
180- sudo yum install epel-release
181- sudo yum install ffmpeg
182- ```
57+ ## References
18358
184- ** 验证安装:**
185- ``` bash
186- ffmpeg -version
187- ```
59+ - [ 安装指南] ( references/installation.md ) - 系统依赖和Python包安装
60+ - [ 常见问题] ( references/faq.md ) - FAQ和错误处理
18861
189- ### Python Dependencies
62+ ## Examples
19063
191- ``` bash
192- # 创建虚拟环境(推荐)
193- python -m venv venv
194- source venv/bin/activate # Linux/macOS
195- # 或
196- .\v env\S cripts\a ctivate # Windows
197-
198- # 安装依赖
199- pip install requests yt-dlp hypothesis pytest
200- ```
201-
202- ** 依赖说明:**
203-
204- | 包 | 版本 | 用途 |
205- | ---| ------| ------|
206- | ` requests ` | >=2.28.0 | HTTP请求,获取视频元数据 |
207- | ` yt-dlp ` | >=2023.0.0 | 视频下载 |
208- | ` hypothesis ` | >=6.0.0 | 属性测试(开发用) |
209- | ` pytest ` | >=7.0.0 | 单元测试(开发用) |
210-
211- ### 完整安装脚本
212-
213- ``` bash
214- # 一键安装(Linux/macOS)
215- #! /bin/bash
216- set -e
217-
218- # 安装FFmpeg
219- if ! command -v ffmpeg & > /dev/null; then
220- echo " Installing FFmpeg..."
221- if [[ " $OSTYPE " == " darwin" * ]]; then
222- brew install ffmpeg
223- else
224- sudo apt install -y ffmpeg
225- fi
226- fi
227-
228- # 安装Python依赖
229- pip install requests yt-dlp hypothesis pytest
230-
231- echo " Installation complete!"
232- ```
64+ - [ 基本使用示例] ( examples/basic-usage.md ) - 常用场景和命令示例
23365
23466## Tags
23567
236- ` bilibili ` , ` video-analysis ` , ` ai ` , ` frame-extraction ` , ` markdown ` , ` automation ` , ` yt-dlp ` , ` ffmpeg `
68+ ` bilibili ` , ` video-analysis ` , ` ai ` , ` frame-extraction ` , ` markdown `
23769
23870## Compatibility
23971
24072- Codex: ✅
24173- Claude Code: ✅
242-
243- ## FAQ
244-
245- ### 基础问题
246-
247- #### Q: 为什么需要FFmpeg?
248- A: FFmpeg是一个强大的多媒体处理工具,本工具使用它从视频中提取关键帧。没有FFmpeg,帧提取功能将无法工作。
249-
250- #### Q: 分析一个视频需要多长时间?
251- A: 取决于多个因素:
252- - 视频长度
253- - 帧提取间隔和最大帧数
254- - 网络速度(下载阶段)
255- - AI分析并行度
256-
257- 一般来说,10分钟视频(默认设置)约需5-10分钟完成分析。
258-
259- #### Q: 支持哪些视频格式?
260- A: 支持B站所有可播放的视频格式。系统使用yt-dlp下载,会自动选择最佳质量。
261-
262- ### 错误处理
263-
264- #### Q: 遇到"URL无效"错误怎么办?
265- A: 请确保URL格式正确:
266- - 标准格式: ` https://www.bilibili.com/video/BV1xx411c7mD `
267- - 短链接: ` https://b23.tv/xxxxx `
268- - 不支持番剧、直播等其他类型链接
269-
270- #### Q: 下载失败怎么办?
271- A: 可能的原因和解决方案:
272- 1 . ** 网络问题** : 检查网络连接,使用` --retries ` 增加重试次数
273- 2 . ** 视频不存在** : 确认视频未被删除或设为私有
274- 3 . ** 地区限制** : 某些视频可能有地区限制
275-
276- #### Q: FFmpeg报错怎么办?
277- A:
278- 1 . 确认FFmpeg已正确安装: ` ffmpeg -version `
279- 2 . 确认FFmpeg在系统PATH中
280- 3 . 尝试重新安装FFmpeg
281-
282- #### Q: AI分析失败怎么办?
283- A: 系统会自动重试失败的分析任务。如果仍然失败:
284- 1 . 检查Claude Code配置
285- 2 . 查看日志文件了解详细错误
286- 3 . 部分结果会保存到` partial_report.json `
287-
288- ### 高级用法
289-
290- #### Q: 如何只分析视频的特定部分?
291- A: 目前不支持指定时间范围,但可以通过调整参数间接实现:
292- - 增大` --interval ` 跳过更多内容
293- - 减小` --max-frames ` 限制分析帧数
294-
295- #### Q: 如何提高分析速度?
296- A:
297- 1 . 增加并行worker: ` -w 8 `
298- 2 . 减少帧数: ` -m 20 `
299- 3 . 增大间隔: ` -i 60 `
300- 4 . 禁用场景检测: ` --no-scene-detection `
301-
302- #### Q: 如何获取更详细的分析?
303- A:
304- 1 . 减小帧间隔: ` -i 10 `
305- 2 . 增加最大帧数: ` -m 100 `
306- 3 . 启用所有分析焦点: ` -f text,objects,faces,actions,scene `
307-
308- #### Q: 分析中断后如何恢复?
309- A: 系统会自动保存检查点。目前需要重新运行命令,未来版本将支持从检查点恢复。
310-
311- ### 输出相关
312-
313- #### Q: 报告中的图片路径是什么格式?
314- A: 使用相对路径,格式为` ./frames/frame_XXX_HH-MM-SS.jpg ` ,确保报告和frames目录在同一位置时图片可正常显示。
315-
316- #### Q: 如何自定义报告格式?
317- A: 目前不支持自定义模板,但可以修改` report_generator.py ` 中的模板。
318-
319- #### Q: 日志文件在哪里?
320- A: 日志文件` analysis.log ` 位于输出目录中,与` report.md ` 同级。
321-
322- ## Troubleshooting
323-
324- ### 常见错误代码
325-
326- | 错误 | 原因 | 解决方案 |
327- | -------------------------| ------------------| ------------------------|
328- | ` URLValidationError ` | URL格式不正确 | 使用正确的B站视频URL |
329- | ` MetadataFetchError ` | 无法获取视频信息 | 检查视频是否存在/私有 |
330- | ` DownloadError ` | 下载失败 | 检查网络,增加重试次数 |
331- | ` FFmpegError ` | FFmpeg问题 | 安装/重装FFmpeg |
332- | ` AnalysisError ` | AI分析失败 | 检查Claude Code配置 |
333- | ` ReportGenerationError ` | 报告生成失败 | 检查输出目录权限 |
334-
335- ### 调试模式
336-
337- 使用` -v ` 参数启用详细日志:
338-
339- ``` bash
340- python main.py " https://www.bilibili.com/video/BV1xx411c7mD" -v
341- ```
342-
343- 日志将显示每个步骤的详细信息,便于定位问题。
344-
345- ## Version History
346-
347- - ** v1.0.0** (2026-01-27)
348- - 初始版本
349- - 支持URL解析和验证
350- - 支持视频下载(带重试)
351- - 支持帧提取(带场景检测)
352- - 支持AI并行分析
353- - 支持Markdown报告生成
354- - 完整的日志和错误处理
355-
356- ## License
357-
358- 本工具使用Unlicense许可证,视频下载功能基于yt-dlp。
359-
360- ## Contributing
361-
362- 欢迎提交Issue和Pu
0 commit comments