From bilibili
Use when the user shares a Bilibili video link and asks to summarize or save notes about the video.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bilibili:bilibili-summarizerThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Fetch a Bilibili video's content via subtitles, Bilibili's AI summary API, or audio transcription — then save a structured note.
Fetch a Bilibili video's content via subtitles, Bilibili's AI summary API, or audio transcription — then save a structured note.
Edit before first use:
SAVE_PATH= # absolute path to the folder where notes will be saved
COOKIES_PATH= # absolute path to your Bilibili cookies file (Netscape format)
yt-dlp --dump-json --no-download "<url>"
Extract: title, uploader, duration, upload date, description, chapters, BV ID.
CID (needed for Step 2B) can be fetched without authentication:
python -c "
import urllib.request, json
bvid = '<BV_ID>'
r = urllib.request.urlopen('https://api.bilibili.com/x/web-interface/view?bvid=' + bvid)
d = json.loads(r.read())
print('cid:', d['data']['cid'], 'mid:', d['data']['owner']['mid'])
"
Set COOKIES_PATH to wherever you save your Bilibili cookies file (see Configuration above).
Export cookies from your browser using an extension such as Get cookies.txt LOCALLY while on any Bilibili page, and save the file to COOKIES_PATH.
yt-dlp --cookies "<COOKIES_PATH>" \
--skip-download --write-subs --write-auto-subs \
--sub-lang "zh-Hans,zh-CN,zh,ai-zh,ai-zh-Hans,en" \
--convert-subs srt \
-o "/tmp/bili_%(id)s" \
"<url>"
If a .srt file is created (e.g. /tmp/bili_<id>.zh-Hans.srt), read it and proceed to Step 3.
If the cookies file is missing or expired, prompt the user to re-export it.
Bilibili provides AI-generated summaries for many videos via an API:
python -c "
import json, urllib.request, http.cookiejar
# Load cookies from COOKIES_PATH
cj = http.cookiejar.MozillaCookieJar('<COOKIES_PATH>')
try:
cj.load(ignore_discard=True, ignore_expires=True)
except:
pass
cookie_str = '; '.join(f'{c.name}={c.value}' for c in cj if 'bilibili' in c.domain)
# Call AI summary endpoint
bvid = '<BV_ID>'
cid = '<CID>'
req = urllib.request.Request(
f'https://api.bilibili.com/x/web-interface/view/conclusion/get?bvid={bvid}&cid={cid}',
headers={'Cookie': cookie_str, 'Referer': 'https://www.bilibili.com/', 'User-Agent': 'Mozilla/5.0'}
)
resp = json.loads(urllib.request.urlopen(req).read())
print(json.dumps(resp, ensure_ascii=False, indent=2))
"
If data.model_result is non-empty, extract summary and outline, then proceed to Step 3.
Inform the user that transcription takes 10–20 minutes, then run in background using a local pipeline (e.g. yt-dlp + Whisper). Proceed to Step 3 once the transcript is ready.
Use only when all above options fail. Always add this notice to the note:
> ⚠️ This summary is based on the video description and chapter titles only — no transcript was available.
From the content obtained (subtitles / AI summary / transcript):
Save to <SAVE_PATH>/<video title>.md:
# [Video Title]
> **Uploader**: [name] | **Duration**: [hh:mm:ss] | **Published**: [date]
## Summary
[3–5 sentences]
## Key Points
- [point 1]
- [point 2]
## Detailed Notes
[Expanded notes by chapter or theme — should be substantive when a transcript is available]
## Source
- [Video Title](<Bilibili URL>)
\ / : * ? " < > |npx claudepluginhub zeshuochen/bilibili-summarizer --plugin bilibiliSummarizes videos and extracts full transcripts from URLs (YouTube, Bilibili, Douyin, Xiaohongshu, podcasts) via BibiGPT API. Activates on video links or keywords like 'summarize video', 'transcript'.
Downloads videos from 1800+ platforms including YouTube, TikTok, Twitter using yt-dlp, generates MP4 video, MP3 audio, VTT subtitles, TXT transcript, and MD AI summary. Saves files to downloads folder.