Home
cd ../playbooks
Market ResearchBeginner

Bilibili Source Fetcher

Fetch real, citable Bilibili (B站) video metadata and danmaku — views, likes, follower counts, tags, and bullet-comments — so you never hand-type or estimate engagement numbers again.

5 minutes
By daymadeSource
#bilibili#data#metadata#content-analysis#research

Engagement numbers are the backbone of any honest "why did this video do well" analysis, and guessed numbers are how a knowledge base rots. This playbook makes the real numbers cheap to fetch.

Who it's for: content analysts, researchers, marketers, knowledge-base builders, creators

Example

"Get the real stats for this Bilibili video" → One JSON object with title, UP follower count, views, likes, tags, and full danmaku text

CLAUDE.md Template

New here? 3-minute setup guide → | Already set up? Copy the template below.

# 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

```bash
scripts/bili-fetch.sh BV1xxxxxxxxx
```

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

```json
{
  "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

| Script | What it does | Login |
|--------|--------------|-------|
| `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 part | No |
| `scripts/bili-subs.sh <ref> [browser]` | Subtitle/transcript track | **Yes** |
| `scripts/bili-selftest.sh` | Health-check every capability against the live API | No |

All three **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:

```bash
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](references/bilibili_api.md).
- **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**:

```bash
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.

## Going deeper

For the full endpoint catalog (UP fan history, video tags, real-time viewer count, danmaku archive, the SESSDATA subtitle path), the WBI request-signing algorithm needed for `space/wbi/*` endpoints, and every gotcha with a tested command, see **[references/bilibili_api.md](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.

## 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:

```bash
scripts/bili-selftest.sh
```

It hits every capability (and the login-gate invariant) against a stable public fixture and prints one PASS/FAIL row per capability, so drift surfaces as a clear FAIL pointing at what broke — 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](references/bilibili_api.md); update the "Verified" dates above once you re-confirm.
README.md

What This Does

Fetch real, citable Bilibili (B站) video metadata and danmaku — views, likes, follower counts, tags, and bullet-comments — so you never hand-type or estimate engagement numbers again.

What's Inside

The template covers:

  • Scripts
  • Rules that keep the data honest
  • Subtitles require login (no bypass)
  • Going deeper
  • Verified status
  • Maintenance

Quick Start

Step 1: Create a Project Folder

Make a dedicated folder for this workflow and open it in Claude Code.

Step 2: Download the Template

Click Download above to save the template, then drop it into your project as CLAUDE.md (or paste it into your existing one).

Step 3: Start Working

Tell Claude what you need in plain language — it will follow the template's workflow automatically. For example:

Get the real stats for this Bilibili video

Claude reads the template and runs the steps for you.

$Related Playbooks

Market Research

Business Strategy Consultant

Replace expensive business consultants with 10 strategic analysis frameworks - SWOT, GTM, pricing, KPIs, and more in one toolkit.

10 minutes
Intermediate
Market Research

Business Plan Generator

Generate investor-ready business plans with market analysis, financial projections, and go-to-market strategy.

10 minutes
Intermediate
Market Research

Competitor Code Analysis

Analyze competitor repositories with an evidence-based approach — every finding grounded in actual cloned code, never assumptions.

20 minutes
Intermediate
Market Research

Competitor Alerts

Configure competitor alerts.

15 minutes
Intermediate
Market Research

Competitor Pages

Create competitor comparison pages.

15 minutes
Intermediate
Market Research

Company Research & Due Diligence

Conduct comprehensive company research and due diligence. Analyze business model, competitive landscape, management, and market position.

10 minutes
Advanced
Market Research

Competitive Analysis Framework

Analyze competitors systematically. Compare products, features, pricing, positioning, and market strategies. Generate comprehensive competitive intelligence reports.

10 minutes
Beginner
Market Research

Competitor Intelligence Brief

Monitor your competitors' feeds and newsletters daily — get briefed on what they shipped, messaging changes, and gaps you could fill.

10 minutes
Intermediate
Market Research

Competitive Intelligence Brief

Build persistent competitor profiles you update over time, so when the boss asks 'what's the competition doing?' the answer is already written.

10 minutes
Intermediate
Market Research

Competitor Feature Comparison Matrix

Build detailed feature comparison matrices by analyzing competitor websites, documentation, and marketing materials.

10 minutes
Intermediate
Market Research

CRM Pipeline Cleaner

Export your CRM data, let Claude Code find duplicates, flag dead deals, and reveal what your pipeline actually looks like. One prompt during a meeting you're already going to.

10 minutes
Beginner
Market Research

Deep Competitor Analysis

Reverse-engineer competitor strategies in minutes - pricing, positioning, weaknesses, roadmap clues, and strategic vulnerabilities.

10 minutes
Intermediate

Browse all Market Research playbooks →