/install acestep
\r \r
ACE-Step Music Generation Skill\r
\r
Use ACE-Step V1.5 API for music generation. Always use scripts/acestep.sh script — do NOT call API endpoints directly.\r
\r
Quick Start\r
\r
# 1. cd to this skill's directory\r
cd {project_root}/{.claude or .codex}/skills/acestep/\r
\r
# 2. Check API service health\r
./scripts/acestep.sh health\r
\r
# 3. Generate with lyrics (recommended)\r
./scripts/acestep.sh generate -c "pop, female vocal, piano" -l "[Verse] Your lyrics here..." --duration 120 --language zh\r
\r
# 4. Output saved to: {project_root}/acestep_output/\r
```\r
\r
## Workflow\r
\r
For user requests requiring vocals:\r
1. Use the **acestep-songwriting** skill for lyrics writing, caption creation, duration/BPM/key selection\r
2. Write complete, well-structured lyrics yourself based on the songwriting guide\r
3. Generate using Caption mode with `-c` and `-l` parameters\r
\r
Only use Simple/Random mode (`-d` or `random`) for quick inspiration or instrumental exploration.\r
\r
If the user needs a simple music video, use the **acestep-simplemv** skill to render one with waveform visualization and synced lyrics.\r
\r
**MV Production Requirements**: Making a simple MV requires three additional skills to be installed:\r
- **acestep-songwriting** — for writing lyrics and planning song structure\r
- **acestep-lyrics-transcription** — for transcribing audio to timestamped lyrics (LRC)\r
- **acestep-simplemv** — for rendering the final music video\r
\r
## Script Commands\r
\r
**CRITICAL - Complete Lyrics Input**: When providing lyrics via the `-l` parameter, you MUST pass ALL lyrics content WITHOUT any omission:\r
- If user provides lyrics, pass the ENTIRE text they give you\r
- If you generate lyrics yourself, pass the COMPLETE lyrics you created\r
- NEVER truncate, shorten, or pass only partial lyrics\r
- Missing lyrics will result in incomplete or incoherent songs\r
\r
**Music Parameters**: Use the **acestep-songwriting** skill for guidance on duration, BPM, key scale, and time signature.\r
\r
```bash\r
# need to cd to this skill's directory first\r
cd {project_root}/{.claude or .codex}/skills/acestep/\r
\r
# Caption mode - RECOMMENDED: Write lyrics first, then generate\r
./scripts/acestep.sh generate -c "Electronic pop, energetic synths" -l "[Verse] Your complete lyrics\r
[Chorus] Full chorus here..." --duration 120 --bpm 128\r
\r
# Instrumental only\r
./scripts/acestep.sh generate "Jazz with saxophone"\r
\r
# Quick exploration (Simple/Random mode)\r
./scripts/acestep.sh generate -d "A cheerful song about spring"\r
./scripts/acestep.sh random\r
\r
# Options\r
./scripts/acestep.sh generate "Rock" --duration 60 --batch 2\r
./scripts/acestep.sh generate "EDM" --no-thinking # Faster\r
\r
# Other commands\r
./scripts/acestep.sh status \x3Cjob_id>\r
./scripts/acestep.sh health\r
./scripts/acestep.sh models\r
```\r
\r
## Output Files\r
\r
After generation, the script automatically saves results to the `acestep_output` folder in the project root (same level as `.claude`):\r
\r
```\r
project_root/\r
├── .claude/\r
│ └── skills/acestep/...\r
├── acestep_output/ # Output directory\r
│ ├── \x3Cjob_id>.json # Complete task result (JSON)\r
│ ├── \x3Cjob_id>_1.mp3 # First audio file\r
│ ├── \x3Cjob_id>_2.mp3 # Second audio file (if batch_size > 1)\r
│ └── ...\r
└── ...\r
```\r
\r
### JSON Result Structure\r
\r
**Important**: When LM enhancement is enabled (`use_format=true`), the final synthesized content may differ from your input. Check the JSON file for actual values:\r
\r
| Field | Description |\r
|-------|-------------|\r
| `prompt` | **Actual caption** used for synthesis (may be LM-enhanced) |\r
| `lyrics` | **Actual lyrics** used for synthesis (may be LM-enhanced) |\r
| `metas.prompt` | Original input caption |\r
| `metas.lyrics` | Original input lyrics |\r
| `metas.bpm` | BPM used |\r
| `metas.keyscale` | Key scale used |\r
| `metas.duration` | Duration in seconds |\r
| `generation_info` | Detailed timing and model info |\r
| `seed_value` | Seeds used (for reproducibility) |\r
| `lm_model` | LM model name |\r
| `dit_model` | DiT model name |\r
\r
To get the actual synthesized lyrics, parse the JSON and read the top-level `lyrics` field, not `metas.lyrics`.\r
\r
## Configuration\r
\r
**Important**: Configuration follows this priority (high to low):\r
\r
1. **Command line arguments** > **config.json defaults**\r
2. User-specified parameters **temporarily override** defaults but **do not modify** config.json\r
3. Only `config --set` command **permanently modifies** config.json\r
\r
### Default Config File (`scripts/config.json`)\r
\r
```json\r
{\r
"api_url": "http://127.0.0.1:8001",\r
"api_key": "",\r
"api_mode": "completion",\r
"generation": {\r
"thinking": true,\r
"use_format": false,\r
"use_cot_caption": true,\r
"use_cot_language": false,\r
"batch_size": 1,\r
"audio_format": "mp3",\r
"vocal_language": "en"\r
}\r
}\r
```\r
\r
| Option | Default | Description |\r
|--------|---------|-------------|\r
| `api_url` | `http://127.0.0.1:8001` | API server address |\r
| `api_key` | `""` | API authentication key (optional) |\r
| `api_mode` | `completion` | API mode: `completion` (OpenRouter, default) or `native` (polling) |\r
| `generation.thinking` | `true` | Enable 5Hz LM (higher quality, slower) |\r
| `generation.audio_format` | `mp3` | Output format (mp3/wav/flac) |\r
| `generation.vocal_language` | `en` | Vocal language |\r
\r
## Prerequisites - ACE-Step API Service\r
\r
**IMPORTANT**: This skill requires the ACE-Step API server to be running.\r
\r
### Required Dependencies\r
\r
The `scripts/acestep.sh` script requires: **curl** and **jq**.\r
\r
```bash\r
# Check dependencies\r
curl --version\r
jq --version\r
```\r
\r
If jq is not installed, the script will attempt to install it automatically. If automatic installation fails:\r
- **Windows**: `choco install jq` or download from https://jqlang.github.io/jq/download/\r
- **macOS**: `brew install jq`\r
- **Linux**: `sudo apt-get install jq` (Debian/Ubuntu) or `sudo dnf install jq` (Fedora)\r
\r
### Before First Use\r
\r
**You MUST check the API key and URL status before proceeding.** Run:\r
\r
```bash\r
cd "{project_root}/{.claude or .codex}/skills/acestep/" && bash ./scripts/acestep.sh config --check-key\r
cd "{project_root}/{.claude or .codex}/skills/acestep/" && bash ./scripts/acestep.sh config --get api_url\r
```\r
\r
#### Case 1: Using Official Cloud API (`https://api.acemusic.ai`) without API key\r
\r
If `api_url` is `https://api.acemusic.ai` and `api_key` is `empty`, you MUST stop and guide the user to configure their key:\r
\r
1. Tell the user: "You're using the ACE-Step official cloud API, but no API key is configured. An API key is required to use this service."\r
2. Explain how to get a key: API keys are currently available through [acemusic.ai](https://acemusic.ai/api-key) for free.\r
3. Use `AskUserQuestion` to ask the user to provide their API key.\r
4. Once provided, configure it:\r
```bash\r
cd "{project_root}/{.claude or .codex}/skills/acestep/" && bash ./scripts/acestep.sh config --set api_key \x3CKEY>\r
```\r
5. Additionally, inform the user: "If you also want to render music videos (MV), it's recommended to configure a lyrics transcription API key as well (OpenAI Whisper or ElevenLabs Scribe), so that lyrics can be automatically transcribed with accurate timestamps. You can configure it later via the `acestep-lyrics-transcription` skill."\r
\r
#### Case 2: API key is configured\r
\r
Verify the API endpoint: `./scripts/acestep.sh health` and proceed with music generation.\r
\r
#### Case 3: Using local/custom API without key\r
\r
Local services (`http://127.0.0.1:*`) typically don't require a key. Verify with `./scripts/acestep.sh health` and proceed.\r
\r
If health check fails:\r
- Ask: "Do you have ACE-Step installed?"\r
- **If installed but not running**: Use the acestep-docs skill to help them start the service\r
- **If not installed**: Use acestep-docs skill to guide through installation\r
\r
### Service Configuration\r
\r
**Official Cloud API:** ACE-Step provides an official API endpoint at `https://api.acemusic.ai`. To use it:\r
```bash\r
./scripts/acestep.sh config --set api_url "https://api.acemusic.ai"\r
./scripts/acestep.sh config --set api_key "your-key"\r
./scripts/acestep.sh config --set api_mode completion\r
```\r
API keys are currently available through [acemusic.ai](https://acemusic.ai/api-key) for free. \r
\r
**Local Service (Default):** No configuration needed — connects to `http://127.0.0.1:8001`.\r
\r
**Custom Remote Service:** Update `scripts/config.json` or use:\r
```bash\r
./scripts/acestep.sh config --set api_url "http://remote-server:8001"\r
./scripts/acestep.sh config --set api_key "your-key"\r
```\r
\r
**API Key Handling**: When checking whether an API key is configured, use `config --check-key` which only reports `configured` or `empty` without printing the actual key. **NEVER use `config --get api_key`** or read `config.json` directly — these would expose the user's API key. The `config --list` command is safe — it automatically masks API keys as `***` in output.\r
\r
### API Mode\r
\r
The skill supports two API modes. Switch via `api_mode` in `scripts/config.json`:\r
\r
| Mode | Endpoint | Description |\r
|------|----------|-------------|\r
| `completion` (default) | `/v1/chat/completions` | OpenRouter-compatible, sync request, audio returned as base64 |\r
| `native` | `/release_task` + `/query_result` | Async polling mode, supports all parameters |\r
\r
**Switch mode:**\r
```bash\r
./scripts/acestep.sh config --set api_mode completion\r
./scripts/acestep.sh config --set api_mode native\r
```\r
\r
**Completion mode notes:**\r
- No polling needed — single request returns result directly\r
- Audio is base64-encoded inline in the response (auto-decoded and saved)\r
- `inference_steps`, `infer_method`, `shift` are not configurable (server defaults)\r
- `--no-wait` and `status` commands are not applicable in completion mode\r
- Requires `model` field — auto-detected from `/v1/models` if not specified\r
\r
### Using acestep-docs Skill for Setup Help\r
\r
**IMPORTANT**: For installation and startup, always use the acestep-docs skill to get complete and accurate guidance.\r
\r
**DO NOT provide simplified startup commands** - each user's environment may be different. Always guide them to use acestep-docs for proper setup.\r
\r
---\r
\r
For API debugging, see [API Reference](./api-reference.md).\r
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install acestep - After installation, invoke the skill by name or use
/acestep - Provide required inputs per the skill's parameter spec and get structured output
What is acestep?
Use ACE-Step API to generate music, edit songs, and remix music. Supports text-to-music, lyrics generation, audio continuation, and audio repainting. Use thi... It is an AI Agent Skill for Claude Code / OpenClaw, with 1339 downloads so far.
How do I install acestep?
Run "/install acestep" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is acestep free?
Yes, acestep is completely free (open-source). You can download, install and use it at no cost.
Which platforms does acestep support?
acestep is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created acestep?
It is built and maintained by Sayo (@dumoedss); the current version is v1.0.2.