tokenlab-music
Make songs with vocals, instrumentals, background loops, and short sound effects from a text brief with TokenLab music models. Use when the user says "make a song about...", "background music for my v
Files4
View on GitHubSKILL.mdskills/tokenlab-music/SKILL.md
GitHubMusic
Make music and sound from a brief: full songs with lyrics, instrumentals, loops for video, and short sound effects. Music generation is always async. The work is choosing between a song model and a short-clip model, and writing a brief the model can follow.
Inputs to collect
- What it is: song with vocals, instrumental, loop, jingle, or sound effect.
- Style: genre, mood, tempo (BPM), main instruments, and vocal type if any.
- Length: short clip or loop (seconds), or a full song.
- Lyrics: user-written, or a theme for the model to write from.
- Use: video background, ad, game, podcast. Note anything that must be avoided (vocals, a genre, an instrument).
Models
<!-- tokenlab:models:start --> <!-- Generated from the live catalog by scripts/sync_models.py. Do not edit; change preferredModels in catalog.json. -->| Operation | Model | Pick | Use |
|---|---|---|---|
music |
suno-music |
default | Song with vocals and lyrics, or instrumental |
music |
minimax-music-2.6 |
alternative | Song, alternative (not live-tested) |
music |
stable-audio-3 |
alternative | Instrumental with length control (not live-tested) |
music |
stable-audio-3-small-music-text-to-audio |
alternative | Short loop or bed for video |
music |
stable-audio-3-small-sfx-text-to-audio |
alternative | Sound effect (not live-tested) |
music |
stable-audio-3-small-sfx-base-text-to-audio |
alternative | Sound effect, alternative (not live-tested) |
This list refreshes daily from the live catalog. Preferred models come first; otherwise models are ranked by their 24-hour success rate. Before a call, confirm the model with GET /v1/models/{model} and read its price from GET /v1/models/{model}/pricing.
How to choose:
- Song with vocals and lyrics, or an instrumental song: Suno. It also extends, covers, and splits existing tracks.
- Song, alternative: MiniMax Music.
- Instrumental with length control: Stable Audio 3.
- Short loop or bed for video: the small Stable Audio 3 music model.
- Sound effect: the small Stable Audio 3 SFX models.
Exact fields come from the model contract.
Workflow
Run each call with tokenlab-run (contract → estimate → call → poll → result). Commands below use its helper, ../tokenlab-run/scripts/tokenlab_run.py, a path relative to this skill's folder. If you installed this skill without tokenlab-run, send the same requests with curl. --wait stops after 100 s; a longer task keeps running, so continue with the resume command it prints.
- Read the contract:
python ../tokenlab-run/scripts/tokenlab_run.py contract MODEL --operation music. Readsupported_parametersandnotes. Each model has its own field names (tagsvsnegative_prompt,full_lyrics,duration). Send only listed fields. - Estimate with
GET /v1/models/{model}/pricing. Music models price per request. For Suno, the price depends on the action (musicvs stem separation); read the entry for your action. Tell the user the estimate before a batch. - Write the body (see Technique). Suno needs
mvfor generation; the docs listchirp-v3-5,chirp-v4,chirp-v4-5,chirp-v4-5plus,chirp-v4-5all,chirp-v5,chirp-v5-5. - Call and wait:
python ../tokenlab-run/scripts/tokenlab_run.py run /v1/music/generations --json @body.json --wait. Save the taskidfirst. Poll every 5–10 s. On a timeout, resume withpoll TASK_ID; do not create a second task. - Read the result:
audio_url(TokenLab media URL, kept 30 days). Suno can also returnimage_url(cover art),title,audio_id, and lyrics fields. Keepaudio_idand the task ID if the user may extend or split the track later. - Download the audio and check its length and that it plays. Return the
audio_url, model, task ID, and the brief you sent.
Do not hand the user stream_audio_url. It is a temporary listen-while-making link, not a TokenLab media result, and it stops working.
Technique
- Brief order for songs: genre and era, mood, tempo, lead instrument, vocal type, structure. Example
tags: "indie folk, acoustic guitar, warm female vocal, gentle". Put the story or theme inprompt. - Say what to avoid in the field the model has:
negative_tagson Suno,negative_prompton MiniMax Music and the small Stable Audio models. - Instrumental: on Suno set
make_instrumental: trueinstead of writing "no vocals" in the prompt. - Your own lyrics: use
full_lyricswhere the contract lists it. Mark sections on their own lines, such as[Verse]and[Chorus], and keep lines short and singable. - Clips and loops: describe sound, not story. Genre, instruments, BPM, mood, texture: "warm lo-fi hip hop loop, mellow Rhodes chords, soft vinyl crackle, relaxed boom-bap drums, 80 BPM, instrumental". Set
durationin seconds. - Sound effects: one event per request, with the source, action, and space: "heavy wooden door slams shut in a stone hallway, short echo". Use a short
duration. - Iterate on one variable. Keep the brief and change only tempo or one instrument per retry. Every retry is a new paid task.
- No artist names or copyrighted lyrics in the brief. Describe the style instead.
See references/suno.md for Suno extend, cover, and stem operations.
Quality bar
- Genre, mood, tempo, and vocal choice match the brief.
- Length fits the use; loops have no hard cut at the end when the user needs a loop.
- No vocals in an instrumental; lyrics are the user's lyrics when given.
- The final answer has the
audio_url, model, task ID, and the estimate the user saw.
Related skills
tokenlab-run: the call, poll, and result mechanics.tokenlab-voiceover: spoken narration over the music.tokenlab-product-ad-video: the video the music goes under.tokenlab-prompting: prompt craft per model family.