Install
openclaw skills install @beatra-ai/exam-mnemonic-songTurn one exam knowledge point into a mnemonic song you can replay, then turn the rest of the syllabus into a set. This exam mnemonic song studio writes a knowledge-point song and exam memory song from the facts you already have. Use it for bar-exam mnemonics, teacher-certification songs, accounting-exam memory songs, and other exam mnemonic playlists.
openclaw skills install @beatra-ai/exam-mnemonic-songTurn one exam knowledge point into a sung mnemonic, then turn the rest of that syllabus into a labeled set. The first delivery is one complete song the learner can replay.
Use this Skill when a training school, exam coach, or candidate wants a knowledge-point song from facts they already have: bar-exam mnemonics, teacher-certification songs, accounting-exam memory songs, or another exam mnemonic playlist.
Route a song that is not an exam mnemonic to
music-generation-studio. Route spoken course narration, not a sung
mnemonic, to course-narration-studio. Route a personal gift song to
personalized-song-maker.
Hard inputs are:
Reuse already-known genre, mood, and vocal direction. Ask only for a missing hard input. Do not invent a statute, date, element, or exam fact to finish a lyric.
A full syllabus is welcome. The first paid song is still one knowledge point. Remaining points wait until that first song is accepted.
Write a labeled mnemonic sheet before any paid music: title, section labels, full lyrics, must-keep facts mapped to lines, genre, mood, and vocal direction. Keep every must-keep fact exact. That sheet is the free visible result. Planning is not approval.
Safe defaults:
model: "suno-5.5". Never omit the model and never silently use
auto.instrumental: false with confirmed lyrics present.model_options.suno.custom_mode: true.duration field on beatra.music.generate. Write length
only in the prompt. Do not add a duration argument. Read the actual
returned duration.prompt. Put the lyric body only in lyrics.Before any billable track, read the current beatra.models.list card
for text_to_music. Show one current generate production card for the
first knowledge-point song and wait:
beatra.music.generate).text_to_music price just read. Do not reuse a
remembered number.client_request_id. A changed lyric,
prompt, title, or model mints a new ID.Submit once through bundled scripts/mcp_client.py. Poll
beatra.tasks.get. Deliver actual bytes, actual duration, and
billing.net_charged_credits.
After that first song is accepted, remaining knowledge points are a new pack. Show a fresh six-field card for that frozen set and wait:
beatra.music.generate).text_to_music price just read, times the
remaining slot count. Do not reuse a remembered number.client_request_id per slot. A changed
lyric, prompt, title, or model mints a new ID for the changed slots.Do not treat acceptance of the first song as approval of the rest.
Review the sung lyric against the must-keep fact list. Report only what the host can actually hear. Do not promise perfect diction or exact seconds.
After a returned task_id, poll that task. If the create response is
lost, search with beatra.tasks.list and verify with
beatra.tasks.get before replay. Reuse an ID only with
byte-identical arguments. Cancel only when the teacher asks.
Invoke every remote Beatra operation only through this package's bundled
scripts/mcp_client.py. Put the MCP tool name after call and send one
JSON object on standard input.
python3 scripts/mcp_client.py call beatra.models.list
{"capability": "text_to_music"}
printf '%s' '{"model":"suno-5.5","prompt":"Clear-diction mnemonic song, moderate tempo, memorable hook, about two minutes.","lyrics":"[Verse 1]\nApproved mnemonic lines\n[Chorus]\nApproved hook","instrumental":false,"title":"Knowledge Point Hook","model_options":{"suno":{"custom_mode":true}},"client_request_id":"opaque-exam-song-01"}' | python3 scripts/mcp_client.py call beatra.music.generate
Do not configure or call a host Beatra Connector, and do not use REST/OpenAPI as a fallback.
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.
The bundled client silently checks for a newer release at most once every 24 hours per installation. When a newer version is available, it installs automatically without separate confirmation. It downloads only from the fixed official Beatra discovery and immutable CDN paths for this package, channel, and locale, verifies discovery data, archive, manifest, and every packaged file, and replaces only package-owned files.
Update checks, downloads, verification, replacement, rollback, and recovery fail open: the current installation remains usable and the original command continues. An update failure never authorizes retrying a paid music request. The setting persists for this installation. See automatic updates and safety.
python3 scripts/mcp_client.py update --auto off
python3 scripts/mcp_client.py update --auto on
python3 scripts/mcp_client.py update --check