关于 giggle-generation-music
面向 AI Agent 的 Giggle Music 技能,通过 giggle.pro 根据描述或歌词生成音乐,并支持纯伴奏。任务异步执行,技能会主动查询进度并转达结果。
主要功能
- 01按描述生成音乐
- 02根据歌词自定义歌曲
- 03生成纯伴奏
- 04主动查询异步任务进度
适用场景
- 01将音乐风格描述转为歌曲
- 02为作品生成无 vocals 的伴奏
- 03跟踪生成任务并获取音频链接
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ giggle-official/ skills --skill giggle-generation-music安装后在 Claude Code 中输入/giggle-generation-music确认已加载。
附带文件requirements.txtscripts/giggle_music_api.py
详细介绍
Giggle Music
来源:giggle-official/skills · API:giggle.pro
通过 giggle.pro 生成 AI 音乐。支持简化模式和自定义模式。提交任务 → Agent 主动轮询,使用 --query 直到完成(参见持续更新进度)。无需 Cron。
API 密钥:设置系统环境变量 GIGGLE_API_KEY。登录 giggle.pro → 左侧边栏 → API Key(API 密钥)以创建或复制密钥。
重要:切勿在 exec 的
env参数中传入GIGGLE_API_KEY。API 密钥从系统环境变量中读取。
出错后不重试:如果脚本执行遇到错误,不要重试。直接向用户报告错误并停止。
交互指南
模式选择(优先级从高到低)
| 用户输入 | 模式 | 描述 |
|---|---|---|
| 用户提供完整的歌词 | 自定义模式(B) | 必须是歌词,而不是描述 |
| 用户请求纯音乐/背景音乐 | 纯音乐模式(C) | 无人声 |
| 其他情况(描述、风格、人声等) | 简化模式(A) | 使用用户描述作为提示词;由 AI 作曲 |
关键规则:如果用户未提供歌词,始终使用简化模式 A。将用户的描述原样用作
--prompt;不要添加或改写。例如,用户说“女声,1 分钟,古风爱情”,直接使用--prompt "female voice, 1 min, ancient romance"。
信息不足时的指导
仅当用户输入非常模糊时(例如只说“生成音乐”,没有描述),才询问:
Question: "What type of music would you like to generate?"
Options: AI compose (describe style) / Use my lyrics / Instrumental
执行流程:提交并查询
音乐生成是异步的(通常需要 1–3 分钟)。先提交任务以获取 task_id,然后持续查询,直到任务进入终止状态。
持续更新进度(默认;用户无需在提示词中提出)
音乐生成通常需要 约 1–3 分钟。用户无需要求你检查进度。
- 提交后立即告知用户任务已提交,提供
task_id,并说明预计需要约 1–3 分钟(服务繁忙时会更久)。 - 主动轮询:每隔约 15–30 秒运行一次
--query,直到任务终止——不要等待用户询问。 - 每次查询后报告状态;对于
processingJSON,用自己的话转述,并说明会继续检查——不要保持沉默。 - 完成后:成功时转发完整的签名音频链接;失败时说明原因。如果约 25 分钟后仍未进入终止状态,解释情况,提供
task_id,并建议重试或后续跟进。 - 如果用户明确选择不进行轮询,则只提交一次并提供
task_id,之后仅在用户询问时查询。
第 1 步:提交任务
先向用户发送消息:音乐生成任务已提交;你会按计划轮询并报告进度,无需催促。包含 JSON 响应中的 task_id。
A:简化模式
python3 scripts/giggle_music_api.py --prompt "user description"
B:自定义模式
python3 scripts/giggle_music_api.py --custom \
--prompt "lyrics content" \
--style "pop, ballad" \
--title "Song Title" \
--vocal-gender female
C:纯音乐
python3 scripts/giggle_music_api.py --prompt "user description" --instrumental
响应示例:
{"status": "started", "task_id": "xxx"}
将 task_id 存入记忆(addMemory):
giggle-generation-music task_id: xxx (submitted: YYYY-MM-DD HH:mm)
步骤 2:查询直至完成(默认:主动轮询)
每次提交当前任务后,反复运行(每隔约 15–30 秒,直至任务结束或超时),无需等待用户询问:
python3 scripts/giggle_music_api.py --query --task-id <task_id>
两次查询之间,使用 shell 中的 sleep 或在单独的调用中添加延迟——不要保持沉默;向用户简要说明每次查询的结果。
输出处理:
| stdout 模式 | 操作 |
|---|---|
| 含有音乐链接的纯文本(例如就绪消息) | 原样转发给用户;停止轮询 |
| 含有错误的纯文本 | 原样转发给用户;停止轮询 |
JSON {"status": "processing", "task_id": "..."}(非终止状态) | 告知用户当前状态,并说明你会继续查询;继续轮询 |
如果用户在轮询期间发来询问,请根据最新状态作答(必要时额外运行一次 --query)。
链接返回规则: stdout 中的音频链接必须是完整的签名 URL(带有 Policy、Key-Pair-Id、Signature 查询参数)。如果 API 返回了 response-content-disposition=attachment,不要移除;原样转发链接(脚本只会将 ~ 编码为 %7E)。
恢复
进行中的任务: 按上述方式主动轮询。
当用户询问之前的音乐(较早的 task_id)时:
- 内存中有
task_id→ 直接运行--query --task-id xxx。不要重新提交;如果用户希望持续获取该任务的更新,则继续轮询直至完成。 - 内存中没有
task_id→ 告知用户,并询问是否要重新生成
参数参考
| 参数 | 描述 |
|---|---|
--prompt | 音乐描述或歌词(简化模式必需) |
--custom | 启用自定义模式 |
--style | 音乐风格(自定义模式必需) |
--title | 歌曲标题(自定义模式必需) |
--instrumental | 生成纯音乐 |
--vocal-gender | 人声性别:male / female(仅限自定义模式) |
--query | 查询任务状态 |
--task-id | 任务 ID(与 --query 配合使用) |