원클릭으로
bilibili-summarizer
Use when the user shares a Bilibili video link and asks to summarize or save notes about the video.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when the user shares a Bilibili video link and asks to summarize or save notes about the video.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | bilibili-summarizer |
| description | Use when the user shares a Bilibili video link and asks to summarize or save notes about the video. |
| allowed-tools | Bash, Write |
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>)
\ / : * ? " < > |