Bilibili Digest

Other

Extract, structure, and summarize Bilibili video/column content into structured notes with timestamps, key points, and chapter indexes.

Install

openclaw skills install bilibili-digest

Bilibili Digest Skill

Extract Bilibili (B站) video/column content and transform it into structured, note-ready Markdown with AI-generated summaries, timestamped key points, chapter segmentation, and cross-video integration.

How It Works

This skill operates in a pipeline:

  1. Parse – Extract BV/column ID from any Bilibili URL (including b23.tv short links)
  2. Fetch – Retrieve video metadata (title, author, duration, views), CC subtitles, and danmaku via Bilibili public APIs
  3. Segment – Auto-detect video chapters from timestamps or subtitle gaps
  4. Summarize – Call LLM (DeepSeek) to generate structured summary, key points, resources, and action steps
  5. Export – Output as Markdown (default), Obsidian, JSON, or prepare for Notion/Feishu

Fallback Strategy for Missing Subtitles

If a video has no CC subtitles, the skill degrades gracefully:

  • Generate a summary from title + description + danmaku highlights
  • Prompt the user to paste their own notes as enrichment

API Rate Limiting

  • Minimum 1-second interval between Bilibili API calls
  • Exponential backoff retry (max 3 attempts) on 429 / timeout
  • Local cache (24h TTL) at ~/.openclaw/data/bilibili-digest/cache/

Usage

clawhub run bilibili-digest --url <bilibili-url> [options]

Options

OptionTypeDefaultDescription
--urlstringrequiredSingle Bilibili URL
--urlsjson-arrayMultiple URLs for batch processing
--summary-modeenumdetailedminimal, overview, detailed, mindmap
--include-transcriptboolfalseInclude full transcript text
--include-danmakuboolfalseInclude danmaku sentiment analysis
--export-formatenummarkdownmarkdown, json, obsidian, notion, feishu
--output-dirstring./bilibili-notes/Output directory
--cross-video-mergeboolfalseMerge insights across multiple videos
--languageenumzh-CNzh-CN, en-US

Sample Prompts

1. Extract a single video into structured notes (most common)

clawhub run bilibili-digest --url "https://www.bilibili.com/video/BV1xx411c7mD"
# → Structured Markdown with title, author, key points (with timestamps), chapters, resources

2. Batch process a tutorial series with cross-video merge

clawhub run bilibili-digest \
  --urls '["https://www.bilibili.com/video/BV1xx01","https://www.bilibili.com/video/BV1xx02"]' \
  --cross-video-merge
# → Combined knowledge tree across multiple videos

3. Quick minimal summary for social sharing

clawhub run bilibili-digest --url "https://www.bilibili.com/video/BV1xx411c7mD" \
  --summary-mode minimal
# → One-liner + 3-5 core bullet points

4. Export in Obsidian format with full transcript

clawhub run bilibili-digest --url "https://www.bilibili.com/video/BV1xx411c7mD" \
  --summary-mode detailed --export-format obsidian --include-transcript
# → Obsidian-compatible note with WikiLinks, tags, and YAML frontmatter

5. Mindmap summary for quick review

clawhub run bilibili-digest --url "https://www.bilibili.com/video/BV1xx411c7mD" \
  --summary-mode mindmap
# → Hierarchical mindmap with main topics, subtopics, and key connections,
#   ideal for sharing or importing into mind-mapping tools (XMind, etc.)

First-Success Path

Step 1: Install → clawhub install bilibili-digest
Step 2: Run → clawhub run bilibili-digest --url "https://www.bilibili.com/video/BV1xx411c7mD"
Step 3: Receive → Structured Markdown note (<30 seconds)
Step 4: Copy to note-taking app → Value achieved

Core Scripts

The scripts/ directory contains Python modules:

FilePurpose
parser.pyExtract BV/CV IDs and expand b23.tv short links
api.pyBilibili API client with rate limiting and retry
subtitle.pyCC subtitle extraction and cleanup
danmaku.pyDanmaku density detection and sentiment grouping
segmenter.pyChapter detection from subtitle gaps and transition words
summarizer.pyLLM-based structured summary generation
exporter.pyMarkdown / Obsidian / JSON / Notion / Feishu export
cross_merge.pyCross-video knowledge merging
__init__.pyPackage init