AI 订阅管理助手
管理 50 款主流 AI 产品的订阅数据,提供从添加订阅到优化组合的全流程分析能力。所有数据存储在本地 JSON 文件中,脚本通过命令行调用。
数据文件
所有数据文件位于技能根目录(scripts/ 的上级目录):
| 文件 | 内容 |
|---|---|
products.json |
50 款 AI 产品信息(名称、分类、标签、多档定价、功能列表) |
categories.json |
5 大分类(AI对话/代码/图像/音频/写作) |
function_tags.json |
19 个功能标签(含权重和分组) |
rates.json |
汇率参考表(USD 基准,含更新时间,可手动更新),所有脚本统一从此读取 |
token_prices.json |
模型 token 计价库(输入未命中/命中/输出单价、峰谷分时、任务模板),verified=false 为占位参考价需核对 |
subscriptions.json |
用户的订阅记录 |
balances.json |
用户的 API 余额资产(运行时由 balance_analyzer.py 生成) |
subscription_schema.json |
订阅字段定义、验证规则、余额资产字段定义 |
remind_config.json |
到期提醒配置(提醒天数、是否显示费用、余额预警阈值) |
环境变量
SUBMGR_DATA_DIR:自定义数据目录。设置后,所有脚本从该目录读取products.json、subscriptions.json、rates.json等文件,仪表盘也输出到该目录。适合需要把数据放在技能目录之外(如 iCloud / Git 仓库)的用户。未设置时默认使用技能根目录。
脚本一览
共 9 个脚本,均位于 scripts/ 目录。所有脚本使用 python3 运行,参数通过 argparse 传递。
1. subscription_manager.py — 订阅 CRUD
python3 scripts/subscription_manager.py list # 列出所有订阅
python3 scripts/subscription_manager.py add --product chatgpt --tier Plus --price 20 --currency USD --start 2026-01-15 --billing monthly # 添加订阅
python3 scripts/subscription_manager.py update <sub_id> --tier Pro # 更新订阅
python3 scripts/subscription_manager.py remove <sub_id> # 删除订阅
python3 scripts/subscription_manager.py summary # 订阅概览
python3 scripts/subscription_manager.py add-product # 交互式添加自定义产品
python3 scripts/subscription_manager.py add-product --product-key myapp --display-name "我的应用" --category ai_chat --plans "Pro|39|CNY|monthly" # 参数式添加
2. renewal_checker.py — 到期提醒
python3 scripts/renewal_checker.py check # 检查即将到期的订阅
python3 scripts/renewal_checker.py check --days 7 # 检查 7 天内到期
python3 scripts/renewal_checker.py status # 订阅状态总览
3. cost_analyzer.py — 成本统计
python3 scripts/cost_analyzer.py overview # 成本总览
python3 scripts/cost_analyzer.py by-category # 按分类统计
python3 scripts/cost_analyzer.py by-product # 按产品统计
python3 scripts/cost_analyzer.py trend --months 6 # 月度趋势
python3 scripts/cost_analyzer.py budget --monthly 100 --currency USD # 预算对比
python3 scripts/cost_analyzer.py savings # 节省建议
4. renewal_guide.py — 续费指导
python3 scripts/renewal_guide.py info --product chatgpt # 查看某产品续费信息(链接/取消/升降级)
python3 scripts/renewal_guide.py list # 所有已订阅产品的续费信息
python3 scripts/renewal_guide.py upgrade --product chatgpt --from Plus --to Pro # 套餐升级指引
python3 scripts/renewal_guide.py downgrade --product chatgpt --from Pro --to Plus # 套餐降级指引
python3 scripts/renewal_guide.py cancel --product chatgpt # 取消订阅指引
python3 scripts/renewal_guide.py checklist # 续费操作清单
python3 scripts/renewal_guide.py usage --mock # 用量分析(OpenAI/Anthropic Usage API)
python3 scripts/renewal_guide.py usage --provider anthropic --api-key sk-xxx --days 60 # 指定 provider/Key/天数
usage 子命令支持导入 OpenAI / Anthropic 官方 Usage API 的 token 用量(用户自备 API Key,也可用环境变量 OPENAI_API_KEY / ANTHROPIC_API_KEY),统计输入/输出 tokens、估算 API 成本,并按日均用量给出续费评估建议(缩减 / 正常持有 / 升档)。未提供 Key 时可用 --mock 演示模式测试链路,用量快照保存至 usage_data.json。
5. price_comparator.py — 比价功能
python3 scripts/price_comparator.py compare --category ai_chat # 同类对比
python3 scripts/price_comparator.py compare --category ai_code --currency CNY # 指定币种
python3 scripts/price_comparator.py ranking # 性价比排行
python3 scripts/price_comparator.py ranking --category ai_image # 分类排行
python3 scripts/price_comparator.py alternative --product chatgpt # 替代方案推荐
python3 scripts/price_comparator.py alternative # 分析当前订阅的替代方案
python3 scripts/price_comparator.py cross-compare --min-tags 6 # 跨分类全能排行
python3 scripts/price_comparator.py tier-guide --product cursor # 套餐指南
python3 scripts/price_comparator.py optimize # 订阅优化建议(砍订分析+月省金额)
6. data_exchange.py — 导入导出
python3 scripts/data_exchange.py export-csv # 导出 CSV(中文表头)
python3 scripts/data_exchange.py export-json # 导出 JSON
python3 scripts/data_exchange.py import-csv file.csv --dry-run # CSV 导入预览
python3 scripts/data_exchange.py import-csv file.csv # 正式导入
python3 scripts/data_exchange.py import-json backup.json --replace # JSON 替换导入
python3 scripts/data_exchange.py template --format csv # 生成导入模板
7. overlap_detector.py — 重叠检测
python3 scripts/overlap_detector.py overlap # 功能重叠矩阵
python3 scripts/overlap_detector.py redundancy # 冗余标签与支出分析
python3 scripts/overlap_detector.py coverage # 功能覆盖率分析
python3 scripts/overlap_detector.py optimize # 优化建议
python3 scripts/overlap_detector.py scenario # 场景化建议(交互式选场景)
python3 scripts/overlap_detector.py scenario --scene 编程开发 # 按使用场景分析重叠与替代
scenario 按使用场景(编程开发/写作创作/图像设计/视频制作/音频音乐/数据分析/研究学习/日常助手)计算各订阅的「场景相关度」,结合标签权重做加权重叠分析,给出该场景下的替代建议与可节省金额,以及低匹配度订阅的评估提示。
8. dashboard.py — HTML 可视化仪表盘
python3 scripts/dashboard.py generate # 生成仪表盘(默认 dashboard.html)
python3 scripts/dashboard.py generate --output out.html # 指定输出路径
python3 scripts/dashboard.py generate --open # 生成后自动打开
仪表盘包含:订阅卡片、成本总览、分类支出环形图、续费日历、功能覆盖率、重叠分析、优化建议、同类产品对比,首页内置「30 秒上手指引」(首次打开显示,可关闭后不再出现)。
9. price_updater.py — 定价保鲜检测
python3 scripts/price_updater.py status # 定价新鲜度概览
python3 scripts/price_updater.py check # 列出可能过时的产品
python3 scripts/price_updater.py check --all --category ai_chat # 含中风险+按分类
python3 scripts/price_updater.py update --product chatgpt --touch # 标记定价已核对
python3 scripts/price_updater.py update --product chatgpt --tier Plus --price 20 --currency USD --billing monthly # 更新套餐价格
检测 products.json 中每款产品的 price_updated 新鲜度,识别定价可能过时的产品(>=180 天高风险、90-180 天待关注)。update 为半自动引导:核对官网后手动标记或改价,避免盲目自动抓取。
10. task_estimator.py — 任务成本预测(token 级计价)
python3 scripts/task_estimator.py estimate --task batch_intro --count 10 # 批量任务成本估算(多模型对比表)
python3 scripts/task_estimator.py estimate --task batch_intro --count 10 --model kimi-k3 # 只算指定模型
python3 scripts/task_estimator.py estimate --task batch_intro --count 10 --when offpeak # 按谷时口径
python3 scripts/task_estimator.py estimate --input-tokens 5000 --output-tokens 2000 --count 3 # 自定义用量估算
python3 scripts/task_estimator.py list-tasks # 任务模板列表
python3 scripts/task_estimator.py list-models # 模型计价列表
python3 scripts/task_estimator.py set-price --model kimi-k3 --input-miss 8 --input-hit 2 --output 32 --verified --source "https://platform.moonshot.cn/docs/pricing" # 核对后更新单价(含来源溯源)
基于 token_prices.json 的模型单价(每百万 tokens:输入未命中/缓存命中/输出)与任务模板(单位 token 基线 + 缓存命中率假设),输出多模型成本对比表、批量总成本、峰谷分时两档对比与"错峰执行可省多少",并给出首选/兜底模型路由建议。分时模型(如 DeepSeek 峰时 2 倍价)自动按当前时间或 --when 取档。set-price 支持记录核价来源 URL,形成可信价格链。
11. balance_analyzer.py — API 余额资产分析
python3 scripts/balance_analyzer.py add --platform DeepSeek --balance 100 --currency CNY --purpose "API 兜底" --model deepseek-v4-flash # 登记余额资产
python3 scripts/balance_analyzer.py record --id <balance_id> --amount 12 --note "批量简介" # 记录一笔消耗
python3 scripts/balance_analyzer.py topup --id <balance_id> --amount 100 # 记录充值
python3 scripts/balance_analyzer.py list # 余额列表 + 寿命概览
python3 scripts/balance_analyzer.py analyze --id <balance_id> --task batch_intro # 寿命折算 + 余额可跑批数(按任务模板)
python3 scripts/balance_analyzer.py check # 低余额预警检查
python3 scripts/balance_analyzer.py sync --from-workbuddy # 在线同步余额(DeepSeek/Moonshot)
管理充值余额型资产(balances.json,字段定义见 subscription_schema.json 的 prepaid_balance_assets):按消耗流水折算日均消耗速率与预计耗尽日期,结合 token_prices.json 任务模板折算"余额还能跑多少批",低余额预警(余额 < 累计充值额的 remind_config.json → balance_alert.threshold_pct,默认 20%)可接入到期提醒的每日检查。
sync 子命令支持在线查询真实余额并写回(差额自动记入消耗/充值流水):DeepSeek(GET /user/balance)与 Moonshot/Kimi(GET /v1/users/me/balance)已验证可用;Key 来源:环境变量 DEEPSEEK_API_KEY/MOONSHOT_API_KEY 优先,或 --from-workbuddy 复用本机 ~/.workbuddy/models.json 已配置的模型 Key(仅内存使用不落盘)。阿里云百炼等无公开余额 API 的平台会提示手动更新。
12. 到期自动提醒(可选 CodeAct 定时任务)
支持配置每日自动检查:读取订阅数据,检查近 7 天到期/扣费的订阅与已过期仍活跃的订阅并输出提醒,无临近到期时输出简洁播报;同一到期事件只提醒一次(SQLite 去重)。由 Agent 环境挂载日历每日触发,结果自动回传判断是否提醒主人;数据目录可通过 SUBMGR_DATA_DIR 指定。
入口引导流程
当用户首次调用此技能,或表达"管理订阅"/"添加订阅"/"查看订阅"等意图时,按以下流程引导用户完成操作。引导过程应自然对话式推进,避免一次性抛出所有步骤。
Step 1:意图识别
根据用户表述判断操作类型。如果意图已经明确(如"帮我加个 ChatGPT 订阅"),直接跳到对应步骤,无需再问。
如果意图不明确,用以下选项询问:
你想做什么?
1. 📦 查看当前订阅
2. ➕ 添加新订阅
3. ✏️ 修改已有订阅
4. 📊 查看成本分析
5. 🔄 续费评估
6. 💰 同类比价
7. 🔗 重叠检测
8. 📋 可视化仪表盘
Step 2:添加订阅(自然语言一步登记)
核心原则:用户用自然语言说,Agent 用 LLM 解析成结构化数据,一次确认后入库。目标 2 轮完成全部登记。
2-1:一句话收集
展示简洁的引导提示,鼓励用户用自然语言表达:
📝 快速登记 — 直接告诉我你订阅了什么
示例:
• "ChatGPT Plus, Notion Business"
• "我用 Kimi Andante 套餐"
• "chatgpt, claude, kimi"(不确定套餐也行,我帮你推荐)
• "spotify家庭版 ¥68/月"
关键:提示要短,给 3-4 个多样化示例覆盖不同表达风格(精确/模糊/含价格/纯产品名)。
2-2:自然语言解析(Agent 内部执行)
收到用户输入后,Agent 按以下规则解析为结构化数据:
产品名匹配(模糊匹配 products.json):
- 精确匹配:
display_name、product_key→ 直接命中 - 别名匹配:常见简称映射(如 "chat"→ChatGPT、"claude"→Claude、"mj"→Midjourney、"cursor"→Cursor、"gh"→GitHub Copilot、"文心"→文心一言、"千问"→通义千问、"kimi"→Kimi、"豆包"→豆包、"gemini"→Gemini、"pplx"→Perplexity、"copilot"→Microsoft 365 Copilot、"ms copilot"→Microsoft 365 Copilot、"adobe"→Adobe Creative Cloud、"ps"→Adobe Creative Cloud、"cc"→Adobe Creative Cloud、"11labs"→ElevenLabs、"leonardo"→Leonardo AI、"replit"→Replit、"grammarly"→Grammarly、"synthesia"→Synthesia、"descript"→Descript)
- 模糊匹配:Levenshtein 距离 ≤ 2 或包含关系
- 未匹配:保留原始名称,标记为
custom,提示用户确认 product_key
套餐匹配(匹配 plans[].tier):
- 用户明确说了套餐名 → 模糊匹配 tier 字段(如 "plus"→Plus、"pro"→Pro、"business"→Business)
- 用户没说套餐 → 推荐该产品的第 2 档(通常是主力付费档,如 ChatGPT→Plus、Claude→Pro、Cursor→Pro)
- 推荐时在确认表中标注
[推荐]
价格提取:
- 用户说了价格(如 "¥68/月"、"$20")→ 提取数字+币种
- 用户没说价格 → 使用 products.json 中对应 tier 的 price 和 currency
- 自定义产品 → 提示用户补充价格
起始日期:
- 默认当天日期(Agent 获取当前日期)
- 用户说了具体日期 → 使用用户指定的
计费周期:
- 默认 monthly
- 用户说了"年付"/"annual" → annual
2-3:解析确认表(一轮展示 + 内联编辑)
将解析结果以表格形式展示,标注需要补充的信息,支持内联修改:
✅ 解析到 N 条订阅:
┌─┬──────────┬───────────┬────────┬──────────┐
│#│ 产品 │ 套餐 │ 月费 │ 周期 │
├─┼──────────┼───────────┼────────┼──────────┤
│1│ ChatGPT │ Plus │ $20/月 │ 月付 │
│2│ Notion AI │ Business │ $20/月 │ 月付 │
│3│ Spotify │ Family │ ¥68/月 │ 月付 │ ← ⚠️ 自定义产品
└─┴──────────┴───────────┴────────┴──────────┘
⚠️ 需确认:
- #3 Spotify 不在产品库中,将作为自定义产品录入(product_key: spotify)
✅ 确认无误回复"ok"直接入库
✏️ 修改回复如:2改为Plus / 删掉3 / 1套餐改Pro
设计要点:
- 只问缺失/不确定的,已知的不追问
- 支持内联编辑语法(修改/删除/追加),一轮搞定
- 用户说"ok"就直接执行,不二次确认
2-4:批量执行 + 自动生成仪表盘
用户确认后,逐条执行 subscription_manager.py add:
python3 scripts/subscription_manager.py add --product chatgpt --tier Plus --price 20 --currency USD --start 2026-08-21 --billing monthly
python3 scripts/subscription_manager.py add --product notion_ai --tier "Business (含完整 AI)" --price 20 --currency USD --start 2026-08-21 --billing monthly
python3 scripts/subscription_manager.py add --product spotify --tier Family --price 68 --currency CNY --start 2026-08-21 --billing monthly
执行完毕后自动生成仪表盘:
python3 scripts/dashboard.py generate --output dashboard.html
将仪表盘文件交付给用户预览。
2-5:追问"还要加吗?"
仪表盘交付后,简短追问一次:
还有要加的吗?直接说产品名就行。
用户说"没了"/"不需要"则结束;否则回到 2-2 继续解析。
Step 3:其他操作(修改 / 比价 / 续费评估等)
列出已订阅产品和产品库中的产品供用户选择。按分类分组展示,已订阅的标注 ⭐:
选择产品:
💬 AI对话:ChatGPT ⭐ / Claude / Gemini / 豆包 / Kimi / 智谱清言 / 文心一言 / 通义千问
💻 AI编程:Cursor ⭐ / GitHub Copilot / Windsurf / CodeGeeX
🎨 AI图像:Midjourney / DALL·E / Stable Diffusion / Runway
🎵 AI音频:Suno / Udio
✍️ AI写作:Notion AI / Jasper
注:⭐ 标记基于
subscriptions.json中的实际记录动态生成,上方仅为示例。
确定产品后,读取 products.json 中该产品的套餐信息,按操作类型执行对应脚本。汇总用户的选择,以简洁摘要确认后执行:
确认一下:
• 操作:添加订阅
• 产品:ChatGPT
• 套餐:Plus($20/月)
• 起始日期:2026-08-21
• 周期:月付
确认添加吗?(y/n)
用户确认后,执行对应脚本。执行完毕后将结果友好地展示给用户。
使用流程
配合入口引导流程,各脚本的使用逻辑如下:
初始设置:首次使用时 subscriptions.json 为空。引导用户通过 Step 2-4 添加首批订阅,或通过
data_exchange.py import-csv/import-json批量导入。日常管理:通过引导流程的"查看订阅"或"修改订阅"入口,调用
subscription_manager.py的list/update/remove等命令。续费决策:通过引导流程的"续费评估"入口,调用
renewal_guide.py info查看续费信息、checklist生成操作清单,用usage导入官方用量数据评估是否值得续费,用price_comparator.py compare看同类产品对比,用alternative找替代方案。优化组合:通过引导流程的"重叠检测"入口,调用
overlap_detector.py分析功能重叠和冗余支出,用optimize获取精简建议。生成仪表盘:添加/修改订阅后,运行
dashboard.py generate自动生成可交互管理界面,让用户直观掌握订阅全貌。数据备份:定期用
export-json导出备份。
快速场景
常见场景与自然语言的对应关系,Agent 识别后可直接执行对应命令,无需走完整引导流程:
| 用户说 | 执行命令 |
|---|---|
| "帮我看看每月花了多少钱" / "订阅开销" | cost_analyzer.py overview |
| "按分类看看花费" | cost_analyzer.py by-category |
| "未来几个月大概要花多少" | cost_analyzer.py trend --months 6 |
| "ChatGPT 该续费吗" / "Cursor 值不值得续" | renewal_guide.py info --product <产品id> + checklist |
| "所有订阅的续费信息" | renewal_guide.py list |
| "按场景分析订阅重叠" / "写作场景该留哪个" | overlap_detector.py scenario |
| "用量分析" / "这个API用得值不值" | renewal_guide.py usage --mock |
| "我的订阅有哪些功能重叠" | overlap_detector.py overlap |
| "有没有浪费的钱" / "冗余支出" | overlap_detector.py redundancy |
| "怎么优化订阅组合" | overlap_detector.py optimize |
| "AI对话类产品哪个性价比高" | price_comparator.py compare --category ai_chat |
| "性价比排行" | price_comparator.py ranking |
| "有什么替代方案" | price_comparator.py alternative |
| "生成可视化仪表盘" / "看看仪表盘" | dashboard.py generate |
| "最近有什么要到的" / "到期提醒" | renewal_checker.py check |
| "导出备份" | data_exchange.py export-json |
| "看看我的所有订阅" | subscription_manager.py list |
| "帮我添加多个订阅" | 走 Step 2 自然语言引导流程 |
| "生成仪表盘" / "看看我的订阅面板" | dashboard.py generate |
| "我订阅了ChatGPT和Claude" / "加了个kimi" | 直接进入 Step 2,解析用户自然语言中的产品信息 |
| "chatgpt plus 和 claude pro" | 直接进入 Step 2,解析产品+套餐 |
| "跑一批企业简介要多少钱" / "任务成本预测" | task_estimator.py estimate --task <模板> --count N |
| "哪个模型便宜" / "模型计价" | task_estimator.py list-models |
| "API 余额还剩多少" / "余额能用多久" | balance_analyzer.py list 或 analyze --id <id> |
| "余额还能跑多少批" | balance_analyzer.py analyze --id <id> --task <模板> |
| "余额该充值了吗" / "充值提醒" | balance_analyzer.py check |
| "同步一下 API 余额" / "刷新余额" | balance_analyzer.py sync --from-workbuddy |
注意:快速场景是引导流程的快捷方式。如果用户的表述模糊、包含多步意图、或涉及需要选择产品的操作,仍应回到引导流程逐步确认。当用户直接说出产品名/套餐时,跳过 2-1 的提示,直接进入 2-2 解析。
输出风格
所有脚本输出为终端友好格式,使用 emoji 标记、ASCII 表格和进度条。中文显示,支持多币种(USD/CNY/EUR)。用户已订阅的产品会标注 ⭐。
产品库
当前内置 50 款产品覆盖 5 大分类:
- AI 对话(16):ChatGPT、Claude、Gemini、豆包、Kimi、智谱清言、文心一言、通义千问、Perplexity、扣子、Manus、Genspark、海螺AI、讯飞星火、天工AI、Grok
- AI 代码(10):Cursor、GitHub Copilot、Windsurf、CodeGeeX、Replit、CodeBuddy、Dify、Cline、Devin、Lovable
- AI 图像/视频(11):Midjourney、DALL·E、Stable Diffusion、Runway、Canva、Adobe Creative Cloud、Leonardo AI、Synthesia、Recraft、可灵AI、即梦AI
- AI 音频(7):Suno、Udio、ElevenLabs、Descript、AIVA、Mubert、Soundraw
- AI 写作/效率(6):Notion AI、Jasper、Microsoft 365 Copilot、Grammarly、WorkBuddy、n8n
依赖与运行环境
- Python 3.8+,零第三方依赖(仅标准库 json/os/argparse/datetime/collections/itertools)
- 完全离线:脚本不做任何网络请求;
renewal_guide.py usage例外(仅在用户主动使用且提供 API Key 时调用官方 Usage API) - 所有脚本通过命令行调用,数据存储在本地 JSON 文件
边界与安全
- 数据本地性:订阅记录、余额资产、消耗流水全部存本机,不上传任何服务器;
SUBMGR_DATA_DIR可将数据外置到用户自选目录(iCloud/Git 仓库) - 敏感字段提示:
payment_method/notes为自由文本,可能包含卡号尾号等信息——请勿在备注中记录完整卡号/密码;导出 CSV/JSON/HTML 时注意保管 - API Key 隔离:
renewal_guide.py usage与balance_analyzer.py sync的 Key 均通过参数或环境变量传入(后者可选--from-workbuddy读取本机 WorkBuddy 模型配置),不落盘、不写入任何数据文件 - 唯一网络功能:
renewal_guide.py usage与balance_analyzer.py sync是仅有的两个联网子命令,均为用户显式调用;其余脚本完全离线 - 错误信息脱敏:错误提示仅显示文件名,不暴露本机目录结构
- 打开文件安全:仪表盘打开使用
subprocess.run列表参数,不经过 shell,杜绝命令注入
版本台账
| 版本 | 日期 | 变更 |
|---|---|---|
| 1.0.0 | 2026-08-21 | 首发内置 36 款产品,9 能力 |
| 1.1.0 | 2026-08-26 | 产品库扩至 50 款;P0/P1 整改(frontmatter 补全、路径脱敏、auto_renew 解析修复、仪表盘空状态兜底、权限收紧) |
| 1.2.1 | 2026-08-28 | 仪表盘新增「API 余额资产」可视化板块(余额卡片/消耗进度条/寿命徽标/低余额预警 banner,总支出升级为订阅+API 双口径);balance_analyzer 新增 sync 子命令(DeepSeek/Moonshot 余额在线同步,差额留痕) |
| 1.2.0 | 2026-08-28 | 基座对齐扣子平台 v14(新增 usage 用量分析 / scenario 场景化重叠 / price_updater 定价保鲜 / 仪表盘 30 秒指引 / 到期自动提醒);回补 1.1.0 全部整改并统一汇率口径(全脚本读 rates.json);新增 token 级任务成本预测(task_estimator.py + token_prices.json)与 API 余额资产分析(balance_analyzer.py + balances.json),含峰谷分时计价、错峰建议、路由建议、核价溯源(set-price --source)、低余额预警 |