ncmm

command module
v1.1.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 11, 2026 License: MIT Imports: 3 Imported by: 0

README

ncmm

🎵 ncmm

ncmm 是一个专门为网易云音乐人设计的命令行助手工具,基于 Go 语言(Go 1.25.0+)开发。

本项目旨在帮助网易云音乐人一键完成日常签到、自动执行黑胶 VIP 进阶任务(包括图文笔记自动发布与秒删、多粉丝号接力刷播放量等),帮助音乐人轻松获取并维持黑胶会员权益。工具严格遵循防风控设计,支持多账号安全隔离、播放量分摊回退、日推歌曲混听干扰以及本人播放拦截等安全策略。


🚀 核心功能

  1. 🔑 账号登录管理 (ncmm login)
    • 扫码登录 (qrcode):在终端命令行直接渲染并打印二维码字符,同时在本地生成二维码图片,用户使用手机网易云音乐 APP 扫码即可快捷登录。
    • 手机号登录 (phone):支持使用短信验证码(发送验证码并在终端交互输入)或账号密码进行登录。 (⚠️ 存在风控,不建议使用)
    • Cookie 导入 (cookie):支持从文本或文件导入 Cookie。具备对 JSON 数组格式、Netscape 文本格式以及传统 HTTP Header 格式 Cookie 的自动识别和解析能力。
    • CookieCloud 同步 (cookiecloud):通过配置 CookieCloud 的服务器地址、UUID 和密码,自动拉取并过滤同步网易云音乐的 Cookie。

[!WARNING] 关于登录风控的重要提示 网易云音乐对非官方 IP/客户端的手机验证码和密码登录限制极其严苛,在非官方客户端登录极易高频触发图形滑块验证,甚至导致账号被保护性限制。强烈推荐使用 Cookie 导入/同步 (cookie/cookiecloud),以此保障账号安全与程序稳定。

  1. 🎵 模拟歌曲播放 (ncmm playids)

    • 针对指定的 songId 歌曲池(支持命令行参数直接传入,或从外部文本文件批量读取),通过接口请求与时延等待来模拟播放:
      • 获取播放链接:调用 SongPlayerV1 接口获取歌曲的流媒体 URL。
      • 模拟音频拉取:首次播放某首歌曲时,真实请求 CDN 地址拉取音频数据至内存以模拟完整流量交互;单次运行中相同的歌曲再次播放时直接读取内存记录,避免重复下载以节省网络带宽。
      • 真实时长等待:前台展示进度条,程序会真实等待(time.Sleep)该首歌曲对应的完整时间。
      • 播放动作上报:歌曲播放结束后,调用网易云音乐的 WebLog 接口,发送播放行为日志。
      • 随机播放间隔:每首歌曲播放完毕后,在配置的 gap-mingap-max 秒范围内随机休眠,再开始下一首。
  2. 📊 每日播放目标控制与本地进度存储

    • 播放状态和进度记录在本地嵌入式 Badger 数据库中。
    • 随机每日上限:每天首次启动时,系统在配置文件设定的 [daily_min, daily_max] 区间内随机生成一个今日播放目标并存入数据库。当天的多次运行将复用这一目标。
    • 限额自增与达标退出:每播放成功一首,本地已播计数自增;当今日播放数量达到随机目标上限时,程序将自动跳过并退出,防止每日播放次数恒定。
    • 单次运行目标:支持通过 [run_min, run_max] 参数设定单次运行的播放歌曲数。
  3. 📅 每日任务签到与云贝任务一键闭环 (ncmm sign)

    • 一键完成多种端签到与任务奖励申领:
      • 多日常签到:自动完成黑胶 VIP 会员签到(一键领取可领成长值)及云贝中心每日签到。
      • 云贝做任务打卡套件:通过模拟真机前台操作与精心设计的防风控时延,自动打卡多项云贝日常任务并自动领取云贝奖励:
        • 浏览会员中心:触发浏览任务并在前台随机浏览 15~25 秒自动打卡。
        • 点赞评论/动态:自动点赞 10 个热门评论,在 3~10 秒随机延迟后取消点赞,避免账号被风控封禁。
        • 探索小众歌曲:严格串行播放 10 首推荐小众歌曲。先批量拉取歌曲详情,每首播放 31~50秒 后依次调用凭证分配接口和听歌上报接口,完美匹配官方风控模型。
        • 关注歌手:关注首位热门歌手,3~10 秒后自动取消关注。
        • 收藏歌曲:自动添加指定曲目至首个个人歌单,3~10 秒后从歌单中删除该歌曲(取消收藏)以避嫌。
        • 红心歌曲:对第一首日推单曲进行红心,3~10 秒后自动取消红心。
        • 预约领云贝 :自动查询状态,未预约则自动预约,已预约则自动领取云贝奖励。
      • 精细化控制开关:支持在配置文件中通过独立配置项,选择性开启或关闭每一项具体做任务分支。
  4. 🎖️ 音乐人黑胶会员进阶任务 (ncmm musician)

    • 自动查询进阶任务进度,按需执行并加速任务达标:
      • 日常签到:自动完成音乐人日常签到(申领云豆奖励)。
      • 图文笔记发布:若笔记发布天数未达标,自动调用公共的 Note 笔记服务发布图文笔记,并在成功后自动删除。
      • 播放量达标任务:若播放次数未达标,自动调用本地 playids 的真实模拟播放与上报逻辑。播放过程严格遵守防风控的随机每日上限机制,降低封号风险。
      • 多账号隔离:支持配置独立的 fan1.json 作为进阶任务刷歌账号的 Cookie,确保主账号(音乐人账号)与辅助账号的安全隔离。
  5. 🎧 乐迷团任务 (ncmm fansgroup)

    • 自动查询乐迷团任务进度,并按剩余进度执行未完成任务:
      • 播放歌曲:从任务按钮参数中解析歌曲 ID,通过 weapi/feedback/weblog 上报 startplay 事件完成播放任务,不等待整首歌播放结束。
      • 发布图文笔记:复用 note 配置中的标题、正文和图片池,按剩余次数发布图文动态,并可按配置自动删除。
      • 分享歌曲:解析任务资源参数,按剩余次数提交分享进度。
      • 点赞乐迷笔记:拉取乐迷团推荐内容,过滤本人和已点赞内容后按剩余次数点赞。
    • 任务状态只展示“已完成 / 未完成”,执行次数按 allProgress - currentProgress 自动计算。
  6. 📝 笔记单独发布功能 (ncmm note)

    • 将图文笔记发布与秒删逻辑,作为一个独立的公共服务,可单独执行。
    • 支持通过顶级命令 ncmm note 独立拉起发布。发布时会自动从图片链接池下载图片上传,并随机选择配置的标题与正文进行发布。
    • 支持设置发布成功后自动秒删(5~30秒随机等待),保证个人主页干净整洁。该服务也被 musiciansign (云贝签到任务) 共享调用。
  7. 📁 灵活的 --home 多账号工作目录机制

    • 支持通过全局参数 --home 指定运行目录,自适应实现配置、Cookie、数据库、日志等多账号隔离:
      • 自动加载配置:未指定 -c / --config 时,若 --home 目录中存在 config.yaml,将自动加载它。
      • 独立会话隔离:每个工作目录拥有独立的 cookie.json、Badger 数据库和日志文件,互不干扰。
      • 登录路径自适应:在 ncmm login cookie -o <文件名> 导出 Cookie 时,若输出路径为相对路径,将自动基于 --home 目录进行拼装,极大简化了多账号脚本的管理。

⚙️ 配置文件说明 (config.yaml)

默认配置文件路径为 ~/.ncmm/config.yaml(支持在运行时通过 -c--config 指定)。配置字段如下:

# 配置文件版本
version: 1.0

# 顶级多账号管理
accounts:
  # 音乐人主账号 Cookie 文件路径
  main: "${HOME}/.ncmm/cookie.json"
  # 辅助刷量账号 Cookie 列表
  secondary:
    - "${HOME}/.ncmm/fan1.json"
    - "${HOME}/.ncmm/fan2.json"

# log 日志模块配置
log:
  # 应用名称
  app: ncm
  # 日志输出格式: text / json
  format: text
  # 日志级别: debug < info < warn < error
  level: info
  # 日志是否输出到标准输出 (控制台)
  stdout: false
  # 滚动日志配置
  rotate:
    # 日志文件保存路径
    filename: "${HOME}/.ncmm/log/ncm.log"
    # 单个日志文件最大大小 (单位: MB)
    maxsize: 100
    # 日志文件保留天数
    maxage: 7
    # 日志文件保留最大数量
    maxbackups: 3
    # 日志打印是否使用本地时间
    localtime: true
    # 日志文件是否启用 gzip 压缩
    compress: true

# 网络模块配置
network:
  # 是否开启 resty 调试日志输出
  debug: false
  # 全局请求超时时间
  timeout: 60s
  # 网络请求失败重试次数
  retry: 3
  # 全局自定义 User-Agent
  user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36"

# 本地数据存储 (主要记录播放状态进度)
database:
  # 缓存驱动类型,目前仅支持 badger
  driver: badger
  # 缓存目录路径
  path: "${HOME}/.ncmm/database/badger/"

# playids 播放指定歌曲配置 (原生独立播放)
playids:
  # 每日播放目标随机下限 (每天首次启动时在此范围内随机生成当日目标)
  daily_min: 50
  # 每日播放目标随机上限
  daily_max: 200
  # 单次运行目标下限 (为 0 表示单次不设限,直到跑完今日剩余播放目标)
  run_min: 0
  # 单次运行目标上限
  run_max: 0
  # 歌曲与歌曲之间的静默间隔最小值 (单位: 秒)
  gap_min: 10
  # 歌曲与歌曲之间的静默间隔最大值 (单位: 秒)
  gap_max: 30
  # 默认歌曲 ID 列表(逗号分隔的字符串,与命令行 ids 采用并集去重合并)
  ids: ""
  # 默认歌曲 ID 文件路径(与命令行 ids-file 采用并集去重合并;支持本地路径或 http/https 远程链接)
  idsFile: ""
  # 独立播放账号控制(命令行参数未指定 --cookie-file 时生效)
  enableMain: false      # 默认不启用主账号刷歌
  enableSecondaries: true   # 启用所有辅助账号刷歌

# 签到任务配置
sign:
  enableMain: true       # 启用主账号日常签到
  enableSecondaries: true   # 启用所有辅助账号日常签到
  yunbeiTask:
    enableViewVipCenter: true       # 浏览会员中心任务开关
    enableLikeComment: true         # 点赞评论和动态任务开关
    enableListenIndie: true         # 探索小众歌曲任务开关
    enableReserve: true             # 预约领云贝任务开关
    enableFollowArtist: true        # 关注歌手任务开关
    enableLikeSong: true            # 红心歌曲任务开关
    enableCollectSong: true         # 收藏歌曲任务开关
    enablePublishNote: true         # 发布图文动态任务开关
    enablePlayDailyRecommend: false  # 是否启用云贝签到中的日推歌曲播放任务开关

# 批量任务入口配置;执行 ncmm task 时会读取这里决定跑哪些任务
task:
  sign: true
  playids: false
  musicianVip: true
  note: false
  fansGroup: true

# 乐迷团任务配置
fansGroup:
  # 是否使用 accounts.main 执行乐迷团任务
  enableMain: false
  # 是否使用 accounts.secondary 执行乐迷团任务
  enableSecondaries: true
  # 乐迷团图文任务发布成功后是否自动删除;未配置时继承 note.autoDelete
  autoDeleteNote: true

# 模拟播放日推干扰配置
mixPlay:
  enabled: true             # 是否在模拟播放中掺杂日推歌曲作为干扰
  dailyRecommendRatio: 0.3  # 日推混听干扰占比 (如 0.3 表示 30% 日推)
  countTarget: false        # 混听的日推歌曲是否计入播放目标(若为 false,则每日/单次目标仅统计主歌,日推只起风控干扰作用,不占任务额度;若为 true,则日推也算在目标数内)

# note 笔记发布公共配置
note:
  # 笔记标题列表。每次发布图文笔记时会从中随机选择一个作为标题(若有 titlesFile 则会进行并集合并)
  titles:
    - "今日音乐分享"
    - "音乐人的日常"
    - "分享好听的歌"
    - "每日歌单推荐"
  # 动态发布标题列表文件路径 (支持本地路径与远程 http/https 链接,会与 titles 并集合并)
  titlesFile: "https://tinyurl.com/4pjvv5j7"
  # 笔记文字内容。每次发布时会从中随机选择一条作为正文(若有 messagesFile 则会进行并集合并)
  messages:
    - "分享一首好听的歌~"
    - "音乐是最好的陪伴"
    - "今天也要好好听歌呀"
    - "用音乐记录生活"
  # 动态发布文本列表文件路径 (支持本地路径与远程 http/https 链接,会与 messages 并集合并)
  messagesFile: "https://tinyurl.com/457fuy38"
  # 图片 URL 链接池。每次发布时会从中随机挑选一个 URL 进行下载并上传
  imageUrls:
    - "https://tinyurl.com/mruxfba5"
  # 动态类型: 35=普通动态, 39=图文笔记
  type: 39
  # 是否在笔记发布成功后自动删除(秒删),以保持个人主页整洁。默认开启
  autoDelete: true

# 音乐人任务配置
musician:
  enableMain: true          # 是否启用主账号执行音乐人任务
  enableSecondaries: true   # 是否启用所有辅助账号执行音乐人任务
  identityCacheDays: 0      # 音乐人身份状态的本地缓存时间(单位:天),默认永久有效
  # 播放任务配置 (专门用于进阶任务的接力刷歌)
  play:
    # 进阶任务专属覆盖的歌曲 ID(留空继承 playids.ids,支持并集去重合并)
    ids: ""
    # 进阶任务专属覆盖的歌曲 ID 文件路径(留空继承 playids.idsFile,支持并集去重合并)
    idsFile: ""
    # 进阶任务单次运行的播放歌曲随机目标下限 (为 0 则继承 playids.run_min)
    run_min: 0
    # 进阶任务单次运行的播放歌曲随机目标上限 (为 0 则继承 playids.run_max)
    run_max: 0
    # 两首歌曲之间的最小随机等待间隔(秒,为 0 则继承 playids.gap_min)
    gap_min: 0
    # 两首歌曲之间的最大随机等待间隔(秒,为 0 则继承 playids.gap_max)
    gap_max: 0

🛠️ 编译与安装

在项目根目录下执行以下命令进行编译:

go build -o ncmm.exe main.go

提示:在 Linux / macOS 等类 Unix 平台下,请编译为 ncmmgo build -o ncmm main.go


📖 命令行使用说明

0. 全局通用参数

ncmm 命令支持以下全局通用参数,可以跟在主命令或任意子命令后:

  • -c / --config (String):指定配置文件 config.yaml 的路径。若未指定,且配置了 --home,程序将自动尝试加载 --home 目录下的 config.yaml;若仍未找到,默认尝试加载 ${HOME}/.ncmm/config.yaml;若该文件不存在,则会使用程序内置的默认配置值。
  • --home (String):指定数据存储的家目录。默认值为当前用户的系统家目录(${HOME})。该家目录将用于存放运行日志(log/)、Cookie 状态文件(cookie.json)以及本地 Badger 数据库(database/)。通过配合不同 --home 路径,可以极简、安全地实现多账号数据物理隔离。
  • --debug (Boolean):开启命令行调试模式。开启后,日志会强制输出到标准输出(Stdout),日志级别临时设为 debug,并输出底层的网络请求调试信息。

1. 账号登录 (ncmm login)

进行歌曲播放前,必须执行登录操作以保存登录凭证。

[!IMPORTANT] 多账号管理与自动回写逻辑 (v1.1.2+)

  1. 默认身份:所有的登录子命令(扫码、手机号、Cookie 导入、CookieCloud 同步)**默认将账号作为辅助账号(Secondary)**处理,防止误覆盖主号。
  2. 主账号登录:必须显式传入 -m--main 参数(例如 ncmm login qrcode -m),才会登录并保存为主账号(Main)
  3. 配置自动回写:登录成功后,程序会自动将新账号的 Cookie 路径写入/追加至本地 config.yaml 配置文件accounts 节点下。如果是主账号,更新 accounts.main;如果是辅助账号且该路径不在 accounts.secondary 中,会自动追加进去。
  4. 自动添加昵称注释:回写时,程序将通过 YAML AST 语法树分析,自动在对应的账号配置行后添加 # 昵称: 用户的实际昵称 注释,用于直观管理区分。同时,会完整保留其他未改动账号的历史注释。
  5. 文件名智能推导
    • 主账号:路径由 accounts.main 决定(若配置文件中没有该项,则默认保存为 ${HOME}/.ncmm/cookie.json)。
    • 辅助账号:优先根据原始输入推导文件名。如 cookie 导入中通过 -f <文件名>.txt 导入,推导为 <文件名>.json;使用 phone <手机号> 登录,推导为 <手机号>.json;扫码(qrcode)或 cookiecloud 同步无原始输入,则默认以 fan_<UID>.json 形式自动命名。
    • 所有的相对路径都会自适应拼装至全局 --home 目录下。
💡 顶级通用登录 Flag

所有登录子命令均支持以下通用 Flag(可以加在子命令后):

  • -m / --main (Bool): 是否作为主账号登录。默认 false,即默认作为辅助(刷歌)账号登录。

二维码扫码登录 (qrcode)
ncmm login qrcode [-m] [-t 超时时间] [-d 图片输出目录] [-l 二维码纠错等级]

# 示例 1:作为辅助账号登录(默认),二维码图片保存在当前目录
ncmm login qrcode

# 示例 2:作为主账号登录(显式传入 -m)
ncmm login qrcode -m
  • -t / --timeout (Duration): 扫码等待和状态轮询的超时时长,默认 5m (5分钟),可填 10m30s 等。
  • -d / --dir (String): 保存临时二维码图片 qrcode.png 的目录路径,默认当前工作目录。登录成功或超时后该文件会自动清理。
  • -l / --level (Int): 二维码纠错等级(0 -> 7%, 1 -> 15% 默认, 2 -> 25%, 3 -> 30%)。
手机号登录 (phone) (⚠️ 存在高风控拦截风险,不推荐)
# 示例 1:作为辅助账号登录(控制台交互提示输入验证码)
ncmm login phone 188xxxx8888

# 示例 2:作为主账号登录并提供密码
ncmm login phone 188xxxx8888 -m -p "YourPassword"
  • -p / --password (String): 登录账号密码。不提供该参数时,系统将使用验证码登录。
  • --countrycode (Int): 国家及地区代码,默认 86 (中国大陆)。
  • -t / --timeout (Duration): 登录操作的超时时间,默认 10m (10分钟)。

支持自动识别 Header 字符串、JSON 数组、Netscape 文件等多种 Cookie 格式,并可将解析出的标准化 JSON 格式 Cookie 写入到指定输出 file,且自动登记回写至配置文件中:

# 1. 导入 Cookie 字符串(默认作为辅助账号,自动另存为 fan_<UID>.json 并自动追加到 config.yaml)
ncmm login cookie 'MUSIC_U=xxxx; __csrf=yyyy;'

# 2. 显式作为主账号导入 Cookie 字符串(保存至主账号路径,默认为 cookie.json,并更新至 config.yaml)
ncmm login cookie 'MUSIC_U=xxxx; __csrf=yyyy;' -m

# 3. 从外部 Cookie 文本文件导入主账号(保存至主账号路径,默认为 cookie.json)
ncmm login cookie -f ./cookie.txt -m

# 4. 从外部文件导入辅助账号(不指定 -o,系统会根据输入文件名自动另存为 fan1.json,并自动回写追加到 config.yaml)
ncmm login cookie -f ./fan1.txt

# 5. 导入辅助账号并手动指定输出的 Cookie 文件名(例如导入为 my_fan.json,相对路径自适应拼装至 --home)
ncmm login cookie -f ./my_fan.txt -o my_fan.json
  • -f / --file (String): 存放 Cookie 的输入文件路径。如果指定此参数,将从该文件中读取 Cookie。
  • -o / --output (String): 保存解析后的 JSON Cookie 文件名。
    • 自动保存(无需手动指定 -o:如果您使用 -f ./fan1.txt 导入,系统会自动为您另存为 fan1.json;若直接传入 Cookie 字符串导入,主账号默认保存为 cookie.json,辅助账号默认保存为 fan_<UID>.json
    • 手动保存:如果您想给导入的 Cookie 起个别名,也可以用 -o 强行指定文件名(例如 -o fan2.json)。
    • 存放目录:如果您填写的是相对路径(如 fan1.json),系统会自动将它保存到您通过 --home 参数指定的运行工作目录下。
  • --format (String): 手动指定导入 Cookie 文件的格式(支持 jsonnetscapeheader),不指定则程序会自动探测并尝试三种格式。
CookieCloud 同步 (cookiecloud)
ncmm login cookiecloud -u <UUID> -p <密码> -s <服务器地址> [-m]
  • -u / --uuid (String): CookieCloud 账户的 UUID,必填。
  • -p / --password (String): CookieCloud 账户的密码,必填。
  • -s / --server (String): CookieCloud 服务器端点地址,默认 http://127.0.0.1:8088
  • -t / --timeout (Duration): 请求 CookieCloud 服务器的超时时长,默认 30s
  • -H / --headers (String): 请求 CookieCloud 时的自定义 HTTP 头部信息,格式为 key1=value1,key2=value2

2. 模拟播放 (ncmm playids)

该命令用于模拟播放指定歌曲列表。

ncmm playids --ids <songId列表> [--ids-file <文件>] [--num <播放数量>] [--gap-min <秒>] [--gap-max <秒>] [--daily-min <下限>] [--daily-max <上限>]
📌 参数说明
参数/Flag 说明 默认值
--ids 逗号分隔的歌曲 ID 列表
--ids-file 从文本文件或远程网络 URL 读取歌曲 ID 列表(每行一个 ID,支持 # 注释,支持本地路径及 http:///https:// 远程链接)
--num 本次运行最大播放的歌曲数量(0 表示播到今日目标上限为止) 0
--gap-min 歌曲切换之间的最小随机等待间隔(秒) 配置项 gap_min / 10
--gap-max 歌曲切换之间的最大随机等待间隔(秒) 配置项 gap_max / 30
--daily-min 当天首次启动时,随机目标的最小歌曲数限制 配置项 daily_min / 50
--daily-max 当天首次启动时,随机目标的最大歌曲数限制 配置项 daily_max / 200
--run-min 单次运行的最小歌曲数量设定 配置项 run_min / 0
--run-max 单次运行的最大歌曲数量设定 配置项 run_max / 0
💡 使用示例
# 1. 播放指定的多个歌曲 ID(在默认系统家目录下的 .ncmm 工作区运行)
ncmm playids --ids 3373818852,3373845775

# 2. 从歌曲 ID 列表文件读取并播放
ncmm playids --ids-file ./songs.txt

# 3. 调试播放:只播放 1 首,且无等待间隔
ncmm playids --ids 3373818852 --num 1 --gap-min 0 --gap-max 0

# 4. 配合 --home 在指定的隔离工作目录下运行播放任务(自动加载 run/config.yaml 并在该目录下轮询辅助账号进行播放)
ncmm --home run playids --ids 3373818852,3373845775

songs.txt 文件示例:

# 这是一行注释,系统会自动跳过
3373818852
3373845775

3. 每日任务签到 (ncmm sign)

该命令用于一键执行每日的多项任务签到,包含:音乐人签到、云豆领取、云贝中心日常签到与做任务自动打卡、VIP 乐签及成长值领取。

# 1. 在默认系统家目录工作区执行日常一键签到与云贝任务打卡
ncmm sign

# 2. 配合 --home 在指定的隔离工作目录下执行日常一键签到与做任务(自动加载 run/config.yaml 轮询该目录下的所有账号)
ncmm --home run sign
💡 运行流程
  1. 音乐人签到:自动调用 /api/creator/user/access 完成音乐人中心签到。
  2. 领取云豆:自动拉取当前的音乐人任务列表,并自动对所有“已完成未领取”状态的任务领取对应的云豆奖励。
  3. 云贝日常签到:自动执行云贝中心每日签到。
  4. 云贝做任务(前置查询与串行执行)
    • 自动查询当前账号的待完成任务列表。
    • 依次串行执行未完成的浏览、点赞、小众歌曲听歌、关注歌手、红心、收藏歌曲、预约等任务,并在每项任务打卡成功后自动一键申领云贝。
    • 特别针对“探索小众歌曲”任务,每首歌曲模拟听歌播放 31~50 秒,交替调用云贝凭证分配与听歌记录上报接口,避免触发系统的防作弊检测。
  5. VIP 乐签及成长值:若是 VIP 会员,则自动进行每日黑胶乐签,并一键领取当前可领取的成长值奖励。
💡 运行日志示例
[sign] >>>>>> 开始主账号签到 (run/cookie.json) <<<<<<
  [当前账号信息] Uid: 1024****01 | 等级: 黑胶·伍 (Lv.5)
  --- 音乐人任务 ---
  ✅ 音乐人签到成功
  --- 云豆任务 ---
  ✅ 云豆领取成功: 任务="每日听歌15分钟", 奖励=20云豆
  --- 云贝任务 ---
  ✅ 云贝签到成功
  👉 成功获取云贝任务列表:
    - 任务: 浏览会员中心    | 状态: 未完成 | 奖励: 100 云贝
    - 任务: 探索小众歌曲    | 状态: 未完成 | 奖励: 150 云贝
    - 任务: 点赞评论、动态  | 状态: 已完成 | 奖励: 200 云贝
  👉 正在检查 [预约领云贝] 状态...
  ℹ️ 当前预约状态: [上次奖励已领,新活动已预约],无须做预约或领奖操作
  👉 开始执行 [浏览会员中心] 任务...
  ⏳ 已模拟触发浏览会员中心任务,随机浏览 21 秒...
  ✅ 浏览会员中心模拟结束
  👉 开始执行 [探索小众歌曲] 听歌任务...
  👉 已拉取到 10 首推荐小众歌曲,开始依次串行听歌打卡...
  ⏳ 正在听第 1/10 首小众歌曲: ID=3389465125 , 歌名=旧游记 (模拟播放 42秒)...
  🎉 [听歌打卡 1/10] 成功申请云贝分配凭证
  ✅ [听歌打卡 1/10] (歌曲 ID: 3389465125) 听歌完毕,成功上报
  ...
  ✅ 探索小众歌曲 10 首打卡完毕
  👉 重新获取任务列表并领取奖励...
  🎉 成功领取云贝 [浏览会员中心] 任务奖励,获得云贝: 100
  🎉 成功领取云贝 [探索小众歌曲] 任务奖励,获得云贝: 150
  --- VIP签到 ---
  ✅ VIP乐签成功, 获得经验=10
  ✅ 黑胶成长值已一键领取成功

4. 音乐人任务 (ncmm musician)

该命令用于一键自动化完成网易云音乐人的日常日常任务(日常签到、周期/阶段任务领云豆)与黑胶会员“进阶任务”(musician),从而保持或获取黑胶会员权益。

# 1. 在默认系统家目录工作区执行日常音乐人日常与进阶任务
ncmm musician

# 2. 配合 --home 在指定的隔离工作目录下执行日常音乐人任务(自动加载 run/config.yaml 读取辅助账号接力刷播)
ncmm --home run musician
💡 运行流程与原理
  1. 检测音乐人状态:拉取进阶任务列表获得当前进度。
  2. 第一阶段:日常任务:一键完成音乐人每日日常签到,并自动领取所有的周期和阶段云豆任务奖励。
  3. 第二阶段:VIP进阶任务:若进阶任务天数未达标,自动调用公共的 Note 笔记服务发布图文笔记,并在成功后自动删除。
  4. 有效播放次数任务:若进阶任务中“有效播放次数”未达标,程序将自动调用本地播放逻辑:
    • 多辅助号接力刷播:程序会自动从配置的 accounts.secondary 辅助号池中依次读取 Cookie 文件。主账号用于查询任务状态,辅助号池用于执行播放任务。
    • 自动额度分摊与上限回退:若某个辅助号在播放过程中触发了本地今日随机上限,程序会自动计算该账号已贡献的有效主歌播放量,将剩余未完成的播放额度回退,并自动重新分配给下一个可用的辅助账号(例如从 fan1.json 自动转移接力到 fan2.json)继续完成,实现全自动化接力,直至任务完全达标或所有辅助号均达上限。
    • 混听风控与本人过滤:在每个账号刷歌时,支持掺杂网易云每日推荐歌曲(占比 30% 可配)。程序会在任务启动时自动拉取一次日推列表(通常 30 首)并缓存在内存中,在每一轮(Round)播放开始前重新随机抽选对应占比 of 日推 ID 并与主歌洗牌打乱,既完美模拟了真实用户在列表中随机挑选播放的行为,又避免了频繁拉取接口触发反作弊系统。并且程序会自动拦截歌手/DJ本人歌曲的播放,如果发现播放歌池中含有当前听歌账号本人的作品,会自动跳过,避免无效自刷被平台惩罚。
💡 多辅助号接力刷播运行日志示例

以下为 ncmm musician 运行时的真实多账号接力日志(敏感的 UID、数字和昵称已脱敏混淆):

[musician] 处理播放任务...
[musician] 当前进度: 120/200, 今日尚缺有效播放: 80 次
[musician] >>>>>> 分摊任务开始: 选用账号 (run/fan1.json), 本次需刷总数(含日推): 30 首, 尚缺主歌有效数: 80 次 <<<<<<
[2026-06-04 16:30:00] [playids] 当前账号:uid=1024****68 昵称="粉丝一号"
[2026-06-04 16:30:00] [playids] 今日风控目标: 已完成=50首, 今日随机上限=80首
[2026-06-04 16:30:00] [playids] 正在调用接口获取歌曲详情...
[2026-06-04 16:30:01] [playids] 启用混听干扰风控:自动拉取辅助账号每日推荐...
[2026-06-04 16:30:02] [playids] 混听风控设置:成功获取到 30 首可用日推,每轮将随机选出 9 首掺杂播放
[2026-06-04 16:30:02] [playids] 播放任务启动:本次目标刷播=30首, 今日已播累计=50首, 今日随机上限=80首
[2026-06-04 16:30:02] [playids] ====== 开始第 1 轮播放 (本轮共 30 首) ======
[2026-06-04 16:30:02] [playids] 正在播放:第1/30首,第1轮第1首,songId=1934****66, 歌名="歌曲A", 时长=4m10s
[2026-06-04 16:30:02] [playids] 开始拉取资源:songId=1934****66
[2026-06-04 16:30:05] [playids] 拉取完成:songId=1934****66, 来源=CDN, 已耗时=3.25s, 补等待=4m10s
[2026-06-04 16:30:05] [playids] 播放进度: 0s/4m10s (0%) ...
...
[2026-06-04 16:34:15] [playids] 播放进度: 4m10s/4m10s (100%) [====================]
[2026-06-04 16:34:15] [playids] 播放上报成功:songId=1934****66, 上报时长=250s
[2026-06-04 16:34:15] [playids] 本首结果:第1/30首,成功,songId=1934****66, 歌名="歌曲A"
...
[2026-06-04 16:45:10] [playids] 播放上报成功:songId=3381****72, 上报时长=120s
[2026-06-04 16:45:10] [playids] ⚠️ 触发今日风控随机播放总上限 (80首),优雅退出当前运行
[2026-06-04 16:45:10] [playids] 本次实际运行总上报数: 30,成功: 30
[musician] 账号 (run/fan1.json) 播放完成,实际贡献主歌有效上报数: 21 次
[musician] >>>>>> 分摊任务开始: 选用账号 (run/fan2.json), 本次需刷总数(含日推): 50 首, 尚缺主歌有效数: 59 次 <<<<<<
[2026-06-04 16:45:11] [playids] 当前账号:uid=1024****69 昵称="粉丝二号"
[2026-06-04 16:45:11] [playids] 今日风控目标: 已完成=0首, 今日随机上限=120首
[2026-06-04 16:45:11] [playids] 正在调用接口获取歌曲详情...
[2026-06-04 16:45:12] [playids] 启用混听干扰风控:自动拉取辅助账号每日推荐...
[2026-06-04 16:45:13] [playids] 混听风控设置:成功获取到 30 首可用日推,每轮将随机选出 15 首掺杂播放
[2026-06-04 16:45:13] [playids] 播放任务启动:本次目标刷播=50首, 今日已播累计=0首, 今日随机上限=120首
[2026-06-04 16:45:13] [playids] ====== 开始第 1 轮播放 (本轮共 50 首) ======
...
[musician] ✅ 经过多个辅助账号的接力刷歌,主账号的播放任务已圆满达标!

5. 乐迷团任务 (ncmm fansgroup)

该命令用于执行当前账号已加入乐迷团的日常任务,也可以通过 ncmm task --fansgroup 或配置 task.fansGroup: true 由批量任务入口自动执行。

# 1. 使用默认配置中的乐迷团账号执行
ncmm fansgroup

# 2. 指定单个 Cookie 文件执行
ncmm fansgroup --cookie-file run/fan1.json

# 3. 配合 --home 在指定工作目录下执行
ncmm --home run fansgroup

# 4. 通过批量任务入口只执行乐迷团任务
ncmm --home run task --fansgroup
💡 运行流程与原理
  1. 账号选择:命令行传入 --cookie-file 时只执行该账号;否则根据 fansGroup.enableMainfansGroup.enableSecondaries 读取 accounts.main / accounts.secondary
  2. 任务状态查询:自动拉取乐迷团详情、加入状态和任务列表,日志中按“已完成 / 未完成”展示当前进度。
  3. 按剩余进度执行:每项任务执行次数按 allProgress - currentProgress 计算,例如 发布图文笔记 (0/2) 会发布 2 次,(1/2) 只补 1 次。
  4. 播放任务:解析任务按钮中的 songIds,直接上报 weapi/feedback/weblogstartplay 事件;网页侧点击播放即可完成的任务,不需要等待整首歌曲播放完成。
  5. 图文、分享、点赞任务:图文任务复用 note 配置发布并按 fansGroup.autoDeleteNote / note.autoDelete 自动删除;分享任务提交分享进度;点赞任务从乐迷团推荐内容中过滤本人和已点赞帖子后执行。
💡 运行日志示例
[task] >>> 开始执行 [乐迷团任务] <<<
[fansgroup] 开始处理账号 (./fan1.json)
[fansgroup] 当前账号: uid=1024****68 nickname="粉丝一号"
[fansgroup] 查询粉丝团详情...
[fansgroup] 粉丝团: 音乐合伙人的乐迷团 (boardId=13827903)
[fansgroup] 已加入:Joined=true, Level=1 (萌新乐迷)
  [未完成] 播放歌曲 (0/2)
  [未完成] 发布图文笔记 (0/2)
  [已完成] 分享歌曲 (1/1)
  [未完成] 点赞乐迷笔记 (0/5)
[fansgroup] 处理播放任务 [播放歌曲](剩余 2/2)
  触发 startplay,选择歌曲 3387115952
  已上报 startplay (1/2)
  触发 startplay,选择歌曲 3357361025
  已上报 startplay (2/2)
[fansgroup] 处理发布笔记任务 [发布图文笔记](剩余 2/2)
  [1/2] 准备发布动态:"分享好听的歌"
  [1/2] 动态发布成功,id=37652846861
  删除动态成功
  [2/2] 准备发布动态:"分享好听的歌"
  [2/2] 动态发布成功,id=37652859862
  删除动态成功
[fansgroup] 处理点赞任务 [点赞乐迷笔记](剩余 5)
  [1/5] like success
  ...
[fansgroup] 点赞完成:5/5

6. 笔记单独发布 (ncmm note)

该命令用于单独发布图文动态/笔记。该服务也同时被 musiciansign 任务内部直接调用。

ncmm note [--cookie-file <cookie文件路径>]
💡 使用示例
# 1. 使用默认配置中的主账号发布图文笔记(在系统默认家目录下运行)
ncmm note

# 2. 指定额外的 Cookie 文件路径发布
ncmm note --cookie-file run/cookie.json

# 3. 配合 --home 在指定的隔离工作目录下发布
ncmm --home run note

7. 多账号运行目录最佳实践 (--home)

在多账号运作或需要使用多个辅助号为自己(音乐人主账号)刷播放量的场景下,推荐使用 --home 构建如下目录结构:

run/
├── config.yaml       # 多账号公共/专用配置文件(配置了顶级 accounts 以及 sign/mixPlay)
├── cookie.json       # 主账号 cookie(网易云音乐人主号,由 login cookie 生成)
├── fan1.json         # 辅助账号 1 cookie(用于帮主账号刷播放量,隔离存储)
├── fan2.json         # 辅助账号 2 cookie(用于接力帮主账号刷播放量,隔离存储)
├── database/         # Badger 数据库存放目录(按账号 UID 隔离数据,无冲突风险)
└── log/
    └── ncm.log       # 运行日志
💡 多账号实战操作示例:
  1. 第一步:创建工作目录并放入初始配置文件 在本地建立文件夹 run/,并将默认的 config.yaml 复制进去,我们可以留空 accounts 节点,后续登录时系统会自动帮我们回写补全。

  2. 第二步:登录/导入主账号 主账号为网易云音乐人账号。我们必须显式提供 -m 参数,以便让程序将其作为主账号处理并根据 accounts.main 的路径(或默认的 cookie.json)保存:

    # 示例 1:以扫码形式登录主账号(推荐)
    ncmm --home run login qrcode -m
    
    # 示例 2:使用 Cookie 导入主账号
    ncmm --home run login cookie 'MUSIC_U=xxxx...' -m
    

    登录成功后,主账号的 Cookie 路径(例如 cookie.json)与对应昵称注释会自动回写并绑定在 run/config.yamlaccounts.main 下。

  3. 第三步:登录/导入各辅助账号 辅助账号为刷播放量的粉丝小号。所有的登录子命令默认即登录为辅助账号,无需特别指定。 我们只需使用 -f 导入(或直接登录),程序会自动根据输入文件名推导目标 .json 文件名并保存,同时自动追加路径回写至 run/config.yaml 中的 accounts.secondary 配置列表中,无须手动编辑配置文件:

    # 示例 1:导入小号 fan1.txt,系统会自动推导并保存为 fan1.json 并回写配置
    ncmm --home run login cookie -f run/fan1.txt
    
    # 示例 2:导入小号 fan2.txt
    ncmm --home run login cookie -f run/fan2.txt
    
    # 示例 3:如果希望手动强制另存为特定文件名,依然可以使用 -o 指定
    ncmm --home run login cookie -f run/other.txt -o another_fan.json
    

    每一次导入/登录成功后,config.yaml 中都将自动增加对应行的 # 昵称: xxx 注释,帮助直观辨别各账号。

  4. 第四步:一键运行签到与黑胶进阶任务

    # 执行日常一键签到(会根据 sign 配置自动对主账号及所有辅助账号轮询签到)
    ncmm --home run sign
    
    # 执行黑胶会员进阶任务(会自动读取 accounts.secondary 下的全部辅助账号,为首选主账号接力分摊播放量)
    ncmm --home run musician
    

📝 版本更新记录

📌 v1.1.4

✨ 新增功能

  • 新增乐迷团自动化任务 ncmm fansgroup,支持独立命令执行,也可通过批量任务入口 ncmm task --fansgroup 或配置项自动触发。
  • 任务会根据配置筛选主账号/辅助账号,自动查询乐迷团任务完成进度,并按剩余次数补齐任务。
  • 实现播放、图文发布、分享、点赞全类型乐迷团任务自动化,图文内容可依据配置规则自动删除。

🏗️ 架构优化

  • 日常签到模块瘦身解耦与服务化重构
    • 将原本臃肿庞大的 sign 核心业务进行模块化拆分,解耦为职责单一的细分子服务(如黑胶 VIP 任务、云贝中心日常任务),大幅提升代码可维护性与扩展性。
    • 重新定位 sign 为普通账号日常签到,彻底移除其内所有跟音乐人相关的任务逻辑与账号身份校验,使业务边界更加清晰。
  • 音乐人模块全局重命名与重构
    • 将原 musician-vip 模块与命令全局更名为 musician
    • 将日常音乐人任务(日常签到与云豆领奖,从原 sign 中拆出)与 VIP 进阶任务统一规范为两阶段顺序执行。
    • 将原本位于 sign 节点下的音乐人身份缓存参数 identityCacheDays 迁移并移至 musician 控制参数下,实现配置概念的深度一致。
  • 配置文件自动向下兼容迁移
    • 启动时若读取到旧版配置文件,程序会自动迁移重构,提供零感平滑升级体验。

💫 体验优化

  • 任务开关与跳过状态日志精细化
    • 确保即便所有任务开关全部为 false,也能正常打印并告知每个任务的跳过状态。
    • 差异化提示跳过来源:在批量执行(task)时,精确区分任务是因为“命令行未指定”还是“配置文件已关闭 (task.xxx = false)”。
    • 增加账号级与配置级细分跳过提示:当单独执行子任务(musician/sign/playids)因 enableMainenableSecondaries 关闭或对应账号未配置时,在控制台打印详实的提示日志,方便快速定位未执行缘由。

🐞 Bug 修复

  • 移除 note.go 中冗余的自定义解析逻辑,统一依托底层 Cookie 加载机制,修复编译异常报错。
📌 v1.1.3
  • ✨ 新增功能

    • 新增黑胶 VIP 任务打卡总开关 enableVipTask,配置文件中默认开启,支持多账号轮询。
    • 新增一整套黑胶 VIP 会员日常任务自动化链路,可一键打卡并自动申领成长值:
      • 黑胶乐签打卡:对接底层 EAPI 打卡接口,并重构任务状态判定逻辑,前置拦截签到流程,跳过列表已完成过滤,解决因服务端缓存误判导致的漏签、签到失效问题。
      • 红心 3 首 VIP 歌曲:随机拉取热门 VIP 歌单执行红心操作,经过随机时延后自动取消红心,在满足打卡要求的同时,避免改动用户原有收藏歌单。
      • 浏览停留模拟:支持查看AI调音大师、浏览云贝中心、分享单曲到站外等跳转行为,模拟客户端真实停留时长。
      • 免费领福利打卡:对接新版权益中心 EAPI,自动拉取常驻免费商家券池并领取首张优惠券,完成福利打卡,适配当前版本规则。
    • 任务执行完毕后,自动调用 EAPI 一键申领接口,统一领取黑胶 VIP 任务对应的全部成长值奖励。
  • 💫 体验优化

    • 请求参数脱敏:移除接口中硬编码的设备和隐私字段。
    • 日志友好回显:移除模拟页面加载日志中冗长的跳转链接,精简控制台输出内容。
📌 v1.1.2
  • ✨ 新增功能
    • 配置文件全面支持多源加载,核心配置项兼容本地文件 / 远程链接,支持单路径或 YAML 数组格式。
    • 多账号登录配置自动回写:登录成功后,自动将 Cookie 路径写入 / 追加至 config.yaml 配置文件。
    • 账号智能注释:自动为配置文件添加用户昵称注释,直观区分多个辅助账号。
    • 智能文件命名:辅助账号自动生成规范命名文件,无参数时自动兜底命名。
    • 主账号显式登录:新增命令行参数,可指定登录主账号,防止误覆盖原有主账号。
  • 💫 体验优化
    • 播放任务支持高容错运行,单源加载失败不影响整体任务执行。
    • 新增网络超时限制,防止无效链接导致程序卡死。
    • 完善笔记发布图片多源与智能探测机制,支持本地图片、直链及包含链接的文本列表。
    • 优化笔记发布图片下载逻辑,支持随机重试,提升发布成功率。
    • 配置文件无感自动升级:启动时自动兼容旧版配置字段,完整保留文件格式与用户自定义注释。
    • 云贝预约领奖流程优化:支持在奖励领取成功后自动检查并进行新活动预约。
    • 优化日推模拟听歌任务:将后台并发播放改为前台串行执行,放在账号任务的最后执行,避免多账号间日志交错混乱。
    • 优化云贝领奖流程:在领取完云贝任务奖励后,再次自动获取并展示该账号下各任务的最终完成状态。
📌 v1.1.1
  • ✨ 新增功能
    • 云贝任务全覆盖与精细化控制:补全解耦全部 8 项云贝日常任务,新增独立配置开关,支持单任务启用 / 禁用与延迟时间自定义。
    • 云贝任务集成动态发布:支持自动调用公共 Note 服务完成图文笔记发布与自动秒删。
    • 云贝任务集成日推播放:新增后台播放任务,异步播放每日推荐曲目。
    • 提供独立 ncmm note命令,可单独使用图文发布、秒删功能,支持多账号共用。
  • 💫 体验优化
    • 重构小众歌曲探索任务:随机模拟听歌时长,交替完成凭证申请与打卡上报;强化流程日志,实时展示歌曲、播放时长等状态。
    • 业务机制全面优化:前置任务状态校验,自动跳过已完成项;互动任务新增随机延迟取消逻辑。
📌 v1.1.0
  • ✨ 新增功能
    • 上线音乐人多账号任务套件:新增 ncmm sign 命令,支持主 / 辅助账号自动轮询,批量完成多端签到与任务领取,涵盖音乐人签到、云豆 / 云贝签到、黑胶 VIP 乐签等场景。
    • 云贝任务全自动打卡:支持自动浏览会员中心、评论点赞 / 取消点赞、关注歌手、每日推荐红心、歌曲收藏 / 取消收藏等多项操作。
    • 音乐人黑胶会员进阶任务:新增 ncmm musician-vip 命令,支持任务进度检测、辅助账号接力刷播放量、自动发布图文笔记。
    • 多辅助账号播放额度接力:主账号播放额度不足时,由辅助账号池分摊任务;单账号达到每日上限后,任务自动流转至下一账号。
    • 新增混听风控过滤机制:自动混入辅助账号推荐曲目打乱播放规律,并拦截歌手本人作品,防范违规自刷行为。
    • 多终端独立 UA 配置:支持为不同终端单独自定义请求标识,移除代码内固定配置。
    • 音乐人身份本地缓存:配置缓存身份信息,拦截非音乐人账号的无效请求。
  • 💫 体验优化
    • 日志体系优化:清理冗余底层日志,重新划分日志分类,提升内容可读性。
  • 🐞 Bug 修复
    • 修复特定场景下音乐人签到、黑胶乐签接口调用失败问题,完善签到状态判断逻辑。
    • 修复登录态过期后,Cookie 更新与保存的边缘异常问题。
📌 v1.0.0
  • ✨ 新增功能
    • 完成项目基础架构搭建:基于 Go 语言落地核心框架,搭建模块化目录结构。
    • 支持多方式账号登录:包含扫码登录、手机号密码 / 短信验证码登录、批量导入 Cookie、CookieCloud 自动同步。
    • 实现歌曲模拟播放能力:通过 playids 命令解析流媒体地址、模拟播放并上报听歌数据,支持自定义随机等待间隔。
    • 播放限额与进度存储:集成本地嵌入式数据库,可设置每日播放下限,运行达标后自动停止,规避平台风控。
    • 全局自定义 UA 配置:支持在配置文件统一设置请求标识,提升请求隐蔽性。
  • 💫 体验优化
    • 新增 CDN 音频缓存:首次播放从 CDN 加载音频流,同次运行内重复播放读取跳过下载,减少带宽消耗。
    • 优化播放休眠逻辑:细化进度展示与静默等待的计算规则,运行表现更自然。

⚠️ 免责声明

本项目仅供学术研究和 Golang 学习探讨之用,请勿用于任何商业用途或违反网易云音乐服务条款的行为。对于使用本项目带来的任何账号封禁、数据丢失等不良后果,由使用者自行承担,本项目不提供任何连带保证。

🎖️ 鸣谢

👥 贡献者
贡献者 说明
crossgg 乐迷团任务
📦 参考项目
项目 说明
chaunsin/netease-cloud-music 网易云音乐 API
crossgg/netease-cloud-music 网易云音乐人任务
所有依赖的开源项目

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
internal
pkg
cookie
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
Package cookiejar implements an in-memory RFC 6265-compliant http.CookieJar.
log
ncm

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL