Skip to content
Back to skills

Bilibili All In One

ASecurity

A comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching/playback, subtitle downloading, and video publishing capabilities into a single unified skill. Supports Bilibili session cookie authentication for publishing and high-quality downloads. Requests go to official Bilibili API endpoints over HTTPS.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
documentationpythongobashtestinggitapisecuritydocumentation

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill bilibili-all-in-one --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bilibili All In One?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bilibili All In One
[![Security: A โ€” Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-bilibili-all-in-one/badge)](https://www.skillsdirectory.com/skills/aibot88-bilibili-all-in-one)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bilibili-all-in-one
description: >
  A comprehensive Bilibili toolkit that integrates hot trending monitoring,
  video downloading, video watching/playback, subtitle downloading,
  and video publishing capabilities into a single unified skill.
  Supports Bilibili session cookie authentication for publishing and
  high-quality downloads. Requests go to official Bilibili API endpoints
  over HTTPS.
version: 1.0.18
type: code
implementation: python
interface: cli-and-api
runtime: python>=3.8
languages:
  - zh-CN
  - en
tags:
  - bilibili
  - video-download
  - hot-trending
  - subtitle
  - danmaku
  - video-publish
  - video-player

  - batch-download
  - multi-format
author: wscats
license: MIT
homepage: https://github.com/wscats/bilibili-all-in-one
repository: https://github.com/wscats/bilibili-all-in-one
entry_point: main.py
required_env_vars: []
optional_env_vars:
  - BILIBILI_SESSDATA
  - BILIBILI_BILI_JCT
  - BILIBILI_BUVID3
  - BILIBILI_PERSIST
install: pip install -r requirements.txt
---

# Bilibili All-in-One Skill

A comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching/playback, subtitle downloading, and video publishing capabilities into a single unified skill.

> **โš ๏ธ Optional Environment Variables:** `BILIBILI_SESSDATA`, `BILIBILI_BILI_JCT` (optional), `BILIBILI_BUVID3` (optional), `BILIBILI_PERSIST` (optional)
> These are sensitive Bilibili session cookies needed **only** for publishing and high-quality (1080p+/4K) downloads.
> **Most features work WITHOUT any credentials:** hot monitoring, standard-quality downloads, subtitle listing, danmaku, stats viewing.
>
> **๐Ÿ“ฆ Install:** `pip install -r requirements.txt` (all standard PyPI packages: httpx, aiohttp, beautifulsoup4, lxml, requests)
>
> **๐Ÿ”— Source:** [github.com/wscats/bilibili-all-in-one](https://github.com/wscats/bilibili-all-in-one)

---
### ไฝ•ๆ—ถๆฟ€ๆดป

ๅฝ“็”จๆˆท**ๆ˜Ž็กฎ่ฏทๆฑ‚**ไปฅไธ‹ Bilibili ็›ธๅ…ณๆ“ไฝœๆ—ถ๏ผŒๆœฌ Skill ๅฏ่ขซๆฟ€ๆดป๏ผš

| ่งฆๅ‘ๅœบๆ™ฏ | ๅŒน้…็š„ๆจกๅ— | ๅ…ธๅž‹่งฆๅ‘่ฏ |
|---|---|---|
| ๆŸฅ็œ‹B็ซ™็ƒญ้—จใ€็ƒญๆœใ€ๆŽ’่กŒๆฆœใ€ๅฟ…็œ‹ๆฆœ | ๐Ÿ”ฅ Hot Monitor | "็ƒญ้—จ"ใ€"็ƒญๆœ"ใ€"ๆŽ’่กŒ"ใ€"่ถ‹ๅŠฟ"ใ€"ๅฟ…็œ‹"ใ€"ๆต่กŒ"ใ€"ๆฆœๅ•" |
| ไธ‹่ฝฝB็ซ™่ง†้ข‘ใ€ๆๅ–้Ÿณ้ข‘ใ€ๆ‰น้‡ไธ‹่ฝฝ | โฌ‡๏ธ Downloader | "ไธ‹่ฝฝ"ใ€"ไฟๅญ˜่ง†้ข‘"ใ€"ๆๅ–้Ÿณ้ข‘"ใ€"ๅฏผๅ‡บMP4"ใ€"ๆ‰น้‡ไธ‹่ฝฝ" |
| ๆŸฅ็œ‹่ง†้ข‘ๆ’ญๆ”พ้‡ใ€็‚น่ตžๆ•ฐใ€ๆ•ฐๆฎ่ฟฝ่ธชใ€ๅฏนๆฏ” | ๐Ÿ‘€ Watcher | "ๆ’ญๆ”พ้‡"ใ€"็‚น่ตž"ใ€"ๆ•ฐๆฎ"ใ€"็ปŸ่ฎก"ใ€"ๅฏนๆฏ”"ใ€"็›‘ๆŽง"ใ€"่ฟฝ่ธช"ใ€"่ง‚็œ‹้‡" |
| ไธ‹่ฝฝๅญ—ๅน•ใ€่ฝฌๆขๅญ—ๅน•ๆ ผๅผใ€ๅˆๅนถๅญ—ๅน• | ๐Ÿ“ Subtitle | "ๅญ—ๅน•"ใ€"CC"ใ€"SRT"ใ€"ASS"ใ€"ๅญ—ๅน•ไธ‹่ฝฝ"ใ€"ๅญ—ๅน•่ฝฌๆข"ใ€"็ฟป่ฏ‘" |
| ๆ’ญๆ”พ่ง†้ข‘ใ€่Žทๅ–ๅผนๅน•ใ€ๆ’ญๆ”พๅˆ—่กจ | โ–ถ๏ธ Player | "ๆ’ญๆ”พ"ใ€"ๅผนๅน•"ใ€"ๆ’ญๆ”พๅœฐๅ€"ใ€"ๅˆ†P"ใ€"ๆ’ญๆ”พๅˆ—่กจ"ใ€"danmaku" |
| ไธŠไผ ่ง†้ข‘ใ€ๅ‘ๅธƒใ€ๅฎšๆ—ถๅ‘ๅธƒใ€่‰็จฟใ€็ผ–่พ‘ | ๐Ÿ“ค Publisher | "ไธŠไผ "ใ€"ๅ‘ๅธƒ"ใ€"ๆŠ•็จฟ"ใ€"ๅฎšๆ—ถๅ‘ๅธƒ"ใ€"่‰็จฟ"ใ€"็ผ–่พ‘่ง†้ข‘" |

> โš ๏ธ **ๆณจๆ„**๏ผšๆœฌ Skill ไธไผšไป…ๅ› ๆถˆๆฏไธญๅ‡บ็Žฐ Bilibili ้“พๆŽฅๆˆ– BV ๅทๅฐฑ่‡ชๅŠจๆฟ€ๆดปใ€‚ๅชๆœ‰ๅฝ“็”จๆˆทๆ˜Ž็กฎ่กจ่พพไบ†ๆ“ไฝœๆ„ๅ›พ๏ผˆๅฆ‚"ไธ‹่ฝฝ่ฟ™ไธช่ง†้ข‘"ใ€"ๆŸฅ็œ‹็ƒญ้—จ"็ญ‰๏ผ‰ๆ—ถๆ‰ไผš่ขซ่ฐƒ็”จใ€‚ๆถ‰ๅŠๅ†™ๆ“ไฝœ๏ผˆๅ‘ๅธƒ/็ผ–่พ‘๏ผ‰ๆ—ถ๏ผŒ้œ€่ฆ็”จๆˆทๆ˜พๅผๆไพ›ๅ‡ญ่ฏใ€‚

---

## Features
| Module | Description |
|---|---|
| ๐Ÿ”ฅ **Hot Monitor** | Monitor Bilibili hot/trending videos and topics in real-time |
| โฌ‡๏ธ **Downloader** | Download Bilibili videos with multiple quality and format options |
| ๐Ÿ‘€ **Watcher** | Watch and track video engagement metrics (supports Bilibili) |
| ๐Ÿ“ **Subtitle** | Download and process subtitles in multiple formats and languages |
| โ–ถ๏ธ **Player** | Get playback URLs, danmaku (bullet comments), and playlist info |
| ๐Ÿ“ค **Publisher** | Upload, schedule, edit, and manage videos on Bilibili |

## Installation

### Requirements

- Python >= 3.8
- ffmpeg (optional, for merging video/audio streams)

### Install Dependencies

```bash
pip install -r requirements.txt
```

### Dependencies

- `httpx >= 0.24.0`
- `aiohttp >= 3.8.0`
- `beautifulsoup4 >= 4.12.0`
- `lxml >= 4.9.0`
- `requests >= 2.31.0`
- `faster-whisper >= 1.0.0` *(optional, for speech recognition subtitle fallback)*

## Configuration

Some features (downloading high-quality videos, publishing, etc.) require Bilibili authentication. You can provide credentials in three ways:

### 1. Environment Variables

```bash
export BILIBILI_SESSDATA="your_sessdata"
export BILIBILI_BILI_JCT="your_bili_jct"
export BILIBILI_BUVID3="your_buvid3"
```

### 2. Credential File

Create a JSON file (e.g., `credentials.json`):

```json
{
  "sessdata": "your_sessdata",
  "bili_jct": "your_bili_jct",
  "buvid3": "your_buvid3"
}
```

### 3. Direct Parameters

Pass credentials directly when initializing:

```python
from main import BilibiliAllInOne

app = BilibiliAllInOne(
    sessdata="your_sessdata",
    bili_jct="your_bili_jct",
    buvid3="your_buvid3",
)
```

### 4. Persistent Storage (Optional)

By default, credentials are kept **in-memory only** and are not saved to disk. To enable automatic persistence across sessions:

```bash
# Via environment variable
export BILIBILI_PERSIST=1
```

```python
# Or via code
app = BilibiliAllInOne(persist=True)
```

When persistence is enabled:
- Credentials are auto-saved to `.credentials.json` (with `0600` permissions) after initialization
- On next startup, credentials are auto-loaded from this file
- You can toggle persistence at runtime: `app.auth.persist = True` / `app.auth.persist = False`
- To delete the persisted file: `app.auth.clear_persisted()`

> **How to get cookies:** Log in to [bilibili.com](https://www.bilibili.com), open browser DevTools (F12) โ†’ Application โ†’ Cookies, and copy the values of `SESSDATA`, `bili_jct`, and `buvid3`.

## โš ๏ธ Security & Privacy

### Credential Handling

This skill handles **sensitive Bilibili session cookies**. Please read the following carefully:

| Concern | Detail |
|---|---|
| **What credentials are needed?** | `SESSDATA`, `bili_jct`, `buvid3` โ€” Bilibili **full browser session cookies** (not limited API keys). Providing them grants broad access to your Bilibili account. |
| **Which features require authentication?** | Publishing (upload/edit/schedule/draft), downloading 1080p+/4K quality videos |
| **Which features work WITHOUT credentials?** | Hot monitoring, standard-quality downloads, subtitle listing, danmaku fetching, stats viewing |
| **Where are credentials sent?** | To official Bilibili API endpoints (`api.bilibili.com`, `member.bilibili.com`) over HTTPS only |
| **Are credentials persisted to disk?** | **NO** by default โ€” credentials stay in memory. Set `persist=True` or `BILIBILI_PERSIST=1` to opt-in to automatic persistence (saved to `.credentials.json` with `0600` permissions). You can also manually call `auth.save_to_file()` |
| **File permissions for saved credentials** | `0600` (owner read/write only) โ€” restrictive by default |

### Best Practices

1. ๐Ÿงช **Use a test account** โ€” Do NOT provide your primary Bilibili account cookies for evaluation/testing purposes. These are **full session cookies** that grant broad account access (not limited API keys).
2. ๐Ÿ”’ **Prefer in-memory credentials** โ€” Pass credentials via environment variables or direct parameters rather than saving to a file. Only enable `persist=True` if you need credentials to survive across sessions.
3. ๐Ÿ“ **If you enable persistence** โ€” Credentials are saved with `0600` permissions. Use `auth.clear_persisted()` or `auth.persist = False` to remove the file when no longer needed.
4. ๐Ÿณ **Run in isolation** โ€” When possible, run this skill in an isolated container/environment and inspect network traffic.
5. ๐ŸŒ **Verify network traffic** โ€” All HTTP requests go to Bilibili's official domains only. You can verify by monitoring outbound connections.
6. โŒ **No exfiltration** โ€” This skill does NOT send credentials to any third-party service, analytics endpoint, or telemetry server.
7. ๐Ÿ”‘ **Credential scope** โ€” `SESSDATA` and `bili_jct` are full session cookies. They are NOT scoped/limited API keys. Treat them with the same care as your account password.

### Network Endpoints Used

| Domain | Purpose |
|---|---|
| `api.bilibili.com` | Video info, stats, hot lists, subtitles, danmaku, playback URLs |
| `member.bilibili.com` | Video publishing (upload, edit) |
| `upos-sz-upcdnbda2.bilivideo.com` | Video file upload CDN |
| `www.bilibili.com` | Web page scraping fallback |

### Credential Requirement by Module

| Module | Auth Required? | Notes |
|---|---|---|
| ๐Ÿ”ฅ Hot Monitor | โŒ No | All public APIs |
| โฌ‡๏ธ Downloader | โš ๏ธ Optional | Required only for 1080p+ / 4K quality |
| ๐Ÿ‘€ Watcher | โŒ No | Public stats APIs |
| ๐Ÿ“ Subtitle | โŒ No | Public subtitle APIs |
| โ–ถ๏ธ Player | โš ๏ธ Optional | Required for high-quality playback URLs |
| ๐Ÿ“ค Publisher | โœ… **Required** | All operations need `SESSDATA` + `bili_jct` |

## Usage

### CLI

```bash
python main.py <skill_name> <action> [params_json]
```

### Python API

```python
import asyncio
from main import BilibiliAllInOne

app = BilibiliAllInOne()

async def demo():
    result = await app.execute("hot_monitor", "get_hot", limit=5)
    print(result)

asyncio.run(demo())
```

---

## Skills Reference

### 1. ๐Ÿ”ฅ Hot Monitor (`bilibili_hot_monitor`)

Monitor Bilibili hot/trending videos and topics in real-time. Supports filtering by category, tracking rank changes.

#### Actions

| Action | Description | Parameters |
|---|---|---|
| `get_hot` | Get popular/hot videos | `page`, `page_size` |
| `get_trending` | Get trending series/topics | `limit` |
| `get_weekly` | Get weekly must-watch list | `number` (week number, optional) |
| `get_rank` | Get category ranking videos | `category`, `limit` |

#### Supported Categories

`all`, `anime`, `music`, `dance`, `game`, `tech`, `life`, `food`, `car`, `fashion`, `entertainment`, `movie`, `tv`

#### Examples

```bash
# Get top 10 hot videos
python main.py hot_monitor get_hot '{"page_size": 10}'

# Get trending topics
python main.py hot_monitor get_trending '{"limit": 5}'

# Get this week's must-watch
python main.py hot_monitor get_weekly

# Get game category rankings
python main.py hot_monitor get_rank '{"category": "game", "limit": 10}'
```

```python
# Python API
result = await app.execute("hot_monitor", "get_hot", page_size=10)
result = await app.execute("hot_monitor", "get_rank", category="game", limit=10)
```

---

### 2. โฌ‡๏ธ Downloader (`bilibili_downloader`)

Download Bilibili videos with support for multiple quality options, batch downloading, and format selection.

#### Actions

| Action | Description | Parameters |
|---|---|---|
| `get_info` | Get video information | `url` |
| `get_formats` | List available qualities/formats | `url` |
| `download` | Download a single video | `url`, `quality`, `output_dir`, `format`, `page` |
| `batch_download` | Download multiple videos | `urls`, `quality`, `output_dir`, `format` |

#### Quality Options

`360p`, `480p`, `720p`, `1080p` (default), `1080p+`, `4k`

#### Format Options

`mp4` (default), `flv`, `mp3` (audio only)

#### Examples

```bash
# Get video info
python main.py downloader get_info '{"url": "BV1xx411c7mD"}'

# List available formats
python main.py downloader get_formats '{"url": "BV1xx411c7mD"}'

# Download in 1080p MP4
python main.py downloader download '{"url": "BV1xx411c7mD", "quality": "1080p", "format": "mp4"}'

# Extract audio only
python main.py downloader download '{"url": "BV1xx411c7mD", "format": "mp3"}'

# Batch download
python main.py downloader batch_download '{"urls": ["BV1xx411c7mD", "BV1yy411c8nE"], "quality": "720p"}'
```

```python
# Python API
info = await app.execute("downloader", "get_info", url="BV1xx411c7mD")
result = await app.execute("downloader", "download", url="BV1xx411c7mD", quality="1080p")
```

---

### 3. ๐Ÿ‘€ Watcher (`bilibili_watcher`)

Watch and monitor Bilibili videos. Track view counts, comments, likes, and other engagement metrics over time.

#### Actions

| Action | Description | Parameters |
|---|---|---|
| `watch` | Get detailed video information | `url` |
| `get_stats` | Get current engagement statistics | `url` |
| `track` | Track metrics over time | `url`, `interval` (minutes), `duration` (hours) |
| `compare` | Compare multiple videos | `urls` |

#### Supported Platforms

- **Bilibili**: `https://www.bilibili.com/video/BVxxxxxx` or `BVxxxxxx`

#### Examples

```bash
# Get video details
python main.py watcher watch '{"url": "BV1xx411c7mD"}'

# Get current stats
python main.py watcher get_stats '{"url": "BV1xx411c7mD"}'

# Track views every 30 minutes for 12 hours
python main.py watcher track '{"url": "BV1xx411c7mD", "interval": 30, "duration": 12}'

# Compare multiple videos
python main.py watcher compare '{"urls": ["BV1xx411c7mD", "BV1yy411c8nE"]}'
```

```python
# Python API

comparison = await app.execute("watcher", "compare", urls=["BV1xx411c7mD", "BV1yy411c8nE"])
```

---

### 4. ๐Ÿ“ Subtitle (`bilibili_subtitle`)

Download and process subtitles/CC from Bilibili videos. Supports multiple subtitle formats and languages.

**When no CC subtitles are available**, the module automatically falls back to:
1. **Speech Recognition** โ€” Downloads the video's audio and transcribes it using `faster-whisper` (requires `pip install faster-whisper`)
2. **Danmaku Extraction** โ€” Fetches bullet comments from the video as a text reference

Both fallback results are returned together when triggered.

#### Actions

| Action | Description | Parameters |
|---|---|---|
| `list` | List available subtitles | `url` |
| `download` | Download subtitles (with auto-fallback) | `url`, `language`, `format`, `output_dir` |
| `convert` | Convert subtitle format | `input_path`, `output_format`, `output_dir` |
| `merge` | Merge multiple subtitle files | `input_paths`, `output_path`, `output_format` |

#### Supported Formats

`srt` (default), `ass`, `vtt`, `txt`, `json`

#### Supported Languages

`zh-CN` (default), `en`, `ja`, and other language codes available on the video.

#### Fallback Strategy

When `download` is called and no CC subtitles exist:

```
CC Subtitle Available? โ”€โ”€Yesโ”€โ”€โ–ถ Download CC subtitle
        โ”‚
       No
        โ”‚
        โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Fallback 1: Speech Recognition     โ”‚
โ”‚  Download audio โ†’ faster-whisper    โ”‚
โ”‚  Output: {title}_transcribed.srt    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Fallback 2: Danmaku Extraction     โ”‚
โ”‚  Fetch bullet comments โ†’ SRT        โ”‚
โ”‚  Output: {title}_danmaku.srt        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

#### Examples

```bash
# List available subtitles
python main.py subtitle list '{"url": "BV1xx411c7mD"}'

# Download Chinese subtitles in SRT format (auto-fallback if no CC)
python main.py subtitle download '{"url": "BV1xx411c7mD", "language": "zh-CN", "format": "srt"}'

# Download English subtitles in ASS format
python main.py subtitle download '{"url": "BV1xx411c7mD", "language": "en", "format": "ass"}'

# Convert SRT to VTT
python main.py subtitle convert '{"input_path": "./subtitles/video.srt", "output_format": "vtt"}'

# Merge subtitle files
python main.py subtitle merge '{"input_paths": ["part1.srt", "part2.srt"], "output_path": "merged.srt"}'
```

```python
# Python API
subs = await app.execute("subtitle", "list", url="BV1xx411c7mD")
result = await app.execute("subtitle", "download", url="BV1xx411c7mD", language="zh-CN", format="srt")

# When no CC subtitles, result includes both fallback outputs:
# result["transcription"]["filepath"]  โ†’ speech recognition SRT
# result["danmaku"]["filepath"]        โ†’ danmaku SRT
```

---

### 5. โ–ถ๏ธ Player (`bilibili_player`)

Play Bilibili videos with support for playback control, playlist management, and danmaku (bullet comments) display.

#### Actions

| Action | Description | Parameters |
|---|---|---|
| `play` | Get complete playback info | `url`, `quality`, `page` |
| `get_playurl` | Get direct play URLs | `url`, `quality`, `page` |
| `get_danmaku` | Get danmaku/bullet comments | `url`, `page`, `segment` |
| `get_playlist` | Get playlist/multi-part info | `url` |

#### Danmaku Modes

| Mode | Description |
|---|---|
| 1 | Scroll (right to left) |
| 4 | Bottom fixed |
| 5 | Top fixed |

#### Examples

```bash
# Get playback info
python main.py player play '{"url": "BV1xx411c7mD", "quality": "1080p"}'

# Get direct play URLs
python main.py player get_playurl '{"url": "BV1xx411c7mD", "quality": "720p"}'

# Get danmaku
python main.py player get_danmaku '{"url": "BV1xx411c7mD"}'

# Get playlist for multi-part video
python main.py player get_playlist '{"url": "BV1xx411c7mD"}'

# Get page 3 of a multi-part video
python main.py player play '{"url": "BV1xx411c7mD", "quality": "1080p", "page": 3}'
```

```python
# Python API
play_info = await app.execute("player", "play", url="BV1xx411c7mD", quality="1080p")
danmaku = await app.execute("player", "get_danmaku", url="BV1xx411c7mD")
playlist = await app.execute("player", "get_playlist", url="BV1xx411c7mD")
```

---

### 6. ๐Ÿ“ค Publisher (`bilibili_publisher`)

Publish videos to Bilibili. Supports uploading videos, setting metadata, scheduling publications, and managing drafts.

> โš ๏ธ **Authentication Required**: All publisher actions require valid Bilibili credentials.

#### Actions

| Action | Description | Parameters |
|---|---|---|
| `upload` | Upload and publish a video | `file_path`, `title`, `description`, `tags`, `category`, `cover_path`, `dynamic`, `no_reprint`, `open_elec` |
| `draft` | Save as draft | `file_path`, `title`, `description`, `tags`, `category`, `cover_path` |
| `schedule` | Schedule future publication | `file_path`, `title`, `schedule_time`, `description`, `tags`, `category`, `cover_path` |
| `edit` | Edit existing video metadata | `bvid`, `file_path`, `title`, `description`, `tags`, `cover_path` |

#### Upload Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `file_path` | string | *required* | Path to the video file |
| `title` | string | *required* | Video title (max 80 chars) |
| `description` | string | `""` | Video description (max 2000 chars) |
| `tags` | string[] | `["bilibili"]` | Tags (max 12, each max 20 chars) |
| `category` | string | `"171"` | Category TID |
| `cover_path` | string | `null` | Path to cover image (JPG/PNG) |
| `no_reprint` | int | `1` | 1 = original content, 0 = repost |
| `open_elec` | int | `0` | 1 = enable charging, 0 = disable |

#### Examples

```bash
# Upload and publish
python main.py publisher upload '{"file_path": "./video.mp4", "title": "My Video", "description": "Hello World", "tags": ["test", "demo"], "category": "171"}'

# Save as draft
python main.py publisher draft '{"file_path": "./video.mp4", "title": "Draft Video"}'

# Schedule publication
python main.py publisher schedule '{"file_path": "./video.mp4", "title": "Scheduled Video", "schedule_time": "2025-12-31T20:00:00+08:00"}'

# Edit video metadata (requires re-uploading the video file)
python main.py publisher edit '{"bvid": "BV1xx411c7mD", "file_path": "./video.mp4", "title": "New Title", "tags": ["updated"]}'
```

```python
# Python API (authentication required)
app = BilibiliAllInOne(sessdata="xxx", bili_jct="xxx", buvid3="xxx")

result = await app.execute("publisher", "upload",
    file_path="./video.mp4",
    title="My Video",
    description="Published via bilibili-all-in-one",
    tags=["python", "bilibili"],
)

# Edit video (requires file_path for re-upload)
result = await app.execute("publisher", "edit",
    bvid="BV1xx411c7mD",
    file_path="./video.mp4",
    title="New Title",
    tags=["updated"],
)
```

---

## Project Structure

```
bilibili-all-in-one/
โ”œโ”€โ”€ skill.json              # Skill configuration & parameter schema
โ”œโ”€โ”€ skill.md                # This documentation file
โ”œโ”€โ”€ README.md               # Project README (Chinese)
โ”œโ”€โ”€ LICENSE                  # MIT License
โ”œโ”€โ”€ requirements.txt        # Python dependencies
โ”œโ”€โ”€ .gitignore              # Git ignore rules
โ”œโ”€โ”€ main.py                 # Entry point & unified BilibiliAllInOne class
โ””โ”€โ”€ src/
    โ”œโ”€โ”€ __init__.py         # Package exports
    โ”œโ”€โ”€ auth.py             # Authentication & credential management
    โ”œโ”€โ”€ utils.py            # Shared utilities, API constants, helpers
    โ”œโ”€โ”€ hot_monitor.py      # Hot/trending video monitoring
    โ”œโ”€โ”€ downloader.py       # Video downloading
    โ”œโ”€โ”€ watcher.py          # Video watching & stats tracking
    โ”œโ”€โ”€ subtitle.py         # Subtitle downloading & processing
    โ”œโ”€โ”€ player.py           # Video playback & danmaku
    โ””โ”€โ”€ publisher.py        # Video uploading & publishing
```

## Response Format

All skill actions return a JSON object with a unified structure:

```json
{
  "success": true,
  "...": "action-specific fields"
}
```

On error:

```json
{
  "success": false,
  "message": "Error description"
}
```

## License

MIT

Files in this skill

  • SKILL.md20.9 KB
  • source.json881 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading commentsโ€ฆ

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.