mcpField
P
producer-music

producer-music

github.com/acedatacloudCreative & media17225 installsUpdated today
Repository

About producer-music

producer-music is a skill for generating and editing AI music through AceDataCloud's Producer API. It supports prompt- or lyric-based creation as well as several operations on existing tracks.

Key features

  1. 01Prompt- and lyric-based song generation
  2. 02Instrumental track generation
  3. 03Cover and variation creation
  4. 04Song extension and section replacement
  5. 05Vocal and instrumental swapping
  6. 06Stem separation

Use cases

  1. 01Create music from a text prompt
  2. 02Generate a song using custom lyrics
  3. 03Continue or revise an existing track
  4. 04Separate a song into stems

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/acedatacloud/skills --skill producer-music

After installing, type/producer-musicin Claude Code to confirm it loaded.

Details

From the project README

Producer Music Generation

Generate AI music through AceDataCloud's Producer API.

First-time setup

  1. Install the official Skill with clawhub install @acedatacloud/producer. Check that the ClawHub publisher is @acedatacloud.
  2. Sign in at AceDataCloud → Applications, open General application, and check Producer access, balance, and current pricing. Copy its API key, or select Manage Keys → Create for a separate key. Copy the key value without Bearer ; a platform-... management token is not a service API key.
  3. If you enable Allowed APIs restrictions, include /producer/audios and /producer/tasks. Advanced workflows below may call additional routes.
  4. On the OpenClaw Gateway host, put ACEDATACLOUD_API_TOKEN=your_api_key_here in ~/.openclaw/.env, then restart the Gateway and start a new session. For a direct terminal test, run export ACEDATACLOUD_API_TOKEN="your_api_key_here" in that shell. Never put the key in a prompt or commit an .env file.
  5. Run the Quick Start below. If it returns a task ID, query that same task until it finishes; do not submit a second billable generation just to check progress.

Illustrated key setup, first run, and troubleshooting · Token details

Quick Start

curl -X POST https://api.acedata.cloud/producer/audios \
  -H "Authorization: Bearer $ACEDATACLOUD_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "generate", "lyric": "", "prompt": "upbeat electronic dance track with synth leads"}'

Async: All generation is async. See async task polling. Poll via POST /producer/tasks with {"id": "..."} every 3-5 seconds.

Models

ModelNotes
FUZZ-2.0 ProDefault, highest quality
FUZZ-2.0Standard quality
FUZZ-2.0 RawRaw output variant
FUZZ-1.1 ProPro v1.1
FUZZ-1.0 ProPro v1.0
FUZZ-1.0v1.0
FUZZ-1.1v1.1
FUZZ-0.8Legacy

Actions

ActionDescription
generateCreate a new song from prompt or custom lyrics
coverCreate a cover version of an existing song
extendContinue a song from a specific timestamp
replace_sectionReplace a time range in an existing song
swap_vocalsExtract and swap vocal tracks
swap_instrumentalsExtract and swap instrumental tracks
variationGenerate a variation of an existing song
stemsSeparate a song into stems

Workflows

1. Generate from Prompt
POST /producer/audios
{
  "action": "generate",
  "lyric": "",
  "prompt": "chill lo-fi hip hop with rain sounds and soft piano"
}
2. Custom Lyrics Mode
POST /producer/audios
{
  "action": "generate",
  "custom": true,
  "title": "Midnight City",
  "lyric": "[Verse]\nNeon lights reflect on wet streets\n[Chorus]\nMidnight city never sleeps",
  "prompt": "nocturnal electronic pop",
  "instrumental": false
}
3. Instrumental Only
POST /producer/audios
{
  "action": "generate",
  "lyric": "",
  "prompt": "epic orchestral soundtrack for a movie trailer",
  "instrumental": true
}
4. Extend Song
POST /producer/audios
{
  "action": "extend",
  "audio_id": "existing-audio-id",
  "lyric": "",
  "prompt": "",
  "continue_at": 30
}
5. Replace Section
POST /producer/audios
{
  "action": "replace_section",
  "audio_id": "existing-audio-id",
  "lyric": "",
  "prompt": "",
  "replace_section_start": 15,
  "replace_section_end": 30
}
6. Separate into Stems
POST /producer/audios
{
  "action": "stems",
  "audio_id": "existing-audio-id",
  "lyric": "",
  "prompt": ""
}
7. Generate Lyrics
POST /producer/lyrics
{
  "prompt": "a love song about stargazing on a summer night"
}
8. Get WAV / Video
POST /producer/wav
{"audio_id": "your-audio-id"}

POST /producer/videos
{"audio_id": "your-audio-id"}
9. Upload Reference Audio
POST /producer/upload
{
  "audio_url": "https://example.com/reference.mp3"
}

Parameters

ParameterTypeDescription
actionstringRequired for every /producer/audios request; see actions table
promptstringRequired for every /producer/audios request; use an empty string when an edit action does not use a prompt
modelstringModel (e.g., "FUZZ-2.0 Pro")
custombooleanEnable custom lyrics mode
instrumentalbooleanPure instrumental (no vocals)
titlestringSong title
lyricstringRequired for every /producer/audios request; custom lyrics use [Verse], [Chorus] tags, otherwise use an empty string
audio_idstringExisting audio ID (for edit actions)
continue_atnumberSeconds — where to extend from
replace_section_startnumberStart time of section to replace
replace_section_endnumberEnd time of section to replace
lyrics_strength0-1Lyrics adherence (default: 0.7)
sound_strength0.2-1Sound quality weight (default: 0.7)
weirdness0-1Creative randomness (default: 0.5)
seedstringSeed for reproducibility

Response Structure

{
  "data": [
    {
      "id": "audio-id",
      "audio_url": "https://cdn.example.com/song.mp3",
      "video_url": "https://cdn.example.com/video.mp4",
      "image_url": "https://cdn.example.com/cover.jpg",
      "title": "Song Title",
      "lyric": "full lyrics...",
      "style": "electronic, dance",
      "model": "FUZZ-2.0 Pro"
    }
  ]
}

Gotchas

  • Use [Verse], [Chorus], [Bridge], [Outro] tags in custom lyrics
  • continue_at is in seconds — the song extends from that point
  • replace_section_start / replace_section_end define the time range to regenerate
  • weirdness at 0 = predictable, at 1 = highly experimental
  • Upload a reference audio via /producer/upload to get an audio ID for use with cover or extend
  • WAV and video downloads are separate endpoints — call them after the main generation completes
  • CRITICAL: Check the state field in task responses — only state: "complete" with success: true means done. During pending, the API may return intermediate audio_url values (streaming previews). Do NOT stop polling just because audio_url is non-empty

Comments

Markdown supported