Install
openclaw skills install baiyin-cover-sing-skill当用户希望通过百音开放平台创建 AI 歌手翻唱任务、查询翻唱任务状态,或根据已有 taskId 返回最终翻唱音频结果时使用。
openclaw skills install baiyin-cover-sing-skillCRITICAL — 版本门禁(MUST 在一切操作之前执行)
在执行本 skill 的任何业务逻辑之前,必须先完成以下版本检查,不得跳过、延后或省略:
- 读取本地
_meta.json,取得ownerId、slug、version、publishedAt。- 请求 SkillHub 远程版本信息,比较
publishedAt和version。- 若远程版本更新 → 先更新本地 skill,再继续当前任务。
- 若远程无更新或查询失败 → 静默继续,不提示用户。
DO NOT 跳过此步骤直接处理用户请求。即使用户的请求很紧急,也必须先完成版本检查。 版本检查通常只需几秒,不会影响用户体验。
当用户希望通过百音开放平台创建 AI 歌手翻唱任务、查询翻唱进度,或获取最终翻唱结果时,使用这个 skill。
BAIYIN_API_KEYBASE_URL 固定使用 https://ai.hikoon.comBAIYIN_API_KEY 缺失时,才向用户索要 API Key。POST {BASE_URL}/api/open/v1/file/uploadAuthorization: Bearer <API_KEY>,Content-Type: multipart/form-datafile 必填,filename 选填,dir 选填data.url 取公网地址,填入 inputFullUrl 等需要 URL 的字段GET {BASE_URL}/api/open/v1/cover/modelsPOST {BASE_URL}/api/open/v1/cover/singGET {BASE_URL}/api/open/v1/tasks/{taskId}开始创建 AI 歌手翻唱任务前,必须先确认 modelId。
modelId,必须先调用 GET {BASE_URL}/api/open/v1/cover/modelsmodelId 未明确前,不要继续收集 type、reverbType、format、pitchShift 这类次级参数modelId根据用户表达判断当前模式。除非必要,不要要求用户自己选择技术字段名。
modelIdmodelId,先进入模型查询步骤,而不是直接创建任务taskId,或者用户消息里直接提供的 taskId只要已经能组成合法翻唱请求,就不要为了可选字段反复追问用户。
modelIdtaskNameinputFullUrltypereverbTypeformatpitchShifttype = 0reverbType = 3format = "mp3"pitchShift 建议值:
+12-12pitchShift 写入请求modelId
taskName
inputFullUrl
type
0 或 1。0。reverbType
1、2、3。3。format
mp3、wav、m4a、flac。mp3。pitchShift
+12-12创建翻唱任务时使用如下基础结构:
{
"modelId": "<user model id>",
"taskName": "<user task name or inferred short name>",
"inputFullUrl": "<optional public audio url>",
"type": 0,
"reverbType": 3,
"format": "mp3",
"pitchShift": 0
}
taskName 等文本字段时,必须确保请求体使用 UTF-8 编码。??、乱码、替代字符当作有效任务名称或结果文本。对于 cover_record 任务,查询接口会返回标准化状态,以及以下结果字段:
recordIdinternalTaskIduserTaskIdaudioUrlinferenceUrlinputFullUrlinputVocalUrlinputInstrumentalUrlformatscore可能状态:
queuedprocessingsucceededfailedprocessing 或 succeeded 后,检查返回结果中的关键文本字段是否可读。??、空值且与原始请求明显不一致,视为异常结果。modelId,就直接创建任务。modelId,先调用 /api/open/v1/cover/models,把可选模型列给用户选。pitchShift 建议值:
+12-12taskId。taskId,但用户要查状态或结果,就直接让用户提供 taskId。reverbType、format 这类可选字段;但如果存在明显的男女声转换意图,仍要先提醒 pitchShift 建议值。reverbType = 1。reverbType = 2。reverbType = 3。只有在以下情况下才追问:
modelIdtaskId不要为了确认以下内容单独追问:
inputFullUrltypereverbTypeformatpitchShiftmodelId,先调用 GET /api/open/v1/cover/models。modelId。modelId 明确后,再从用户请求中提取翻唱参数并补默认值。pitchShift 建议值;男转女建议 +12,女转男建议 -12。pitchShift 写入创建请求。taskId、requestId 和当前 status。taskId 调用任务查询接口。taskId。queued 或 processing 就继续等待;状态变成 succeeded 或 failed 就停止。audioUrl、inputVocalUrl、inputInstrumentalUrl 以及其他可用字段。error,不要假装结果已生成。调用 GET /api/open/v1/cover/models 后:
data.rows 作为可选模型列表modelId 和 modelNamedescription、tags、demoUrl、isRecommended 时,一并展示,帮助用户选择modelId 前,不要继续进入创建任务步骤taskIdstatusaudioUrlinputVocalUrlinputInstrumentalUrlinferenceUrlformatscore400 时,说明请求参数不合法或不完整,并让用户修正模型 ID 或请求字段。401 时,说明百音开放平台 API Key 无效或当前环境不可用。402 时,说明账户余额不足。404 时,说明任务不存在,并让用户提供正确的 taskId。failed 时,有后端错误信息就直接返回。示例 1:
Use model_123 to make a cover task called Night SongmodelId = "model_123"taskName = "Night Song"type = 0reverbType = 3format = "mp3"示例 2:
Use model_456 to cover this song: https://example.com/song.mp3modelId = "model_456"inputFullUrl = "https://example.com/song.mp3"taskName示例 3:
帮我做一个 AI 翻唱,但我还没选模型GET {BASE_URL}/api/open/v1/cover/modelsrows 展示给用户选择 modelId示例 4:
Check the last cover tasktaskId from the same conversation when available示例 5:
Show me the result for task_abc123GET /api/open/v1/tasks/task_abc123audioUrl and related fields when status is succeededsucceeded 之前,不要声称翻唱已经完成。queued 或 processing,就如实返回,不要虚构音频结果。inputVocalUrl 或 inputInstrumentalUrl,也要返回已有的 audioUrl 和其他字段。??,必须明确标记为异常结果,不能当作正常成功结果交付。