# io.github.superlcr/bilibili-huasheng-video (npm · @superlcr/hs)

Script to finished Bilibili video with Huasheng: storyboard, narration, footage, export, publish.

- Trust score: 82/100 (high trust)
- Change this week: −1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `@superlcr/hs`: 82/100 (this document), [markdown](https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs.md), [page](https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs)

## Channel facts

- Registry: `npm`
- Package: `@superlcr/hs`
- Version: `0.6.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 4 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.
  - Actively maintained (last published 1 days ago).
  - Security-disclosure policy not yet verified: we couldn't inspect the source repository.
- **Schema Quality & AI Usability**: 77/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6516 tokens (~181/item across 36 items; 33 tools + 3 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 100/100
  - No destabilizing schema changes in the last 30 days.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the io.github.superlcr/bilibili-huasheng-video MCP server?

io.github.superlcr/bilibili-huasheng-video runs locally as an npm package, launched with npx -y @superlcr/hs mcp serve. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add superlcr-bilibili-huasheng-video -- npx -y @superlcr/hs mcp serve
```

### Cursor

```json
{
  "mcpServers": {
    "superlcr-bilibili-huasheng-video": {
      "command": "npx",
      "args": [
        "-y",
        "@superlcr/hs",
        "mcp",
        "serve"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "superlcr-bilibili-huasheng-video": {
      "command": "npx",
      "args": [
        "-y",
        "@superlcr/hs",
        "mcp",
        "serve"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add superlcr-bilibili-huasheng-video -- npx -y @superlcr/hs mcp serve
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "superlcr-bilibili-huasheng-video": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@superlcr/hs",
        "mcp",
        "serve"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add superlcr-bilibili-huasheng-video --command npx --arg -y --arg @superlcr/hs --arg mcp --arg serve
```

### Hermes

```yaml
mcp_servers:
  superlcr-bilibili-huasheng-video:
    command: "npx"
    args: ["-y", "@superlcr/hs", "mcp", "serve"]
```

### Netclaw

```json
{
  "McpServers": {
    "superlcr-bilibili-huasheng-video": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@superlcr/hs",
        "mcp",
        "serve"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add superlcr-bilibili-huasheng-video -t stdio -c npx -a -y @superlcr/hs mcp serve
```

### Other

```json
{
  "mcpServers": {
    "superlcr-bilibili-huasheng-video": {
      "command": "npx",
      "args": [
        "-y",
        "@superlcr/hs",
        "mcp",
        "serve"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 82, −1)

- [functional regression] Security disclosure: pass → unverified

### 2026-11-04 (score 83, +15)

- [security improvement] Malware scan: unverified → pass

### 2026-11-03 (score 68, −15)

- [security regression] Malware scan: pass → unverified
- [functional] Schema quality: excellent → good
- [functional] Package version: 0.6.0 → 0.6.2
- [functional] Package version: 0.6.0 → 0.6.1

### 2026-10-31 (score 83, 0)

- [security] Stability: 0.97 → pass

### 2026-10-30 (score 83, 0)

- [functional] Stability: pass → 0.97

### 2026-10-24 (score 83, 0)

- [security] Stability: 0.97 → pass

### 2026-10-23 (score 83, 0)

- [functional] Stability: pass → 0.97

### 2026-10-21 (score 83, +26)

- [security improvement] Malware scan: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 1.00

## MCP tools (33)

### `huasheng_login` (~119 tokens)

Sign in to Huasheng

Has the user sign in to Huasheng: they approve on a Bilibili page in their own browser. **Their password never passes through us**; only a token comes back. Use it when a tool reports NO_CREDENTIAL or an expired session. The first call returns pending=true (not a failure) and authorize_url; call again to check, or with code as that result explains.

Input parameters:

- `code` (string): The 127.0.0.1 address the browser ended on after approving, when it would not load

### `huasheng_get_account` (~65 tokens)

Check credits and sign-in status

Shows the credit balance and when the next batch of credits expires. Use it before starting work to check there is enough, or to confirm the situation when another tool reports low credits or no sign-in. At zero credits even a one-word edit is refused. Changes nothing.

### `huasheng_create_project` (~480 tokens)

Start a new video

Hands a one-line idea or a full script to Huasheng and starts a video. **The video itself is free** — credits are spent when the storyboard is approved, and up front for any material Huasheng has to read. Afterwards you normally call huasheng_wait_for_project while it plans or asks a question. Do not infer a narrator voice from the topic, language, audience, or tone. Omit voice unless the user explicitly supplied an exact voice already available in their Huasheng account. **This is not idempotent**: calling it twice with the same arguments makes two videos. Never retry after check_state — it may have worked; a local validation error says nothing was created: fix the arguments.

Input parameters:

- `aspect` (string): Landscape or portrait. Omit for the default
- `audio` (string): Narration recording (mp3/wav/flac/mp4/m4a): local file or public http(s) URL without login. hs uploads it and keeps this voice; never request an internal storage address
- `fast` (boolean): Priority for this project only; default false. Costs extra at execution and may still queue.
- `locale` (string): Content language of the video. en-US makes an English video; omit for Chinese.
- `material` (array): Candidate footage: local files, public URLs without login, or library ids. New files are imported; reading video costs credits by the second, reported in the result. A pool to choose from, **not a re…
- `preference_id` (integer): Saved preference id; wins over style_note
- `script` (string): Text mode: a one-line idea or a complete script — both go here. Huasheng reads it and decides how to proceed. Give either script or audio, not both
- `style_note` (string): A style note for this video only, such as "plain-spoken, slightly fast". It does not affect other videos
- `transcript` (string): Audio mode only, optional: the word-for-word transcript of the recording. Omit it and Huasheng transcribes the recording itself
- `voice` (string): An exact narrator voice name already available in this account. Never infer one from gender, topic, language, audience, or tone; omit for the default

### `huasheng_video_generation_options` (~91 tokens)

Video models and credit estimates

Read-only: models; price a form or explicit clip+video_generation with pid; status recovers/tracks the latest hs generation by pid. Generate with generate_clip_video; forms use answer_question.

Input parameters:

- `action` (string, required)
- `clip` (integer): Price target; requires settings.
- `pid` (integer): Required for price or status.
- `video_generation` (object)

### `huasheng_generate_clip_video` (~90 tokens)

Generate a clip video (spends credits)

Generate and apply video to one clip in a READY project using exact settings. Spends credits. Returns acceptance; track operation.id with wait_for_action, never repeat generate to poll. Pending forms use answer_question.

Input parameters:

- `clip` (integer, required): Clip position or stable id.
- `pid` (integer, required): The 15-digit video id; no default.
- `video_generation` (object, required)

### `huasheng_answer_question` (~193 tokens)

Answer Huasheng’s question (may spend credits)

Answers a batch of questions only as a whole: one answer per question; a partial batch is rejected. Copy option text or answer freely. Storyboard approval uses huasheng_confirm_plan. This waits until Huasheng moves on. For a new, separate decision, make that decision and continue within authorization; otherwise show complete questions/options or plan_requirements/cost_points and wait. Never ask for confirmation without showing the decision. Video forms: video_generation alone confirms (answers optional); plain text cancels/revises. Models/pricing: video_generation_options.

Input parameters:

- `answers` (array): Answers in question order.
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer, required): The 15-digit video id; no default.
- `ui_lang` (string): MCP App language. Models omit.
- `video_generation` (object)

### `huasheng_ask_agent` (~327 tokens)

Ask Huasheng for a change

Asks Huasheng for a change in your own words — "make it livelier", "cut it to a minute", "try a different opening". **This is not how you answer a question.** When the video is PAUSED waiting on you, use huasheng_answer_question; using this instead leaves the question hanging forever. To reword one specific clip, huasheng_edit_clip is faster and more precise — this tool handles open-ended requests. Set clip or animation to anchor words such as 'this' and 'here' to one exact storyboard item. Never set both. Also: rename, still-image motion (clip), add (clip) or change (animation) motion graphics. Approved storyboards cannot switch plans. Follow it with huasheng_wait_for_project.

Input parameters:

- `animation` (integer): Optional animation id from huasheng_list_clips; cannot be combined with clip
- `attachments` (array): Materials to hand Huasheng with the request, up to 8: ids from huasheng_list_materials, or file paths / public URLs (added to the library first, analysed and billed like huasheng_manage_materials). A…
- `clip` (integer): Optional 1-based clip position from huasheng_list_clips; cannot be combined with animation
- `pid` (integer, required): The 15-digit video id; no default.
- `request` (string, required): What to change, in the user's own words

### `huasheng_edit_clip` (~342 tokens)

Edit the storyboard

Edit storyboard clips using 1-based numbers from huasheng_list_clips. applied=false is not a failure: track action.operation.id with huasheng_wait_for_action. For redub, follow next_call to apply the existing recording; never restart generation. Undo via huasheng_list_project_versions.

Input parameters:

- `action` (string, required): The reversible storyboard operation to perform
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `clip` (integer): The main clip, counting from 1. Omit for add; use target for insertion
- `expected_revision` (integer): Reject if the clip has changed since this revision.
- `operation_id` (string): For redub only: continue the existing recording, without generating it again. Omit clip, text and expected_revision.
- `pid` (integer, required): The 15-digit video id; no default.
- `target` (object): For add: {before: n} or {after: n}; for split: {line: n}; for merge: {into: n}; for edit: {readings: [{text, say}]} sets how specific words are read (pinyin or homophones, at most 3x the word's lengt…
- `text` (string): Narration for edit/add, or optional pronunciation text for redub. For edit it may be omitted when only target.readings change
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_get_style` (~110 tokens)

View the video title, look, and sound

Shows the project title and presentation settings: aspect ratio, narrator voice, speaking pace, subtitles, background music and volume. Omit setting to list everything, or pass one setting to see its current value and accepted choices. Changes nothing. Use huasheng_set_style only after deciding a concrete new value.

Input parameters:

- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `setting` (string): One setting to inspect. Omit to list all settings

### `huasheng_set_style` (~295 tokens)

Change the video title, look, and sound

Changes the project title and presentation: aspect ratio, narrator voice, speaking pace, subtitles and their size and colour, background music and volume. Both setting and value are required. If you need the current value or accepted choices, call huasheng_get_style first. Calling this twice with the same arguments is safe. **Exception — setting=voice after production has started re-records every clip, re-renders the video and spends credits (not refundable).** Call it with cost_only:true first to get the price, show it to the user, and only then change it; the result then has pending:true and the receipt carries action.operation.id for huasheng_wait_for_action.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `cost_only` (boolean): Only for setting=voice: quote what the change would cost and change nothing. Free while production has not started; after that, credits per billed character
- `pid` (integer, required): The 15-digit video id; no default.
- `preview` (boolean): setting=speed only: preview_url of one clip at that pace; no change
- `preview_clip` (integer): Clip (default 1)
- `setting` (string, required): Which setting to change
- `ui_lang` (string): MCP App language. Models omit.
- `value` (string, required): What to change it to

### `huasheng_confirm_plan` (~196 tokens)

Approve the storyboard · spends credits, not refundable

Approves the storyboard and starts production. **This spends credits and they are not refundable.** It covers both ways Huasheng asks for approval: PLAN_READY, and PAUSED where it asks as a question. Before calling it, inspect plan_requirements and cost_points from the latest project status. You may approve directly when that is a reasonable execution of the user's delegated goal. Otherwise show both in text and stop for the user. Never request a blind approval. The project may queue before production starts. First track the returned action.operation.id with huasheng_wait_for_action until the approval is authoritative, then use huasheng_wait_for_project for the next project decision.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer, required): The 15-digit video id; no default.
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_export_video` (~304 tokens)

Export the finished video

Exports the finished video and returns a download link; with save_to it also saves it to that path on this machine. Use it only when the current user request asks to deliver, download, export, or publish the video; READY only means exporting is possible and does not authorize it. **Exporting changes nothing and can be repeated safely.** It waits up to timeout_s (max 35), otherwise returns pending=true — not a failure: track action.operation.id with huasheng_wait_for_action; do not call this write again. save_to saves in the background (saving_to), tracked the same way. task_id resumes a known export; cancel=true stops it.

Input parameters:

- `ai_mark` (boolean): Carry the small 'AI generated' mark; omit for the account default. Not the Huasheng watermark
- `cancel` (boolean): Stop the task_id export
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `save_to` (string): Local path to save to, e.g. ./out.mp4; omit for a link only
- `task_id` (string): Existing export task to resume instead of exporting again
- `timeout_s` (integer): Seconds to wait, up to 35 (default)
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_publish_video` (~232 tokens)

Publish to Bilibili · public and permanent

Publishes the video to the user's own Bilibili channel. **It appears on their channel and enters review, and this cannot be undone.** Before calling it, use huasheng_export_video to get a link so the user can watch it, and confirm the title with them. Export not ready → published=false and task_id, nothing posted; call again with task_id. **Publishing is not idempotent** — do not retry on failure or timeout, because that can post it twice. Have the user check their uploads first. If Bilibili suggests no category, pass archive.tid.

Input parameters:

- `ai_label` (boolean): Bilibili's AI-generated content label; omit to keep the project's setting
- `archive` (object)
- `cover` (string): Thumbnail URL; default from the export
- `pid` (integer, required): The 15-digit video id; no default.
- `tags` (array): A few tags
- `task_id` (string): From a previous call; skips re-exporting
- `title` (string, required): The title to publish under

### `huasheng_list_projects` (~179 tokens)

Find Huasheng videos

Lists Huasheng videos, newest first; with query, searches every project by title or script. has_more=true: pass next_cursor back only if the user asked for the complete list. Use it to find another video the user names or describes, instead of asking for a pid; never to guess the current video (omit pid for that). Read-only; rename with huasheng_set_style setting=name.

Input parameters:

- `cursor` (string): next_cursor from the previous call; it already carries query and since_days
- `limit` (integer): How many videos to return, up to 50; default 20
- `query` (string): Optional title or script text to search across every project
- `since_days` (integer): Only videos created in the last N days; pass only when the user asked for a time range

### `huasheng_delete_project` (~123 tokens)

Permanently delete a Huasheng video

Permanently deletes one Huasheng video. It disappears from the user's project list, cannot be restored through the public product, and credits already spent are not refunded. Use huasheng_get_project first, name the exact video to the user, and let the host ask for confirmation before calling this tool.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer, required): The 15-digit id of the video to delete
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_list_project_versions` (~98 tokens)

View editing history

Lists the project's fine-grained checkpoints and saved s-version rounds. Changes nothing. Use huasheng_set_project_version to undo, redo, or restore one of the returned rounds. An s-version is the state just after its instruction. version: preview that round read-only.

Input parameters:

- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `version` (integer): s-version to preview

### `huasheng_set_project_version` (~133 tokens)

Undo, redo, or restore a project version

Changes the project to another editing state. undo and redo move one fine-grained step; goto atomically restores a saved s-version returned by huasheng_list_project_versions. Every successful change returns the authoritative current version.

Input parameters:

- `action` (string, required): Version change
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `ui_lang` (string): MCP App language. Models omit.
- `version` (integer): Required s-version when action=goto

### `huasheng_list_materials` (~189 tokens)

View the footage library

Lists footage files and folders in the user's Huasheng library. Changes nothing. Pass folder_id to open one folder; omit it for the top level. Pass list="uploads" for a different set: files the user sent while editing a video, which Huasheng never read and therefore cannot pick on its own. huasheng_manage_materials action=add with one of their ids reads it into the library.

Input parameters:

- `folder_id` (integer): Folder to list; omit for top level
- `list` (string): "library" (default) is footage Huasheng has read and can pick. "uploads" is what the user sent while editing — unread, and not in folders
- `sort` (string): Order by when added (default) or last changed, newest first
- `status` (string): Only files in this state; omit for all

### `huasheng_manage_materials` (~297 tokens)

Add or organise footage

Adds footage to the user's Huasheng library, or organises what is already there. add takes files on this machine, public URLs and ids alike. Huasheng reads a newly added video before it can pick it, which costs credits by the second; the result says how many. Images are free and usable at once. action=price answers "how much would this cost" without adding anything. Use huasheng_list_materials to inspect the library. Permanent deletion uses huasheng_delete_materials so the host can show the right warning.

Input parameters:

- `action` (string, required): Library operation. price = what add would cost, without adding anything
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `folder_id` (integer): Folder to list, rename, or move into; 0 is top level
- `ids` (array): Material ids for move
- `material` (array): For add: what to add, each one a file on this machine, a public http(s) URL, or the id of something the user sent while editing (huasheng_list_materials with list="uploads" shows those)
- `name` (string): File or folder name
- `ui_lang` (string): MCP App language. Models omit.
- `url` (string): Compatibility only. Use material for new calls — one public http(s) URL

### `huasheng_delete_materials` (~129 tokens)

Permanently delete Huasheng footage

Permanently deletes footage files or one folder from the Huasheng library. This cannot be undone. List the library first, name exactly what will be removed, and let the host ask the user for confirmation before calling this tool.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `folder_id` (integer): Folder id when kind=folder
- `ids` (array): Material ids when kind=files
- `kind` (string, required): What to delete
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_list_preferences` (~52 tokens)

View saved creative preferences

Lists the user's reusable creative preferences, or returns one full preference when id is given. Changes nothing. Preferences affect projects started afterwards.

Input parameters:

- `id` (integer): One preference id; omit to list all

### `huasheng_save_preference` (~128 tokens)

Create or update a creative preference

Creates a reusable creative preference when id is omitted, or updates that preference when id is given. Creating requires name and content. Editing changes only fields supplied. This does not rewrite a project already in progress.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `content` (string): Preference instructions; required when creating
- `id` (integer): Preference id to update; omit to create
- `name` (string): Preference name; required when creating
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_delete_preference` (~92 tokens)

Permanently delete a Huasheng preference

Permanently deletes one saved creative preference. This cannot be undone. Read the preference first, name it to the user, and let the host ask for confirmation before calling this tool.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `id` (integer, required): Saved preference id
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_enable_fast_mode` (~146 tokens)

Enable priority processing · may spend credits and be irreversible

Moves a project to priority processing. Before production is queued this is a reversible planning choice, even before a plan exists. Refresh the plan quote before confirmation. Priority may still queue; after it is queued, upgrading adds credits charged at execution and cannot be undone. The annotation therefore uses the riskier case. Call huasheng_get_project first and tell the user the current wait and fast_upgrade_cost_points before enabling it.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer, required): The 15-digit video id; no default.
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_disable_fast_mode` (~115 tokens)

Use standard queue processing

Turns off priority processing before the first production is confirmed, including before a plan exists. Refresh the plan quote before confirmation. It never refunds a completed paid upgrade and the service refuses disabling an irreversible queued upgrade. Calling this twice has the same result.

Input parameters:

- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `ui_lang` (string): MCP App language. Models omit.

### `huasheng_get_project` (~145 tokens)

Check on a video

Checks project-level state: what Huasheng is doing, whether a question or approval is waiting, what it would cost, and whether an action is required to progress. Use it to answer status, progress, decision and price questions. It does not return the storyboard and does not open the editing workspace; use huasheng_list_clips for clip facts. It returns that project-level state in one call. Changes nothing.

Input parameters:

- `detail` (string): concise (default) gives state and any required next action; full adds running detail and what the last run cost
- `pid` (integer): Video id (15 digits); default: this machine's current video.

### `huasheng_wait_for_action` (~98 tokens)

Track a change made in a Huasheng card

Waits for one submitted MCP App action to reach an authoritative result. Pass operation.id from the action receipt. If phase remains PROCESSING, call again with the same operation_id. If next_call is present, perform that continuation instead; do not repeat the original write.

Input parameters:

- `operation_id` (string, required): operation.id from an action receipt
- `timeout_s` (integer): Seconds, up to 35; default 30

### `huasheng_wait_for_project` (~170 tokens)

Wait for project attention

Blocks until the video reaches an attention or terminal state (a question is waiting / the storyboard needs approval / the video is ready / it failed), or until the time runs out. Use it after anything that sets Huasheng working. **timed_out=true is not a failure**, only "not this time round" — read eta_s to decide whether to call again or to tell the user roughly how long is left. If the state needs user input, show the question or the plan in text and stop; the state alone is not permission to answer for the user.

Input parameters:

- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `timeout_s` (integer): Seconds to wait, up to 35 (default); then timed_out=true

### `huasheng_control_run` (~95 tokens)

Cancel or re-queue Huasheng's run

cancel stops the current run; spent credits are not refunded. retry only when the status has suggested_action=retry: it re-queues (no immediate start) and **uses one of today's slots**. Otherwise use huasheng_ask_agent. Call once, then huasheng_wait_for_project.

Input parameters:

- `action` (string, required)
- `pid` (integer, required): The 15-digit video id; no default.

### `huasheng_list_clips` (~198 tokens)

List the clips

Reads every clip: 1-based position, narration, footage and health. Use before editing or to diagnose problems. clips_in_trouble lists broken clips; health, trouble and fix_by explain each. Follow the server's fix_by: swap_footage = inspect with huasheng_list_footage_candidates then apply with huasheng_replace_clip_footage; edit_text = reword; delete_clip = remove. Name affected clips and their fixes. Pass the 1-based number to huasheng_edit_clip. Never opens a card: explicit timeline viewing uses huasheng_preview_project; project state, decisions and price use huasheng_get_project. Changes nothing.

Input parameters:

- `detail` (string): full (default) adds length, footage and opaque media references for the visual timeline; concise gives only positions and narration
- `pid` (integer): Video id (15 digits); default: this machine's current video.

### `huasheng_list_footage_candidates` (~312 tokens)

View alternative footage for one clip

Inspects replacement footage for one clip without changing it or opening a card. Inspect the numbered images: the only way to know what the footage shows. For user selection use huasheng_choose_footage. Apply the chosen candidate's exact choice with huasheng_replace_clip_footage. Judge in order: (1) what this clip's narration is talking about; (2) Is the footage itself good (sharpness, composition, watermark/captions, stock-photo appearance); (3) does it sit well beside the neighbouring clips. Neighbours are context, not choices. Length is not a quality signal: playback_rate above 1 means trimming at normal speed; below 1 slows footage to fit narration. Mention visible slow motion below about 0.6; never reject on rate alone. used_by_clip indicates repetition: prefer unused footage, but reuse is allowed. If none fits, try from="similar". Clips are numbered from 1; huasheng_list_clips shows them.

Input parameters:

- `captions` (boolean): Also fetch what each piece of footage shows (caption and recognised brands / place / era); one extra request
- `clip` (integer, required): Which clip, counting from 1
- `from` (string): Where to look. agent (default) is the set Huasheng originally found; similar widens the search around the footage in use
- `pid` (integer): Video id (15 digits); default: this machine's current video.

### `huasheng_replace_clip_footage` (~248 tokens)

Replace the footage on one clip

Replace one clip's footage. Copy the candidate choice, never its changing list position; own files/URLs also work. For pending receipts, track operation.id with huasheng_wait_for_action; do not repeat the write.

Input parameters:

- `apply_from` (string): With numeric choice: ai restores this clip's ai_video.id; material selects ordinary local footage.
- `choice` (string, required): Exact candidate choice; local .mp4/.mov/.jpg/.png path; public URL (free upload); or local-material id with apply_from.
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `clip` (integer, required): Which clip, counting from 1
- `expected_revision` (integer): Reject if the clip has changed since this revision.
- `from` (string): The same candidate source used when listing, default agent
- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `ui_lang` (string): MCP App language. Models omit.
- `wait_s` (integer): Seconds to wait for the replacement to land, up to 30; default 0

### `huasheng_set_animation_visibility` (~215 tokens)

Show, hide or delete a motion-graphics overlay

Shows, hides or deletes one of the animated overlays (listed by huasheng_list_clips detail="full"). Add or change one via huasheng_ask_agent. Hiding is reversible; remove=true deletes (a version restore undoes it) — only if asked or failed. To change what an animation says, ask Huasheng itself with huasheng_ask_agent. A successful show/hide response completes that request: do not inspect other animations or export the video unless the user also asked for it.

Input parameters:

- `animation` (integer, required): Its id, from the animations list in huasheng_list_clips
- `client_action_id` (string): MCP App: reuse for the same click. Models omit.
- `pid` (integer): Video id (15 digits); default: this machine's current video.
- `remove` (boolean): Delete it
- `ui_lang` (string): MCP App language. Models omit.
- `visible` (boolean): true shows it, false hides it

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs#diagnostics

## Score history

- 2026-11-05: 82
- 2026-11-04: 83
- 2026-11-03: 68
- 2026-11-02: 83
- 2026-11-01: 83
- 2026-10-31: 83
- 2026-10-30: 83
- 2026-10-29: 83
- 2026-10-28: 83
- 2026-10-27: 83
- 2026-10-26: 83
- 2026-10-25: 83
- 2026-10-24: 83
- 2026-10-23: 83
- 2026-10-22: 83
- 2026-10-21: 83
- 2026-10-20: 57
- 2026-10-19: 83
- 2026-10-18: 83
- 2026-10-17: 83
- 2026-10-16: 83
- 2026-10-15: 83
- 2026-10-14: 83
- 2026-10-13: 82
- 2026-10-12: 82
- 2026-10-11: 81
- 2026-10-04: 82
- 2026-10-03: 81
- 2026-10-02: 76
- 2026-10-01: 80

## Common questions

### What is the io.github.superlcr/bilibili-huasheng-video MCP server?

io.github.superlcr/bilibili-huasheng-video is an MCP server listed in the public MCP registry as io.github.superlcr/bilibili-huasheng-video. Script to finished Bilibili video with Huasheng: storyboard, narration, footage, export, publish. This page covers its npm package (@superlcr/hs).

### Is the io.github.superlcr/bilibili-huasheng-video MCP server safe to use?

io.github.superlcr/bilibili-huasheng-video scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.superlcr/bilibili-huasheng-video MCP server expose?

io.github.superlcr/bilibili-huasheng-video exposes 33 tools: huasheng_login, huasheng_get_account, huasheng_create_project, huasheng_video_generation_options, huasheng_generate_clip_video, and 28 more. Their descriptions and schemas cost roughly 6,006 tokens of context every time the server is loaded.

### Is the io.github.superlcr/bilibili-huasheng-video MCP server still maintained?

io.github.superlcr/bilibili-huasheng-video is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What did VerifyMCP test on the io.github.superlcr/bilibili-huasheng-video MCP server?

VerifyMCP ran 15 checks on io.github.superlcr/bilibili-huasheng-video, covering Malware scan, Known CVEs, Install scripts, Dependency health and 11 more. 2 items could not be completed, a gap on our side rather than a finding about io.github.superlcr/bilibili-huasheng-video: License and Security disclosure. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.

## Links

- npm package: https://www.npmjs.com/package/@superlcr/hs
- Socket report: https://socket.dev/npm/package/@superlcr/hs
- Repository: https://github.com/superlcr/huasheng-cli
- Changelog RSS feed: https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs.xml
- Changelog JSON feed: https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs/changelog.json
- Trust report (JSON): https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs.json
- HTML version of this page: https://verifymcp.io/servers/superlcr-bilibili-huasheng-video/superlcr-hs
