Social and communities

bilibili.com

Bilibili - Site Navigation & Structure

Notes an AI agent reads before it works on bilibili.com: what to open, what to call, what breaks. Written by browser-harness contributors after real runs, and kept on GitHub under the MIT license.

Give it to your agent

Any coding agent

Start the task with this line. The Markdown version is the same notes without the page around them.

Read https://browser-use.com/skills/bilibili.md, then <your task>

Browser Harness

Save the files into your workspace and turn domain skills on. The code below calls its helpers, such as http_get and js. What Browser Harness is.

d="${BH_AGENT_WORKSPACE:-$HOME/.config/browser-harness/agent-workspace}/domain-skills/bilibili"
mkdir -p "$d" && cd "$d"
curl -sLO https://raw.githubusercontent.com/browser-use/browser-harness/main/agent-workspace/domain-skills/bilibili/navigation.md
export BH_DOMAIN_SKILLS=1

Field-tested against bilibili.com on 2026-05-01. Requires login for personal-space features; public pages are accessible without auth.


URL Patterns

Core pages

PageURL
Home (recommended feed)https://www.bilibili.com/
Dynamics (following feed)https://t.bilibili.com/
Personal spacehttps://space.bilibili.com/{UID}
Watch historyhttps://www.bilibili.com/account/history
Watch laterhttps://www.bilibili.com/watchlater/#/list
Messageshttps://message.bilibili.com/
Searchhttps://search.bilibili.com/all?keyword={QUERY}

Personal space sub-pages

PageURL
Home (videos + favorites)https://space.bilibili.com/{UID}
Dynamics (user activity)https://space.bilibili.com/{UID}/dynamic
Uploadshttps://space.bilibili.com/{UID}/upload
Collections & serieshttps://space.bilibili.com/{UID}/lists
Favoriteshttps://space.bilibili.com/{UID}/favlist
Bangumi trackinghttps://space.bilibili.com/{UID}/bangumi
Settingshttps://space.bilibili.com/{UID}/settings

Discovery

PageURL
Popular / Hothttps://www.bilibili.com/v/popular/all
Weekly must-watchhttps://www.bilibili.com/v/popular/weekly?num={ISSUE}
All-time classicshttps://www.bilibili.com/v/popular/all (入站必刷 tab)
Ranking (all)https://www.bilibili.com/v/popular/rank/all
Topicshttps://www.bilibili.com/v/topic/

Video page

AspectPattern
Watch URLhttps://www.bilibili.com/video/{BV_ID}
BV formatBV prefix + 10 alphanumeric chars, e.g. BV1HeRKBdEoX
AV format (legacy)av + digits, e.g. av170001 (still resolves)

Content platforms

PageURL
Animehttps://www.bilibili.com/anime/
Moviehttps://www.bilibili.com/movie/
TV serieshttps://www.bilibili.com/tv/
Documentaryhttps://www.bilibili.com/documentary/
Variety showhttps://www.bilibili.com/variety/
Chinese animationhttps://www.bilibili.com/guochuang/
Read (articles/blogs)https://www.bilibili.com/read/home
Audio / Musichttps://www.bilibili.com/audio/home
Courses (课堂)https://www.bilibili.com/cheese/
Livehttps://live.bilibili.com/
Game centerhttps://game.bilibili.com/platform
Manga (漫画)https://manga.bilibili.com/
Mall (会员购)https://show.bilibili.com/platform/home.html
Esports / Matcheshttps://www.bilibili.com/match/home/

Creator

PageURL
Creator centerhttps://member.bilibili.com/platform/home
Upload videohttps://member.bilibili.com/platform/upload/video/frame

Other

PageURL
Premium (大会员)https://account.bilibili.com/big
Blackroom (bans)https://www.bilibili.com/blackroom/ban

Top Navigation Bar

Horizontal nav across the top of bilibili.com:

首页 | 番剧 | 直播 | 游戏中心 | 会员购 | 漫画 | 赛事

These are always visible regardless of login state.

On the homepage, the left sidebar lists 30 content channels. Each maps to bilibili.com/c/{SLUG} or a top-level path:

动态  热门  番剧  电影  国创  电视剧  综艺  纪录片
动画  游戏  鬼畜  音乐  舞蹈  影视  娱乐  知识
科技数码  资讯  美食  小剧场  汽车  时尚美妆
体育运动  动物  vlog  绘画  人工智能  家装房产
户外潮流  健身

Channel URLs:

  • bilibili.com/c/{slug} - e.g. /c/douga (动画), /c/game, /c/music, /c/ai
  • Some use full words: /c/knowledge, /c/information, /c/food, /c/fashion, /c/sports, /c/animal, /c/painting, /c/home, /c/outdoors, /c/gym
  • Others use abbreviations: /c/kichiku (鬼畜), /c/ent, /c/tech
  • Short play: /c/shortplay
  • Car: /c/car (no trailing slash in source)

User Menu (right side of top bar, login required)

Dropdown accessible via avatar in top-right corner:

EntryURLNotes
大会员account.bilibili.com/bigPremium status
消息message.bilibili.comSub-items: 回复我的, @我的, 收到的赞, 系统消息, 我的消息
动态t.bilibili.comFollowing feed - most important for daily use
收藏space.bilibili.com/{UID}/favlistFavorite folders
历史https://www.bilibili.com/account/historyWatch history
创作中心member.bilibili.com/platform/homeCreator dashboard
投稿member.bilibili.com/platform/upload/video/frameUpload

Personal Space Tabs (space.bilibili.com/{UID})

Sub-navigation within the personal space:

主页 | 动态 | 投稿 | 合集和系列 | 收藏 | 追番追剧 | 设置
  • 主页 - video grid + favorite folders + stats
  • 动态 - this user's activity feed (distinct from t.bilibili.com which is the following feed)
  • 投稿 - published videos, sortable by: 最新发布 / 最多播放 / 最多收藏
  • 合集和系列 - curated video collections
  • 收藏 - favorite folders (public or private)
  • 追番追剧 - tracked anime/drama
  • 设置 - space configuration

User Stats (visible on personal space)

Selector: .nav-statistics contains .nav-statistics__item children.

StatClass
关注数 (following).nav-statistics__item.jumpable (first)
粉丝数 (followers).nav-statistics__item.jumpable (second)
获赞数 (likes).nav-statistics__item (third)
播放数 (views).nav-statistics__item (fourth)

Values are in .nav-statistics__item-num.


Video Page - Interaction Features

When on a watch page (bilibili.com/video/{BV_ID}), the toolbar below the player offers:

ActionSelector / ClassNotes
Like (赞).video-likeCount in .video-like-info
Coin (投币).video-coinEach user can donate up to 2 coins per video
Collect (收藏).video-collectAdd to a favorite folder
Share (分享).video-share-wrapOpens share panel with link/copy/QR
Triple-tap (三连)Long-press like buttonTriggers like + coin + collect in one action

三连 (triple-tap) is Bilibili's signature interaction - long-pressing the like button sends a like, donates 1 coin, and adds to favorites simultaneously.

Coins (硬币)

  • Users receive coins daily by logging in
  • Coins are spent by "投币" on videos (1 or 2 per video)
  • Coin count appears in the header user area
  • Separate from B币 (B-Coins) which are purchased with real money

Danmaku (弹幕)

Real-time comments that scroll across the video. Toggle with the danmaku button in the player controls. Danmaku data is loaded via XHR after the video player initializes.

Charging (充电)

Monthly subscription / tipping to support creators. Accessible from the creator's space page or below the video player.


Favorites (/favlist)

Each favorite folder displays: name, video count, visibility (公开/仅自己可见).

Two sections on the page:

  • 我创建的收藏夹 - user's own folders
  • 我追的合集/收藏夹 - followed collections from other users

Actions:

  • Create new folder: click "新建收藏夹"
  • Set visibility: per-folder setting (公开 / 仅自己可见)
  • Default folder is created automatically and holds all quick-favorited videos

Watch History (/account/history)

Features:

  • Pause/resume recording - "暂停记录历史" / "继续记录历史"
  • Clear all - "清空历史"
  • Date filters - 今天 / 昨天 / 近1周 / 1周前 / 1个月前
  • Each entry shows: title, progress (看到 XX:XX), uploader name, category tag

History items are in .history-record elements.

Watch Later (稍后再看)

Located at bilibili.com/watchlater/#/list. Also appears as a default folder in the favorites section on the personal space homepage.


Search (search.bilibili.com)

Search results are tabbed:

综合 | 视频 | 番剧 | 影视 | 直播 | 专栏 | 用户

Each tab shows a count badge (e.g., "视频99+"). Query param: ?keyword={QUERY}.

Autocomplete suggestions appear when typing in the search input.


Tab bar:

综合热门 | 每周必看 | 入站必刷 | 排行榜 | 全站音乐榜
  • 综合热门 - trending right now
  • 每周必看 - weekly curated picks, URL: /v/popular/weekly?num={ISSUE}
  • 入站必刷 - all-time classic videos
  • 排行榜 - redirects to /v/popular/rank/all
  • 全站音乐榜 - music-specific chart

Ranking (/v/popular/rank/all)

24 category tabs: 全部, 番剧, 国创, 纪录片, 电影, 电视剧, 综艺, 动画, 游戏, 鬼畜, 音乐, 舞蹈, 影视, 娱乐, 知识, 科技, 数码, 美食, 汽车, 时尚, 美妆, 体育, 运动, 动物

Each entry shows: rank number, title, creator, view count, interaction count.


Detecting Login State

# Logged in: avatar element exists
avatar = js("document.querySelector('.header-entry-avatar')?.src || 'not logged in'")
 
# Logged out: login button visible
login_btn = js("document.querySelector('.header-login-entry')?.textContent?.trim() || 'no login btn'")

Extract the current user's UID:

uid = js("document.querySelector('.header-entry-avatar')?.closest('a')?.href?.match(/space\\.bilibili\\.com\\/(\\d+)/)?.[1]")

Gotchas

  • 动态 has two meanings - t.bilibili.com is the following feed (content from people you follow), while space.bilibili.com/{UID}/dynamic is a specific user's activity. They are different pages.
  • Favorites URL redirects - navigating to /favlist may redirect to /favlist?fid={DEFAULT_FOLDER_ID}&ftype=create, which opens the first folder automatically.
  • History can be paused - if the history page says "历史功能暂停中", recording was paused by the user. Click "继续记录历史" to resume.
  • UID is numeric - Bilibili user IDs are all-numeric, unlike YouTube handles. The UID appears in the space URL and is stable.
  • BV vs AV IDs - modern video IDs use the BV format (e.g. BV1HeRKBdEoX). Legacy AV format (e.g. av170001) still resolves but all new content uses BV.
  • Video URL gets ?vd_source= appended - when navigating from an authenticated session, bilibili appends a vd_source tracking parameter. This can be stripped.
  • Watch later is separate from history - /watchlater/#/list is a single-page app path, not a sub-page of /account/history.
  • Coins are not B-Coins - 硬币 (coins) are earned daily for free. B币 (B-Coins) are purchased with real money and used for tipping/charging/premium.
  • Some channel URL slugs use abbreviations - 鬼畜 is /c/kichiku, 娱乐 is /c/ent, 科技 is /c/tech. Not all are pinyin or translated.
  • wait_for_load() is not enough on video pages - like YouTube, the video player and its toolbar components hydrate after the load event. Add a wait(3) before querying video toolbar selectors.

navigation.md · updated May 2, 2026 · 1,470 words

Sites change. These notes describe what worked when they were last updated, not a guarantee they still do. If something broke, the fix is a pull request to browser-harness.