@kg-ai/kugou-skill 0.1.7 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md CHANGED
@@ -1,143 +1,223 @@
1
- ---
2
- name: kugou-skill
3
- description: |
4
- 酷狗,酷狗音乐,酷狗skill,酷狗音乐skill,酷狗音乐助手
5
- 提供歌曲搜索、每日推荐、相似推荐、收藏管理、听歌统计、酷狗榜单、创建歌单等功能。
6
-
7
- **触发场景**(满足任一即使用本技能):
8
- - 用户要求推荐歌曲、听歌建议
9
- - 用户要求搜索歌曲、查找歌手作品
10
- - 用户要求查看音乐榜单(飙升榜、TOP500、抖音热歌等)
11
- - 用户要求查看收藏、最近播放、听歌统计
12
- - 用户要求创建歌单、自建歌单
13
- - 用户提供 secret(base64 字符串)要求登录或导入身份
14
- - Agent 在尝试扫码登录时遇到环境限制(无法发图片)→ 主动询问用户是否可提供 secret
15
- - 用户提到"酷狗"、"kugou"、"每日推荐"、"相似歌曲"
16
-
17
- **与其他音乐技能的区别**:酷狗音乐以推荐算法见长,榜单数据实时更新,适合获取热门歌曲和个性化推荐。
18
-
19
- 安装方式:npm install -g @kg-ai/kugou-skill
20
- ---
21
-
22
- # kugou-skill
23
-
24
- ## AI 使用工作流(优先阅读)
25
-
26
- 使用本工具时的标准流程:
27
-
28
- ```
29
- 1. 检查安装 → npm install -g @kg-ai/kugou-skill
30
- 2. 检查登录 → kugou-cli auth status
31
- 3. 登录决策(关键决策点,不要跳过):
32
- ├─ 已登录(logged_in: true)→ 直接进入第 4 步
33
- ├─ 未登录 → 先询问用户:"你手上是否已有可用的 base64 secret?"
34
- │ - 用户明确说"有" → 调 kugou-cli auth set-secret "<secret>",跳过扫码
35
- │ - 用户说"没有"或不确定 → 走标准扫码流程
36
- │ - 当前环境既无法渲染远程 URL 图片,也无法读取本地二维码文件 → 强制走 set-secret
37
-
38
- └─ 默认行为:除非用户明确说"我有 secret",否则优先走扫码
39
- 4. 引导登录(详见 references/auth.md):
40
- - 扫码:执行 `auth login`,根据当前客户端的图片能力,在 `qrcode_img_url` 和 `qrcode_img_path` 中选择一种展示二维码,不要只输出 URL 或文件路径
41
- → 阶段 A:主动循环 auth status 最多 5 次(2-3s 间隔),覆盖秒扫
42
- → 阶段 B:5 次仍 waiting → 停下,主动提示用户扫码,等用户**主动回复"已扫码"**
43
- → 阶段 C:用户回复后调一次 status 验证;logged_in: true 即完成
44
- - 导入 secret:auth set-secret "<secret>" 一次完成
45
- 5. 执行用户请求的音乐命令(详见 references/music.md)
46
- 6. 解析 JSON 输出,按展示规范展示给用户(详见 references/output-format.md)
47
- ```
48
-
49
- ### 关键注意事项
50
-
51
- - **登录流程极简**(详见 [references/auth.md](references/auth.md)):
52
- 1. `auth login` - 获取二维码,输出包含:
53
- - `qrcode`:字符串标识,仅供 CLI 持久化和后续状态查询,Agent 不要将它作为图片展示
54
- - `qrcode_img_path`:本地二维码 PNG 文件路径
55
- - `qrcode_img_url`:酷狗上游返回的远程二维码图片 URL
56
- 2. **根据当前客户端能力选择一种方式,把二维码图片直接展示在聊天窗口中**:
57
- - 客户端支持读取或附加本地图片(如 Codex)→ 使用 `qrcode_img_path`,通过客户端的本地图片读取/附件能力展示
58
- - 客户端支持 Markdown 外链图片(如 WorkBuddy)→ 在消息正文中输出 `![酷狗登录二维码](<qrcode_img_url>)`
59
- - Agent 可以自行选择最适合当前环境的方式,不要同时展示两张二维码
60
- - **不要**只把 URL 或本地路径作为普通文本发给用户,用户应直接看到二维码图片
61
- - 首选方式展示失败时,立即切换到另一种方式:远程图片加载失败则尝试本地文件,本地文件无法读取则尝试远程 Markdown 图片
62
- - 若两种方式都不可用 → 告诉用户“当前环境无法显示二维码,请提供 base64 secret 字符串”,改走 `auth set-secret`
63
- 3. **图片发送后两阶段行为(关键)**:
64
- - **阶段 A(主动轮询)**:图片刚展示,**先主动**循环调 `auth status` 最多 5 次(每次间隔 2-3 秒),覆盖用户秒扫的情况
65
- - **阶段 B(等待用户反馈)**:5 次仍 `waiting` → **停下来**,主动告诉用户:“请用酷狗 APP 扫码登录,扫完后告诉我已扫码”,**不再调 status**,等用户**主动回复“已扫码”**才进入阶段 C
66
- - **阶段 C(验证登录)**:用户回复“已扫码” → 调一次 `auth status` 验证;返回 `logged_in: true` 继续执行,`scanned` 等几秒再调,`failed` 重新 `auth login` 拿新图
67
- - 若用户回复“没看到图片” / “图片打不开” → 先切换到另一种二维码展示方式;两种方式都失败后再切换到 `set-secret`
68
- 4. `auth status` - **单次查询,不内部轮询**:每次调用只查一次扫码状态。完整流程见上方“两阶段行为”。**不要**等“内部已轮询”——根本不会自动轮询。
69
- - **直接导入 secret 登录**:当用户**已经持有**一个有效的 base64 secret 字符串(从别处获取的),直接调用 `kugou-cli auth set-secret "<secret>"` 即可完成登录,**跳过扫码流程**。这与扫码登录保存到同一份 `auth.json`,效果完全一致。secret 字符串含 `+` `/` `=` 是正常的,shell 里务必用引号包起来。**何时考虑用 set-secret**:用户明确说“我有 secret”、当前环境既无法展示 `qrcode_img_url` 远程图片也无法读取 `qrcode_img_path` 本地图片、用户之前已经登录过想换设备。
70
- - **登出 (auth logout)**:会**先**与服务端同步登出,**确认成功后才**清理本地登录态。失败时本地态保留、可重试;未登录时幂等直接返回成功。失败时 Agent **自动重试 1 次**(网络抖动常见),仍失败再询问用户是否重试,**不要**擅自清理本地文件。
71
- - **登录态自动失效**:当任意 `music` 命令遇到登录态过期时,CLI 会**自动清理**本地登录态,并在 stderr 输出 `账号登录过期,请重新登录`,exit code 非 0。Agent 收到该错误后:
72
- 1. **不要**自己再调一次 `music` 命令(会再次失败)
73
- 2. **不要**手动清理本地文件
74
- 3. **直接**引导用户重新登录:先问"你手上是否已有新 secret?",有则 `auth set-secret`,没有则 `auth login` 走扫码
75
- 4. 重新登录后,**先调 `auth status` 确认** `logged_in: true`,再重试之前失败的 `music` 命令
76
- - **状态字段差异**:`auth status` 在"无登录态"和"登录态过期被自动清理"两种场景下都返回 `{"logged_in": false}`(**不带 status 字段**);"等待扫码"才返回 `{"logged_in": false, "status": "waiting"}`。Agent 区分场景应看 `music` 命令的 stderr 输出,不要只看 status 字段。完整状态表见 [references/auth.md#状态表](references/auth.md#状态表)。
77
- - **音乐命令依赖登录**:除了 `auth`、`install`、`version`、`--help` 以外,所有 `music` 子命令都需要先登录。如果收到 `"not logged in"` 错误,引导用户执行登录流程。
78
- - **自动更新机制**:每次启动任意命令时会自动检测 npm 远端版本,若有新版会**自动执行** `npm install -g @kg-ai/kugou-skill@latest`,无需手动 `kugou-cli update`:
79
- - 关闭自动检查:加 `--no-update-check` 标志,或设置环境变量 `KUGOU_CLI_NO_UPDATE_CHECK=1`
80
- - 手动检查/触发:`kugou-cli update` 跳过本地缓存直接查远端并自动安装;`kugou-cli update --check` 仅检查不安装
81
- - 非 npm 安装(手动编译/容器)会打印提示和升级命令但不会自动执行
82
- - **输出均为 JSON**:所有命令输出原始 JSON 到 stdout,错误输出到 stderr。解析 `errcode` 字段判断成功与否(`0` 为成功)。
83
- - **歌曲展示规范**(详见 [references/output-format.md](references/output-format.md)):**禁止**只返回歌曲名、歌手名,**必须**以 Markdown 链接格式展示播放链接。
84
- - **创建歌单的调用原则**(详见 [references/music.md#8-创建歌单](references/music.md#8-创建歌单)):
85
- 1. **被动调用**:必须用户**明确**要求创建歌单时才调用 `music create-playlist`,禁止在用户仅说"推荐/搜歌"时主动创建
86
- 2. **主动询问**:当通过搜索、推荐(猜你喜欢/相似/文本)等方式给出一批歌曲后,**必须**询问用户是否需要将当前这批歌曲创建为歌单,等用户确认后再调用 `music create-playlist --songs "<mix_song_id 列表>"`
87
-
88
- ---
89
-
90
- ## 基础信息
91
-
92
- - **npm 包**: @kg-ai/kugou-skill
93
- - **二进制命令**: kugou-cli
94
- - **安装方式**: `npm install -g @kg-ai/kugou-skill`
95
-
96
- ---
97
-
98
- ## 详细文档索引
99
-
100
- | 文档 | 说明 |
101
- |------|------|
102
- | [references/auth.md](references/auth.md) | 认证命令:扫码登录、直接设置 secret、查看状态、登出 |
103
- | [references/music.md](references/music.md) | 音乐命令:搜索、推荐、收藏、统计、榜单、创建歌单 |
104
- | [references/install.md](references/install.md) | 安装命令:SKILL.md 安装到各平台 |
105
- | [references/update.md](references/update.md) | 更新命令:检查/执行自动更新 |
106
- | [references/output-format.md](references/output-format.md) | 输出格式与展示规范 |
107
- | [references/error-handling.md](references/error-handling.md) | 错误处理与常见错误 |
108
-
109
- ---
110
-
111
- ## 完整使用流程
112
-
113
- ```bash
114
- # 1. 登录(极简流程,详见 references/auth.md)
115
- kugou-cli auth login # 获取二维码
116
- # auth status 是单次查询,agent 需要外层循环调用,每次间隔 2-3 秒
117
- kugou-cli auth status
118
-
119
- # 1'. 或者直接导入已持有的 secret(跳过扫码)
120
- kugou-cli auth set-secret "<base64-secret>"
121
-
122
- # 2. 搜索歌曲
123
- kugou-cli music search "周杰伦"
124
-
125
- # 3. 获取猜你喜欢
126
- kugou-cli music recommend guess
127
-
128
- # 4. 查看我的收藏
129
- kugou-cli music favorites
130
-
131
- # 5. 查看最近播放
132
- kugou-cli music recent
133
-
134
- # 6. 查看听歌统计
135
- kugou-cli music stats
136
-
137
- # 7. 查看抖音热歌榜
138
- kugou-cli music charts 52144
139
-
140
- # 8. 创建歌单
141
- kugou-cli music create-playlist "我的空歌单"
142
- kugou-cli music create-playlist "我的批量歌单" --songs "32068120,233125060"
143
- ```
1
+ ---
2
+ name: kugou-skill
3
+ description: |
4
+ 酷狗,酷狗音乐,酷狗skill,酷狗音乐skill,酷狗音乐助手
5
+ 提供歌曲搜索、猜你喜欢、相似推荐、收藏管理、听歌统计、酷狗榜单、创建歌单等功能。
6
+
7
+ **触发场景**(满足任一即使用本技能):
8
+ - 用户要求推荐歌曲、听歌建议
9
+ - 用户要求搜索歌曲、查找歌手作品
10
+ - 用户要求查看音乐榜单(飙升榜、TOP500、抖音热歌等)
11
+ - 用户要求查看收藏、最近播放、听歌统计
12
+ - 用户要求创建歌单、自建歌单
13
+ - 用户提供 base64 secret 字符串要求登录或导入身份
14
+ - Agent 在尝试扫码登录时遇到环境限制(无法发图片)→ 主动询问用户是否可提供 secret
15
+ - 用户提到"酷狗"、"kugou"、"猜你喜欢"、"相似歌曲"
16
+ - 用户要求让 PC/Mac 客户端播放歌曲、暂停、切歌、收藏、创建歌单
17
+ - 用户提到酷狗 URL scheme("kugou://" 或 "mackugou://")
18
+ - 用户提到"本机控制"、"控制酷狗客户端"
19
+
20
+ **与其他音乐技能的区别**:酷狗音乐以推荐算法见长,榜单数据实时更新,适合获取热门歌曲和个性化推荐。
21
+
22
+ 安装方式:npm install -g @kg-ai/kugou-skill
23
+ ---
24
+
25
+ # kugou-skill
26
+
27
+ ## AI 使用工作流(优先阅读)
28
+
29
+ 使用本工具时的标准流程:
30
+
31
+ ```
32
+ 1. 检查安装 → npm install -g @kg-ai/kugou-skill
33
+ 2. 检查登录态 → kugou-cli auth status
34
+ 3. 登录决策(按以下优先级严格判断,不要跳步):
35
+ ├─ 状态 a:已登录(logged_in: true)→ 跳到第 5 步
36
+ ├─ 状态 b:未登录 + 用户**明确**说"我有 secret" → 调 `kugou-cli auth set-secret "<secret>"` 一次完成 → 跳到第 5 步
37
+ ├─ 状态 c:未登录 + 当前环境**无法**渲染远程 URL 图片 **且** 无法读取本地二维码文件 → **强制**走 set-secret(同上)
38
+ └─ 状态 d:未登录 + 其他所有情况 → 走扫码流程(第 4 步)
39
+
40
+ 注意:状态 b/c/d 互斥;不要在用户未明确给 secret 时擅自走 set-secret。
41
+ 4. 引导登录——扫码(详见 references/auth.md):
42
+ - 执行 `auth login`,从输出读 `qrcode_img_url` 和 `qrcode_img_path`,按当前客户端能力选一种方式把二维码**直接展示给用户**
43
+ - **阶段 A(主动轮询)**:图片刚展示,**主动**重试几次 `auth status`(每次隔几秒),覆盖用户秒扫场景
44
+ - 任意一次返回 `logged_in: true` → 跳到第 5 步
45
+ - 几次都返回 `waiting` 且未出现 `scanned` → 进入阶段 B
46
+ - **阶段 B(等用户回复)**:停下,告诉用户"请用酷狗 APP 扫码登录,扫完后告诉我已扫码",**不再调 status**,等用户**主动回复"已扫码"**
47
+ - **阶段 C(验证一次)**:用户回复"已扫码"后,**调一次** `auth status`:
48
+ - `logged_in: true` → 完成,跳到第 5 步
49
+ - `scanned`(已扫但未确认)→ 等几秒再调一次,最多**额外**调几次,仍是 scanned 就告诉用户"手机端是否已点确认?"
50
+ - `failed` 或 `{"logged_in": false}` → 重新 `auth login` 拿新图,从阶段 A 重新开始
51
+ 5. 按请求类型分流:
52
+ - **请求类型 A:控制已有歌 / 歌单 / 收藏**(用户已有 mixsongid 或 global_id)→ 直接执行 `control` 命令(详见 [references/control.md](references/control.md)),不需要先调 `music` 拿 ID
53
+ - 例:`control play`、`control player --action pause`、`control favorite song --mixsongid <id>`、`control play-playlist --global-id <id>`
54
+ - **请求类型 B:搜索后做某件事**(搜索歌曲/推荐/榜单 → 拿到 ID 后再做后续动作,如播放、收藏、建歌单)→ 先执行 `music` 命令拿数据,再按需转 `control`,详见 [references/music.md](references/music.md)
55
+ - 例:先 `music search` 拿 mixsongid,再 `control play` 播放
56
+ - 例:先 `music search-playlist` 拿 global_id,再 `control play-playlist` 播放
57
+ - 例:先 `music search` 拿 mixsongids,再 `control playlist create --mixsongids` 创建客户端歌单
58
+ - **请求类型 C:纯查询 / 统计 / 榜单**(不涉及本地客户端)→ 只走 `music` 命令
59
+ 6. 解析 JSON 输出,按展示规范展示给用户(详见 [references/output-format.md](references/output-format.md))
60
+ ```
61
+
62
+ > **关键提醒**:**不要**在没有 mixsongid / global_id 的情况下盲目调用 `control` 命令(如 `control play --mixsongid ""`)—— `control` 命令在 ID 缺失时会报错。先用 `music` 命令把 ID 查出来,再传给 `control`。
63
+
64
+ ---
65
+
66
+ ## 关键注意事项
67
+
68
+ ### 登录流程
69
+
70
+ `auth login` 命令输出三个字段供 Agent 选择二维码展示方式(详见 [references/auth.md](references/auth.md)):
71
+
72
+ | 字段 | 用途 |
73
+ |------|------|
74
+ | `qrcode_img_path` | 本地二维码 PNG 文件路径 |
75
+ | `qrcode_img_url` | 远程二维码图片 URL |
76
+ | `qrcode` | 字符串标识,**Agent 不要使用**(仅供 CLI 内部) |
77
+
78
+ **根据当前客户端能力选择一种方式,把二维码图片直接展示在聊天窗口中**:
79
+
80
+ - 客户端支持读取或附加本地图片(如 Codex)→ 使用 `qrcode_img_path`,通过客户端的本地图片读取/附件能力展示
81
+ - 客户端支持 Markdown 外链图片(如 WorkBuddy)→ 在消息正文中输出 `![酷狗登录二维码](<qrcode_img_url>)`
82
+ - Agent 可以自行选择最适合当前环境的方式,不要同时展示两张二维码
83
+ - **不要**只把 URL 或本地路径作为普通文本发给用户,用户应直接看到二维码图片
84
+ - 首选方式展示失败时,立即切换到另一种方式:远程图片加载失败则尝试读取本地图片,本地图片无法读取则尝试远程 Markdown 图片
85
+ - 若两种方式都不可用 → 告诉用户"当前环境无法显示二维码,请提供 base64 secret 字符串",改走 `auth set-secret`
86
+
87
+ **`auth status` 的调用约束**:
88
+
89
+ - 每次调用只查一次扫码状态,**不会内部自动轮询**。Agent 需要在外层按"阶段 A → 阶段 B → 阶段 C"循环调用(详见上方工作流第 4 步)
90
+ - 阶段 B 之后**不要**自己继续调用 status,等用户回复
91
+
92
+ ### 直接导入 secret 登录
93
+
94
+ 当用户**已经持有**一个有效的 base64 secret 字符串(从别处获取的),直接调用 `kugou-cli auth set-secret "<secret>"` 即可完成登录,**跳过扫码流程**——效果与扫码登录完全一致。secret 字符串含 `+` `/` `=` 是正常的,shell 里务必用引号包起来。
95
+
96
+ **何时考虑用 set-secret**:
97
+
98
+ - 用户明确说"我有 secret"
99
+ - 当前环境既无法展示远程图片也无法读取本地图片
100
+ - 用户之前已经登录过想换设备
101
+
102
+ ### 登出
103
+
104
+ `auth logout` 命令:先与服务端同步登出,**确认成功后才**清理登录状态。失败时登录状态保留、可重试;未登录时幂等直接返回成功。
105
+
106
+ ### 登录态自动失效
107
+
108
+ 当任意 `music` 命令遇到登录态过期时,CLI 会自动取消登录(退出码非 0 + stderr 提示登录已过期)。Agent 收到该错误后:
109
+
110
+ 1. **不要**自己再调一次 `music` 命令(会再次失败)
111
+ 2. **直接**引导用户重新登录:先问"你手上是否已有新 secret?",有则 `auth set-secret`,没有则 `auth login` 走扫码
112
+ 3. 重新登录后,**先调 `auth status` 确认** `logged_in: true`,再重试之前失败的 `music` 命令
113
+
114
+ > Agent 不应依赖 stderr 文案字面量判断错误类型——以退出码和 references/error-handling.md 中的错误码说明为准。
115
+
116
+ ### 音乐命令依赖登录
117
+
118
+ 除了 `auth`、`install`、`version`、`--help` 以外,所有 `music` 子命令都需要先登录。如果 CLI 返回"未登录"错误,引导用户执行登录流程。
119
+
120
+ ### 输出格式与成功判定
121
+
122
+ 所有命令输出原始 JSON 到 stdout,错误输出到 stderr。**成功判定以退出码和 JSON 内的成功状态字段为准**(详见 [references/output-format.md](references/output-format.md))。
123
+
124
+ ### 歌曲展示规范
125
+
126
+ 向用户展示音乐命令返回的歌曲列表时(详见 [references/output-format.md](references/output-format.md)):
127
+
128
+ - **禁止**只返回歌曲名、歌手名
129
+ - **必须**以 Markdown 链接格式展示播放链接
130
+ - 正确格式:`[歌曲名 - 歌手名](https://www.kugou.com/...)`
131
+ - 禁止格式:`晴天 - 周杰伦`(无链接)、`歌曲名: 晴天, 歌手: 周杰伦`(无链接)
132
+
133
+ ### 推荐理由规范
134
+
135
+ 仅在 agent **主动推荐**场景下,歌曲列表之后**必须**追加一段 220-260 字的推荐理由(详见 [references/output-format.md#5-推荐理由主动推荐场景必写](references/output-format.md#5-推荐理由主动推荐场景必写)):
136
+
137
+ - **触发**:`recommend guess / similar / text`、`charts`、`recommend-playlist`
138
+ - **不触发**:`search` / `search-playlist` / `favorites` / `recent` / `stats` / `playlist-songs`——用户主动查询不写
139
+ - **三层内容**:整体歌曲风格 + 匹配逻辑 + 挑 2-3 首基于行业认知的解读
140
+ - **字数硬约束**:220-260(含标点),超出或不足需重写
141
+
142
+ ### 创建歌单的调用原则
143
+
144
+ 详见 [references/music.md#7-创建歌单](references/music.md#7-创建歌单):
145
+
146
+ 1. **被动调用**:必须用户**明确**要求创建歌单时才调用,禁止在用户仅说"推荐/搜歌"时主动创建
147
+ 2. **主动询问**:当通过搜索、推荐(猜你喜欢/相似/文本)等方式给出一批歌曲后,**必须**询问用户是否需要将当前这批歌曲创建为歌单,等用户确认后再调用
148
+ 3. **硬性默认:优先客户端创建**:用户同意后**必须先尝试** `kugou-cli control playlist create`(在本地酷狗客户端内创建,详见 [references/control.md#10-playlist-create--创建歌单](references/control.md#10-playlist-create--创建歌单)),仅当客户端不可用(不支持的操作系统 / 未运行 / 无响应 / 调用失败)时才回退到云端 `music create-playlist`
149
+ 4. **创建成功后主动询问是否播放**:无论走 `control playlist create` 还是 `music create-playlist`,**创建成功(返回成功状态)后必须主动询问用户"是否要播放这个歌单"**,等用户明确回复后再决定走哪条播放命令;用户拒绝则不做任何动作。播放路径选择:
150
+ - 客户端可用:优先 `kugou-cli control play-playlist --global-id "<id>"`(详见 [references/control.md#12-play-playlist--播放整个歌单](references/control.md#12-play-playlist--播放整个歌单))
151
+ - 客户端不可用 / `play-playlist` 拿不到可用 ID:按 [references/music.md#72-云端歌单的播放控制浏览器打开-h5-链接](references/music.md#72-云端歌单的播放控制浏览器打开-h5-链接) 走"先探后告知"——用浏览器工具打开 H5 `song_list_url` 尝试点击播放;工具不可用时明确告知用户手动复制链接打开
152
+
153
+ ---
154
+
155
+ ## 基础信息
156
+
157
+ - **npm 包**: @kg-ai/kugou-skill
158
+ - **二进制命令**: kugou-cli
159
+ - **安装方式**: `npm install -g @kg-ai/kugou-skill`
160
+
161
+ > 关于更新:CLI 安装后会自动保持最新。具体更新机制与关闭开关见 [references/update.md](references/update.md)。如有版本相关问题,向该文档查证。
162
+
163
+ ---
164
+
165
+ ## 详细文档索引
166
+
167
+ | 文档 | 说明 |
168
+ |------|------|
169
+ | [references/auth.md](references/auth.md) | 认证命令:扫码登录、直接设置 secret、查看状态、登出 |
170
+ | [references/music.md](references/music.md) | 音乐命令:搜索、推荐、收藏、统计、榜单、创建歌单 |
171
+ | [references/control.md](references/control.md) | 控制命令:控制 PC/Mac 客户端播放、暂停、切歌、收藏、创建歌单等 |
172
+ | [references/install.md](references/install.md) | 安装命令:SKILL.md 安装到各平台 |
173
+ | [references/update.md](references/update.md) | 更新机制、版本检查、关闭自动更新 |
174
+ | [references/output-format.md](references/output-format.md) | 输出格式与展示规范 |
175
+ | [references/error-handling.md](references/error-handling.md) | 错误处理与常见错误 |
176
+
177
+ ---
178
+
179
+ ## 完整使用流程
180
+
181
+ ```bash
182
+ # 1. 登录(详见 references/auth.md)
183
+ kugou-cli auth login # 获取二维码
184
+ # auth status 不会内部轮询;Agent 按"阶段 A → 阶段 B → 阶段 C"自行循环
185
+ kugou-cli auth status
186
+
187
+ # 1'. 或者直接导入已持有的 secret(跳过扫码)
188
+ kugou-cli auth set-secret "<base64-secret>"
189
+
190
+ # 2. 搜索歌曲
191
+ kugou-cli music search "周杰伦"
192
+
193
+ # 3. 获取猜你喜欢
194
+ kugou-cli music recommend guess
195
+
196
+ # 4. 查看我的收藏(返回最近若干首,不支持分页)
197
+ kugou-cli music favorites
198
+
199
+ # 5. 查看最近播放(返回最近若干条,不支持分页)
200
+ kugou-cli music recent
201
+
202
+ # 6. 查看听歌统计
203
+ kugou-cli music stats
204
+
205
+ # 7. 查看抖音热歌榜
206
+ kugou-cli music charts 52144
207
+
208
+ # 8. 创建歌单
209
+ # 优先走客户端路径(默认):见 references/control.md §10
210
+ kugou-cli control playlist create --name "我的批量歌单" --mixsongids "32068120,233125060"
211
+ # 客户端不可用时才回退到云端(详见 references/music.md §7.1):
212
+ kugou-cli music create-playlist "我的空歌单"
213
+ kugou-cli music create-playlist "我的批量歌单" --songs "32068120,233125060"
214
+
215
+ # 9. 搜索歌单(拿到 global_id 后可透传给 control play-playlist)
216
+ kugou-cli music search-playlist "周杰伦"
217
+ kugou-cli music playlist-songs "collection_3_938985631_304_0"
218
+
219
+ # 10. 控制本机酷狗客户端(仅 Windows / macOS,详见 references/control.md)
220
+ kugou-cli control play --mixsongid 32100650 --song-name "晴天" --singer-name "周杰伦"
221
+ kugou-cli control player --action pause
222
+ kugou-cli control favorite song --mixsongid 32100650
223
+ ```
Binary file
Binary file
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kg-ai/kugou-skill",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "Kugou Skill CLI",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -84,7 +84,7 @@ kugou-cli auth status
84
84
  | 返回 | 含义 | Agent 应做 |
85
85
  |------|------|-----------|
86
86
  | `{"logged_in": true, "nickname": "...", "login_time": "..."}` | 已登录(**已有 token 持久化**,通常是之前登录过) | 继续执行用户请求 |
87
- | `{"logged_in": true, "status": "success", "nickname": "..."}` | 扫码刚完成登录(**刚 SaveAuth 落盘**,本轮 status 检查中完成) | 继续执行用户请求 |
87
+ | `{"logged_in": true, "status": "success", "nickname": "..."}` | 扫码刚完成登录(**本轮 status 检查中完成 token 持久化**) | 继续执行用户请求 |
88
88
  | `{"logged_in": false, "status": "waiting", "qrcode": "..."}` | 二维码待扫码 | **阶段 A**:2-3s 后重试 status,最多 5 次;5 次后**进入阶段 B**,停下来等用户主动反馈 |
89
89
  | `{"logged_in": false, "status": "scanned", "nickname": "...", "qrcode": "..."}` | 已扫码待确认 | 等几秒再调一次 status(用户还没在手机上点确认) |
90
90
  | `{"logged_in": false, "status": "failed", "message": "..."}` | 二维码失效(**CLI 会自动清理本地 qrcode**) | **阶段 C 验证时**才见此返回 → 重新 `auth login` 拿新图,回到 §2.2 步骤 1 |
@@ -100,7 +100,7 @@ kugou-cli auth status
100
100
 
101
101
  ### 2.3.1 边界提醒:status: failed 会清掉 qrcode
102
102
 
103
- **关键事实**:`cmd/auth/status.go` 在 `status != 1/3/4` 时会调 `authstore.Logout()`,**自动清理本地 qrcode 文件**(不是清理登录态)。
103
+ **关键事实**:`status: failed` 时 CLI 会自动清理本地 qrcode 文件(**不是清理登录态**)。
104
104
 
105
105
  **在阶段 A / 阶段 C 见到 `failed` 时的处理**:
106
106