desktop-music-launcher
何时使用
当用户想要:
- - 检查电脑里装了哪些音乐软件或播放器
- 打开 Spotify / Apple Music / QQ 音乐 / 网易云音乐 / VLC / mpv 等
- 按歌名、歌手、专辑、情绪、场景搜索音乐
- 根据“适合学习 / 跑步 / 睡前 / 聚会 / 失恋”等需求推荐可立即搜索的音乐方向
- 在 macOS 上直接控制 Spotify / Apple Music 的播放、暂停、下一首、上一首、状态查询
- 在 macOS 上对 Spotify / Apple Music 执行“按需求尽力开始播放”的 UI 自动化
不做什么
- - 不伪造“已经开始播放”的结果;必须以脚本返回结果为准
- 不调用未声明的私有 API、逆向接口或账号 Cookie
- 不越权扫描无关目录;只检查常见安装路径和 PATH 中的可执行文件
- 不自动登录任何音乐服务,也不读取用户账号密码
- 不下载盗版资源,不绕过版权或付费限制
- 不承诺所有客户端、所有版本、所有语言 UI 下都能 100% 精确点开第一首歌
运行方式
统一使用:
CODEBLOCK0
若系统只有 python,则改用:
CODEBLOCK1
命令总览
1) 扫描本机音乐软件
CODEBLOCK2
返回 JSON,包含当前系统、识别到的应用、是否安装、命中的路径/命令、支持的能力;在 macOS 上还会返回是否存在 osascript。
2) 打开软件
CODEBLOCK3
3) 搜索歌曲 / 歌手 / 专辑
CODEBLOCK4
4) 播放
CODEBLOCK5
行为说明:
- macOS + Spotify / Apple Music 时,默认优先尝试控制版的 UI 自动化
- 其他系统或不支持控制的客户端,则退化为 URI / 网页搜索
- -
play --file:把本地音频文件交给 VLC / mpv / foobar2000 / MusicBee 等播放器 - INLINECODE4 :把网络音频 URL 交给支持 URL 播放的播放器
5) 控制播放器
CODEBLOCK6
支持动作:
- - INLINECODE5
- INLINECODE6
- INLINECODE7
- INLINECODE8
- INLINECODE9
- INLINECODE10
6) 推荐
CODEBLOCK7
推荐工作流
当用户说“帮我放点适合学习的歌”时,按下面顺序执行:
- 1. 先运行 INLINECODE11
- 选一个已安装且支持搜索/播放的应用;在 macOS 上优先 Spotify / Apple Music 控制版
- 运行 INLINECODE12
- 从结果里挑最合适的 INLINECODE13
- macOS 上优先运行 INLINECODE14
- 如果控制失败,再退回 INLINECODE15
结果解释
典型 JSON 字段:
- -
app: 选中的应用 ID - INLINECODE17 :
uri / web / play_file / play_url / INLINECODE22 - INLINECODE23 : 即将打开的 URI、URL、文件路径或音频地址
- INLINECODE24 : 是否成功发起打开动作
- INLINECODE25 : 该软件支持的能力集合
- INLINECODE26 : 是否属于“尽力而为”的 UI 自动化
- INLINECODE27 : 控制版需要的系统权限
失败时怎么处理
- - 没检测到音乐软件:建议用户先安装 Spotify、Apple Music、VLC 或 mpv
- macOS 控制失败:先检查“辅助功能”和“自动化”权限,再重试
- 目标软件不支持统一搜索入口:给出 query,让用户手动在应用里搜索
- 本地文件不存在:明确报错,不要猜测路径
- Linux 缺少
xdg-open:提示安装桌面打开器或改为手动复制 URL
权限说明
macOS 控制版依赖:
- - INLINECODE29
- 运行该 Skill 的宿主应用已获 辅助功能
- 运行该 Skill 的宿主应用已获 自动化,允许控制 Spotify / Music
没有这些权限时,控制版会失败,但扫描、推荐、普通搜索仍可用。
安全边界
- - 仅执行本地启动、打开 URI/URL、把用户明确提供的文件/URL交给播放器
- 在 macOS 上仅调用可审计的 AppleScript 控制公开桌面应用
- 不读取浏览器 Cookie、不抓包、不注入播放器进程
- 不使用
curl | bash、远程脚本直灌、Base64 混淆执行 - 所有外部入口都在脚本返回结果中可审计
desktop-music-launcher
何时使用
当用户想要:
- - 检查电脑里装了哪些音乐软件或播放器
- 打开 Spotify / Apple Music / QQ 音乐 / 网易云音乐 / VLC / mpv 等
- 按歌名、歌手、专辑、情绪、场景搜索音乐
- 根据“适合学习 / 跑步 / 睡前 / 聚会 / 失恋”等需求推荐可立即搜索的音乐方向
- 在 macOS 上直接控制 Spotify / Apple Music 的播放、暂停、下一首、上一首、状态查询
- 在 macOS 上对 Spotify / Apple Music 执行“按需求尽力开始播放”的 UI 自动化
不做什么
- - 不伪造“已经开始播放”的结果;必须以脚本返回结果为准
- 不调用未声明的私有 API、逆向接口或账号 Cookie
- 不越权扫描无关目录;只检查常见安装路径和 PATH 中的可执行文件
- 不自动登录任何音乐服务,也不读取用户账号密码
- 不下载盗版资源,不绕过版权或付费限制
- 不承诺所有客户端、所有版本、所有语言 UI 下都能 100% 精确点开第一首歌
运行方式
统一使用:
bash
python3 scripts/music_skill.py [args]
若系统只有 python,则改用:
bash
python scripts/music_skill.py [args]
命令总览
1) 扫描本机音乐软件
bash
python3 scripts/music_skill.py scan
返回 JSON,包含当前系统、识别到的应用、是否安装、命中的路径/命令、支持的能力;在 macOS 上还会返回是否存在 osascript。
2) 打开软件
bash
python3 scripts/music_skill.py open --app spotify
python3 scripts/music_skill.py open --app vlc
3) 搜索歌曲 / 歌手 / 专辑
bash
python3 scripts/music_skill.py search 周杰伦 稻香
python3 scripts/music_skill.py search lofi beats --app spotify --open
4) 播放
bash
python3 scripts/music_skill.py play Eason Chan 富士山下 --app spotify --control-mode macos-ui
python3 scripts/music_skill.py play Taylor Swift Love Story --app apple-music --control-mode macos-ui
python3 scripts/music_skill.py play --file ~/Music/demo.mp3 --app vlc --open
python3 scripts/music_skill.py play --url https://example.com/demo.mp3 --app mpv --open
行为说明:
- macOS + Spotify / Apple Music 时,默认优先尝试控制版的 UI 自动化
- 其他系统或不支持控制的客户端,则退化为 URI / 网页搜索
- - play --file:把本地音频文件交给 VLC / mpv / foobar2000 / MusicBee 等播放器
- play --url:把网络音频 URL 交给支持 URL 播放的播放器
5) 控制播放器
bash
python3 scripts/music_skill.py control --app spotify --action play
python3 scripts/music_skill.py control --app spotify --action pause
python3 scripts/music_skill.py control --app spotify --action next
python3 scripts/music_skill.py control --app spotify --action previous
python3 scripts/music_skill.py control --app spotify --action status
python3 scripts/music_skill.py control --app apple-music --action playpause
python3 scripts/music_skill.py control --app apple-music --action status
支持动作:
- - play
- pause
- playpause
- next
- previous
- status
6) 推荐
bash
python3 scripts/music_skill.py recommend 适合写代码的歌
python3 scripts/music_skill.py recommend 跑步音乐 -k 5
推荐工作流
当用户说“帮我放点适合学习的歌”时,按下面顺序执行:
- 1. 先运行 scan
- 选一个已安装且支持搜索/播放的应用;在 macOS 上优先 Spotify / Apple Music 控制版
- 运行 recommend <用户需求>
- 从结果里挑最合适的 suggestions[0].query
- macOS 上优先运行 play --app spotify --control-mode macos-ui
- 如果控制失败,再退回 search --open
结果解释
典型 JSON 字段:
- - app: 选中的应用 ID
- method: uri / web / playfile / playurl / macosuiautomation
- target: 即将打开的 URI、URL、文件路径或音频地址
- openresult.ok: 是否成功发起打开动作
- supports: 该软件支持的能力集合
- besteffort: 是否属于“尽力而为”的 UI 自动化
- requires_permissions: 控制版需要的系统权限
失败时怎么处理
- - 没检测到音乐软件:建议用户先安装 Spotify、Apple Music、VLC 或 mpv
- macOS 控制失败:先检查“辅助功能”和“自动化”权限,再重试
- 目标软件不支持统一搜索入口:给出 query,让用户手动在应用里搜索
- 本地文件不存在:明确报错,不要猜测路径
- Linux 缺少 xdg-open:提示安装桌面打开器或改为手动复制 URL
权限说明
macOS 控制版依赖:
- - osascript
- 运行该 Skill 的宿主应用已获 辅助功能
- 运行该 Skill 的宿主应用已获 自动化,允许控制 Spotify / Music
没有这些权限时,控制版会失败,但扫描、推荐、普通搜索仍可用。
安全边界
- - 仅执行本地启动、打开 URI/URL、把用户明确提供的文件/URL交给播放器
- 在 macOS 上仅调用可审计的 AppleScript 控制公开桌面应用
- 不读取浏览器 Cookie、不抓包、不注入播放器进程
- 不使用 curl | bash、远程脚本直灌、Base64 混淆执行
- 所有外部入口都在脚本返回结果中可审计