[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M77TRXM2JS28K1V4RXMPPHT3":3,"skill-same:01M77TRXM2JS28K1V4RXMPPHT3":144},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M77TRXM2JS28K1V4RXMPPHT3","bilibili-all-in-one",null,"A comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching\u002Fplayback, 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 and YouTube oEmbed API (for YouTube stats) over HTTPS.","Jinhong270\u002FAI-Agent","Jinhong270","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193703602?v=4","01M77SB4J7ATDYATSD7AW4B8XP","01M77SB4JWRQWNGTTR291BHMQP",3,"MIT","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fskill.md",[],[],"2026-11-15 14:19:17",false,"---\nname: bilibili-all-in-one\ndescription: >\n  A comprehensive Bilibili toolkit that integrates hot trending monitoring,\n  video downloading, video watching\u002Fplayback, subtitle downloading,\n  and video publishing capabilities into a single unified skill.\n  Supports Bilibili session cookie authentication for publishing and\n  high-quality downloads. Requests go to official Bilibili API endpoints\n  and YouTube oEmbed API (for YouTube stats) over HTTPS.\nversion: 1.0.12\ntype: code\nimplementation: python\ninterface: cli-and-api\nruntime: python>=3.8\nlanguages:\n  - zh-CN\n  - en\ntags:\n  - bilibili\n  - video-download\n  - hot-trending\n  - subtitle\n  - danmaku\n  - video-publish\n  - video-player\n  - youtube-stats\n  - batch-download\n  - multi-format\nauthor: wscats\nlicense: MIT\nhomepage: https:\u002F\u002Fgithub.com\u002Fwscats\u002Fbilibili-all-in-one\nrepository: https:\u002F\u002Fgithub.com\u002Fwscats\u002Fbilibili-all-in-one\nentry_point: main.py\nrequired_env_vars:\n  - BILIBILI_SESSDATA\n  - BILIBILI_BILI_JCT\noptional_env_vars:\n  - BILIBILI_BUVID3\ninstall: pip install -r requirements.txt\n---\n\n# Bilibili All-in-One Skill\n\nA comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching\u002Fplayback, subtitle downloading, and video publishing capabilities into a single unified skill.\n\n> **⚠️ Required Environment Variables:** `BILIBILI_SESSDATA`, `BILIBILI_BILI_JCT` (required), `BILIBILI_BUVID3` (optional)\n> These are sensitive Bilibili session cookies needed for authenticated operations (publishing, high-quality downloads).\n> Features that do NOT require authentication: hot monitoring, standard-quality downloads, subtitle listing, danmaku, stats viewing.\n>\n> **📦 Install:** `pip install -r requirements.txt` (all standard PyPI packages: httpx, bilibili-api-python, aiohttp, beautifulsoup4, lxml, requests)\n>\n> **🔗 Source:** [github.com\u002Fwscats\u002Fbilibili-all-in-one](https:\u002F\u002Fgithub.com\u002Fwscats\u002Fbilibili-all-in-one)\n\n---\n### 何时激活\n\n当用户说出或暗示以下内容时，本 Skill 会被激活：\n\n| 触发场景 | 匹配的模块 | 典型触发词 |\n|---|---|---|\n| 查看B站热门、热搜、排行榜、必看榜 | 🔥 Hot Monitor | \"热门\"、\"热搜\"、\"排行\"、\"趋势\"、\"必看\"、\"流行\"、\"榜单\" |\n| 下载B站视频、提取音频、批量下载 | ⬇️ Downloader | \"下载\"、\"保存视频\"、\"提取音频\"、\"导出MP4\"、\"批量下载\" |\n| 查看视频播放量、点赞数、数据追踪、对比 | 👀 Watcher | \"播放量\"、\"点赞\"、\"数据\"、\"统计\"、\"对比\"、\"监控\"、\"追踪\"、\"观看量\" |\n| 下载字幕、转换字幕格式、合并字幕 | 📝 Subtitle | \"字幕\"、\"CC\"、\"SRT\"、\"ASS\"、\"字幕下载\"、\"字幕转换\"、\"翻译\" |\n| 播放视频、获取弹幕、播放列表 | ▶️ Player | \"播放\"、\"弹幕\"、\"播放地址\"、\"分P\"、\"播放列表\"、\"danmaku\" |\n| 上传视频、发布、定时发布、草稿、编辑、删除 | 📤 Publisher | \"上传\"、\"发布\"、\"投稿\"、\"定时发布\"、\"草稿\"、\"编辑视频\"、\"删除视频\" |\n| 涉及YouTube视频数据查询 | 👀 Watcher | \"YouTube\"、\"油管\"、\"YTB\"、\"YouTube观看量\" |\n| 提及B站链接或BV号 | 自动识别 | `BV*`、`bilibili.com\u002Fvideo\u002F*`、`b23.tv\u002F*` |\n\n> 💡 **提示**：只要用户消息中包含 B站\u002FBilibili 相关操作意图，或包含 BV 号、bilibili 链接，本 Skill 即会被自动激活。无需显式声明调用。\n\n---\n\n## Features\n| Module | Description |\n|---|---|\n| 🔥 **Hot Monitor** | Monitor Bilibili hot\u002Ftrending videos and topics in real-time |\n| ⬇️ **Downloader** | Download Bilibili videos with multiple quality and format options |\n| 👀 **Watcher** | Watch and track video engagement metrics (supports Bilibili & YouTube) |\n| 📝 **Subtitle** | Download and process subtitles in multiple formats and languages |\n| ▶️ **Player** | Get playback URLs, danmaku (bullet comments), and playlist info |\n| 📤 **Publisher** | Upload, schedule, edit, and manage videos on Bilibili |\n\n## Installation\n\n### Requirements\n\n- Python >= 3.8\n- ffmpeg (optional, for merging video\u002Faudio streams)\n\n### Install Dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### Dependencies\n\n- `httpx >= 0.24.0`\n- `bilibili-api-python >= 16.0.0`\n- `aiohttp >= 3.8.0`\n- `beautifulsoup4 >= 4.12.0`\n- `lxml >= 4.9.0`\n- `requests >= 2.31.0`\n\n## Configuration\n\nSome features (downloading high-quality videos, publishing, etc.) require Bilibili authentication. You can provide credentials in three ways:\n\n### 1. Environment Variables\n\n```bash\nexport BILIBILI_SESSDATA=\"your_sessdata\"\nexport BILIBILI_BILI_JCT=\"your_bili_jct\"\nexport BILIBILI_BUVID3=\"your_buvid3\"\n```\n\n### 2. Credential File\n\nCreate a JSON file (e.g., `credentials.json`):\n\n```json\n{\n  \"sessdata\": \"your_sessdata\",\n  \"bili_jct\": \"your_bili_jct\",\n  \"buvid3\": \"your_buvid3\"\n}\n```\n\n### 3. Direct Parameters\n\nPass credentials directly when initializing:\n\n```python\nfrom main import BilibiliAllInOne\n\napp = BilibiliAllInOne(\n    sessdata=\"your_sessdata\",\n    bili_jct=\"your_bili_jct\",\n    buvid3=\"your_buvid3\",\n)\n```\n\n> **How to get cookies:** Log in to [bilibili.com](https:\u002F\u002Fwww.bilibili.com), open browser DevTools (F12) → Application → Cookies, and copy the values of `SESSDATA`, `bili_jct`, and `buvid3`.\n\n## ⚠️ Security & Privacy\n\n### Credential Handling\n\nThis skill handles **sensitive Bilibili session cookies**. Please read the following carefully:\n\n| Concern | Detail |\n|---|---|\n| **What credentials are needed?** | `SESSDATA`, `bili_jct`, `buvid3` — Bilibili browser cookies |\n| **Which features require authentication?** | Publishing (upload\u002Fedit\u002Fdelete\u002Fschedule\u002Fdraft), downloading 1080p+\u002F4K quality videos |\n| **Which features work WITHOUT credentials?** | Hot monitoring, standard-quality downloads, subtitle listing, danmaku fetching, stats viewing |\n| **Where are credentials sent?** | To official Bilibili API endpoints (`api.bilibili.com`, `member.bilibili.com`) over HTTPS. YouTube metadata uses `www.youtube.com\u002Foembed` (no credentials sent) |\n| **Are credentials persisted to disk?** | **NO** — unless you explicitly call `auth.save_to_file()`. Credentials stay in memory by default |\n| **File permissions for saved credentials** | `0600` (owner read\u002Fwrite only) — restrictive by default |\n\n### Best Practices\n\n1. 🧪 **Use a test account** — Do NOT provide your primary Bilibili account cookies for evaluation\u002Ftesting purposes.\n2. 🔒 **Prefer in-memory credentials** — Pass credentials via environment variables or direct parameters rather than saving to a file.\n3. 📁 **If you must save credentials** — Use `auth.save_to_file()` which creates files with `0600` permissions. Delete the file when no longer needed.\n4. 🐳 **Run in isolation** — When possible, run this skill in an isolated container\u002Fenvironment and inspect network traffic.\n5. 🌐 **Verify network traffic** — All HTTP requests go to Bilibili's official domains and YouTube oEmbed API only. You can verify by monitoring outbound connections.\n6. ❌ **No exfiltration** — This skill does NOT send credentials to any third-party service, analytics endpoint, or telemetry server.\n\n### Network Endpoints Used\n\n| Domain | Purpose |\n|---|---|\n| `api.bilibili.com` | Video info, stats, hot lists, subtitles, danmaku, playback URLs |\n| `member.bilibili.com` | Video publishing (upload, edit, delete) |\n| `upos-sz-upcdnbda2.bilivideo.com` | Video file upload CDN |\n| `www.bilibili.com` | Web page scraping fallback |\n| `www.youtube.com` | YouTube video metadata via oEmbed API (no auth required) |\n\n### Credential Requirement by Module\n\n| Module | Auth Required? | Notes |\n|---|---|---|\n| 🔥 Hot Monitor | ❌ No | All public APIs |\n| ⬇️ Downloader | ⚠️ Optional | Required only for 1080p+ \u002F 4K quality |\n| 👀 Watcher | ❌ No | Public stats APIs |\n| 📝 Subtitle | ❌ No | Public subtitle APIs |\n| ▶️ Player | ⚠️ Optional | Required for high-quality playback URLs |\n| 📤 Publisher | ✅ **Required** | All operations need `SESSDATA` + `bili_jct` |\n\n## Usage\n\n### CLI\n\n```bash\npython main.py \u003Cskill_name> \u003Caction> [params_json]\n```\n\n### Python API\n\n```python\nimport asyncio\nfrom main import BilibiliAllInOne\n\napp = BilibiliAllInOne()\n\nasync def demo():\n    result = await app.execute(\"hot_monitor\", \"get_hot\", limit=5)\n    print(result)\n\nasyncio.run(demo())\n```\n\n---\n\n## Skills Reference\n\n### 1. 🔥 Hot Monitor (`bilibili_hot_monitor`)\n\nMonitor Bilibili hot\u002Ftrending videos and topics in real-time. Supports filtering by category, tracking rank changes.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `get_hot` | Get popular\u002Fhot videos | `page`, `page_size` |\n| `get_trending` | Get trending series\u002Ftopics | `limit` |\n| `get_weekly` | Get weekly must-watch list | `number` (week number, optional) |\n| `get_rank` | Get category ranking videos | `category`, `limit` |\n\n#### Supported Categories\n\n`all`, `anime`, `music`, `dance`, `game`, `tech`, `life`, `food`, `car`, `fashion`, `entertainment`, `movie`, `tv`\n\n#### Examples\n\n```bash\n# Get top 10 hot videos\npython main.py hot_monitor get_hot '{\"page_size\": 10}'\n\n# Get trending topics\npython main.py hot_monitor get_trending '{\"limit\": 5}'\n\n# Get this week's must-watch\npython main.py hot_monitor get_weekly\n\n# Get game category rankings\npython main.py hot_monitor get_rank '{\"category\": \"game\", \"limit\": 10}'\n```\n\n```python\n# Python API\nresult = await app.execute(\"hot_monitor\", \"get_hot\", page_size=10)\nresult = await app.execute(\"hot_monitor\", \"get_rank\", category=\"game\", limit=10)\n```\n\n---\n\n### 2. ⬇️ Downloader (`bilibili_downloader`)\n\nDownload Bilibili videos with support for multiple quality options, batch downloading, and format selection.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `get_info` | Get video information | `url` |\n| `get_formats` | List available qualities\u002Fformats | `url` |\n| `download` | Download a single video | `url`, `quality`, `output_dir`, `format`, `page` |\n| `batch_download` | Download multiple videos | `urls`, `quality`, `output_dir`, `format` |\n\n#### Quality Options\n\n`360p`, `480p`, `720p`, `1080p` (default), `1080p+`, `4k`\n\n#### Format Options\n\n`mp4` (default), `flv`, `mp3` (audio only)\n\n#### Examples\n\n```bash\n# Get video info\npython main.py downloader get_info '{\"url\": \"BV1xx411c7mD\"}'\n\n# List available formats\npython main.py downloader get_formats '{\"url\": \"BV1xx411c7mD\"}'\n\n# Download in 1080p MP4\npython main.py downloader download '{\"url\": \"BV1xx411c7mD\", \"quality\": \"1080p\", \"format\": \"mp4\"}'\n\n# Extract audio only\npython main.py downloader download '{\"url\": \"BV1xx411c7mD\", \"format\": \"mp3\"}'\n\n# Batch download\npython main.py downloader batch_download '{\"urls\": [\"BV1xx411c7mD\", \"BV1yy411c8nE\"], \"quality\": \"720p\"}'\n```\n\n```python\n# Python API\ninfo = await app.execute(\"downloader\", \"get_info\", url=\"BV1xx411c7mD\")\nresult = await app.execute(\"downloader\", \"download\", url=\"BV1xx411c7mD\", quality=\"1080p\")\n```\n\n---\n\n### 3. 👀 Watcher (`bilibili_watcher`)\n\nWatch and monitor Bilibili (and YouTube) videos. Track view counts, comments, likes, and other engagement metrics over time.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `watch` | Get detailed video information | `url` |\n| `get_stats` | Get current engagement statistics | `url` |\n| `track` | Track metrics over time | `url`, `interval` (minutes), `duration` (hours) |\n| `compare` | Compare multiple videos | `urls` |\n\n#### Supported Platforms\n\n- **Bilibili**: `https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBVxxxxxx` or `BVxxxxxx`\n- **YouTube**: `https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=xxxxx` or `https:\u002F\u002Fyoutu.be\u002Fxxxxx`\n\n#### Examples\n\n```bash\n# Get video details\npython main.py watcher watch '{\"url\": \"BV1xx411c7mD\"}'\n\n# Get current stats\npython main.py watcher get_stats '{\"url\": \"BV1xx411c7mD\"}'\n\n# Track views every 30 minutes for 12 hours\npython main.py watcher track '{\"url\": \"BV1xx411c7mD\", \"interval\": 30, \"duration\": 12}'\n\n# Compare multiple videos\npython main.py watcher compare '{\"urls\": [\"BV1xx411c7mD\", \"BV1yy411c8nE\"]}'\n```\n\n```python\n# Python API\ndetails = await app.execute(\"watcher\", \"watch\", url=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dQw4w9WgXcQ\")\ncomparison = await app.execute(\"watcher\", \"compare\", urls=[\"BV1xx411c7mD\", \"BV1yy411c8nE\"])\n```\n\n---\n\n### 4. 📝 Subtitle (`bilibili_subtitle`)\n\nDownload and process subtitles\u002FCC from Bilibili videos. Supports multiple subtitle formats and languages.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `list` | List available subtitles | `url` |\n| `download` | Download subtitles | `url`, `language`, `format`, `output_dir` |\n| `convert` | Convert subtitle format | `input_path`, `output_format`, `output_dir` |\n| `merge` | Merge multiple subtitle files | `input_paths`, `output_path`, `output_format` |\n\n#### Supported Formats\n\n`srt` (default), `ass`, `vtt`, `txt`, `json`\n\n#### Supported Languages\n\n`zh-CN` (default), `en`, `ja`, and other language codes available on the video.\n\n#### Examples\n\n```bash\n# List available subtitles\npython main.py subtitle list '{\"url\": \"BV1xx411c7mD\"}'\n\n# Download Chinese subtitles in SRT format\npython main.py subtitle download '{\"url\": \"BV1xx411c7mD\", \"language\": \"zh-CN\", \"format\": \"srt\"}'\n\n# Download English subtitles in ASS format\npython main.py subtitle download '{\"url\": \"BV1xx411c7mD\", \"language\": \"en\", \"format\": \"ass\"}'\n\n# Convert SRT to VTT\npython main.py subtitle convert '{\"input_path\": \".\u002Fsubtitles\u002Fvideo.srt\", \"output_format\": \"vtt\"}'\n\n# Merge subtitle files\npython main.py subtitle merge '{\"input_paths\": [\"part1.srt\", \"part2.srt\"], \"output_path\": \"merged.srt\"}'\n```\n\n```python\n# Python API\nsubs = await app.execute(\"subtitle\", \"list\", url=\"BV1xx411c7mD\")\nresult = await app.execute(\"subtitle\", \"download\", url=\"BV1xx411c7mD\", language=\"zh-CN\", format=\"srt\")\n```\n\n---\n\n### 5. ▶️ Player (`bilibili_player`)\n\nPlay Bilibili videos with support for playback control, playlist management, and danmaku (bullet comments) display.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `play` | Get complete playback info | `url`, `quality`, `page` |\n| `get_playurl` | Get direct play URLs | `url`, `quality`, `page` |\n| `get_danmaku` | Get danmaku\u002Fbullet comments | `url`, `page`, `segment` |\n| `get_playlist` | Get playlist\u002Fmulti-part info | `url` |\n\n#### Danmaku Modes\n\n| Mode | Description |\n|---|---|\n| 1 | Scroll (right to left) |\n| 4 | Bottom fixed |\n| 5 | Top fixed |\n\n#### Examples\n\n```bash\n# Get playback info\npython main.py player play '{\"url\": \"BV1xx411c7mD\", \"quality\": \"1080p\"}'\n\n# Get direct play URLs\npython main.py player get_playurl '{\"url\": \"BV1xx411c7mD\", \"quality\": \"720p\"}'\n\n# Get danmaku\npython main.py player get_danmaku '{\"url\": \"BV1xx411c7mD\"}'\n\n# Get playlist for multi-part video\npython main.py player get_playlist '{\"url\": \"BV1xx411c7mD\"}'\n\n# Get page 3 of a multi-part video\npython main.py player play '{\"url\": \"BV1xx411c7mD\", \"quality\": \"1080p\", \"page\": 3}'\n```\n\n```python\n# Python API\nplay_info = await app.execute(\"player\", \"play\", url=\"BV1xx411c7mD\", quality=\"1080p\")\ndanmaku = await app.execute(\"player\", \"get_danmaku\", url=\"BV1xx411c7mD\")\nplaylist = await app.execute(\"player\", \"get_playlist\", url=\"BV1xx411c7mD\")\n```\n\n---\n\n### 6. 📤 Publisher (`bilibili_publisher`)\n\nPublish videos to Bilibili. Supports uploading videos, setting metadata, scheduling publications, and managing drafts.\n\n> ⚠️ **Authentication Required**: All publisher actions require valid Bilibili credentials.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `upload` | Upload and publish a video | `file_path`, `title`, `description`, `tags`, `category`, `cover_path`, `dynamic`, `no_reprint`, `open_elec` |\n| `draft` | Save as draft | `file_path`, `title`, `description`, `tags`, `category`, `cover_path` |\n| `schedule` | Schedule future publication | `file_path`, `title`, `schedule_time`, `description`, `tags`, `category`, `cover_path` |\n| `edit` | Edit existing video metadata | `bvid`, `title`, `description`, `tags`, `cover_path` |\n| `delete` | Delete a video | `bvid` |\n\n#### Upload Parameters\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `file_path` | string | *required* | Path to the video file |\n| `title` | string | *required* | Video title (max 80 chars) |\n| `description` | string | `\"\"` | Video description (max 2000 chars) |\n| `tags` | string[] | `[\"bilibili\"]` | Tags (max 12, each max 20 chars) |\n| `category` | string | `\"171\"` | Category TID |\n| `cover_path` | string | `null` | Path to cover image (JPG\u002FPNG) |\n| `no_reprint` | int | `1` | 1 = original content, 0 = repost |\n| `open_elec` | int | `0` | 1 = enable charging, 0 = disable |\n\n#### Examples\n\n```bash\n# Upload and publish\npython main.py publisher upload '{\"file_path\": \".\u002Fvideo.mp4\", \"title\": \"My Video\", \"description\": \"Hello World\", \"tags\": [\"test\", \"demo\"], \"category\": \"171\"}'\n\n# Save as draft\npython main.py publisher draft '{\"file_path\": \".\u002Fvideo.mp4\", \"title\": \"Draft Video\"}'\n\n# Schedule publication\npython main.py publisher schedule '{\"file_path\": \".\u002Fvideo.mp4\", \"title\": \"Scheduled Video\", \"schedule_time\": \"2025-12-31T20:00:00+08:00\"}'\n\n# Edit video metadata\npython main.py publisher edit '{\"bvid\": \"BV1xx411c7mD\", \"title\": \"New Title\", \"tags\": [\"updated\"]}'\n\n# Delete a video\npython main.py publisher delete '{\"bvid\": \"BV1xx411c7mD\"}'\n```\n\n```python\n# Python API (authentication required)\napp = BilibiliAllInOne(sessdata=\"xxx\", bili_jct=\"xxx\", buvid3=\"xxx\")\n\nresult = await app.execute(\"publisher\", \"upload\",\n    file_path=\".\u002Fvideo.mp4\",\n    title=\"My Video\",\n    description=\"Published via bilibili-all-in-one\",\n    tags=[\"python\", \"bilibili\"],\n)\n```\n\n---\n\n## Project Structure\n\n```\nbilibili-all-in-one\u002F\n├── skill.json              # Skill configuration & parameter schema\n├── skill.md                # This documentation file\n├── README.md               # Project README (Chinese)\n├── LICENSE                  # MIT License\n├── requirements.txt        # Python dependencies\n├── .gitignore              # Git ignore rules\n├── main.py                 # Entry point & unified BilibiliAllInOne class\n├── src\u002F\n│   ├── __init__.py         # Package exports\n│   ├── auth.py             # Authentication & credential management\n│   ├── utils.py            # Shared utilities, API constants, helpers\n│   ├── hot_monitor.py      # Hot\u002Ftrending video monitoring\n│   ├── downloader.py       # Video downloading\n│   ├── watcher.py          # Video watching & stats tracking\n│   ├── subtitle.py         # Subtitle downloading & processing\n│   ├── player.py           # Video playback & danmaku\n│   └── publisher.py        # Video uploading & publishing\n└── tests\u002F\n    ├── __init__.py\n    └── test_all_skill_examples.py  # Comprehensive unit tests\n```\n\n## Skill Origin\n\nThis skill integrates the functionality of the following individual skills into one unified toolkit:\n\n| Original Skill | Source | Integrated Module |\n|---|---|---|\n| bilibili-hot-monitor | [Jacobzwj\u002Fbilibili-hot-monitor](https:\u002F\u002Fclawhub.ai\u002FJacobzwj\u002Fbilibili-hot-monitor) | `hot_monitor` |\n| bililidownloader | [caiyundc880518\u002Fbililidownloader](https:\u002F\u002Fclawhub.ai\u002Fcaiyundc880518\u002Fbililidownloader) | `downloader` |\n| bilibili-youtube-watcher | [donnycui\u002Fbilibili-youtube-watcher](https:\u002F\u002Fclawhub.ai\u002Fdonnycui\u002Fbilibili-youtube-watcher) | `watcher` |\n| bilibili-subtitle-download-skill | [DavinciEvans\u002Fbilibili-subtitle-download-skill](https:\u002F\u002Fclawhub.ai\u002FDavinciEvans\u002Fbilibili-subtitle-download-skill) | `subtitle` |\n| bilibili-player | [e421083458\u002Fbilibili-player](https:\u002F\u002Fclawhub.ai\u002Fe421083458\u002Fbilibili-player) | `player` |\n| bilibili-video-publish | [Johnnyxu820\u002Fbilibili-video-publish](https:\u002F\u002Fclawhub.ai\u002FJohnnyxu820\u002Fbilibili-video-publish) | `publisher` |\n\n## Response Format\n\nAll skill actions return a JSON object with a unified structure:\n\n```json\n{\n  \"success\": true,\n  \"...\": \"action-specific fields\"\n}\n```\n\nOn error:\n\n```json\n{\n  \"success\": false,\n  \"message\": \"Error description\"\n}\n```\n\n## License\n\nMIT\n","# Bilibili All-in-One Skill\n\nA comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching\u002Fplayback, subtitle downloading, and video publishing capabilities into a single unified skill.\n\n> **⚠️ Required Environment Variables:** `BILIBILI_SESSDATA`, `BILIBILI_BILI_JCT` (required), `BILIBILI_BUVID3` (optional)\n> These are sensitive Bilibili session cookies needed for authenticated operations (publishing, high-quality downloads).\n> Features that do NOT require authentication: hot monitoring, standard-quality downloads, subtitle listing, danmaku, stats viewing.\n>\n> **📦 Install:** `pip install -r requirements.txt` (all standard PyPI packages: httpx, bilibili-api-python, aiohttp, beautifulsoup4, lxml, requests)\n>\n> **🔗 Source:** [github.com\u002Fwscats\u002Fbilibili-all-in-one](https:\u002F\u002Fgithub.com\u002Fwscats\u002Fbilibili-all-in-one)\n\n---\n### 何时激活\n\n当用户说出或暗示以下内容时，本 Skill 会被激活：\n\n| 触发场景 | 匹配的模块 | 典型触发词 |\n|---|---|---|\n| 查看B站热门、热搜、排行榜、必看榜 | 🔥 Hot Monitor | \"热门\"、\"热搜\"、\"排行\"、\"趋势\"、\"必看\"、\"流行\"、\"榜单\" |\n| 下载B站视频、提取音频、批量下载 | ⬇️ Downloader | \"下载\"、\"保存视频\"、\"提取音频\"、\"导出MP4\"、\"批量下载\" |\n| 查看视频播放量、点赞数、数据追踪、对比 | 👀 Watcher | \"播放量\"、\"点赞\"、\"数据\"、\"统计\"、\"对比\"、\"监控\"、\"追踪\"、\"观看量\" |\n| 下载字幕、转换字幕格式、合并字幕 | 📝 Subtitle | \"字幕\"、\"CC\"、\"SRT\"、\"ASS\"、\"字幕下载\"、\"字幕转换\"、\"翻译\" |\n| 播放视频、获取弹幕、播放列表 | ▶️ Player | \"播放\"、\"弹幕\"、\"播放地址\"、\"分P\"、\"播放列表\"、\"danmaku\" |\n| 上传视频、发布、定时发布、草稿、编辑、删除 | 📤 Publisher | \"上传\"、\"发布\"、\"投稿\"、\"定时发布\"、\"草稿\"、\"编辑视频\"、\"删除视频\" |\n| 涉及YouTube视频数据查询 | 👀 Watcher | \"YouTube\"、\"油管\"、\"YTB\"、\"YouTube观看量\" |\n| 提及B站链接或BV号 | 自动识别 | `BV*`、`bilibili.com\u002Fvideo\u002F*`、`b23.tv\u002F*` |\n\n> 💡 **提示**：只要用户消息中包含 B站\u002FBilibili 相关操作意图，或包含 BV 号、bilibili 链接，本 Skill 即会被自动激活。无需显式声明调用。\n\n---\n\n## Features\n| Module | Description |\n|---|---|\n| 🔥 **Hot Monitor** | Monitor Bilibili hot\u002Ftrending videos and topics in real-time |\n| ⬇️ **Downloader** | Download Bilibili videos with multiple quality and format options |\n| 👀 **Watcher** | Watch and track video engagement metrics (supports Bilibili & YouTube) |\n| 📝 **Subtitle** | Download and process subtitles in multiple formats and languages |\n| ▶️ **Player** | Get playback URLs, danmaku (bullet comments), and playlist info |\n| 📤 **Publisher** | Upload, schedule, edit, and manage videos on Bilibili |\n\n## Installation\n\n### Requirements\n\n- Python >= 3.8\n- ffmpeg (optional, for merging video\u002Faudio streams)\n\n### Install Dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### Dependencies\n\n- `httpx >= 0.24.0`\n- `bilibili-api-python >= 16.0.0`\n- `aiohttp >= 3.8.0`\n- `beautifulsoup4 >= 4.12.0`\n- `lxml >= 4.9.0`\n- `requests >= 2.31.0`\n\n## Configuration\n\nSome features (downloading high-quality videos, publishing, etc.) require Bilibili authentication. You can provide credentials in three ways:\n\n### 1. Environment Variables\n\n```bash\nexport BILIBILI_SESSDATA=\"your_sessdata\"\nexport BILIBILI_BILI_JCT=\"your_bili_jct\"\nexport BILIBILI_BUVID3=\"your_buvid3\"\n```\n\n### 2. Credential File\n\nCreate a JSON file (e.g., `credentials.json`):\n\n```json\n{\n  \"sessdata\": \"your_sessdata\",\n  \"bili_jct\": \"your_bili_jct\",\n  \"buvid3\": \"your_buvid3\"\n}\n```\n\n### 3. Direct Parameters\n\nPass credentials directly when initializing:\n\n```python\nfrom main import BilibiliAllInOne\n\napp = BilibiliAllInOne(\n    sessdata=\"your_sessdata\",\n    bili_jct=\"your_bili_jct\",\n    buvid3=\"your_buvid3\",\n)\n```\n\n> **How to get cookies:** Log in to [bilibili.com](https:\u002F\u002Fwww.bilibili.com), open browser DevTools (F12) → Application → Cookies, and copy the values of `SESSDATA`, `bili_jct`, and `buvid3`.\n\n## ⚠️ Security & Privacy\n\n### Credential Handling\n\nThis skill handles **sensitive Bilibili session cookies**. Please read the following carefully:\n\n| Concern | Detail |\n|---|---|\n| **What credentials are needed?** | `SESSDATA`, `bili_jct`, `buvid3` — Bilibili browser cookies |\n| **Which features require authentication?** | Publishing (upload\u002Fedit\u002Fdelete\u002Fschedule\u002Fdraft), downloading 1080p+\u002F4K quality videos |\n| **Which features work WITHOUT credentials?** | Hot monitoring, standard-quality downloads, subtitle listing, danmaku fetching, stats viewing |\n| **Where are credentials sent?** | To official Bilibili API endpoints (`api.bilibili.com`, `member.bilibili.com`) over HTTPS. YouTube metadata uses `www.youtube.com\u002Foembed` (no credentials sent) |\n| **Are credentials persisted to disk?** | **NO** — unless you explicitly call `auth.save_to_file()`. Credentials stay in memory by default |\n| **File permissions for saved credentials** | `0600` (owner read\u002Fwrite only) — restrictive by default |\n\n### Best Practices\n\n1. 🧪 **Use a test account** — Do NOT provide your primary Bilibili account cookies for evaluation\u002Ftesting purposes.\n2. 🔒 **Prefer in-memory credentials** — Pass credentials via environment variables or direct parameters rather than saving to a file.\n3. 📁 **If you must save credentials** — Use `auth.save_to_file()` which creates files with `0600` permissions. Delete the file when no longer needed.\n4. 🐳 **Run in isolation** — When possible, run this skill in an isolated container\u002Fenvironment and inspect network traffic.\n5. 🌐 **Verify network traffic** — All HTTP requests go to Bilibili's official domains and YouTube oEmbed API only. You can verify by monitoring outbound connections.\n6. ❌ **No exfiltration** — This skill does NOT send credentials to any third-party service, analytics endpoint, or telemetry server.\n\n### Network Endpoints Used\n\n| Domain | Purpose |\n|---|---|\n| `api.bilibili.com` | Video info, stats, hot lists, subtitles, danmaku, playback URLs |\n| `member.bilibili.com` | Video publishing (upload, edit, delete) |\n| `upos-sz-upcdnbda2.bilivideo.com` | Video file upload CDN |\n| `www.bilibili.com` | Web page scraping fallback |\n| `www.youtube.com` | YouTube video metadata via oEmbed API (no auth required) |\n\n### Credential Requirement by Module\n\n| Module | Auth Required? | Notes |\n|---|---|---|\n| 🔥 Hot Monitor | ❌ No | All public APIs |\n| ⬇️ Downloader | ⚠️ Optional | Required only for 1080p+ \u002F 4K quality |\n| 👀 Watcher | ❌ No | Public stats APIs |\n| 📝 Subtitle | ❌ No | Public subtitle APIs |\n| ▶️ Player | ⚠️ Optional | Required for high-quality playback URLs |\n| 📤 Publisher | ✅ **Required** | All operations need `SESSDATA` + `bili_jct` |\n\n## Usage\n\n### CLI\n\n```bash\npython main.py \u003Cskill_name> \u003Caction> [params_json]\n```\n\n### Python API\n\n```python\nimport asyncio\nfrom main import BilibiliAllInOne\n\napp = BilibiliAllInOne()\n\nasync def demo():\n    result = await app.execute(\"hot_monitor\", \"get_hot\", limit=5)\n    print(result)\n\nasyncio.run(demo())\n```\n\n---\n\n## Skills Reference\n\n### 1. 🔥 Hot Monitor (`bilibili_hot_monitor`)\n\nMonitor Bilibili hot\u002Ftrending videos and topics in real-time. Supports filtering by category, tracking rank changes.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `get_hot` | Get popular\u002Fhot videos | `page`, `page_size` |\n| `get_trending` | Get trending series\u002Ftopics | `limit` |\n| `get_weekly` | Get weekly must-watch list | `number` (week number, optional) |\n| `get_rank` | Get category ranking videos | `category`, `limit` |\n\n#### Supported Categories\n\n`all`, `anime`, `music`, `dance`, `game`, `tech`, `life`, `food`, `car`, `fashion`, `entertainment`, `movie`, `tv`\n\n#### Examples\n\n```bash\n# Get top 10 hot videos\npython main.py hot_monitor get_hot '{\"page_size\": 10}'\n\n# Get trending topics\npython main.py hot_monitor get_trending '{\"limit\": 5}'\n\n# Get this week's must-watch\npython main.py hot_monitor get_weekly\n\n# Get game category rankings\npython main.py hot_monitor get_rank '{\"category\": \"game\", \"limit\": 10}'\n```\n\n```python\n# Python API\nresult = await app.execute(\"hot_monitor\", \"get_hot\", page_size=10)\nresult = await app.execute(\"hot_monitor\", \"get_rank\", category=\"game\", limit=10)\n```\n\n---\n\n### 2. ⬇️ Downloader (`bilibili_downloader`)\n\nDownload Bilibili videos with support for multiple quality options, batch downloading, and format selection.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `get_info` | Get video information | `url` |\n| `get_formats` | List available qualities\u002Fformats | `url` |\n| `download` | Download a single video | `url`, `quality`, `output_dir`, `format`, `page` |\n| `batch_download` | Download multiple videos | `urls`, `quality`, `output_dir`, `format` |\n\n#### Quality Options\n\n`360p`, `480p`, `720p`, `1080p` (default), `1080p+`, `4k`\n\n#### Format Options\n\n`mp4` (default), `flv`, `mp3` (audio only)\n\n#### Examples\n\n```bash\n# Get video info\npython main.py downloader get_info '{\"url\": \"BV1xx411c7mD\"}'\n\n# List available formats\npython main.py downloader get_formats '{\"url\": \"BV1xx411c7mD\"}'\n\n# Download in 1080p MP4\npython main.py downloader download '{\"url\": \"BV1xx411c7mD\", \"quality\": \"1080p\", \"format\": \"mp4\"}'\n\n# Extract audio only\npython main.py downloader download '{\"url\": \"BV1xx411c7mD\", \"format\": \"mp3\"}'\n\n# Batch download\npython main.py downloader batch_download '{\"urls\": [\"BV1xx411c7mD\", \"BV1yy411c8nE\"], \"quality\": \"720p\"}'\n```\n\n```python\n# Python API\ninfo = await app.execute(\"downloader\", \"get_info\", url=\"BV1xx411c7mD\")\nresult = await app.execute(\"downloader\", \"download\", url=\"BV1xx411c7mD\", quality=\"1080p\")\n```\n\n---\n\n### 3. 👀 Watcher (`bilibili_watcher`)\n\nWatch and monitor Bilibili (and YouTube) videos. Track view counts, comments, likes, and other engagement metrics over time.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `watch` | Get detailed video information | `url` |\n| `get_stats` | Get current engagement statistics | `url` |\n| `track` | Track metrics over time | `url`, `interval` (minutes), `duration` (hours) |\n| `compare` | Compare multiple videos | `urls` |\n\n#### Supported Platforms\n\n- **Bilibili**: `https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBVxxxxxx` or `BVxxxxxx`\n- **YouTube**: `https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=xxxxx` or `https:\u002F\u002Fyoutu.be\u002Fxxxxx`\n\n#### Examples\n\n```bash\n# Get video details\npython main.py watcher watch '{\"url\": \"BV1xx411c7mD\"}'\n\n# Get current stats\npython main.py watcher get_stats '{\"url\": \"BV1xx411c7mD\"}'\n\n# Track views every 30 minutes for 12 hours\npython main.py watcher track '{\"url\": \"BV1xx411c7mD\", \"interval\": 30, \"duration\": 12}'\n\n# Compare multiple videos\npython main.py watcher compare '{\"urls\": [\"BV1xx411c7mD\", \"BV1yy411c8nE\"]}'\n```\n\n```python\n# Python API\ndetails = await app.execute(\"watcher\", \"watch\", url=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=dQw4w9WgXcQ\")\ncomparison = await app.execute(\"watcher\", \"compare\", urls=[\"BV1xx411c7mD\", \"BV1yy411c8nE\"])\n```\n\n---\n\n### 4. 📝 Subtitle (`bilibili_subtitle`)\n\nDownload and process subtitles\u002FCC from Bilibili videos. Supports multiple subtitle formats and languages.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `list` | List available subtitles | `url` |\n| `download` | Download subtitles | `url`, `language`, `format`, `output_dir` |\n| `convert` | Convert subtitle format | `input_path`, `output_format`, `output_dir` |\n| `merge` | Merge multiple subtitle files | `input_paths`, `output_path`, `output_format` |\n\n#### Supported Formats\n\n`srt` (default), `ass`, `vtt`, `txt`, `json`\n\n#### Supported Languages\n\n`zh-CN` (default), `en`, `ja`, and other language codes available on the video.\n\n#### Examples\n\n```bash\n# List available subtitles\npython main.py subtitle list '{\"url\": \"BV1xx411c7mD\"}'\n\n# Download Chinese subtitles in SRT format\npython main.py subtitle download '{\"url\": \"BV1xx411c7mD\", \"language\": \"zh-CN\", \"format\": \"srt\"}'\n\n# Download English subtitles in ASS format\npython main.py subtitle download '{\"url\": \"BV1xx411c7mD\", \"language\": \"en\", \"format\": \"ass\"}'\n\n# Convert SRT to VTT\npython main.py subtitle convert '{\"input_path\": \".\u002Fsubtitles\u002Fvideo.srt\", \"output_format\": \"vtt\"}'\n\n# Merge subtitle files\npython main.py subtitle merge '{\"input_paths\": [\"part1.srt\", \"part2.srt\"], \"output_path\": \"merged.srt\"}'\n```\n\n```python\n# Python API\nsubs = await app.execute(\"subtitle\", \"list\", url=\"BV1xx411c7mD\")\nresult = await app.execute(\"subtitle\", \"download\", url=\"BV1xx411c7mD\", language=\"zh-CN\", format=\"srt\")\n```\n\n---\n\n### 5. ▶️ Player (`bilibili_player`)\n\nPlay Bilibili videos with support for playback control, playlist management, and danmaku (bullet comments) display.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `play` | Get complete playback info | `url`, `quality`, `page` |\n| `get_playurl` | Get direct play URLs | `url`, `quality`, `page` |\n| `get_danmaku` | Get danmaku\u002Fbullet comments | `url`, `page`, `segment` |\n| `get_playlist` | Get playlist\u002Fmulti-part info | `url` |\n\n#### Danmaku Modes\n\n| Mode | Description |\n|---|---|\n| 1 | Scroll (right to left) |\n| 4 | Bottom fixed |\n| 5 | Top fixed |\n\n#### Examples\n\n```bash\n# Get playback info\npython main.py player play '{\"url\": \"BV1xx411c7mD\", \"quality\": \"1080p\"}'\n\n# Get direct play URLs\npython main.py player get_playurl '{\"url\": \"BV1xx411c7mD\", \"quality\": \"720p\"}'\n\n# Get danmaku\npython main.py player get_danmaku '{\"url\": \"BV1xx411c7mD\"}'\n\n# Get playlist for multi-part video\npython main.py player get_playlist '{\"url\": \"BV1xx411c7mD\"}'\n\n# Get page 3 of a multi-part video\npython main.py player play '{\"url\": \"BV1xx411c7mD\", \"quality\": \"1080p\", \"page\": 3}'\n```\n\n```python\n# Python API\nplay_info = await app.execute(\"player\", \"play\", url=\"BV1xx411c7mD\", quality=\"1080p\")\ndanmaku = await app.execute(\"player\", \"get_danmaku\", url=\"BV1xx411c7mD\")\nplaylist = await app.execute(\"player\", \"get_playlist\", url=\"BV1xx411c7mD\")\n```\n\n---\n\n### 6. 📤 Publisher (`bilibili_publisher`)\n\nPublish videos to Bilibili. Supports uploading videos, setting metadata, scheduling publications, and managing drafts.\n\n> ⚠️ **Authentication Required**: All publisher actions require valid Bilibili credentials.\n\n#### Actions\n\n| Action | Description | Parameters |\n|---|---|---|\n| `upload` | Upload and publish a video | `file_path`, `title`, `description`, `tags`, `category`, `cover_path`, `dynamic`, `no_reprint`, `open_elec` |\n| `draft` | Save as draft | `file_path`, `title`, `description`, `tags`, `category`, `cover_path` |\n| `schedule` | Schedule future publication | `file_path`, `title`, `schedule_time`, `description`, `tags`, `category`, `cover_path` |\n| `edit` | Edit existing video metadata | `bvid`, `title`, `description`, `tags`, `cover_path` |\n| `delete` | Delete a video | `bvid` |\n\n#### Upload Parameters\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| `file_path` | string | *required* | Path to the video file |\n| `title` | string | *required* | Video title (max 80 chars) |\n| `description` | string | `\"\"` | Video description (max 2000 chars) |\n| `tags` | string[] | `[\"bilibili\"]` | Tags (max 12, each max 20 chars) |\n| `category` | string | `\"171\"` | Category TID |\n| `cover_path` | string | `null` | Path to cover image (JPG\u002FPNG) |\n| `no_reprint` | int | `1` | 1 = original content, 0 = repost |\n| `open_elec` | int | `0` | 1 = enable charging, 0 = disable |\n\n#### Examples\n\n```bash\n# Upload and publish\npython main.py publisher upload '{\"file_path\": \".\u002Fvideo.mp4\", \"title\": \"My Video\", \"description\": \"Hello World\", \"tags\": [\"test\", \"demo\"], \"category\": \"171\"}'\n\n# Save as draft\npython main.py publisher draft '{\"file_path\": \".\u002Fvideo.mp4\", \"title\": \"Draft Video\"}'\n\n# Schedule publication\npython main.py publisher schedule '{\"file_path\": \".\u002Fvideo.mp4\", \"title\": \"Scheduled Video\", \"schedule_time\": \"2025-12-31T20:00:00+08:00\"}'\n\n# Edit video metadata\npython main.py publisher edit '{\"bvid\": \"BV1xx411c7mD\", \"title\": \"New Title\", \"tags\": [\"updated\"]}'\n\n# Delete a video\npython main.py publisher delete '{\"bvid\": \"BV1xx411c7mD\"}'\n```\n\n```python\n# Python API (authentication required)\napp = BilibiliAllInOne(sessdata=\"xxx\", bili_jct=\"xxx\", buvid3=\"xxx\")\n\nresult = await app.execute(\"publisher\", \"upload\",\n    file_path=\".\u002Fvideo.mp4\",\n    title=\"My Video\",\n    description=\"Published via bilibili-all-in-one\",\n    tags=[\"python\", \"bilibili\"],\n)\n```\n\n---\n\n## Project Structure\n\n```\nbilibili-all-in-one\u002F\n├── skill.json              # Skill configuration & parameter schema\n├── skill.md                # This documentation file\n├── README.md               # Project README (Chinese)\n├── LICENSE                  # MIT License\n├── requirements.txt        # Python dependencies\n├── .gitignore              # Git ignore rules\n├── main.py                 # Entry point & unified BilibiliAllInOne class\n├── src\u002F\n│   ├── __init__.py         # Package exports\n│   ├── auth.py             # Authentication & credential management\n│   ├── utils.py            # Shared utilities, API constants, helpers\n│   ├── hot_monitor.py      # Hot\u002Ftrending video monitoring\n│   ├── downloader.py       # Video downloading\n│   ├── watcher.py          # Video watching & stats tracking\n│   ├── subtitle.py         # Subtitle downloading & processing\n│   ├── player.py           # Video playback & danmaku\n│   └── publisher.py        # Video uploading & publishing\n└── tests\u002F\n    ├── __init__.py\n    └── test_all_skill_examples.py  # Comprehensive unit tests\n```\n\n## Skill Origin\n\nThis skill integrates the functionality of the following individual skills into one unified toolkit:\n\n| Original Skill | Source | Integrated Module |\n|---|---|---|\n| bilibili-hot-monitor | [Jacobzwj\u002Fbilibili-hot-monitor](https:\u002F\u002Fclawhub.ai\u002FJacobzwj\u002Fbilibili-hot-monitor) | `hot_monitor` |\n| bililidownloader | [caiyundc880518\u002Fbililidownloader](https:\u002F\u002Fclawhub.ai\u002Fcaiyundc880518\u002Fbililidownloader) | `downloader` |\n| bilibili-youtube-watcher | [donnycui\u002Fbilibili-youtube-watcher](https:\u002F\u002Fclawhub.ai\u002Fdonnycui\u002Fbilibili-youtube-watcher) | `watcher` |\n| bilibili-subtitle-download-skill | [DavinciEvans\u002Fbilibili-subtitle-download-skill](https:\u002F\u002Fclawhub.ai\u002FDavinciEvans\u002Fbilibili-subtitle-download-skill) | `subtitle` |\n| bilibili-player | [e421083458\u002Fbilibili-player](https:\u002F\u002Fclawhub.ai\u002Fe421083458\u002Fbilibili-player) | `player` |\n| bilibili-video-publish | [Johnnyxu820\u002Fbilibili-video-publish](https:\u002F\u002Fclawhub.ai\u002FJohnnyxu820\u002Fbilibili-video-publish) | `publisher` |\n\n## Response Format\n\nAll skill actions return a JSON object with a unified structure:\n\n```json\n{\n  \"success\": true,\n  \"...\": \"action-specific fields\"\n}\n```\n\nOn error:\n\n```json\n{\n  \"success\": false,\n  \"message\": \"Error description\"\n}\n```\n\n## License\n\nMIT\n",{"name":5,"tags":23,"type":34,"author":35,"install":36,"license":14,"runtime":37,"version":38,"homepage":39,"interface":40,"languages":41,"repository":39,"description":44,"entry_point":45,"implementation":46,"optional_env_vars":47,"required_env_vars":49},[24,25,26,27,28,29,30,31,32,33],"bilibili","video-download","hot-trending","subtitle","danmaku","video-publish","video-player","youtube-stats","batch-download","multi-format","code","wscats","pip install -r requirements.txt","python>=3.8","1.0.12","https:\u002F\u002Fgithub.com\u002Fwscats\u002Fbilibili-all-in-one","cli-and-api",[42,43],"zh-CN","en","A comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching\u002Fplayback, 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 and YouTube oEmbed API (for YouTube stats) over HTTPS.\n","main.py","python",[48],"BILIBILI_BUVID3",[50,51],"BILIBILI_SESSDATA","BILIBILI_BILI_JCT","main","cb3f39689b7b3a95edb2753c8f3e97a313b885fc","Xiao-Q\u002Fskills\u002Fbilibili-all-in-one",0,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent","https:\u002F\u002Fgithub.com\u002FJinhong270","2026-09-30 23:42:56",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add Jinhong270\u002FAI-Agent --skill bilibili-all-in-one",{"tool":65,"command":66},"bunx","bunx skills add Jinhong270\u002FAI-Agent --skill bilibili-all-in-one",{"tool":68,"command":69},"pnpm","pnpm dlx skills add Jinhong270\u002FAI-Agent --skill bilibili-all-in-one","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fskill.md",true,[73,79,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"_meta.json","REFERENCE","参考文档",139,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002F_meta.json",{"path":45,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"SCRIPT","脚本",5027,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fmain.py",{"path":85,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":86,"sourceHtmlUrl":87},"README.md",16202,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002FREADME.md",{"path":89,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":90,"sourceHtmlUrl":91},"requirements.txt",109,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Frequirements.txt",{"path":93,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":94,"sourceHtmlUrl":95},"skill.json",12814,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fskill.json",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"src\u002F__init__.py",515,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002F__init__.py",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"src\u002Fauth.py",5137,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fauth.py",{"path":105,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":106,"sourceHtmlUrl":107},"src\u002Fdownloader.py",14860,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fdownloader.py",{"path":109,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":110,"sourceHtmlUrl":111},"src\u002Fhot_monitor.py",7391,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fhot_monitor.py",{"path":113,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":114,"sourceHtmlUrl":115},"src\u002Fplayer.py",12193,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fplayer.py",{"path":117,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":118,"sourceHtmlUrl":119},"src\u002Fpublisher.py",20892,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fpublisher.py",{"path":121,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":122,"sourceHtmlUrl":123},"src\u002Fsubtitle.py",16121,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fsubtitle.py",{"path":125,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":126,"sourceHtmlUrl":127},"src\u002Futils.py",6675,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Futils.py",{"path":129,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":130,"sourceHtmlUrl":131},"src\u002Fwatcher.py",11260,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Fsrc\u002Fwatcher.py",{"path":133,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":134,"sourceHtmlUrl":135},"STRUCTURE.md",794,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002FSTRUCTURE.md",{"path":137,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":138,"sourceHtmlUrl":139},"tests\u002F__init__.py",16,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Ftests\u002F__init__.py",{"path":141,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":142,"sourceHtmlUrl":143},"tests\u002Ftest_all_skill_examples.py",36091,"https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fbilibili-all-in-one\u002Ftests\u002Ftest_all_skill_examples.py",[145,152,160,167,174,181],{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":18},"01M77Z0W1XHJVFS4M183VZTF3Z","xlsx","Open, create, read, analyze, edit, repair, or validate spreadsheet files (.xlsx, .xlsm, .xltx, .csv, .tsv) with zero format loss, with first-class support for Chinese \u002F CJK content. Use whenever the user asks to create, build, modify, fill, analyze, read, repair, validate, or format any spreadsheet, workbook, report, dashboard, budget, financial model, pivot table, or tabular data file. Handles Chinese text, encodings (UTF-8 \u002F GB18030 \u002F GBK), full-width characters, CJK fonts in rendering, and Chinese number\u002Fdate conventions (¥, 万\u002F亿, 年\u002F月\u002F日). Covers: creating new workbooks from scratch, reading and analyzing existing files, editing existing workbooks while preserving pivot tables \u002F VBA macros \u002F charts \u002F sparklines \u002F conditional formatting \u002F named ranges, formula recalculation and validation, visual review of results, and applying professional formatting. Triggers on 'spreadsheet', 'Excel', 'workbook', '表格', '工作簿', '.xlsx', '.xlsm', '.csv', 'pivot table', '透视表', 'macro', '宏', 'chart', '图表', 'financial model', '财务模型', 'formula', '公式', or any request to produce tabular data.","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fxlsx007-skill\u002FSKILL.md",[],[],{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":156,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":18},"01M77Z0EVYYQEYGJME2K56STBZ","xlsx-formula-master","你描述需求(人话)，它给你 Excel \u002F WPS 公式 + 解释 + 不踩坑的边界条件。\n专攻 VLOOKUP \u002F XLOOKUP \u002F INDEX-MATCH \u002F SUMIFS \u002F 数组公式 \u002F 动态数组 \u002F Power Query 等高频但易错场景。\n自动适配你的 Excel 版本（2019 \u002F 365 \u002F WPS）——版本不同公式可能不能用。\n触发：用户说 \"Excel 公式\"、\"VLOOKUP\"、\"怎么算\"、\"WPS 公式\"、\"求和怎么写\"、\"匹配数据\"、\"数据透视\"。","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fxlsx-formula-master\u002FLICENSE.md","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fxlsx-formula-master\u002FSKILL.md",[],[],{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":18},"01M77Z05X53XF8VVQFFFZE2Z4Z","self-improving-agent","Self-improving agent system that analyzes conversation quality, identifies improvement opportunities, and continuously optimizes response strategies.","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fxiucheng-self-improving-agent\u002FSKILL.md",[],[],{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":18},"01M77YZ7KXV2B7GDCBKE07QRWE","xiaohongshu-content-tools","小红书运营数据工具｜当提到小红书关键词搜索,小红书笔记详情及评论,小红书博主作品时使用，可实现爆款挖掘\u002F竞品分析\u002FKOL筛选\u002F趋势洞察，用数据驱动小红书流量增长，告别盲目创作","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fxiaohongshu-content-tools\u002FSKILL.md",[],[],{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":180,"publishedAt":18},"01M77YYQVPA4EWZPQ8J88BYVYA","xfg-ddd-skills","DDD 六边形架构设计与部署技能包。提供 Domain\u002FCase\u002FInfrastructure 层设计模式与代码模板，以及 Docker 环境部署脚本。当用户询问 DDD 架构、设计模式或需要部署项目时调用。","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fxfg-ddd-skills\u002FSKILL.md",[],[],{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":185,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":18},"01M77YXP7QKKD0HX26W2V63Q9M","wordpress","WordPress.com API integration with managed OAuth. Manage posts, pages, sites, and content.\nUse this skill when users want to create, read, update, or delete WordPress.com posts, pages, or manage site content.\nFor other third party apps, use the api-gateway skill (https:\u002F\u002Fclawhub.ai\u002Fbyungkyu\u002Fapi-gateway).\nRequires network access and valid Maton API key.","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fwordpress-api\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FJinhong270\u002FAI-Agent\u002Fblob\u002Fmain\u002FXiao-Q\u002Fskills\u002Fwordpress-api\u002FSKILL.md",[],[]]