订阅监控系统

一个基于规则和LLM解释的自主订阅监控系统,用于跟踪订阅、检测账单风险、查找重复订阅并监控预算。

  • by ARUNMOZHI-27
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ARUNMOZHI-27/subscription-intelligence

使用说明


🧠 订阅智能MCP

使用构建的自主订阅监控系统 MCP(模型上下文协议).
它使用LLM跟踪订阅、检测计费风险、查找重复项、监控预算并解释一切-- 而不让LLM控制逻辑.

核心理念: 规则决定。LLM解释道。


✨ 特性

  • 🔔 试用期到期警报(7/3/1天)
  • 🔁 续订提醒
  • 💸 计费开始通知
  • 🔍 重复订阅检测
  • 📊 月度支出分析
  • 🎯 预算限额警报
  • 🤖 LLM驱动的人类解释
  • 📧 电子邮件通知
  • 📲 通过推送通知 ntfy.sh
  • 💬 交互式聊天CLI
  • 📅 日历导出(.ics)
  • 📊 流线型仪表板
  • 🐳 Docker和Docker Compose支持

🧩 高级体系结构

subscriptions.json↓ storage.py↓ 智能.py← 规则决定↓ llm_explainer.py← LLM解释↓ notifier.py← 电子邮件/推送↓ subscription_operator.py(代理)↓ MCP工具/CLI/仪表板

LLM从不触发行动。
它只解释了规则产生的事实。


🚀 快速入门(Docker–推荐)

docker compose up -d

Check logs:

docker logs -f subintel

Stop:

docker compose down

🧪 本地运行(无Docker)

pip安装-r订阅_intelligence_mcp/requirements.txt python subscription_operator.py


⚙️ 配置

在项目根目录中创建.env文件。

👉 提供了一个即用型.env.example文件。 在运行之前复制它并重命名为.env。

.env示例

# =====================
# Email Notifications
# =====================
EMAIL_ENABLED=true
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_gmail_app_password
EMAIL_TO=your_email@gmail.com

# =====================
# Push Notifications (ntfy)
# =====================
NTFY_ENABLED=true
NTFY_TOPIC=subintel-demo

# =====================
# Agent Settings
# =====================
CHECK_INTERVAL_HOURS=6
MONTHLY_SUBSCRIPTION_BUDGET=2500

# =====================
# LLM Settings
# =====================

OLLAMA_MODEL=llama3.2
OLLAMA_TIMEOUT=120


# =====================
# Storage & Logs
# =====================
DATA_DIR=/data
LOG_DIR=/data/logs
LOG_LEVEL=INFO

## ⚠️ Important Notes

Gmail requires App Password, not your real password

ntfy.sh topics are public → choose a unique topic

Docker users must mount /data as a volume



---

🧰 MCP工具可用

工具 说明
list_subscriptions() 列出所有订阅
add_subscription() 添加新订阅
analyze_spend() 月度+品类支出
recommend_savings() 检测重复和节省
get_monthly_summary() 月度概览
status() 代理运行时状态
export_calendar_file() 生成 .ics 日历

📖 使用示例

🐍 Python(MCP客户端)

from subscription_mcp import mcp

mcp.call_tool("add_subscription", {
    "name": "Netflix",
    "monthly_cost": 499,
    "category": "Streaming",
    "billing_start_date": "2025-01-01",
    "auto_pay": True
})

subs = mcp.call_tool("list_subscriptions")
print(subs)

spend = mcp.call_tool("analyze_spend")
print(spend)

print(mcp.call_tool("recommend_savings"))


💬 聊天CLI

python chat_cli.py

命令示例:

显示订阅 我花了多少钱 建议节省 导出日历 状态


📊 仪表板(Streamlit)

streamlit run dashboard.py

仪表板包括:

订阅表

类别饼图

续订时间表

年度成本预测


📁 项目结构

订阅情报/ ├── subscription_intelligence_mcp/ │ ├── __初始化__南美国家巴拉圭的缩写(Paraguay) │ ├── subscription_mcp.py │ ├── subscription_operator.py │ ├── 智能.py │ ├── llm_explainer.py │ ├── notifier.py │ ├── storage.py │ ├── agent_state.py │ ├── chat_cli.py │ ├── dashboard.py │ ├── calendar_export.py │ ├── 验证器.py │ ├── config.py │ └── 需求.txt ├── data/ │ └── subscriptions.json ├── 测试/ ├── docs/ ├── Dockerfile ├── docker-compose.yml ├── .env.example ├── 许可证 └── README.md


🧠 情报工作原理

1.️⃣ 基于规则的警报

分析账单、试用和续订日期

在7/3/1天触发警报

检测重复类别

强制执行每月预算限额

2.️⃣ 开支分析

每月总支出

按类别分组

计算年度节省额

3.️⃣ LLM解释层

输入:事实警报数据

输出:冷静,人性化解释

没有决策权

4.️⃣ 通知

📧 电子邮件(SMTP)

📲 ntfy.sh推送通知

智能重复数据删除可防止垃圾邮件


🐳 Docker详细信息

构建图像:

docker build -t subintel .

运行容器:

docker run -d \
  --name subintel \
  --env-file .env \
  -v $(pwd)/data:/data \
  subintel


🧪 测试

pytest
pytest --cov=subscription_intelligence_mcp

🐛 故障排除

订阅未保存

确保/data/scriptions.json存在

检查Docker卷装载

验证写入权限

电子邮件未发送

使用Gmail应用程序密码

确认EMAIL_ENABLED=真

检查日志:docker日志-f subintel

Docker立即退出

缺少依赖关系→ 无缓存重建

检查Python错误日志


📜 许可证

麻省理工学院许可证©2026 Arunmozhi(Arunmozhi-27)


注:覆盖范围侧重于核心逻辑和验证。 有意排除运行时循环、仪表板和通知传输