bilibili-analyzer
npx skills add https://github.com/aidotnet/moyucode --skill bilibili-analyzer
Agent 安装分布
Skill 文档
Bilibili Video Analyzer
Description
Bç«è§é¢å 容åæå·¥å ·ãæä¾è§é¢URLåï¼èªå¨ä¸è½½è§é¢ãæè§£æå¸§å¾çï¼ç¶å使ç¨AIåæå å®¹ï¼æç»çæé«è´¨éçä¸é¢ææ¡£æå®ææç¨ã
æ ¸å¿ç¹ç¹:
- 䏿¯ç®åçæ¶é´çº¿è®°å½ï¼èæ¯éæ°ç»ç»æ´çæä¸ç¯å®æ´çææ¡£
- å®æç±»è§é¢ â çæå¯ç´æ¥ä½¿ç¨çæä½æç¨
- ç¥è¯ç±»è§é¢ â çæç»æåçä¸é¢ææ¡£
- æ¥å䏿å
¥å
³é®æªå¾ï¼ä½¿ç¨
æ ¼å¼
Source & Documentation
| å·¥å · | ç¨é | ææ¡£ |
|---|---|---|
| FFmpeg | è§é¢æå¸§ | å®ç½ / ææ¡£ |
| Bilibili API | è§é¢ä¸è½½ | APIææ¡£ |
Installation
1. å®è£ .NET 10 SDK
èæ¬ä½¿ç¨ .NET 10 åæä»¶æ§è¡åè½ï¼éè¦å®è£ .NET 10 SDKã
ä¸è½½å°å: https://dotnet.microsoft.com/download/dotnet/10.0
éªè¯å®è£ :
dotnet --version
2. å®è£ FFmpeg
Windows:
# Chocolatey
choco install ffmpeg
# æ Scoop
scoop install ffmpeg
# ææå¨ä¸è½½: https://ffmpeg.org/download.html
macOS:
brew install ffmpeg
Linux:
# Ubuntu/Debian
sudo apt install ffmpeg
# CentOS/RHEL
sudo yum install ffmpeg
éªè¯å®è£ :
ffmpeg -version
Trigger
/bilibili-analyzerå½ä»¤- ç¨æ·è¯·æ±åæBç«è§é¢
- ç¨æ·æä¾Bç«è§é¢é¾æ¥å¹¶è¦æ±åæ
Provided Script
æ¬ skill æä¾äº scripts/prepare.cs èæ¬ç¨äºä¸è½½è§é¢åæå帧å¾çã
èæ¬ä½ç½®: skills/tools/bilibili-analyzer/scripts/prepare.cs
è¿è¡æ¹å¼: ä½¿ç¨ .NET 10 åæä»¶æ§è¡åè½
ä½¿ç¨æ¹æ³
# åºæ¬ç¨æ³
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
åæ°è¯´æ
| åæ° | 说æ | é»è®¤å¼ |
|---|---|---|
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%ï¼çéå¤å¸§ï¼
- ä½¿ç¨ ffmpeg ç SSIM/PSNR ç®æ³è®¡ç®ç¸ä¼¼åº¦
- åªæ¯è¾ç¸é»å¸§ï¼ä¸ä¼è·¨å¸§æ¯è¾
- å»éåèªå¨éæ°ç¼å·ï¼frame_0001.jpg, frame_0002.jpg, …ï¼
- å¯éè¿
--similarity 0.85è°æ´éå¼ - å¯éè¿
--no-dedupç¦ç¨å»é
è¾åºç»æ
<è¾åºç®å½>/
âââ video.mp4 # ä¸è½½çè§é¢æä»¶
âââ images/ # 帧å¾çç®å½
âââ frame_0001.jpg
âââ frame_0002.jpg
âââ frame_0003.jpg
âââ ...
Workflow (Prompt)
ä½ æ¯ä¸ä¸ªè§é¢å 容åæå©æãå½ç¨æ·æä¾Bç«è§é¢é¾æ¥æ¶ï¼æä»¥ä¸æ¥éª¤æ§è¡ï¼
Step 1: ä¸è½½è§é¢å¹¶æå¸§
ä½¿ç¨æä¾çèæ¬ä¸è½½è§é¢å¹¶æè§£æå¸§å¾çï¼
dotnet run skills/tools/bilibili-analyzer/scripts/prepare.cs "<è§é¢URL>" -o <è¾åºç®å½>
注æäºé¡¹:
- çè§é¢ï¼<10åéï¼: 使ç¨é»è®¤
--fps 1 - ä¸çè§é¢ï¼10-30åéï¼: 使ç¨
--fps 0.5 - é¿è§é¢ï¼>30åéï¼: 使ç¨
--fps 0.2
Step 2: åæå¸§å¾ç
ä½¿ç¨ Task å·¥å
·åæ¹å¹¶è¡åæ images/ ç®å½ä¸çå¾çã
åæ¹çç¥ï¼æ ¹æ®æ»å¾çæ°å¨æè®¡ç®ï¼:
| æ»å¾çæ° | åæ¹æ°é | æ¯æ¹å¾çæ° |
|---|---|---|
| 1-30 | 1 æ¹ | å ¨é¨ |
| 31-60 | 2 æ¹ | 约 15-30 å¼ /æ¹ |
| 61-120 | 3 æ¹ | 约 20-40 å¼ /æ¹ |
| 121-200 | 4 æ¹ | 约 30-50 å¼ /æ¹ |
| 200+ | 5 æ¹ | å¹³ååé |
计ç®å ¬å¼:
æ»å¾çæ° <= 30: 1 æ¹
æ»å¾çæ° <= 60: 2 æ¹
æ»å¾çæ° <= 120: 3 æ¹
æ»å¾çæ° <= 200: 4 æ¹
æ»å¾çæ° > 200: 5 æ¹
æ¯æ¹å¾çæ° = æ»å¾çæ° / åæ¹æ°éï¼åä¸åæ´ï¼
示ä¾ï¼å设æ 85 å¼ å¾ç â å 3 æ¹
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å¼ ï¼
Task Prompt 模æ¿:
读åå¹¶åæ <è¾åºç®å½>/images/ ç®å½ä¸ç frame_0001.jpg å° frame_0020.jpgï¼å
±20å¼ å¾çï¼ã
ãéè¦è¦æ±ã
ä½ çååºå¿
é¡»æ¯è¿äºå¾çå
容çã宿´è¯¦ç»æ¥åãï¼ä¸è¦çç¥ä»»ä½ä¿¡æ¯ã
对æ¯å¼ å¾çï¼è¯¦ç»è®°å½ï¼
1. **帧å·**: frame_xxxx.jpg
2. **åºæ¯ç±»å**: 代ç ç¼è¾å¨/ç»ç«¯/æµè§å¨/PPT/对è¯/å
¶ä»
3. **çé¢å
容**:
- çªå£æ é¢ãèåãæé®çUIå
ç´
- å½åæå¼çæä»¶/页é¢
4. **æåå
容**:
- 宿´è½¬å½å±å¹ä¸çæææå
- 代ç å
容ï¼å®æ´å¤å¶ï¼ä¿çæ ¼å¼ï¼
- ç»ç«¯å½ä»¤åè¾åº
- 注éå说ææå
5. **æä½å¨ä½**:
- é¼ æ ä½ç½®ãç¹å»ç®æ
- æ£å¨è¿è¡çæä½
6. **å
³é®ä¿¡æ¯**:
- éè¦çé
置项
- å
³é®æ¥éª¤è¯´æ
- éè¯¯ä¿¡æ¯æè¦å
ãè¾åºæ ¼å¼ã
## frame_0001.jpg
- åºæ¯: [åºæ¯ç±»å]
- å
容: [è¯¦ç»æè¿°]
- æå/代ç :
[宿´çæåæä»£ç å 容]
- æä½: [æ£å¨è¿è¡çæä½]
- è¦ç¹: [å
³é®ä¿¡æ¯]
## frame_0002.jpg
...
ãæ³¨æã
- ä¸è¦çç¥ä»»ä½å¾ç
- 代ç åæåå¿
须宿´è½¬å½
- ä¿¡æ¯è¶è¯¦ç»è¶å¥½
åæè¦ç¹:
- 宿´è½¬å½æææåå代ç å 容
- è¯¦ç»æè¿°çé¢å ç´ åæä½æ¥éª¤
- è®°å½æ¯å¼ å¾ççå ³é®ä¿¡æ¯
- æ æ³¨éè¦çæªå¾å¸§å·ï¼å¦ frame_0042.jpgï¼
Step 3: çæææ¡£
æ ¹æ®è§é¢ç±»åï¼å°åæç»æéæ°ç»ç»æ´çæ è§é¢åæ.mdï¼
夿è§é¢ç±»å:
- å®æç±»: ç¼ç¨æç¨ã软件æä½ãé ç½®æ¼ç¤ºç
- ç¥è¯ç±»: æ¦å¿µè®²è§£ãåçåæãç»éªå享ç
ãå ³é®ãå¾çä¸å å®¹å¿ é¡»ä¸¥æ ¼å¯¹åº:
éè¯¯ç¤ºä¾ â:
### å®è£
Node.js
é¦å
ä¸è½½ Node.js...
 â å¾çå¯è½æ¯å
¶ä»å
容
æ£ç¡®ç¤ºä¾ â
:
### å®è£
Node.js
é¦å
ä¸è½½ Node.js...
 â å¾çç¡®å®æ¯ä¸è½½é¡µé¢
çæææ¡£çæ£ç¡®æµç¨:
-
å æ´çææ Task è¿åçåæç»æ
- æ±æ»ææå¸§çåæå 容
- 建ç«ãå¸§å· â å 容ãç对åºå ³ç³»
-
æä¸»é¢éæ°ç»ç»å 容ï¼ä¸æ¯ææ¶é´é¡ºåºï¼
- å°ç¸å ³å 容å½ç±»å°åä¸ç« è
- ç¡®å®æ¯ä¸ªç« èéè¦åªäºå¸§çä¿¡æ¯
-
æå ¥å¾çæ¶å¿ é¡»æ ¸å¯¹
- åªæå ¥ä¸å½åå å®¹ç´æ¥ç¸å ³çå¾ç
- å¾çæè¿°è¦åç¡®åæ å¾çå®é å 容
- ä½¿ç¨æ ¼å¼:

-
代ç å¿ é¡»æ¥èªå¾çä¸çå®é 代ç
- ä¸è¦èªå·±ç¼é 代ç
- 代ç åæ æ³¨æ¥æº:
<!-- æ¥èª frame_0025 -->
éè¦åå:
- å¾æå¯¹åº – æ¯å¼ å¾çå¿ é¡»ä¸å ¶ä¸ä¸æå 容å¹é
- ä¸è¦æ¶é´çº¿æµæ°´è´¦ – éæ°ç»ç»å 容ï¼ååæç« 䏿 ·
- ç»ææ¸ æ° – æç« èåååé»è¾é¡ºåº
- 代ç çå® – åªä½¿ç¨å¾çä¸åºç°ç代ç ï¼ä¸è¦ç¼é
- ç¬ç«å¯è¯» – ä¸çè§é¢ä¹è½å®å ¨çè§£
Output Format
宿æç¨ç±»
# {æç¨ä¸»é¢}
## ç®ä»
{æç¨ç®æ }
{åç½®æ¡ä»¶åè¦æ±}
## ç¯å¢åå¤
{éè¦å®è£
ç软件}
{é
ç½®è¦æ±}
## æä½æ¥éª¤
### 1. {æ¥éª¤æ é¢}
{详ç»è¯´æï¼å
容å¿
é¡»ä¸ä¸æ¹å¾ç对åº}

<!-- ä»£ç æ¥èª frame_xxxx -->
```代ç å```
### 2. {æ¥éª¤æ é¢}
{详ç»è¯´æ}

...
## 宿´ä»£ç
<!-- æ±æ»èª frame_xxxx, frame_xxxx, frame_xxxx -->
{æ±æ»ææä»£ç çæ®µï¼æ æ³¨æ¥æºå¸§å·}
## 常è§é®é¢
{å¯è½éå°çé®é¢åè§£å³æ¹æ¡}
## æ»ç»
{æ ¸å¿è¦ç¹å顾}
{延伸å¦ä¹ 建议}
ç¥è¯ææ¡£ç±»
# {主é¢}
## æ¦è¿°
{主é¢èæ¯ä»ç»}
{为ä»ä¹éè¦}
## {ç« è1æ é¢}
{å
容ï¼å¿
é¡»ä¸é
å¾å¯¹åº}

## {ç« è2æ é¢}
{å
容}

## æ ¸å¿è¦ç¹
- è¦ç¹1
- è¦ç¹2
- è¦ç¹3
## 延伸é
读
{ç¸å
³èµæºå建议}
å¾çæå ¥è§è
| è§å | 说æ |
|---|---|
| 帧å·å¿ é¡»æ æ³¨ |  |
| æè¿°å¿ é¡»åç¡® | æè¿°å¾ççå®é å 容ï¼ä¸æ¯ææå 容 |
| å å®¹å¿ é¡»å¹é | å¾ç䏿¹/䏿¹çæåå¿ é¡»ä¸å¾çå 容ç¸å ³ |
| ä»£ç æ æ³¨æ¥æº | <!-- ä»£ç æ¥èª frame_0025 --> |
| ä¸è¦ä¹±æå¾ | 没æåéçå¾å°±ä¸æï¼ä¸è¦å¼ºè¡é å¾ |
API Reference
Bilibili API
èæ¬ä½¿ç¨ Bilibili 宿¹ API ä¸è½½è§é¢ï¼
# è·åè§é¢ä¿¡æ¯
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
API ææ¡£: https://github.com/SocialSisterYi/bilibili-API-collect
FFmpeg æå¸§å½ä»¤
# æ¯ç§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
æ´å¤é项: https://ffmpeg.org/ffmpeg.html
Examples
示ä¾1: åæç¼ç¨æç¨
# 1. ä¸è½½å¹¶æå¸§
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./react-tutorial
# 2. åæå¾çï¼ä½¿ç¨ Task å·¥å
·ï¼
# 3. çæ react-tutorial/è§é¢åæ.md
示ä¾2: åæé¿è§é¢
# éä½å¸§çï¼åå°å¾çæ°é
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./long-video --fps 0.2
示ä¾3: åªä¸è½½è§é¢
dotnet run scripts/prepare.cs "https://www.bilibili.com/video/BV1xx411c7mD" -o ./output --video-only
Quality Checklist
çæææ¡£åï¼éé¡¹æ£æ¥ä»¥ä¸è¦æ±ï¼
å 容质é
- å 容鿰ç»ç»ï¼ä¸æ¯æ¶é´çº¿æµæ°´è´¦
- ç« èç»ææ¸ æ°ï¼æé»è¾é¡ºåº
- ä¸çè§é¢ä¹è½çè§£å ¨é¨å 容
- å å«ç¯å¢åå¤/åç½®æ¡ä»¶è¯´æ
- å 嫿»ç»åæ ¸å¿è¦ç¹
徿坹åºï¼éè¦ï¼ï¼
- æ¯å¼ å¾ç齿 注äºå¸§å·:
 - å¾çæè¿°åç¡®åæ å¾çå®é å 容
- å¾çä¸ä¸æçæåä¸å¾çå å®¹ç´æ¥ç¸å ³
- 没æéææå ¥ä¸ç¸å ³çå¾ç
- 代ç åæ æ³¨äºæ¥æºå¸§å·:
<!-- æ¥èª frame_xxxx -->
代ç è´¨é
- ä»£ç æ¥èªå¾çä¸çå®é 代ç ï¼ä¸æ¯ç¼é ç
- 代ç çæ®µå®æ´ï¼å¯ç´æ¥å¤å¶ä½¿ç¨
- 宿´ä»£ç ç« èæ±æ»äºææä»£ç å¹¶æ æ³¨æ¥æº
Tags
bilibili, video-analysis, ai, frame-extraction, markdown, tutorial, ffmpeg, dotnet
Compatibility
- Codex: Yes
- Claude Code: Yes