Bilibili Video Summary

Extract and summarize Bilibili videos. Fetches subtitles or GPU-transcribed audio, danmaku (scrolling comments), video comments, and description — outputs structured JSON for AI agents to summarize. Triggers: Bilibili video summary, summarize this video, what does this video say, bilibili video, B站视频总结, BV号, bilibili.com, video content, video summary, extract video text, video transcript.

Audits

Pass

Install

openclaw skills install bilibili-video-summary

Bilibili Video Summary Tool

Extract full content from a Bilibili video — transcript/subtitles, danmaku, comments, and description — then use your own LLM capabilities to produce a deep summary. No external AI API required (no OpenAI / Gemini key needed).

Capabilities

Data SourceMethodPriority
CC SubtitlesBilibili APIFastest, used if available
Audio Transcriptionwhisper.cpp + Vulkan GPUAutomatic fallback when no subtitles
Video Descriptionyt-dlpAlways captured
Danmaku (scrolling comments)yt-dlpParsed, analyzed for frequent content
CommentsBilibili Comment APIHot-sorted, deduplicated, top liked extracted

Workflow

When you receive a Bilibili video link and are asked to summarize it, follow these steps:

Step 1: Extract all data

python bili-transcript.py "<video_url>"

The script automatically:

  1. Gets video title, uploader, duration, description
  2. Attempts Bilibili CC subtitles (fastest, used if available)
  3. Falls back to GPU transcription: download audio → convert to wav → whisper.cpp with Vulkan
  4. Downloads and analyzes danmaku (scrolling comments)
  5. Fetches video comments, sorted by likes

Output files are saved to ./bili-output/:

  • transcript.txt — full transcript/subtitle text
  • danmaku.json — danmaku data with statistics
  • comments.json — comment data with top-liked

The JSON output includes preview text, danmaku summary, and top comments.

Step 2: Read full transcript

The JSON preview truncates at 2000 characters. Read the full file:

cat ./bili-output/transcript.txt

Step 3: Read danmaku and comments

Review community response data:

cat ./bili-output/danmaku.json
cat ./bili-output/comments.json

Step 4: Compose your summary

Use your own LLM capabilities to produce a comprehensive summary. Suggested structure:

Video Overview — Title, uploader, duration, transcription source (subtitle / GPU). Key info from the description (project links, update notes, etc.).

Core Content — What the video is about. Fluent paragraph summary of the main narrative.

Key Points — Notable arguments, data points, or information worth highlighting.

Community Response (optional) — Reactions from danmaku and comments. Skip if content is insubstantial (spam, trolling, no valuable discussion).

  • Danmaku analysis: look for frequently repeated phrases (community memes/reactions), informative questions, technical discussions, controversy points
  • Comment analysis: look for top-liked opinions, creator interactions, user-reported issues, technical insights

Assessment (optional) — Content quality, information density, notable strengths or weaknesses.

Available Actions

# Video metadata only
python bili-transcript.py "<URL>" --action info

# CC subtitles only (if available)
python bili-transcript.py "<URL>" --action subtitle

# Force GPU transcription (skip subtitle check)
python bili-transcript.py "<URL>" --action transcribe

# Danmaku only
python bili-transcript.py "<URL>" --action danmaku

# Comments only
python bili-transcript.py "<URL>" --action comments

# Custom output directory
python bili-transcript.py "<URL>" --output ./my-output

Environment Variables

VariablePurpose
WHISPER_CPP_DIRPath to whisper.cpp directory (containing whisper-cli)
WHISPER_MODELPath to whisper model file (e.g., ggml-large-v3-turbo.bin)
BILI_OUTPUT_DIRDefault output directory (default: ./bili-output)

Performance Reference

Video LengthTotal TimeNotes
5 minutes~15sGPU transcription is fast
12 minutes~22sDownload + convert + transcribe
1 hour~2-3 minDepends on audio density
Danmaku/Comments~5-10sDepends on comment volume

Dependencies

  • Python packages: yt-dlp, av (PyAV)
  • Transcription engine: whisper.cpp with Vulkan support (optional, only needed if no CC subtitles)
  • Model: ggml-large-v3-turbo.bin (~1.6GB, download separately)
  • GPU: Any Vulkan-compatible GPU (NVIDIA, AMD, Intel) — auto-detected
  • No external AI API keys required

Limitations

  • Requires internet access to Bilibili
  • Some content requires login (paid courses, restricted videos) — may fail
  • Danmaku and comment APIs may be rate-limited
  • whisper.cpp does not support m4a; script auto-converts via PyAV
  • Very long videos (>2 hours) take significant transcription time; try --action subtitle first
  • Comments are fetched from the first 3 pages (~60 comments); may not cover very hot videos fully