Install
openclaw skills install @beatra-ai/game-script-voice-packTurn a murder-mystery or indie-game script into a labeled multi-character voice pack. This AI game voice pack and character dialogue studio casts one consistent voice per role, records every line in script order, and delivers numbered clips with character IDs ready for an engine or tabletop production. Use it for game voice acting, indie game dialogue, murder mystery voiceover, multi character TTS, NPC voice acting, interactive story audio, tabletop voice pack work, and scripted game audio.
openclaw skills install @beatra-ai/game-script-voice-packGive a game or murder-mystery script a cast and a labeled voice pack. One voice per character. Every line stays in script order.
Use this Skill when a murder-mystery script, indie-game dialogue tree, interactive story, or training scene needs many speaking roles delivered as importable clips.
Route a literary audio drama or radio play to audio-drama-voice-studio.
Route a single-narrator course to course-narration-studio. Route creating
only a reusable voice to voice-cloning-studio. Route a talking-head video
to talking-avatar-video.
The one hard input is the script text with speaker attribution. Character labels alone are not a script: do not invent dialogue. Reuse genre, era, tone, language, and already-chosen voices.
Defaults:
language omitted unless the user asks for a language or the script
mixes several;Casting is free. Each synthesis block is paid. Clone a character voice
only when the user asks. Confirm consent first: the user must state this
is their voice or that the speaker authorized this cloning use. Access to
a file is not consent. A suitable sample is currently about 10 to 300
seconds, no larger than 20 MiB, and clean single-speaker speech. Only
after consent, inspect the sample and upload it through the bundled
client. Show the live voice_clone admission card before any clone
client_request_id: route voice_clone, tool beatra.voices.clone, live
price for one successful activated voice, the provisional estimate, the
600-credit gift usually cannot start this clone, and what happens if the
balance is short. Do not offer a free clone. Do not create
client_request_id until the user confirms they have topped up or already
have enough credits. Submit beatra.voices.clone exactly once:
{
"sample": {"type": "artifact", "artifact_id": "artifact_..."},
"display_name": "Character Name",
"consent_attested": true,
"model": "auto",
"client_request_id": "opaque-character-clone"
}
Poll with beatra.tasks.get until terminal, then freeze that
character's voice_id.
beatra.voices.list when a voice is still needed. Keep each
character's voice_id fixed for the whole pack. Never put a display
name in voice.text_to_speech card with beatra.models.list. Confirm
the cast, block count, weighted-character total, current estimate, and
one client_request_id per block.beatra.speech.synthesize exactly once
through the bundled scripts/mcp_client.py. Poll each speech task with
beatra.tasks.get until terminal. Do not configure a host
Beatra Connector. Do not use REST/OpenAPI as a fallback.billing.net_charged_credits.Confirm the cast sheet and the pack estimate before the first paid call. A changed line is one new paid block.
Recover a lost create response only with that block's identical payload
and ID. Recover a lost task ID through beatra.tasks.list and
beatra.tasks.get. Cancel only at the user's request. On
insufficient_balance for clone or TTS, keep the top-up URL inside the
balance error exact and retry the same frozen ID only after the user
says they have topped up.
When the user asks how many credits remain or whether a live estimate fits,
call beatra.wallet.get. When they ask what was charged, call
beatra.wallet.ledger. Both are read-only. Do not invent an account-balance or
top-up tool. Do not make wallet.get a required step before every paid submit.
When a model card comes back carrying a top_up block, relay its tiers as the
card lists them and in that order. Do not rank them, do not talk one down, and
do not pick one for the user. Which tier suits them is their call, made on
the wallet page with the whole list in front of them. Never quote a tier from
memory.
Use or invoke the bundled scripts/mcp_client.py for every Beatra operation.
Before ordinary commands it silently checks for a newer release at most once
every 24 hours per installation. Silent checks are enabled by default, and a
newer release installs without separate confirmation.
The updater accepts only the fixed official discovery address and immutable Beatra CDN path embedded for this package, channel, and locale. It verifies the discovery data, archive, manifest, and every file's size and checksum before replacement. It replaces only package-owned files and rejects redirects, downgrades, wrong package/channel/locale/version data, unexpected URLs, unsafe archives, and files outside the owned destination.
Update checks, downloads, verification, replacement, rollback, and recovery fail open: the current installation remains usable and the user's original command continues. An update failure never authorizes retrying a paid generation. The automatic-update choice persists across later commands for this installation:
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check