StepAce Experimental — AI Music Generation
Queue or schedule AI-generated songs directly to your Android phone through the StepAce Experimental app.
🚀 Setup (first time only)
Before using this skill, you need to connect it to your StepAce Experimental app:
- 1. Open the StepAce Experimental app on your Android phone
- Go to Settings (bottom tab)
- Tap OpenClaw Bridge
- Tap Connect — the app generates a unique pairing token
- Copy the pairing token shown on screen
- Tell your agent:
>
"Set my StepAce token to <paste token here>"
Your agent saves it as STEPACE_TOKEN. You only need to do this once — unless you regenerate your token in the app.
Token management
- - "Set my StepAce token to XYZ" → save as INLINECODE2
- "Reset my token" → remind user: StepAce Experimental app → Settings → OpenClaw Bridge → Connect → paste new token
- "What's my token?" → confirm it's set, show only first 4 + last 4 chars (e.g.
T2L_****IP0) - If
STEPACE_TOKEN is not set when the user asks to generate music → walk them through setup before proceeding
Generation types
Immediate — enqueue_generation
Queues a song to generate right now on the phone. Use this by default.
Scheduled — schedule_generation
Queues a song to generate at a specific future time. Use this when the user gives a time or date ("tonight at 2am", "schedule for tomorrow morning", etc.). Requires
scheduledAt as a Unix timestamp in
milliseconds.
Parameters exposed to the user
Only caption is required. All others are optional — omit them entirely from the payload if not specified (do not send null or empty values).
| Parameter | Type | Notes |
|---|
| INLINECODE9 | string | Required. Describe style, mood, genre, instruments. Be descriptive. |
| INLINECODE10 |
string | Song lyrics. Ignored if
instrumental: true. |
|
instrumental | boolean |
true = no vocals. If
true, do NOT send
lyrics. If user provides lyrics, set
false. |
|
bpm | integer | Tempo, 20–300. Infer from genre if confident (e.g. techno → 132, lo-fi → 85). |
|
duration | integer | Length in seconds, 5–300. Defaults to ~30s if omitted. |
|
keyscale | string | Key and scale, e.g.
"C minor",
"F# major",
"A dorian". |
|
timesignature | string |
"4/4" or
"3/4" only. |
|
vocal_language | string | BCP-47 tag for vocals. e.g.
"en",
"es",
"pt",
"fr",
"ja",
"ko". Only relevant when
instrumental: false. Defaults to
"en". |
Instrumental logic
- - User provides lyrics →
instrumental: false, include INLINECODE36 - User says "no vocals" / "instrumental" / "beat" →
instrumental: true, omit INLINECODE38 - User provides neither → omit both
instrumental and lyrics (let the app decide)
API call
Endpoint: POST https://openclaw-bridge.torrico-villanueva-cesar-kadir.workers.dev/openclaw/queue
Header: INLINECODE42
Preferred transport
Use
curl from the shell as the default/preferred way to call the bridge.
Do
not prefer Python
urllib/generic HTTP clients when
curl is available, because the bridge/CDN may treat those clients differently and reject them even when the same payload works via
curl.
Immediate generation
Preferred example using
curl:
CODEBLOCK0
Equivalent JSON payload:
CODEBLOCK1
Scheduled generation
Preferred example using
curl:
CODEBLOCK2
Equivalent JSON payload:
CODEBLOCK3
INLINECODE49 must be a Unix timestamp in milliseconds (13 digits). Convert from the user's stated time using their local timezone if known, otherwise ask.
With lyrics
{
"pairingToken": "{STEPACE_TOKEN}",
"type": "enqueue_generation",
"payload": {
"requestJson": {
"caption": "fast energetic electronic anthem with punchy drums",
"lyrics": "We light the night, we never slow, hearts on fire, we steal the show.",
"vocal_language": "en",
"instrumental": false,
"duration": 30,
"bpm": 160
}
}
}
Success response
CODEBLOCK5
Reply to the user with a message like:
🎵 Song queued on StepAce Experimental!
Caption: <caption>
📅 Scheduled for: <human-readable time> ← only if scheduled
Settings: 160 BPM · C minor · 4/4 · 30s ← only mention fields that were set
Job ref: ref_abc123...
Your phone will notify you when it's done 🎶
Error handling
| Error | What to do |
|---|
| Missing / invalid INLINECODE50 | Token may have expired. Ask user: StepAce Experimental app → Settings → OpenClaw Bridge → Connect to regenerate, then update the token. |
| Missing INLINECODE51 |
Ask the user to describe the music they want. |
| Missing
scheduledAt for
schedule_generation | Ask the user for a specific date/time. |
| Network error | Tell the user the bridge couldn't be reached. Ask them to check their phone is online and the app has been opened at least once. |
Natural language examples
- - "Make me a dark synth-wave track at 130 BPM" →
enqueue_generation, instrumental: true, INLINECODE56 - "Generate a cumbia song with these lyrics: [...]" →
enqueue_generation, instrumental: false, INLINECODE59 - "Queue a lo-fi beat, 85 BPM, 60 seconds" →
enqueue_generation, instrumental: true, bpm: 85, INLINECODE63 - "Schedule a techno track for 2am tonight" →
schedule_generation, resolve scheduledAt from current time + user's timezone - "Make a waltz in A minor" →
timesignature: "3/4", INLINECODE67 - "Something chill in Spanish" →
vocal_language: "es", infer a relaxed caption - "Song about the ocean, no lyrics, key of D minor, 45 seconds" →
instrumental: true, keyscale: "D minor", INLINECODE71
StepAce 实验版 — AI 音乐生成
通过 StepAce 实验版应用,直接将 AI 生成的歌曲加入队列或安排时间,推送到您的安卓手机。
🚀 设置(仅首次使用)
在使用此技能前,您需要将其与 StepAce 实验版应用连接:
- 1. 在安卓手机上打开 StepAce 实验版应用
- 进入设置(底部标签页)
- 点击 OpenClaw 桥接
- 点击连接——应用会生成一个唯一的配对令牌
- 复制屏幕上显示的配对令牌
- 告诉您的智能体:
>
将我的 StepAce 令牌设置为 <粘贴令牌>
您的智能体会将其保存为 STEPACE_TOKEN。除非您在应用中重新生成令牌,否则只需执行此操作一次。
令牌管理
- - 将我的 StepAce 令牌设置为 XYZ → 保存为 STEPACETOKEN
- 重置我的令牌 → 提醒用户:StepAce 实验版应用 → 设置 → OpenClaw 桥接 → 连接 → 粘贴新令牌
- 我的令牌是什么? → 确认已设置,仅显示前4位和后4位字符(例如 T2LIP0)
- 如果用户要求生成音乐时 STEPACE_TOKEN 尚未设置 → 引导他们先完成设置再继续
生成类型
即时生成 — enqueue_generation
将歌曲加入队列,立即在手机上生成。默认使用此方式。
定时生成 — schedule_generation
将歌曲加入队列,在指定的未来时间生成。当用户给出时间或日期时使用(今晚凌晨2点、安排在明天早上等)。需要 scheduledAt 作为
毫秒单位的 Unix 时间戳。
向用户公开的参数
只有 caption 是必填项。其他均为可选——如果未指定,请从请求体中完全省略(不要发送 null 或空值)。
| 参数 | 类型 | 说明 |
|---|
| caption | 字符串 | 必填。 描述风格、情绪、流派、乐器。要具有描述性。 |
| lyrics |
字符串 | 歌曲歌词。如果 instrumental: true 则忽略。 |
| instrumental | 布尔值 | true = 无演唱。如果为 true,则不要发送 lyrics。如果用户提供了歌词,则设置为 false。 |
| bpm | 整数 | 速度,20–300。如果确定,可从流派推断(例如 techno → 132,lo-fi → 85)。 |
| duration | 整数 | 时长(秒),5–300。如果省略,默认为约30秒。 |
| keyscale | 字符串 | 调性和音阶,例如 C minor、F# major、A dorian。 |
| timesignature | 字符串 | 仅限 4/4 或 3/4。 |
| vocal_language | 字符串 | 演唱语言的 BCP-47 标签。例如 en、es、pt、fr、ja、ko。仅在 instrumental: false 时相关。默认为 en。 |
器乐逻辑
- - 用户提供歌词 → instrumental: false,包含 lyrics
- 用户说无演唱/器乐/伴奏 → instrumental: true,省略 lyrics
- 用户两者都未提供 → 同时省略 instrumental 和 lyrics(让应用决定)
API 调用
端点: POST https://openclaw-bridge.torrico-villanueva-cesar-kadir.workers.dev/openclaw/queue
请求头: Content-Type: application/json
首选传输方式
默认/首选方式是从 shell 使用 curl 调用桥接。
当 curl 可用时,
不要优先使用 Python urllib/通用 HTTP 客户端,因为桥接/CDN 可能会区别对待这些客户端,即使相同的负载通过 curl 可以正常工作,也可能被拒绝。
即时生成
使用 curl 的首选示例:
bash
source /home/deploy/.stepace-env
curl -X POST \
https://openclaw-bridge.torrico-villanueva-cesar-kadir.workers.dev/openclaw/queue \
-H Content-Type: application/json \
--data {
pairingToken: $STEPACE_TOKEN,
type: enqueue_generation,
payload: {
requestJson: {
caption: 电影感合成波,配以宏大的鼓点,
instrumental: true,
bpm: 120,
duration: 30
}
}
}
等效的 JSON 负载:
json
{
pairingToken: {STEPACE_TOKEN},
type: enqueue_generation,
payload: {
requestJson: {
caption: 电影感合成波,配以宏大的鼓点,
instrumental: true,
bpm: 120,
duration: 30
}
}
}
定时生成
使用 curl 的首选示例:
bash
source /home/deploy/.stepace-env
curl -X POST \
https://openclaw-bridge.torrico-villanueva-cesar-kadir.workers.dev/openclaw/queue \
-H Content-Type: application/json \
--data {
pairingToken: $STEPACE_TOKEN,
type: schedule_generation,
payload: {
requestJson: {
caption: 黑暗工业风,配以金属打击乐,
instrumental: true
},
scheduledAt: 1775120400000
}
}
等效的 JSON 负载:
json
{
pairingToken: {STEPACE_TOKEN},
type: schedule_generation,
payload: {
requestJson: {
caption: 黑暗工业风,配以金属打击乐,
instrumental: true
},
scheduledAt: 1775120400000
}
}
scheduledAt 必须是毫秒单位的 Unix 时间戳(13位数字)。如果知道用户的本地时区,则根据用户所述时间进行转换,否则询问用户。
带歌词
json
{
pairingToken: {STEPACE_TOKEN},
type: enqueue_generation,
payload: {
requestJson: {
caption: 快节奏、充满活力的电子颂歌,配以有力的鼓点,
lyrics: 我们点亮黑夜,永不停歇,心如火燎,主宰舞台。,
vocal_language: zh,
instrumental: false,
duration: 30,
bpm: 160
}
}
}
成功响应
json
{
jobRef: ref_abc123...,
status: queued,
type: enqueue_generation
}
回复用户的消息格式如下:
🎵 歌曲已在 StepAce 实验版中排队!
描述:
📅 计划时间:<人类可读时间> ← 仅限定时生成
设置:160 BPM · C 小调 · 4/4 · 30秒 ← 仅提及已设置的字段
任务编号:ref_abc123...
完成后您的手机将收到通知 🎶
错误处理
| 错误 | 处理方法 |
|---|
| 缺少/无效的 pairingToken | 令牌可能已过期。请用户:StepAce 实验版应用 → 设置 → OpenClaw 桥接 → 连接以重新生成,然后更新令牌。 |
| 缺少 caption |
请用户描述他们想要的音乐。 |
| schedule_generation 缺少 scheduledAt | 请用户提供具体的日期/时间。 |
| 网络错误 | 告知用户无法连接到桥接。请他们检查手机是否在线,以及应用是否已至少打开过一次。 |
自然语言示例
- - 给我做一个130 BPM的暗黑合成波曲目 → enqueuegeneration,instrumental: true,bpm: 130
- 用这些歌词生成一首昆比亚歌曲:[...] → enqueuegeneration,instrumental: false,vocal_language: es
- *排队一个 lo-fi