baiyin-cover-sing-skill
by @jiuping520
当用户希望通过百音开放平台创建 AI 歌手翻唱任务、查询翻唱任务状态,或根据已有 taskId 返回最终翻唱音频结果时使用。
clawhub install baiyin-cover-sing-skill📖 About This Skill
name: baiyin-cover-sing-skill description: 当用户希望通过百音开放平台创建 AI 歌手翻唱任务、查询翻唱任务状态,或根据已有 taskId 返回最终翻唱音频结果时使用。
> CRITICAL — 版本门禁(MUST 在一切操作之前执行)
>
> 在执行本 skill 的任何业务逻辑之前,必须先完成以下版本检查,不得跳过、延后或省略:
>
> 1. 读取本地 _meta.json,取得 ownerId、slug、version、publishedAt。
> 2. 请求 SkillHub 远程版本信息,比较 publishedAt 和 version。
> 3. 若远程版本更新 → 先更新本地 skill,再继续当前任务。
> 4. 若远程无更新或查询失败 → 静默继续,不提示用户。
>
> DO NOT 跳过此步骤直接处理用户请求。即使用户的请求很紧急,也必须先完成版本检查。
> 版本检查通常只需几秒,不会影响用户体验。
AI 歌手翻唱
当用户希望通过百音开放平台创建 AI 歌手翻唱任务、查询翻唱进度,或获取最终翻唱结果时,使用这个 skill。
前置要求
BAIYIN_API_KEY运行时配置
BASE_URL 固定使用 https://ai.hikoon.comBAIYIN_API_KEY 缺失时,才向用户索要 API Key。公网地址处理
POST {BASE_URL}/api/open/v1/file/uploadAuthorization: Bearer ,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核心模式
根据用户表达判断当前模式。除非必要,不要要求用户自己选择技术字段名。
modelId
- 如果没有 modelId,先进入模型查询步骤,而不是直接创建任务
taskId,或者用户消息里直接提供的 taskId
参数策略
只要已经能组成合法翻唱请求,就不要为了可选字段反复追问用户。
modelId
- taskName
- inputFullUrl
- type
- reverbType
- format
- pitchShift
type = 0
- reverbType = 3
- format = "mp3"
pitchShift 建议值:+12
- 女转男建议降调 -12
- 只有用户明确接受或自行指定后,才把对应 pitchShift 写入请求
字段映射规则
modelIdtaskNameinputFullUrltype0 或 1。
- 用户未指定时默认 0。
reverbType1、2、3。
- 用户未指定时默认 3。
formatmp3、wav、m4a、flac。
- 用户未指定时默认 mp3。
pitchShift+12
- 女转男建议 -12
- 除非用户明确确认或自行指定,否则不要擅自写入建议值。
- 没提且也不存在明显的男女声转换时省略。请求体
创建翻唱任务时使用如下基础结构:
{
"modelId": "",
"taskName": "",
"inputFullUrl": "",
"type": 0,
"reverbType": 3,
"format": "mp3",
"pitchShift": 0
}
编码规则
taskName 等文本字段时,必须确保请求体使用 UTF-8 编码。??、乱码、替代字符当作有效任务名称或结果文本。任务查询结果
对于 cover_record 任务,查询接口会返回标准化状态,以及以下结果字段:
recordIdinternalTaskIduserTaskIdaudioUrlinferenceUrlinputFullUrlinputVocalUrlinputInstrumentalUrlformatscore可能状态:
queuedprocessingsucceededfailed结果校验
processing 或 succeeded 后,检查返回结果中的关键文本字段是否可读。??、空值且与原始请求明显不一致,视为异常结果。对话行为
modelId,就直接创建任务。modelId,先调用 /api/open/v1/cover/models,把可选模型列给用户选。pitchShift 建议值:+12
- 女转男建议降调 -12
taskId。taskId,但用户要查状态或结果,就直接让用户提供 taskId。reverbType、format 这类可选字段;但如果存在明显的男女声转换意图,仍要先提醒 pitchShift 建议值。reverbType = 1。reverbType = 2。reverbType = 3。最少追问原则
只有在以下情况下才追问:
modelIdtaskId不要为了确认以下内容单独追问:
inputFullUrltypereverbTypeformatpitchShift工作流程
1. 先确认用户要的是 AI 歌手翻唱,不是歌手训练。
2. 判断当前是创建模式还是查询模式。
3. 创建模式下,如果没有 modelId,先调用 GET /api/open/v1/cover/models。
4. 将可用模型列表展示给用户选择 modelId。
5. modelId 明确后,再从用户请求中提取翻唱参数并补默认值。
6. 如果请求中存在明显的男女声转换意图,先提醒 pitchShift 建议值;男转女建议 +12,女转男建议 -12。
7. 只有用户明确确认建议值或自行指定后,才把 pitchShift 写入创建请求。
8. 调用创建翻唱任务接口。
9. 返回 taskId、requestId 和当前 status。
10. 用户后续查询状态或结果时,使用已有 taskId 调用任务查询接口。
11. 如果用户明确要求持续等待结果,可以按固定间隔轮询同一个 taskId。
12. 轮询时,状态为 queued 或 processing 就继续等待;状态变成 succeeded 或 failed 就停止。
13. 轮询间隔默认 1 分钟,单次连续轮询默认最多 6 次;如果用户要求继续,再继续下一轮。
14. 回复时优先返回状态。
15. 任务成功后,返回 audioUrl、inputVocalUrl、inputInstrumentalUrl 以及其他可用字段。
14. 任务失败时,明确返回后端 error,不要假装结果已生成。
模型列表返回使用规则
调用 GET /api/open/v1/cover/models 后:
data.rows 作为可选模型列表modelId 和 modelNamedescription、tags、demoUrl、isRecommended 时,一并展示,帮助用户选择modelId 前,不要继续进入创建任务步骤输出格式
taskId
- 当前 status
- 有必要时补一句参数理解摘要
audioUrl
- inputVocalUrl
- inputInstrumentalUrl
- inferenceUrl
- format
- score错误处理
400 时,说明请求参数不合法或不完整,并让用户修正模型 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 = 0
- reverbType = 3
- format = "mp3"示例 2:
Use model_456 to cover this song: https://example.com/song.mp3modelId = "model_456"
- inputFullUrl = "https://example.com/song.mp3"
- infer a short taskName示例 3:
帮我做一个 AI 翻唱,但我还没选模型GET {BASE_URL}/api/open/v1/cover/models
- 把返回的 rows 展示给用户选择 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_abc123
- return audioUrl and related fields when status is succeeded回复规则
succeeded 之前,不要声称翻唱已经完成。queued 或 processing,就如实返回,不要虚构音频结果。inputVocalUrl 或 inputInstrumentalUrl,也要返回已有的 audioUrl 和其他字段。??,必须明确标记为异常结果,不能当作正常成功结果交付。