Generate songs from prompts or lyrics through an ACE-Step-compatible API backend. Use when users want text-to-music, lyrics-to-song, fast prompt iteration, s...
Use an ACE-Step-compatible API backend for prompt-to-song and lyrics-to-song requests. This skill does not install or bundle ACE-Step, model weights, or the API server.
Before using this skill, make sure you already have access to an ACE-Step-compatible API backend. This can be a local server, usually at http://127.0.0.1:8001, or a remote compatible endpoint. If the backend is missing or stopped, this skill cannot generate music.
python3 {baseDir}/scripts/generate.py --prompt "playful beach pop song about rising waves"
python3 {baseDir}/scripts/generate.py --prompt "happy indie pop with bright guitars" --lyrics-file /path/to/lyrics.txt --duration 60
Defaults are tuned for fast local iteration:
batch_size=1 to avoid duplicate variants unless explicitly requestedaudio_format=mp3sample_mode=text2musicthinking=false unless the user asks for heavier LM-assisted generationhttp://127.0.0.1:8001 but possibly a remote endpoint# Basic prompt
python3 {baseDir}/scripts/generate.py --prompt "playful synth-pop song about sunrise waves"
# With lyrics
python3 {baseDir}/scripts/generate.py \
--prompt "cute upbeat summer beach song" \
--lyrics-file /path/to/lyrics.txt \
--duration 60
# Two variants
python3 {baseDir}/scripts/generate.py \
--prompt "dreamy city-pop ocean groove" \
--duration 45 \
--batch-size 2
# Enable heavier LM planning only when needed
python3 {baseDir}/scripts/generate.py \
--prompt "cinematic anthem about a storm becoming calm" \
--duration 60 \
--thinking
Useful flags:
--duration 10..600--lyrics or --lyrics-file--batch-size 1..8--thinking--model acestep-v15-turbo--out-dir /path/to/output--base-url http://127.0.0.1:8001 for local backends--base-url https://your-remote-endpoint for remote backendsIf the user also wants the result played on Clawatch:
.mp3 path from the script output or manifest.json.clawatch_play_audio with:
imei: the explicit watch IMEIfilePath: the saved local audio pathtitle: optional short labelDo not pass ACE-Step temp URLs directly if the helper already copied a stable local file. Prefer the saved file path.
The script accepts CLI flags first, then env vars, then OpenClaw skill config.
Supported env vars:
ACESTEP_API_BASE_URLACESTEP_API_KEYACESTEP_OUTPUT_DIRUse ACESTEP_API_BASE_URL or the OpenClaw config entry to switch between local and remote ACE-Step-compatible backends.
Optional OpenClaw config in ~/.openclaw/openclaw.json:
{
skills: {
entries: {
"gen-music": {
baseUrl: "http://127.0.0.1:8001",
apiKey: "",
outputDir: "~/Projects/tmp/ace-step"
}
}
}
}
curl http://127.0.0.1:8001/health or the same path on your remote endpoint/v1/audio?path=... URLs, the helper copies those files into the chosen output directory and writes a manifest.jsonbatch-size 1 for efficient prompt iteration; raise it only when the user explicitly wants variantsZIP package — ready to use