npx skills add ...
npx skills add aidotnet/moyucode --skill bilibili-analyzer
自动分析B站视频内容,下载视频并拆解成帧图片,使用AI分析并生成详细的专题文档或实操教程。
npx skills add aidotnet/moyucode --skill bilibili-analyzer
B站视频内容分析工具。提供视频URL后,自动下载视频、拆解成帧图片,然后使用AI分析内容,最终生成高质量的专题文档或实操教程。
核心特点:
 格式脚本使用 .NET 10 单文件执行功能,需要安装 .NET 10 SDK。
下载地址: https://dotnet.microsoft.com/download/dotnet/10.0
验证安装:
Windows:
macOS:
Linux:
验证安装:
/bilibili-analyzer 命令本 skill 提供了 scripts/prepare.cs 脚本用于下载视频和提取帧图片。
脚本位置: skills/tools/bilibili-analyzer/scripts/prepare.cs
运行方式: 使用 .NET 10 单文件执行功能
| 参数 | 说明 | 默认值 |
|---|---|---|
url | B站视频URL(必需) | - |
-o, --output | 输出目录 | 当前目录 |
--fps | 每秒提取帧数 | 1.0 |
--similarity | 相似度阈值(0-1),超过此值的相邻帧会被去重 | 0.80 |
--no-dedup | 禁用相似帧去重 | false |
--video-only | 只下载视频,不提取帧 | false |
--frames-only | 只提取帧(需已有video.mp4) | false |
脚本会自动对相邻帧进行相似度检测,去除相似度超过阈值(默认80%)的重复帧:
--similarity 0.85 调整阈值--no-dedup 禁用去重你是一个视频内容分析助手。当用户提供B站视频链接时,按以下步骤执行:
使用提供的脚本下载视频并拆解成帧图片:
注意事项:
--fps 1--fps 0.5--fps 0.2使用 Task 工具分批并行分析 images/ 目录中的图片。
分批策略(根据总图片数动态计算):
| 总图片数 | 分批数量 | 每批图片数 |
|---|---|---|
| 1-30 | 1 批 | 全部 |
| 31-60 | 2 批 | 约 15-30 张/批 |
| 61-120 | 3 批 | 约 20-40 张/批 |
| 121-200 | 4 批 | 约 30-50 张/批 |
| 200+ | 5 批 | 平均分配 |
计算公式:
示例:假设有 85 张图片 → 分 3 批
Task Prompt 模板:
[完整的文字或代码内容]
分析要点:
根据视频类型,将分析结果重新组织整理成 视频分析.md:
判断视频类型:
【关键】图片与内容必须严格对应:
生成文档的正确流程:
先整理所有 Task 返回的分析结果
按主题重新组织内容(不是按时间顺序)
插入图片时必须核对
代码必须来自图片中的实际代码
<!-- 来自 frame_0025 -->重要原则:
| 规则 | 说明 |
|---|---|
| 帧号必须标注 |  |
| 描述必须准确 | 描述图片的实际内容,不是期望内容 |
| 内容必须匹配 | 图片上方/下方的文字必须与图片内容相关 |
| 代码标注来源 | <!-- 代码来自 frame_0025 --> |
| 不要乱插图 | 没有合适的图就不插,不要强行配图 |
脚本使用 Bilibili 官方 API 下载视频:
API 文档: https://github.com/SocialSisterYi/bilibili-API-collect
更多选项: https://ffmpeg.org/ffmpeg.html
生成文档前,逐项检查以下要求:
<!-- 来自 frame_xxxx -->bilibili, video-analysis, ai, frame-extraction, markdown, tutorial, ffmpeg, dotnet
# Ubuntu/Debian
sudo apt install ffmpeg
# CentOS/RHEL
sudo yum install ffmpegffmpeg -version# 基本用法
dotnet run scripts/prepare.cs "<视频URL>" -o <输出目录>
# 示例
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./output
# 长视频(降低帧率)
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./output --fps 0.5<输出目录>/
├── video.mp4 # 下载的视频文件
└── images/ # 帧图片目录
├── frame_0001.jpg
├── frame_0002.jpg
├── frame_0003.jpg
└── ...dotnet run skills/tools/bilibili-analyzer/scripts/prepare.cs "<视频URL>" -o <输出目录>总图片数 <= 30: 1 批
总图片数 <= 60: 2 批
总图片数 <= 120: 3 批
总图片数 <= 200: 4 批
总图片数 > 200: 5 批
每批图片数 = 总图片数 / 分批数量(向上取整)Task 1: 分析 frame_0001.jpg ~ frame_0029.jpg(29张)
Task 2: 分析 frame_0030.jpg ~ frame_0058.jpg(29张)
Task 3: 分析 frame_0059.jpg ~ frame_0085.jpg(27张)错误示例 ❌:
### 安装 Node.js
首先下载 Node.js...
 ← 图片可能是其他内容
正确示例 ✅:
### 安装 Node.js
首先下载 Node.js...
 ← 图片确实是下载页面# {主题}
## 概述
{主题背景介绍}
{为什么重要}
## {章节1标题}
{内容,必须与配图对应}

## {章节2标题}
{内容}

## 核心要点
- 要点1
- 要点2
- 要点3
## 延伸阅读
{相关资源和建议}# 获取视频信息
GET https://api.bilibili.com/x/web-interface/view?bvid=BV1xx411c7mD
# 获取播放地址
GET https://api.bilibili.com/x/player/playurl?bvid=BV1xx411c7mD&cid={cid}&qn=80&fnval=1# 每秒1帧
ffmpeg -i video.mp4 -vf "fps=1" -q:v 2 images/frame_%04d.jpg
# 每秒0.5帧(每2秒1帧)
ffmpeg -i video.mp4 -vf "fps=0.5" -q:v 2 images/frame_%04d.jpg
# 指定时间范围
ffmpeg -i video.mp4 -ss 00:01:00 -to 00:05:00 -vf "fps=1" -q:v 2 images/frame_%04d.jpg
# 提取关键帧(场景变化)
ffmpeg -i video.mp4 -vf "select='gt(scene,0.3)'" -vsync vfr -q:v 2 images/frame_%04d.jpg# 1. 下载并拆帧
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./react-tutorial
# 2. 分析图片(使用 Task 工具)
# 3. 生成 react-tutorial/视频分析.md# 降低帧率,减少图片数量
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./long-video --fps 0.2dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./output --video-only