第 8 章:SaaS 版要多做什么
为什么还做 SaaS
开源版解决了"我自己能用"的问题。但:
- 非技术用户不会 Docker 部署
- 自建需要服务器 + API Key,有门槛
- 想验证:有人愿意为这个服务付钱吗?
SaaS 版的目标:让不懂技术的人也能用上 AI 新闻聚合,并且愿意付费。
SaaS 比开源版多了什么
从代码量看,SaaS 版是开源版的 3-4 倍。多出来的不是核心功能(那部分是共享的),而是围绕"多用户 + 付费"的一切:
用户体系
- 注册/登录(JWT 认证)
- 邮箱验证(防垃圾注册)
- 套餐管理(免费/基础/专业)
- 用户信息修改
付费和权限
- 支付宝当面付(扫码支付)
- 订单生命周期管理
- 套餐升级/续费/降级
- 内容按套餐分级展示
安全防护
- Turnstile 人机验证
- 临时邮箱域名黑名单
- IP 频率限制(Redis + 内存双层)
- 邮箱归一化(防别名滥用)
前端
- Nuxt 3 完整 SPA
- 响应式设计(移动端可用)
- 管理后台(用户管理、数据统计)
运维
- PostgreSQL 替代 SQLite
- Redis 做缓存和限流
- 数据库定时清理
- 健康检查 + Webhook 通知
- 渠道分发(邮件推送 + 语音播报)
复杂度对比
| 维度 | 开源版 | SaaS 版 |
|---|---|---|
| 后端代码 | ~1500 行 | ~5000 行 |
| 前端代码 | 2 个静态 HTML | Nuxt 3 完整 SPA(14 个页面) |
| 数据库表 | 3 张 | 5 张(+用户+订单) |
| 外部依赖 | GLM API | GLM + 支付宝 + Redis + SMTP + Turnstile |
| 定时任务 | 1 个(聚合) | 2 个(聚合 + 分发) |
| 部署 | 单 Docker 容器 | 多服务(后端+前端+PG+Redis) |
| 日常维护 | 几乎为零 | 每周要看看有没有异常 |
核心功能(AI 新闻聚合)只占 SaaS 代码的约 30%。 剩下 70% 是"让产品能被别人用、能收到钱、不被薅"的工程。
这是很多人做开源转 SaaS 时低估的工作量。他们觉得"加个登录和支付就行了",实际上要处理的问题远比想象的多。
为什么能做得快
关键因素:WeChat RSS 项目的底座。
WeChat RSS 先做了 SaaS 化,它的用户系统、支付模块、认证逻辑、防薅策略已经跑通了。AI News RSS 的 SaaS 版几乎是把那套模式搬过来,改改业务逻辑。
复用的不只是代码片段,更重要的是模式:
- 支付回调怎么做,状态机怎么设计
- 防薅逻辑用几层,每层解决什么问题
- 套餐升降级的边界条件
- 前后端认证中间件怎么写
- 部署时哪些坑要注意
有了第一个 SaaS 项目的经验,第二个的启动速度会快很多。这就是方法论里说的"项目积累的复利效应"。