{"skill":{"slug":"bili-summary","displayName":"Bili Summary","summary":"Download Bilibili videos, extract or transcribe subtitles, and generate AI-powered detailed summaries using Gemini 2.5 Flash.","description":"---\nname: bili-summary\ndescription: \"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.\"\nmetadata:{\"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\",},],},}\n---\n\n# bili-summary\n\nBilibili (B站) video download, subtitle extraction, and AI summarization tool.\n\n## When to Use\n\n✅ **USE this skill when:**\n\n- \"download Bilibili video\"\n- \"extract B站 subtitles\"\n- \"summarize B站 video\"\n- \"B站视频总结\"\n- \"bilibili transcription\"\n- Any Bilibili video URL\n\n## Features\n\n- Get video info (title, duration, uploader)\n- Download B站 video (video + audio)\n- Extract subtitles (B站 CC subtitles)\n- Audio extraction + Whisper transcription (when no subtitles)\n- Gemini AI detailed summary (chapters + key content + key insights + conclusion)\n\n## Prerequisites\n\n### 1. Install Dependencies\n\n```bash\n# Using miniconda3 (recommended)\n~/miniconda3/bin/pip install yt-dlp faster-whisper\n\n# Or using system Python (may require sudo)\npip install yt-dlp faster-whisper\n```\n\n### 2. Get Gemini API Key\n\nThis skill uses **Google Gemini 2.5 Flash** for AI summarization.\n\n**Steps:**\n1. Visit https://aistudio.google.com/app/apikey\n2. Sign in with your Google account\n3. Click \"Create API Key\"\n4. Copy the generated key\n\n**Pricing:** Gemini 2.5 Flash has generous free tier (15 RPM, 1M TPM)\n\n### 3. Set Environment Variable\n\n```bash\n# Add to your ~/.bashrc or ~/.zshrc for permanent setup\necho 'export GEMINI_API_KEY=\"your-api-key-here\"' >> ~/.bashrc\nsource ~/.bashrc\n\n# Or set temporarily for current session\nexport GEMINI_API_KEY=\"your-api-key-here\"\n```\n\n## Quick Start\n\n### Full Workflow (Recommended)\n\n```bash\n# Download audio, transcribe, and summarize in one command\nuv run {baseDir}/scripts/bili-summary.py \"https://www.bilibili.com/video/BV1xx411c7mu\" --action summary\n```\n\n### Other Actions\n\n```bash\n# Get video info only\nuv run {baseDir}/scripts/bili-summary.py \"URL\" --action info\n\n# Download subtitle (if available)\nuv run {baseDir}/scripts/bili-summary.py \"URL\" --action subtitle\n\n# Download and transcribe audio only\nuv run {baseDir}/scripts/bili-summary.py \"URL\" --action transcribe\n\n# Download full video\nuv run {baseDir}/scripts/bili-summary.py \"URL\" --action video\n```\n\n## Options\n\n| Option | Description | Default |\n|--------|-------------|---------|\n| url | Bilibili video URL (BV号或完整链接) | required |\n| --action | Operation: info/subtitle/transcribe/video/summary | summary |\n| --output | Output directory | ~/openclaw/workspace/coding-agent/temp/bili-summary |\n\n## Output Files\n\nDefault output: `~/openclaw/workspace/coding-agent/temp/bili-summary/`\n\n```\ntemp/bili-summary/\n├── audio.m4a       # Downloaded audio (deleted after summary)\n├── subtitle.txt    # Transcribed text (deleted after summary)\n└── summary.txt    # AI summary content\n```\n\n## Workflow\n\n### summary (full workflow)\n\n1. **Get video info** - yt-dlp fetches title, duration, uploader\n2. **Try B站 subtitles** - Call Bilibili API for CC subtitles\n3. **Fallback to Whisper** - If no subtitles, download audio + faster-whisper (tiny model) transcription\n4. **AI Summary** - Call Gemini 2.5 Flash API for detailed summary\n\n### Time Estimate\n\n| Step | Time |\n|------|------|\n| Audio download | ~15s |\n| Whisper transcription (tiny) | ~25s |\n| Gemini summary | ~5s |\n| **Total** | **~45s** |\n\n## API Configuration\n\n### Recommended API: Google Gemini\n\n- **Model:** gemini-2.5-flash\n- **Endpoint:** https://generativelanguage.googleapis.com/v1/models/gemini-2.5-flash:generateContent\n- **Free Tier:** 15 requests/minute, 1M tokens/minute\n- **Sign up:** https://aistudio.google.com/app/apikey\n\n### Alternative APIs (not implemented)\n\nIf you want to use other LLMs:\n\n- **OpenAI GPT-4o** - https://api.openai.com/v1/chat/completions\n- **Anthropic Claude** - https://api.anthropic.com/v1/messages\n- **MiniMax** - https://api.minimax.chat/v1/text/chatcompletion_v2\n\n*Note: Current implementation only supports Gemini. PRs welcome for other providers.*\n\n## First-Time Setup Guide\n\n### Step 1: Install Python dependencies\n\n```bash\n# Check if miniconda3 exists\nls ~/miniconda3/bin/python\n\n# Install dependencies\n~/miniconda3/bin/pip install yt-dlp faster-whisper\n\n# Or use uv\nuv pip install yt-dlp faster-whisper\n```\n\n### Step 2: Get API Key\n\n1. Go to https://aistudio.google.com/app/apikey\n2. Create new API key\n3. Copy the key\n\n### Step 3: Test the setup\n\n```bash\n# Set API key\nexport GEMINI_API_KEY=\"your-key-here\"\n\n# Test with a simple video\nuv run {baseDir}/scripts/bili-summary.py \"https://www.bilibili.com/video/BV1xx411c7mu\" --action info\n```\n\nIf you see JSON output with video title, duration, etc., you're ready!\n\n### Step 4: Run full summarization\n\n```bash\nuv run {baseDir}/scripts/bili-summary.py \"https://www.bilibili.com/video/BV1xxx\" --action summary\n```\n\n## Troubleshooting\n\n### \"No module named 'yt-dlp'\"\n\n```bash\n~/miniconda3/bin/pip install yt-dlp faster-whisper\n```\n\n### \"GEMINI_API_KEY not found\"\n\n```bash\n# Check if environment variable is set\necho $GEMINI_API_KEY\n\n# Set it\nexport GEMINI_API_KEY=\"your-key\"\n```\n\n### \"No subtitles available\"\n\nThe skill automatically falls back to Whisper transcription. This may take longer but works for any video with audio.\n\n### \"API rate limit exceeded\"\n\nWait a minute and retry, or check your API quota at https://aistudio.google.com/app/apikey\n\n## Security Notes\n\n- ✅ API key is read from `GEMINI_API_KEY` environment variable only\n- ✅ No hardcoded API keys in source code\n- ✅ Temporary files stored in workspace temp directory\n- ⚠️ Audio/subtitle files are NOT auto-deleted (manual cleanup required)\n\n## File Structure\n\n```\nbili-summary/\n├── SKILL.md              # This documentation\n├── _meta.json            # ClawHub metadata (auto-generated)\n└── scripts/\n    └── bili-summary.py   # Main script\n```\n\n## License\n\nMIT License - Use at your own risk. Respect Bilibili's terms of service.\n","tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":1022,"installsAllTime":3,"installsCurrent":3,"stars":0,"versions":1},"createdAt":1772118835670,"updatedAt":1778491652688},"latestVersion":{"version":"1.0.0","createdAt":1772118835670,"changelog":"- Initial release of bili-summary: a Bilibili video download, subtitle extraction, and AI summarization tool.\n- Supports fetching video info, downloading videos, extracting subtitles, and transcribing audio using faster-whisper.\n- Provides detailed AI-powered summaries via Google Gemini 2.5 Flash.\n- Includes setup instructions, dependency installation, API configuration, and troubleshooting guidance.\n- Outputs summaries, transcriptions, and downloaded media to a dedicated temp directory.","license":null},"metadata":null,"owner":{"handle":"lava-chen","userId":"s17dbpznw7qqkhgszzja8ad1bh884rpd","displayName":"Xuanyu Chen","image":"https://avatars.githubusercontent.com/u/150888349?v=4"},"moderation":null}