apple-music-membership
在 Mac 音乐 App 里领免费会员,查到期日,关掉自动续费。

Suggested prompts
About this skill
Apple Music 免费会员与取消续费 Skill
Apple Music 是苹果的音乐订阅服务,通常按月收费。这个技能让 Mac 上的 AI 助手在你自己的本机「音乐」App 和 App Store 里,帮你做三件事:领取一段免费会员、查免费期到哪天、以及确认自动续费到底关没关。全程用 macOS 原生界面,不需要装插件,也不需要把账号密码交给任何人。
它适合这几种情况:
- 你手上有一个 Apple Music 免费会员活动,想领,但不想自己一步步点;
- 你领过了,想知道免费期到什么时候、之后会不会自动扣费;
- 你想取消自动续费,但不确定现在取消会不会立刻失去权益。
技能里自带一张活动二维码(assets/活动二维码.jpg),可以直接用,也可以换成你手上新的二维码。助手会先检查这台 Mac 的权限、网络和页面能否正常打开,再读活动页面、帮你打开兑换入口;输兑换码、点确认、登录这类关键一步会停下来,由你本人操作。
几点需要提前说清楚:
- 能领多久看账号。 对外常说“免费 1–6 个月”,那只是介绍口径:不是每个账号都有资格,也不保证都有 1–6 个月。实际时长以你这台机器上兑换页显示的为准。
- 我们只实测过一个账号拿到 1 个月,那是单个账号当天的记录,不代表其他人的结果;下文的验证范围也是这个意思。
- 要不要领、要不要取消,由你决定。 技能不替你付费、不改套餐、不建定时任务,也不会保存或回传账号、密码、验证码和兑换码。
安装与使用
把完整 apple-music-membership 文件夹放入支持 SKILL.md 的 skills 目录,例如 ~/.cola/skills/,在下一轮会话中使用。保留 scripts/、assets/ 和 references/。
依赖:macOS、Python 3、系统 osascript;二维码解码还需要可用的 Swift 工具链和系统 Vision 框架。不需要第三方 Python 包。
先运行 python3 scripts/music_membership.py doctor,按提示授予运行宿主辅助功能权限;首次自动化访问 System Events 时也可能需要本人批准。之后每次动手前先跑 python3 scripts/music_membership.py preflight,检查代理、网络和 Music 页面状态,ok:false 就先处理再继续。Apple 账号由本人亲自在本机 App 登录;密码和验证码不代填、不采集。
可这样请求:
- “领取这个 Apple Music 免费活动,我授权领取,账号我自己登录。”
- “取消我的 Apple Music 自动续费,先核对是否立即失去权益。”
- “只检查 Apple Music 是否已取消续费,不要领取或续订。”
执行细节见 SKILL.md 与 references/usage.md。领取和取消都需要明确授权;一句“领取并取消续费”即可同时授权。免费资格不符时不转付费;立即失去权益时另行确认。不会创建定时任务。
验证范围
2026-10-27 在本机跑通一次完整链路:咪咕活动取码 → 音乐 App 菜单「账户 → 兑换…」→ 手动输入兑换码 → 兑换 → 确认,得到「已兑换优惠,个人,1 个月免费,之后 ¥12.00/月」;随后在 App Store 取消免费试用,status 判为 renewal_disabled,到期日 2026-11-27。单账号结果不代表其他账号、地区或时段。
同一天实测到的三个坑,已写进流程与代码:
- 系统代理:代理开着时 Music 页面整页空白或报「出错了。请稍后再试。」,而
curl/Python 不走系统代理会给出「网络正常」的假信号。现在preflight会读scutil --proxy,并在页面异常时明确提示「可能就是代理开着」。 - 兑换码必须真实键入:直接写 AXValue 不触发网页表单,兑换按钮保持禁用。新增
type-code。 - 旧的跳转方式无效:
musics://协议与把 https 兑换链接交给 Music 在本机都无反应,已从主路径移除,改为菜单入口。
仍未端到端验证:换新账号兑换、会立即失去权益的取消、英文界面下的 label 匹配。每次仍必须读取最新界面确认结果。
离线无副作用测试:
PYTHONDONTWRITEBYTECODE=1 python3 -m unittest discover -s tests -v
测试仅使用纯函数和 mock,不登录、不访问活动接口、不打开本机 App、不领取或取消权益。交付不包含用户账号、密码、验证码或当次兑换码。