Bili Summary
by @lava-chen
Download Bilibili videos, extract or transcribe subtitles, and generate AI-powered detailed summaries using Gemini 2.5 Flash.
clawhub install bili-summaryð About This Skill
name: bili-summary description: "Bilibili video download, subtitle extraction, and AI summarization tool. Supports video info, audio download, Whisper transcription, and Gemini-powered detailed summaries. Use when: user asks to download/summarize Bç« video, extract subtitles, or transcribe bilibili video." metadata:{"openclaw":{"emoji": "ðº","requires": { "bins": ["yt-dlp", "python"] },"install":[{"id": "pip","kind": "pip","package": "yt-dlp faster-whisper","bins": ["yt-dlp"],"label": "Install yt-dlp and faster-whisper",},],},}
bili-summary
Bilibili (Bç«) video download, subtitle extraction, and AI summarization tool.
When to Use
â USE this skill when:
Features
Prerequisites
1. Install Dependencies
# Using miniconda3 (recommended)
~/miniconda3/bin/pip install yt-dlp faster-whisperOr using system Python (may require sudo)
pip install yt-dlp faster-whisper
2. Get Gemini API Key
This skill uses Google Gemini 2.5 Flash for AI summarization.
Steps: 1. Visit https://aistudio.google.com/app/apikey 2. Sign in with your Google account 3. Click "Create API Key" 4. Copy the generated key
Pricing: Gemini 2.5 Flash has generous free tier (15 RPM, 1M TPM)
3. Set Environment Variable
# Add to your ~/.bashrc or ~/.zshrc for permanent setup
echo 'export GEMINI_API_KEY="your-api-key-here"' >> ~/.bashrc
source ~/.bashrcOr set temporarily for current session
export GEMINI_API_KEY="your-api-key-here"
Quick Start
Full Workflow (Recommended)
# Download audio, transcribe, and summarize in one command
uv run {baseDir}/scripts/bili-summary.py "https://www.bilibili.com/video/BV1xx411c7mu" --action summary
Other Actions
# Get video info only
uv run {baseDir}/scripts/bili-summary.py "URL" --action infoDownload subtitle (if available)
uv run {baseDir}/scripts/bili-summary.py "URL" --action subtitleDownload and transcribe audio only
uv run {baseDir}/scripts/bili-summary.py "URL" --action transcribeDownload full video
uv run {baseDir}/scripts/bili-summary.py "URL" --action video
Options
| Option | Description | Default | |--------|-------------|---------| | url | Bilibili video URL (BV巿宿ŽéŸæ¥) | required | | --action | Operation: info/subtitle/transcribe/video/summary | summary | | --output | Output directory | ~/openclaw/workspace/coding-agent/temp/bili-summary |
Output Files
Default output: ~/openclaw/workspace/coding-agent/temp/bili-summary/
temp/bili-summary/
âââ audio.m4a # Downloaded audio (deleted after summary)
âââ subtitle.txt # Transcribed text (deleted after summary)
âââ summary.txt # AI summary content
Workflow
summary (full workflow)
1. Get video info - yt-dlp fetches title, duration, uploader 2. Try Bç« subtitles - Call Bilibili API for CC subtitles 3. Fallback to Whisper - If no subtitles, download audio + faster-whisper (tiny model) transcription 4. AI Summary - Call Gemini 2.5 Flash API for detailed summary
Time Estimate
| Step | Time | |------|------| | Audio download | ~15s | | Whisper transcription (tiny) | ~25s | | Gemini summary | ~5s | | Total | ~45s |
API Configuration
Recommended API: Google Gemini
Alternative APIs (not implemented)
If you want to use other LLMs:
*Note: Current implementation only supports Gemini. PRs welcome for other providers.*
First-Time Setup Guide
Step 1: Install Python dependencies
# Check if miniconda3 exists
ls ~/miniconda3/bin/pythonInstall dependencies
~/miniconda3/bin/pip install yt-dlp faster-whisperOr use uv
uv pip install yt-dlp faster-whisper
Step 2: Get API Key
1. Go to https://aistudio.google.com/app/apikey 2. Create new API key 3. Copy the key
Step 3: Test the setup
# Set API key
export GEMINI_API_KEY="your-key-here"Test with a simple video
uv run {baseDir}/scripts/bili-summary.py "https://www.bilibili.com/video/BV1xx411c7mu" --action info
If you see JSON output with video title, duration, etc., you're ready!
Step 4: Run full summarization
uv run {baseDir}/scripts/bili-summary.py "https://www.bilibili.com/video/BV1xxx" --action summary
Troubleshooting
"No module named 'yt-dlp'"
~/miniconda3/bin/pip install yt-dlp faster-whisper
"GEMINI_API_KEY not found"
# Check if environment variable is set
echo $GEMINI_API_KEYSet it
export GEMINI_API_KEY="your-key"
"No subtitles available"
The skill automatically falls back to Whisper transcription. This may take longer but works for any video with audio.
"API rate limit exceeded"
Wait a minute and retry, or check your API quota at https://aistudio.google.com/app/apikey
Security Notes
GEMINI_API_KEY environment variable onlyFile Structure
bili-summary/
âââ SKILL.md # This documentation
âââ _meta.json # ClawHub metadata (auto-generated)
âââ scripts/
âââ bili-summary.py # Main script
License
MIT License - Use at your own risk. Respect Bilibili's terms of service.
â¡ When to Use
ð¡ Examples
Full Workflow (Recommended)
# Download audio, transcribe, and summarize in one command
uv run {baseDir}/scripts/bili-summary.py "https://www.bilibili.com/video/BV1xx411c7mu" --action summary
Other Actions
# Get video info only
uv run {baseDir}/scripts/bili-summary.py "URL" --action infoDownload subtitle (if available)
uv run {baseDir}/scripts/bili-summary.py "URL" --action subtitleDownload and transcribe audio only
uv run {baseDir}/scripts/bili-summary.py "URL" --action transcribeDownload full video
uv run {baseDir}/scripts/bili-summary.py "URL" --action video
âïž Configuration
| Option | Description | Default | |--------|-------------|---------| | url | Bilibili video URL (BV巿宿ŽéŸæ¥) | required | | --action | Operation: info/subtitle/transcribe/video/summary | summary | | --output | Output directory | ~/openclaw/workspace/coding-agent/temp/bili-summary |
ð Tips & Best Practices
"No module named 'yt-dlp'"
~/miniconda3/bin/pip install yt-dlp faster-whisper
"GEMINI_API_KEY not found"
# Check if environment variable is set
echo $GEMINI_API_KEYSet it
export GEMINI_API_KEY="your-key"
"No subtitles available"
The skill automatically falls back to Whisper transcription. This may take longer but works for any video with audio.
"API rate limit exceeded"
Wait a minute and retry, or check your API quota at https://aistudio.google.com/app/apikey