本文へ移動
cccskills
無料GitHub で公開

bilibili-source

Fetches real, citable Bilibili (B站) video data — stats, metadata, tags, and full danmaku text — via login-free API calls, never hand-typed or estimated. Use when citing view/like/favorite counts, analyzing why a video performed, or archiving a Bilibili source into a knowledge base. Accepts BVID, av numbers, b23.tv links, or full URLs; subtitles and 收藏夹 (favorites) enumeration need the user's Bilibili login.

インストール方法を見る

含まれるファイル(9)

  • SKILL.md8.6 KB
  • evals/evals.json2.7 KB
  • references/bilibili_api.md17.3 KB
  • scripts/bili-access.py20.4 KB
  • scripts/bili-danmaku.sh2.4 KB
  • scripts/bili-fetch.sh3.9 KB
  • scripts/bili-selftest.sh5.7 KB
  • scripts/bili-subs.sh2.7 KB
  • tests/test_access.py14.7 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

bilibili-source

Fetch real, verifiable data for a Bilibili video so you can cite it instead of guessing. Engagement numbers are the backbone of any honest "why did this do well" analysis, and hand-typed or estimated numbers are the fastest way a knowledge base rots. This skill makes the numbers cheap to fetch — so there is no excuse to invent them.

Quick start

scripts/bili-fetch.sh BV1xxxxxxxxx

Returns one JSON object with everything from a single view/detail API call:

{
  "bvid": "BV1xxxxxxxxx",
  "aid": 1234567890,
  "fetched_at": "2026-06-07T13:54:17Z",
  "url": "https://www.bilibili.com/video/BV1xxxxxxxxx",
  "title": "<video title>",
  "up": { "name": "<UP name>", "mid": 12345678, "fans": 45600 },
  "pubdate": "2026-01-10T00:50:47Z",
  "tname": "<partition, may be empty>",
  "tags": ["<tag>", "<tag>"],
  "videos": 1,
  "duration_s": 372,
  "stat": { "view": 48000, "like": 1200, "coin": 180, "favorite": 950,
            "share": 64, "reply": 210, "danmaku": 130 },
  "pages": [ { "cid": 12345678, "page": 1, "part": "<part title>", "duration": 372 } ]
}

bili-fetch.sh accepts any form a user might paste — BVID, av number, b23.tv short link, or full URL — and normalizes it. For multi-part videos it returns every part's cid in pages[] (you need the per-part cid to fetch that part's danmaku or subtitles).

Scripts

ScriptWhat it doesLogin
scripts/bili-fetch.sh <ref>Core: full metadata + live stats (run this first)No
scripts/bili-danmaku.sh <ref> [P]Danmaku (bullet-comment) full text for a partNo
scripts/bili-subs.sh <ref> [browser]Subtitle/transcript trackYes
scripts/bili-selftest.shTest anonymous metadata, danmaku and selected API shapesNo
scripts/bili-access.pyDiagnose identity, entitlement, subtitle shape and per-part media; replay/probe/verify-reportExplicit cookie file only

The shell fetch scripts execute (don't read them as reference). bili-danmaku.sh reuses bili-fetch.sh to resolve the part's cid, so they must stay siblings in scripts/.

Danmaku are time-synced comments overlaid on the video — a Bilibili-specific signal of where and how viewers reacted, qualitatively richer than a flat reply count:

scripts/bili-danmaku.sh BV1xxxxxxxxx     # P1; add a part number for multi-part videos

Rules that keep the data honest

  • Live metrics → always cite fetched_at. The same video re-fetched minutes later drifts (a view count can tick up by a few within a single session). That is not an error — it is proof the data is live. A bare "12,000 views" with no timestamp is meaningless and silently goes stale.
  • NO FABRICATION. If a number can't be fetched, write "未获取/未核实" — never estimate. The whole point of the skill is that the number is cheap to fetch.
  • The scripts already handle the network quirks so you don't reinvent them: they strip the local proxy (Bilibili is a domestic CN service that a 127.0.0.1 proxy breaks), send a browser User-Agent + Referer (avoids the occasional HTTP 412), and retry with backoff. If you call the API by hand, do the same — see references/bilibili_api.md. One trap the env-strip does NOT cover: Python urllib falls back to the macOS system proxy when proxy env vars are absent, causing intermittent 503s in batches — build the opener with an explicit ProxyHandler({}) (details in the reference's Request basics).
  • CJK post-processing trap. When you later grep/sort the fetched Chinese text or filenames, sort/comm mishandle CJK collation and report false "missing"/"broken" results. Verify with find -name or grep -F, not comm.

Subtitles require login (no bypass)

Stats and danmaku are login-free. Subtitles are not. Verified across many videos (new and old) plus anonymous cookies: the public player API returns an empty subtitle list for anonymous requests, and yt-dlp reports "Subtitles are only available when logged in." There is no login-free path — do not try to bypass it.

bili-subs.sh therefore needs the user's Bilibili session via browser cookies. Because it reads their logged-in session, ask the user before running it:

scripts/bili-subs.sh BV1xxxxxxxxx chrome   # or firefox / safari / edge

The ai-zh track is Bilibili's AI-generated subtitle — treat it as a draft transcript (same-sound/segmentation errors), mark it as AI-ASR in whatever you produce, and don't claim it is a human-checked verbatim. If a video has no subtitle track, there is nothing to fetch — don't invent one. A SESSDATA-env API alternative is documented in the reference.

Diagnose access before downloading or ASR

Run scripts/bili-access.py probe --bvid BV0000000000 --page 1 for an authorized source; add --cookie-file <authorized-netscape-jar> only when that account access is authorized. Never read arbitrary browser cookies through this diagnostic. Omit --cid to resolve the selected P from view metadata. Replay captured nav/view/player/playurl/ffprobe JSON offline when diagnosing existing evidence.

Consume download_allowed before downloading; consume asr_allowed only after verify-report reads a fresh ffprobe of the actual ASR input. Keep authenticated identity separate from target payment entitlement: logged-in membership alone does not grant every creator's paid video. Stop on paid preview, denied or unknown entitlement; do not send a preview to full-content ASR. Compare duration with the selected CID/P, never the total multi-part duration. Read the access diagnostic contract for JSON states, commands and exits; run uv run python -m unittest discover -s bilibili-source/tests -v from the repository root for deterministic synthetic coverage.

Inspect each interfaces entry's http and optional error before attributing a failure: HTTP 403/412 responses retain their status and do not imply a network failure or cookie expiry. Network errors, timeouts and invalid JSON have separate categories; these diagnostics do not establish payment rights.

Going deeper

For the full endpoint catalog (UP fan history, video tags, real-time viewer count, danmaku archive, the SESSDATA subtitle path, favorites-folder enumeration — x/v3/fav/*, login-gated, no WBI needed), the WBI request-signing algorithm needed for space/wbi/* endpoints, and every gotcha with a tested command, see references/bilibili_api.md.

Verified status

  • Stats / metadata / danmaku (view/detail, relation/stat, dm/list.so, online/total): verified login-free, 2026-06-07. Metrics re-fetched repeatedly and matched independently; danmaku count matched stat.danmaku.
  • Subtitles: confirmed login-gated, 2026-06-07 (empty for anonymous across all videos tested). Needs yt-dlp for the cookie path. The SESSDATA/cookie-jar API path verified logged-in 2026-08-29 across a ~400-video batch (multi-part included).
  • Favorites (x/v3/fav/folder/created/list-all, x/v3/fav/resource/list): verified logged-in 2026-08-29, plain params without WBI; 26 consecutive pages fetched without rate-limiting. Enumeration is login-gated (anonymous list-all answers code 0 with an empty list even for accounts with publicly-readable folders); a public folder's contents are anonymously readable only if you already know its media_id.

Maintenance

This skill wraps a third-party API that drifts over time — fields get renamed, endpoints add WBI signing, anti-bot tightens. Before trusting it after a gap, or whenever output looks wrong, run the health-check:

scripts/bili-selftest.sh

It tests anonymous metadata, danmaku and selected endpoint shapes against a public fixture and prints PASS/FAIL rows. It does not test authenticated retrieval, target payment rights or media completeness; a pass only covers the printed checks — not a silent wrong answer. When a row fails, the endpoint paths, field names, and WBI signing needed to fix it are in references/bilibili_api.md; update the "Verified" dates above once you re-confirm.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Fixes web search on an agent whose model backend can't run it: a relay/reseller proxying Claude or Codex returns empty instead of failing. Use when web search returns nothing, a model insists a shipped product doesn't exist, someone wants to give an agent internet access, or the user is on a third-party base URL, relay, or 中转站. Diagnoses which built-in tools are dead, removes them, and installs a working replacement.

日本語の概要は準備中です。原文の説明を表示しています。

daymade/claude-code-skills1,4522026年10月11日 更新

抓取 A 股消息面情报:从财联社、华尔街见闻、金十、新浪 7x24、东财快讯、 证监会/央行/上交所/财政部政策公告、东方财富股吧等公开来源抓取与股票相关的 新闻、政策、情绪,输出结构化 JSON 或 Markdown。 当用户提到“A 股消息面”、“抓新闻”、“个股消息”、“政策监管”、“股吧情绪”、 “财联社”、“东财快讯”、“市场情绪”或需要把某只股票相关的公开情报聚合出来时 触发。也适用于“帮我看看 000001 最近有什么消息”这类口语化请求。

日本語の概要は準備中です。原文の説明を表示しています。

daymade/claude-code-skills1,4522026年10月11日 更新

Transcribes audio or video to speaker-labeled, timestamped text, locally with MLX on Apple Silicon or remotely. Use for 转录 / 录音转文字 / 说话人分离 / 字幕, and also for preparing audio for ASR without transcribing: 转格式, 降采样到 16kHz, merging recorder segments, or compressing and speeding up audio before 飞书妙记 — even when it looks like a one-line ffmpeg job.

日本語の概要は準備中です。原文の説明を表示しています。

daymade/claude-code-skills1,4522026年10月11日 更新

Routes audio: StepFun ASR/语音识别, StepFun TTS/配音, transcript/妙记→会议纪要, merge/review minutes. Reads one bundled specialist; generic ASR and correction stay direct.

日本語の概要は準備中です。原文の説明を表示しています。

daymade/claude-code-skills1,4522026年10月11日 更新

Diagnoses and repairs repository setup and guarded Git workflows for Claude Code or Codex — environment repair, startup sync, hook auditing, collaborator handoff. Use when a repo won't run, a teammate onboards, hook output duplicates, or commit/push/conflict needs guarding. Not for lost-commit recovery (use git-safety-net), GitHub ops (use github-ops), or history scrubbing (use github-sensitive-data-cleanup).

日本語の概要は準備中です。原文の説明を表示しています。

daymade/claude-code-skills1,4522026年10月11日 更新

Runs adversarial due-diligence on a benchmark the user envies — a founder, KOL, company, or product whose success looks inflated — splitting marketing bubble from real signal, then mapping the validated playbook onto the user's own resources. Use for 尽调/对标/拆解 a competitor, 抄/偷师 their playbook, or suspecting 水分/泡沫 in claims. Prefer over deep-research when debunking inflated claims, not a neutral briefing.

日本語の概要は準備中です。原文の説明を表示しています。

daymade/claude-code-skills1,4522026年10月11日 更新

daymade のスキルをすべて見る

このスキルの問題を報告する