Bilibili Huasheng Video

io.github.superlcr由 GitHub 帳號 superlcr 發布v0.6.2更新於 Nov 4, 2026

使用Huasheng完成Bilibili影片的腳本:分鏡、旁白、素材、匯出、發布。

AI 翻譯由 AI 模型根據下方的原文描述翻譯,可能有誤。

原文描述

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

已驗證STDIO僅桌面效率與工作流媒體與設計

概覽

Bilibili Huasheng Video 的本機 MCP 服務;無需登入;STDIO;33 個工具。

暫無 AI 概覽:以下資訊來自註冊中心條目和服務本身。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Bilibili Huasheng Video,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

hs · Huasheng CLI

From one sentence to a finished, publishable video

[Release] [Platform]

简体中文 · English


hs brings Huasheng's video creation pipeline to the command line. Give it a sentence or a script, and it handles storyboarding, narration, footage and composition — producing a video you can export or publish directly. You can step in and adjust at any point along the way.

A single self-contained binary. No Node, no Python, no runtime to install. Every command supports --json, designed for scripts and AI clients.

Step 1: install and sign in

Do this once, regardless of which client you use later.

Install

Pick whichever suits you — all three give you the same binary.

macOS / Linux

bash
curl -fsSL https://raw.githubusercontent.com/superlcr/huasheng-cli/main/install.sh | sh

Windows, in PowerShell:

powershell
irm https://raw.githubusercontent.com/superlcr/huasheng-cli/main/install.ps1 | iex

Either installer downloads the package for your platform, verifies its SHA256, and extracts it to ~/.local/bin (%LOCALAPPDATA%\Programs\hs on Windows).

With npm, if you already live in the Node ecosystem or just want to try it first:

bash
npx @superlcr/hs --helpnpm install -g @superlcr/hs    # the command is still `hs`

The npm package is a small launcher; the binary for your platform arrives as an optional dependency, so nothing is downloaded or compiled at install time.

Manual download instead of the installer

Grab the package for your platform from Releases, extract it, and place the executable anywhere on your PATH:

PlatformFile
macOS · Apple Siliconhs-darwin-arm64.tar.gz
macOS · Intelhs-darwin-x64.tar.gz
Linux · x64hs-linux-x64.tar.gz
Windows · x64hs-windows-x64.zip

Every release ships a SHA256SUMS file. Verifying it is recommended:

bash
shasum -a 256 -c SHA256SUMS

Both macOS packages are signed and notarized by Apple (Developer ID Application). The Windows package is unsigned; SmartScreen may prompt on first run — choose "More info → Run anyway".

Sign in

Open a new terminal, sign in, and confirm that hs can read your credit balance:

bash
hs auth loginhs account

The CLI and every AI client share ~/.hs/credentials.json; you do not sign in separately.

No browser on that machine (SSH, a cloud server, a container)? Run hs auth login --no-browser, open the address it prints on any device, approve, and paste back the address the browser lands on (it starts with http://127.0.0.1 and will not load — that is expected).

Step 2: choose how you use it

Both paths use the same hs binary and the same sign-in — pick either, or both.

Option 1: use hs CLI directly

Use this path for exact commands, scripts, or batch jobs. hs make can start from one sentence or a complete script, run the creation workflow, wait for the finished video, and download it.

Create a video from one sentence:

bash
hs make --script "Three little-known facts about West Lake" --out ./out.mp4

Request an MG-style video:

bash
hs make --script "Explain Song dynasty tea whisking in 30 seconds" --mode mg --out ./tea.mp4

Read a long script from a file:

bash
hs make --script @script.txt --out ./video.mp4

Or start from your own narration recording — a file on your computer or a public URL:

bash
hs make --audio ./narration.m4a --out ./video.mp4hs make --audio ./narration.m4a --transcript @words.txt --out ./video.mp4   # if you have the words

Huasheng keeps your voice and cuts footage to it. The transcript is optional; without it, Huasheng transcribes the recording. Supported formats are mp3, wav, flac, mp4 and m4a; hs uploads the file itself and you never need an internal storage address.

hs make approves the storyboard for you — that spends credits, and it prints how many. To read the storyboard and its price first, use the step-by-step commands instead. See the hs CLI guide for parameters, step-by-step editing, resuming, and exporting. See Scripting and automation for JSON, exit codes, and batches.

Option 2: use hs through MCP in an AI client

hs includes an MCP server. Any AI client that supports local STDIO MCP can launch it with:

json
{  "mcpServers": {    "huasheng": {      "command": "hs",      "args": ["mcp", "serve"]    }  }}

This configuration simply tells the client to run hs mcp serve when Huasheng is needed. There is no separate hs MCP package to install, and you should not keep the command running yourself. If the client cannot find hs, replace command with the full path from which hs (where hs on Windows).

The following are setup examples for four common clients. For any other MCP client, enter the same command and args in its MCP server settings.

ChatGPT Desktop App
  1. Open Settings → MCP servers → Add server
  2. Enter huasheng and choose STDIO
  3. Set Command to the full path to hs; add mcp and serve as the two arguments
  4. Save and restart, then type /mcp and check that huasheng is connected

ChatGPT Desktop renders interactive timeline, preview, footage, and export cards. It shares ~/.codex/config.toml with Codex CLI, so this setup also enables hs there.

Claude Desktop App
  1. Download huasheng.mcpb
  2. Double-click it, then select Install in Claude Desktop
  3. Confirm the path to hs; the default is ~/.local/bin/hs

If you changed the install location, paste the full path from which hs (where hs on Windows). Continue if the first install warns that the extension is unsigned. Claude Desktop also renders interactive cards.

Codex CLI
bash
codex mcp add huasheng -- hs mcp servecodex mcp list

Do not add it again if you already configured huasheng in ChatGPT Desktop; both read ~/.codex/config.toml. See the OpenAI MCP documentation.

Claude Code CLI
bash
claude mcp add --scope user huasheng -- hs mcp serveclaude mcp list

Both commands run in the same terminal where you just signed in, so plain hs resolves; if your shell cannot find it, substitute the full path from which hs (where hs on Windows). Codex CLI and Claude Code present complete text results instead of desktop interactive cards.

Use it through conversation

After setup, say in your AI client:

Make me a 30-second video about why the sky is blue

You can inspect and refine existing projects too:

List my recent Huasheng projects

Make the narration in clip 2 shorter

Replace clip 3 with more futuristic footage

Use my own file ./b-roll.mp4 for clip 2

Change the narrator to a warmer voice, and tell me the price first

Confirming a storyboard spends credits, and publishing makes the video public. hs marks those and the other one-way tools (deleting a project, footage or a preference, joining the priority lane) as destructive, so a client that confirms destructive tools asks you first; hs itself does not prompt. Changing the voice after production and adding footage to the library spend credits too; the MCP tools quote the price when asked.

More documentation

Safety boundaries

  • The CLI and every AI client share one local credential; hs never receives your Bilibili password.
  • Approving a storyboard spends credits, and publishing goes public. So do changing the voice after production and adding footage to the library, and those credits are not refunded. hs does what the command says and reports the cost; whether you are asked first is up to you, your script, or your AI client.
  • Scripts, narration recordings, and footage are uploaded to Huasheng for video creation; there is no separate telemetry channel or background updater. The only other connection is a once-a-day check of the latest release number on GitHub, which sends nothing but the hs version and can be turned off.

Upgrading

bash
hs upgrade

For an installer build, this downloads the latest release, checks its SHA256, and swaps it in; for an npm install it runs npm i -g @superlcr/hs@latest. hs never downloads or replaces itself on its own. Once a day it asks for the latest release number and mentions it if yours is older; set HS_NO_UPDATE_CHECK=1 to turn that off.

AI clients that run hs mcp serve keep the old process until they restart. After upgrading, start a new session in Claude Code or Codex, or quit and reopen Claude Desktop; until then the client is still on the old version. Upgrading while a client is running is safe on every platform.

Feedback

Found a problem? Please open an issue and include the output of hs --version — it carries the commit and build time, which is the key to diagnosing anything.

來源:README.md,提交 8fc2aee

工具

33

huasheng_login

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.

輸入參數code

huasheng_get_account

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

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.

輸入參數fastaudiovoiceaspectlocalescriptmaterialstyle_notetranscriptpreference_id

huasheng_video_generation_options

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.

輸入參數pidclipaction必填video_generation

huasheng_generate_clip_video

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.

輸入參數pid必填clip必填video_generation必填

huasheng_answer_question

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.

輸入參數pid必填answersui_langclient_action_idvideo_generation

huasheng_ask_agent

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.

輸入參數pid必填cliprequest必填animationattachments

huasheng_edit_clip

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.

輸入參數pid必填cliptextaction必填targetui_langoperation_idclient_action_idexpected_revision

huasheng_get_style

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.

輸入參數pidsetting

huasheng_set_style

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.

輸入參數pid必填value必填previewsetting必填ui_langcost_onlypreview_clipclient_action_id

huasheng_confirm_plan

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.

輸入參數pid必填ui_langclient_action_id

huasheng_export_video

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.

輸入參數pidcancelai_marksave_totask_idui_langtimeout_sclient_action_id

huasheng_publish_video

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.

輸入參數pid必填tagscovertitle必填archivetask_idai_label

huasheng_list_projects

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.

輸入參數limitquerycursorsince_days

huasheng_delete_project

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.

輸入參數pid必填ui_langclient_action_id

huasheng_list_project_versions

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.

輸入參數pidversion

huasheng_set_project_version

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.

輸入參數pidaction必填ui_langversionclient_action_id

huasheng_list_materials

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.

輸入參數listsortstatusfolder_id

huasheng_manage_materials

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.

輸入參數idsurlnameaction必填ui_langmaterialfolder_idclient_action_id

huasheng_delete_materials

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.

輸入參數idskind必填ui_langfolder_idclient_action_id

huasheng_list_preferences

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.

輸入參數id

huasheng_save_preference

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.

輸入參數idnamecontentui_langclient_action_id

huasheng_delete_preference

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.

輸入參數id必填ui_langclient_action_id

huasheng_enable_fast_mode

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.

輸入參數pid必填ui_langclient_action_id

huasheng_disable_fast_mode

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.

輸入參數pidui_langclient_action_id

huasheng_get_project

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.

輸入參數piddetail

huasheng_wait_for_action

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.

輸入參數timeout_soperation_id必填

huasheng_wait_for_project

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.

輸入參數pidtimeout_s

huasheng_control_run

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.

輸入參數pid必填action必填

huasheng_list_clips

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.

輸入參數piddetail

huasheng_list_footage_candidates

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.

輸入參數pidclip必填fromcaptions

huasheng_replace_clip_footage

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.

輸入參數pidclip必填fromchoice必填wait_sui_langapply_fromclient_action_idexpected_revision

huasheng_set_animation_visibility

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.

輸入參數pidremoveui_langvisibleanimation必填client_action_id

版本歷史

6
  1. v0.6.2最新Nov 3, 2026
  2. v0.6.1Nov 3, 2026
  3. v0.6.0Oct 20, 2026
  4. v0.5.7Oct 14, 2026
  5. v0.5.6Sep 17, 2026
  6. v0.5.5Sep 16, 2026

評分

已滿足適用檢查項的 80%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。