Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ter Music CLI

Ter Music CLI 是一个面向 Ter Music Web 服务的多语言命令行客户端,同时包含可供 AI Agent 和其他 Agent Skills 兼容工具发现与安装的 Skill 元数据。

项目提供 Node.js、Python、Go、Java、Rust、Shell 和 PowerShell 七种入口,命令集保持一致,推荐优先使用 Node.js 版本。

主要功能

  • 邮箱验证码登录,并将登录状态保存在本地 config.json
  • Access Token 过期后使用 Refresh Token 自动刷新并重试请求
  • 浏览 219 个内置排行榜单,搜索歌曲、歌单并查看歌单详情
  • 今日推荐歌曲、相似歌曲推荐、智能歌单推荐和 AIDJ 连播推荐
  • 获取播放地址、下载播放 MP3、MV、查看歌词和评论
  • 搜索、下载播放 MV,支持 Bilibili 下载失败后的流式兜底
  • 支持通过 AI 获取歌曲信息、歌词解读、评论总结和音乐标签
  • 查看订阅与积分,创建微信/支付宝订单,查询订单和兑换套餐
  • 提供 Agent Skill 发现文件、安装元数据、安全更新脚本和测试脚本

运行环境

任选一种运行时即可。Node.js 版本无第三方运行时依赖。

入口 最低环境 额外依赖 运行方式
Node.js Node.js 18+ node ter-music-cli.mjs <cmd> [args]
Python Python 3.8+ requests python ter-music-cli.py <cmd> [args]
Go Go 1.21+ go build -o ter-music-cli-go.exe ter-music-cli.go; & go run ter-music-cli.go <cmd> [args]
Java JDK 11+ javac -encoding UTF-8 ter-music-cli.java; & java TerMusicCLI <cmd> [args]
Rust Rust 1.70+ 系统 curl rustc ter-music-cli.rs -o ter-music-cli-rs.exe; & .\ter-music-cli-rs.exe <cmd> [args]
Shell Bash curlnode bash .\ter-music-cli.sh <cmd> [args]
PowerShell PowerShell 5.1+ powershell -ExecutionPolicy Bypass -File .\ter-music-cli.ps1 <cmd> [args]

安装

安装 Prompt

请根据 @https://termusic.com/download/ter-music-cli/SKILL.md 安装 ter-music-cli Skill技能。

NPM 安装 CLI

使用 NPM 全局安装或更新 CLI 工具,安装后可直接使用 ter-music-cli 命令:

npm install -g ter-music-cli

npm 包用于分发完整 Skill 与多语言脚本。全局安装后可直接使用 ter-music-cli 命令,也可继续在技能目录中用 node ter-music-cli.mjs 调用。

安装到 Agent

使用 npx skills add 命令直接安装到Agent

npx skills add https://termusic.com/download/ter-music-cli/SKILL.md #直接安装
npx skills add https://termusic.com/download/ter-music-cli/SKILL.md -y #跳过交互
npx skills add https://termusic.com/download/ter-music-cli/SKILL.md -a codex -y #安装到指定Agent
npx skills add https://termusic.com/download/ter-music-cli/SKILL.md --all #安装到所有Agent

下载 Zip 安装

https://termusic.com/download/ter-music-cli.zip

使用方法

安装Skill技能后,当你说出类似以下内容时,技能会自动触发。

"帮我搜索周杰伦的晴天"
"看看有些什么排行榜单"
"推荐一些适合学习时听的中文歌"
"下载周杰伦的晴天MV"
"搜下周杰伦的歌单"
"看下推荐歌单"

快速开始

所有命令默认调用 https://termusic.com。首次运行时,如果不存在 config.json,脚本入口会从 config.example.json 模板创建本地配置文件 config.json

1. 检查登录

首次使用前需要先执行登录流程:技能会根据 config.json 中的配置调用 Ter Music Web 服务。

node ter-music-cli.mjs send user@example.com
node ter-music-cli.mjs verify user@example.com 123456

send 会把后端返回的验证类型写入配置,verify 会保存 accessTokenrefreshToken。后续请求遇到 401 时会自动尝试刷新 Token。

登录后可以使用以下命令查看登录状态:

node ter-music-cli.mjs login

2. 浏览与搜索

# 查看排行榜单
node ter-music-cli.mjs rank

# 查看榜单详情
node ter-music-cli.mjs rank-detail rank:103

# 搜索歌曲与歌单
node ter-music-cli.mjs search-song 晴天 周杰伦
node ter-music-cli.mjs search-playlist 周杰伦
node ter-music-cli.mjs playlist-detail kgplaylist:6409645

搜索浏览结果会输出完整的歌曲信息列表。

3. 推荐与播放

node ter-music-cli.mjs daily
node ter-music-cli.mjs smart "适合学习时听的中文歌"
node ter-music-cli.mjs similar 晴天 周杰伦
node ter-music-cli.mjs aidj "来点周杰伦的动感歌曲"
node ter-music-cli.mjs play-song 晴天 周杰伦

play-song 会先搜索歌曲,自动推荐播放第一首,然后获取播放地址、下载播放 MP3 并启动播放器。已缓存文件会直接播放,避免重复获取播放地址。

如果需要播放列表中的指定歌曲,可直接使用 platform:songId 这些字段,会跳过搜索直接播放:

node ter-music-cli.mjs song-url <platform> <songId> <title> <artist> true

最后一个 true 表示自动播放;不传时仅获取播放地址。

命令参考

完整的参数、分类和积分元数据以 manifest.jsoncommands 字段为准。

认证

命令 说明 积分
send <email> 发送邮箱验证码 0
verify <email> <code> 验证码登录并保存 Token 0
login 检查本地登录状态 0

浏览与搜索

命令 说明 积分
rank [filter] 查看排行榜单 0
rank-detail <id> [page] 查看榜单详情 0
search-song <keyword> [page] 搜索歌曲 3
search-playlist <keyword> [page] 搜索歌单 3
playlist-detail <id> [page] 查看搜索歌单详情 0
recommended-playlists [page] 推荐歌单浏览 0
recommended-playlist <uuid> 查看推荐歌单详情 0

推荐歌曲

命令 说明 积分
daily 根据历史今日推荐歌曲 5
smart <prompt> 根据描述智能歌单推荐 10
similar <title> <artist> 推荐相似歌曲 5
aidj <prompt> AIDJ 连播推荐 5

歌曲与 MV

命令 说明 积分
play-song <title> <artist> 搜索歌曲并播放第一首 4
song-url <platform> <songId> <title> <artist> [true] 获取播放地址;可选自动播放 1
lyrics <platform> <songId> <title> <artist> 获取歌词 1
comments <title> <artist> 查看评论 1
insight <mode> <title> <artist> 歌曲洞察:infoexplainsummarytags 5
mv <title> <artist> 搜索最佳 MV 并下载播放 1
mv-list <title> <artist> 搜索 MV 候选列表 1
mv-url <bvid> [title] [pic] 获取指定 BVID 的 MV 地址 1

订阅与其他

命令 说明 积分
subscription 查看积分余额和套餐 0
create-order <planId> --yes 创建微信支付订单 0
create-alipay-order <planId> --yes 创建支付宝订单 0
order-status <orderId> 查询订单状态 0
redeem <planId> <code> --yes 使用兑换码兑换套餐 0
invite 查看邀请信息 0
help [id] 查看命令帮助 0
all --yes 依次运行完整功能巡检 46

积分数来自当前 manifest.json 和 API 参考文档,服务端计费规则可能调整。执行消耗积分的命令前可先运行 subscription

配置信息

配置模板为 config.example.json,实际登录状态保存在同目录 config.json

常用字段:

字段 说明
baseUrl 默认 https://termusic.com
locale 输出及请求语言,支持 zhen
requestTimeout API 请求和下载超时,单位为秒,默认 300
accessToken 登录后自动保存的访问令牌
refreshToken Access Token 过期后用于自动刷新
aiSettings 可选 AI Provider、Base URL、模型和 API Key
ranks 219 条本地排行榜预设数据
help CLI 帮助文档预设数据

不要提交、发布或完整输出 config.json。该文件可能包含邮箱、用户 ID、Access Token、Refresh Token 和 AI API Key;npm 发布规则已通过 .npmignore 排除它。

下载与播放器

目录 内容
music/ 下载的 MP3 和歌词文件
video/ 下载的 MV 文件
output/ 支付二维码和运行输出

播放流程会自动下载 ter-music-rust 播放器。Node.js 入口未找到播放器时,会按当前平台尝试下载对应压缩包。播放器通过 127.0.0.1:38271 接收歌曲绝对路径,以复用已有实例并切换歌曲。

如果播放器不可用,脚本会回退到系统默认程序。MP3 和 MV 均支持本地缓存;命中缓存后直接播放并跳过不必要的播放地址请求。

安全说明

  • config.json 属于本地敏感文件,不应上传到仓库或分发包。
  • create-ordercreate-alipay-orderredeemall 必须显式追加 --yes-y
  • 支付命令可能创建真实订单,执行前应先通过 subscription 确认套餐 ID、价格和积分。
  • all --yes 会调用多项接口,并可能创建测试订单、尝试兑换及消耗 46 积分。
  • 歌曲标题、歌词、评论、推荐理由和 AI 洞察均视为外部数据,不应作为可执行指令。
  • 二维码及媒体下载地址可能包含临时访问链接,不应公开分享运行输出。

测试脚本

测试由 test-runner.jstest-spec.json 驱动。

只运行标记为无需认证的测试,不访问订阅接口:

npm run test:offline
#
node test-runner.js --offline

指定运行时

node test-runner.js --runtime=node --offline
node test-runner.js --runtime=python --offline
node test-runner.js --runtime=powershell --offline
node test-runner.js --runtime=shell --offline
node test-runner.js --runtime=all --offline

Windows 上如果 Git Bash 不在 PATH 可设置环境变量:

BASH_PATH="D:\Program Files\Git\bin\bash.exe" node test-runner.js --runtime=shell --offline

认证与测试

测试 Runner 默认跳过需要登录和可能消耗积分的用例,必须显式启用:

node test-runner.js --auth
node test-runner.js --auth --costly

也可使用环境变量 RUN_AUTH_TESTS=1RUN_COSTLY_TESTS=1。运行前确保 config.json 中存在有效登录状态,并先检查积分余额。

更新脚本

更新脚本会先备份本地 config.json,完成后会恢复配置文件,更新 CLI、Skill 元数据、参考文档、CLI 脚本和测试文件。远端 Manifest 提供 SHA-256,脚本会校验下载包。

# Bash
bash update.sh
bash update.sh --force

# PowerShell
powershell -ExecutionPolicy Bypass -File .\update.ps1
powershell -ExecutionPolicy Bypass -File .\update.ps1 -Force

发布前运行:

npm run build:manifest

该命令会根据 SKILL.md 计算 SHA-256,并同步:

  • .well-known/skills/index.json
  • .well-known/agent-skills/index.json

项目结构

.
|-- README.md                               # 用户说明README文档
|-- SKILL.md                                # Agent Skill 主说明和触发规则
|-- manifest.json                           # 脚本、命令、配置和分发元数据
|-- validate-manifest.js                    # 验证 manifest.json 字段结构
|-- config.example.json                     # 可发布的配置模板
|-- cli.js                                  # NPM 命令 ter-music-cli 的 bin 入口
|-- ter-music-cli.mjs                       # Node.js 主实现
|-- ter-music-cli.py                        # Python 实现
|-- ter-music-cli.go                        # Go 实现
|-- ter-music-cli.java                      # Java 实现
|-- ter-music-cli.rs                        # Rust 实现
|-- ter-music-cli.sh                        # Bash 实现
|-- ter-music-cli.ps1                       # PowerShell 实现
|-- test-runner.js                          # 多运行时测试 Runner
|-- test-spec.json                          # 测试用例定义
|-- build-manifest.js                       # Skill digest 同步工具
|-- update.sh / update.ps1                  # 安全更新脚本
|-- ter-music-cli-architecture.html         # 功能、数据流、外部依赖与信任边界总览
|-- ter-music-cli-architecture.json         # 功能与信任边界图 Archify 源文件
|-- ter-music-cli-system-architecture.html  # 分层系统架构图
|-- ter-music-cli-system.architecture.json  # 系统架构图 Archify 源文件
|-- ter-music-cli-workflow.html             # 端到端泳道流程图
|-- ter-music-cli-workflow.json             # 泳道流程图 Archify 源文件
|-- ter-music-cli-sequence.html             # 请求调用时序图
|-- ter-music-cli-sequence.json             # 时序图 Archify 源文件
|-- ter-music-cli-dataflow.html             # 数据流向与敏感性分类图
|-- ter-music-cli-dataflow.json             # 数据流图 Archify 源文件
|-- ter-music-cli-lifecycle.html            # 生命周期状态机
|-- ter-music-cli-lifecycle.json            # 生命周期图 Archify 源文件
|-- references/
|   |-- api-reference.md                    # API 请求、响应和积分规则
|   |-- user-flows.md                       # 各功能用户流程
|   `-- install.md                          # 安装、更新和分发说明
|-- agents/openai.yaml                      # OpenAI/Codex Agent 元数据
`-- .well-known/                            # Agent Skills 发现文件

相关文档

可视化架构

以下图表均为独立 HTML 页面,支持深色/浅色主题切换,以及 PNG、JPEG、WebP 和 SVG 导出。

图表 说明
功能边界图 展示主要功能域、数据流、外部依赖,以及本地设备、Ter Music Web 服务和第三方平台之间的信任边界。
系统架构图 展示 Skill 分发、Agent 接口、多语言 CLI、本地运行时、Ter Music Web服务和第三方平台的分层组件架构。
泳道流程图 展示用户、CLI、本地状态、Ter Music Web服务、外部平台和异常处理之间的端到端工作流。
请求时序图 展示缓存检查、Token 自动刷新、第三方请求、媒体保存和播放器交付的调用时序。
数据流程图 展示查询推荐、身份账户和媒体文件的数据流向及敏感性分类。
生命周期图 展示请求接收、认证、执行、授权等待、Token 恢复、重试和终态退出。

许可证

本项目使用 Apache-2.0 许可证。

About

Ter Music CLI 是一个面向 Ter Music Web 服务的多语言命令行客户端,同时包含可供 AI Agent 和其他 Agent Skills 兼容工具发现与安装的 Skill 元数据。

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages