Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Bilibili All In One 1.0.12

A comprehensive Bilibili toolkit that integrates hot trending monitoring, video downloading, video watching/playback, subtitle downloading, and video publish...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 73 · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The capabilities (hot monitoring, download, player, subtitle, publisher) align with the code and SKILL.md. The sensitive env vars it asks for (SESSDATA, bili_jct, optional buvid3) are justified for publishing and high-quality downloads. However the top-level registry metadata in the scan summary declared "Required env vars: none" and "No install spec", whereas skill.json and SKILL.md both declare required env vars and an install command — this mismatch is an incoherence in packaging/metadata.
Instruction Scope
SKILL.md and the source instruct the agent to call official Bilibili APIs and (for YouTube) oEmbed over HTTPS, and the code implements those calls. The instructions and code only reference credential locations the skill documents (env vars, credential file, constructor param). The skill also advertises automatic activation whenever a user message implies Bilibili-related intent; that trigger-scope is broad (auto-activation on any mention of BV/bilibili-related words) — expected for the skill's purpose but worth noting because it increases activation frequency.
Install Mechanism
Installation is standard pip install -r requirements.txt with common PyPI packages (httpx, aiohttp, beautifulsoup4, lxml, requests, bilibili-api-python). That's a normal install mechanism and not high-risk. The incoherence is that the registry summary at the top claimed "No install spec — instruction-only", but both skill.json and SKILL.md explicitly include pip install instructions; the package is not actually instruction-only. Confirm which metadata the platform will use before installing.
Credentials
Requested environment variables (BILIBILI_SESSDATA, BILIBILI_BILI_JCT, optional BILIBILI_BUVID3) match the documented needs (authenticated publishing, high-quality downloads). No unrelated third-party secrets or cloud provider credentials are requested. The code only reads those vars and a credential_file if supplied.
Persistence & Privilege
The skill does not request persistent platform privileges (always: false). The code explicitly states credentials are kept in memory and will only be written to disk if you call auth.save_to_file(), which uses restrictive 0600 permissions. The skill can be invoked autonomously by the agent (disable-model-invocation is false) which is platform default; combined with the broad activation triggers, this increases how often it may run but is not a direct proof of misuse.
What to consider before installing
This appears to be a legitimate Bilibili toolkit, but there are a few things to check before installing or supplying credentials: 1) Metadata mismatch: the registry summary states 'no required env vars' and 'no install spec', but SKILL.md and skill.json require BILIBILI_SESSDATA and BILIBILI_BILI_JCT and include a pip install command. Confirm which metadata the platform will enforce and whether the package will be installed. 2) Use a throwaway/test Bilibili account for evaluation. The cookies you provide are full session cookies and can be used to act as your account (publishing, deleting, etc.). 3) Prefer in-memory credentials (env vars or constructor params) and avoid calling auth.save_to_file() unless you trust the runtime environment; if you must save, delete the file when done. 4) Inspect utils.py and any omitted files for unexpected network endpoints before running. The visible code only calls official Bilibili and youtube domains, but confirm the allowed domains list matches runtime behavior. 5) Run the skill in an isolated environment (container, VM) and review network traffic if you must provide real credentials. If you want, I can: (a) scan the omitted source files (utils.py, publisher.py, tests) for hidden endpoints or suspicious code, or (b) produce a short checklist/commands to safely test the skill in an isolated runtime.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk97ft1h924b376eygezx0cypa1837mwk

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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.

⚠️ Required Environment Variables: BILIBILI_SESSDATA, BILIBILI_BILI_JCT (required), BILIBILI_BUVID3 (optional) These are sensitive Bilibili session cookies needed for authenticated operations (publishing, high-quality downloads). Features that do NOT require authentication: hot monitoring, standard-quality downloads, subtitle listing, danmaku, stats viewing.

📦 Install: pip install -r requirements.txt (all standard PyPI packages: httpx, bilibili-api-python, aiohttp, beautifulsoup4, lxml, requests)

🔗 Source: github.com/wscats/bilibili-all-in-one


何时激活

当用户说出或暗示以下内容时,本 Skill 会被激活:

触发场景匹配的模块典型触发词
查看B站热门、热搜、排行榜、必看榜🔥 Hot Monitor"热门"、"热搜"、"排行"、"趋势"、"必看"、"流行"、"榜单"
下载B站视频、提取音频、批量下载⬇️ Downloader"下载"、"保存视频"、"提取音频"、"导出MP4"、"批量下载"
查看视频播放量、点赞数、数据追踪、对比👀 Watcher"播放量"、"点赞"、"数据"、"统计"、"对比"、"监控"、"追踪"、"观看量"
下载字幕、转换字幕格式、合并字幕📝 Subtitle"字幕"、"CC"、"SRT"、"ASS"、"字幕下载"、"字幕转换"、"翻译"
播放视频、获取弹幕、播放列表▶️ Player"播放"、"弹幕"、"播放地址"、"分P"、"播放列表"、"danmaku"
上传视频、发布、定时发布、草稿、编辑、删除📤 Publisher"上传"、"发布"、"投稿"、"定时发布"、"草稿"、"编辑视频"、"删除视频"
涉及YouTube视频数据查询👀 Watcher"YouTube"、"油管"、"YTB"、"YouTube观看量"
提及B站链接或BV号自动识别BV*bilibili.com/video/*b23.tv/*

💡 提示:只要用户消息中包含 B站/Bilibili 相关操作意图,或包含 BV 号、bilibili 链接,本 Skill 即会被自动激活。无需显式声明调用。


Features

ModuleDescription
🔥 Hot MonitorMonitor Bilibili hot/trending videos and topics in real-time
⬇️ DownloaderDownload Bilibili videos with multiple quality and format options
👀 WatcherWatch and track video engagement metrics (supports Bilibili & YouTube)
📝 SubtitleDownload and process subtitles in multiple formats and languages
▶️ PlayerGet playback URLs, danmaku (bullet comments), and playlist info
📤 PublisherUpload, schedule, edit, and manage videos on Bilibili

Installation

Requirements

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

Install Dependencies

pip install -r requirements.txt

Dependencies

  • httpx >= 0.24.0
  • bilibili-api-python >= 16.0.0
  • aiohttp >= 3.8.0
  • beautifulsoup4 >= 4.12.0
  • lxml >= 4.9.0
  • requests >= 2.31.0

Configuration

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

1. Environment Variables

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

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

3. Direct Parameters

Pass credentials directly when initializing:

from main import BilibiliAllInOne

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

How to get cookies: Log in to 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:

ConcernDetail
What credentials are needed?SESSDATA, bili_jct, buvid3 — Bilibili browser cookies
Which features require authentication?Publishing (upload/edit/delete/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. YouTube metadata uses www.youtube.com/oembed (no credentials sent)
Are credentials persisted to disk?NO — unless you explicitly call auth.save_to_file(). Credentials stay in memory by default
File permissions for saved credentials0600 (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.
  2. 🔒 Prefer in-memory credentials — Pass credentials via environment variables or direct parameters rather than saving to a file.
  3. 📁 If you must save credentials — Use auth.save_to_file() which creates files with 0600 permissions. Delete 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 and YouTube oEmbed API 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.

Network Endpoints Used

DomainPurpose
api.bilibili.comVideo info, stats, hot lists, subtitles, danmaku, playback URLs
member.bilibili.comVideo publishing (upload, edit, delete)
upos-sz-upcdnbda2.bilivideo.comVideo file upload CDN
www.bilibili.comWeb page scraping fallback
www.youtube.comYouTube video metadata via oEmbed API (no auth required)

Credential Requirement by Module

ModuleAuth Required?Notes
🔥 Hot Monitor❌ NoAll public APIs
⬇️ Downloader⚠️ OptionalRequired only for 1080p+ / 4K quality
👀 Watcher❌ NoPublic stats APIs
📝 Subtitle❌ NoPublic subtitle APIs
▶️ Player⚠️ OptionalRequired for high-quality playback URLs
📤 PublisherRequiredAll operations need SESSDATA + bili_jct

Usage

CLI

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

Python API

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

ActionDescriptionParameters
get_hotGet popular/hot videospage, page_size
get_trendingGet trending series/topicslimit
get_weeklyGet weekly must-watch listnumber (week number, optional)
get_rankGet category ranking videoscategory, limit

Supported Categories

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

Examples

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

ActionDescriptionParameters
get_infoGet video informationurl
get_formatsList available qualities/formatsurl
downloadDownload a single videourl, quality, output_dir, format, page
batch_downloadDownload multiple videosurls, quality, output_dir, format

Quality Options

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

Format Options

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

Examples

# 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 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 (and YouTube) videos. Track view counts, comments, likes, and other engagement metrics over time.

Actions

ActionDescriptionParameters
watchGet detailed video informationurl
get_statsGet current engagement statisticsurl
trackTrack metrics over timeurl, interval (minutes), duration (hours)
compareCompare multiple videosurls

Supported Platforms

  • Bilibili: https://www.bilibili.com/video/BVxxxxxx or BVxxxxxx
  • YouTube: https://www.youtube.com/watch?v=xxxxx or https://youtu.be/xxxxx

Examples

# 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 API
details = await app.execute("watcher", "watch", url="https://www.youtube.com/watch?v=dQw4w9WgXcQ")
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.

Actions

ActionDescriptionParameters
listList available subtitlesurl
downloadDownload subtitlesurl, language, format, output_dir
convertConvert subtitle formatinput_path, output_format, output_dir
mergeMerge multiple subtitle filesinput_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.

Examples

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

# Download Chinese subtitles in SRT format
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 API
subs = await app.execute("subtitle", "list", url="BV1xx411c7mD")
result = await app.execute("subtitle", "download", url="BV1xx411c7mD", language="zh-CN", format="srt")

5. ▶️ Player (bilibili_player)

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

Actions

ActionDescriptionParameters
playGet complete playback infourl, quality, page
get_playurlGet direct play URLsurl, quality, page
get_danmakuGet danmaku/bullet commentsurl, page, segment
get_playlistGet playlist/multi-part infourl

Danmaku Modes

ModeDescription
1Scroll (right to left)
4Bottom fixed
5Top fixed

Examples

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

ActionDescriptionParameters
uploadUpload and publish a videofile_path, title, description, tags, category, cover_path, dynamic, no_reprint, open_elec
draftSave as draftfile_path, title, description, tags, category, cover_path
scheduleSchedule future publicationfile_path, title, schedule_time, description, tags, category, cover_path
editEdit existing video metadatabvid, title, description, tags, cover_path
deleteDelete a videobvid

Upload Parameters

ParameterTypeDefaultDescription
file_pathstringrequiredPath to the video file
titlestringrequiredVideo title (max 80 chars)
descriptionstring""Video description (max 2000 chars)
tagsstring[]["bilibili"]Tags (max 12, each max 20 chars)
categorystring"171"Category TID
cover_pathstringnullPath to cover image (JPG/PNG)
no_reprintint11 = original content, 0 = repost
open_elecint01 = enable charging, 0 = disable

Examples

# 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
python main.py publisher edit '{"bvid": "BV1xx411c7mD", "title": "New Title", "tags": ["updated"]}'

# Delete a video
python main.py publisher delete '{"bvid": "BV1xx411c7mD"}'
# 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"],
)

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
└── tests/
    ├── __init__.py
    └── test_all_skill_examples.py  # Comprehensive unit tests

Skill Origin

This skill integrates the functionality of the following individual skills into one unified toolkit:

Original SkillSourceIntegrated Module
bilibili-hot-monitorJacobzwj/bilibili-hot-monitorhot_monitor
bililidownloadercaiyundc880518/bililidownloaderdownloader
bilibili-youtube-watcherdonnycui/bilibili-youtube-watcherwatcher
bilibili-subtitle-download-skillDavinciEvans/bilibili-subtitle-download-skillsubtitle
bilibili-playere421083458/bilibili-playerplayer
bilibili-video-publishJohnnyxu820/bilibili-video-publishpublisher

Response Format

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

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

On error:

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

License

MIT

Files

18 total
Select a file
Select a file to preview.

Comments

Loading comments…