mcpField
G
giggle-generation-music

giggle-generation-music

github.com/giggle-official创意与媒体061 次安装今天更新
代码仓库

关于 giggle-generation-music

面向 AI Agent 的 Giggle Music 技能,通过 giggle.pro 根据描述或歌词生成音乐,并支持纯伴奏。任务异步执行,技能会主动查询进度并转达结果。

主要功能

  1. 01按描述生成音乐
  2. 02根据歌词自定义歌曲
  3. 03生成纯伴奏
  4. 04主动查询异步任务进度

适用场景

  1. 01将音乐风格描述转为歌曲
  2. 02为作品生成无 vocals 的伴奏
  3. 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 分钟。用户无需要求你检查进度。

  1. 提交后立即告知用户任务已提交,提供 task_id,并说明预计需要约 1–3 分钟(服务繁忙时会更久)。
  2. 主动轮询:每隔约 15–30 秒运行一次 --query,直到任务终止——不要等待用户询问。
  3. 每次查询后报告状态;对于 processing JSON,用自己的话转述,并说明会继续检查——不要保持沉默。
  4. 完成后:成功时转发完整的签名音频链接;失败时说明原因。如果约 25 分钟后仍未进入终止状态,解释情况,提供 task_id,并建议重试或后续跟进。
  5. 如果用户明确选择不进行轮询,则只提交一次并提供 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)时:

  1. 内存中有 task_id → 直接运行 --query --task-id xxx。不要重新提交;如果用户希望持续获取该任务的更新,则继续轮询直至完成。
  2. 内存中没有 task_id → 告知用户,并询问是否要重新生成

参数参考

参数描述
--prompt音乐描述或歌词(简化模式必需)
--custom启用自定义模式
--style音乐风格(自定义模式必需)
--title歌曲标题(自定义模式必需)
--instrumental生成纯音乐
--vocal-gender人声性别:male / female(仅限自定义模式)
--query查询任务状态
--task-id任务 ID(与 --query 配合使用)

评论

支持 Markdown