Back
NimBuild AI

NimBuild AI

AI SaaS 上线清单:从 Prompt 到付费产品

AI SaaS 上线清单:从 Prompt 到付费产品

把 AI 提示词变成付费 SaaS,关键不是一次完美的模型调用,而是七个相互连接的工作流。用这份清单避免把模型 Demo 当成产品。

1. 先建立运行基线

NimBuild Starter 固定使用 Node.js、pnpm 10、PostgreSQL、Next.js 16 和 React 19。新增产品功能前:

node --version
pnpm --version
pnpm install
cp .env.example .env.local

至少配置数据库连接、公开站点 URL、Firebase 客户端配置和 Firebase 服务账号配置,然后初始化数据库:

pnpm db:push
pnpm dev

在能登录、加载受保护路由并连接本地数据库之前,不要开始定制。

2. 让身份和产品状态保持一致

NimBuild 使用 Firebase Google 登录作为身份提供商。Firebase 返回 ID Token 后,浏览器提交到 session-login 接口;服务端验证 Token、创建 HttpOnly 会话 Cookie,并同步本地 PostgreSQL 用户记录。

本地用户保存角色、套餐、积分和封禁状态等产品字段。请保持这个分工:

  • Firebase 回答“这个人是谁?”
  • PostgreSQL 回答“这个账户在产品里能做什么?”

Cloudflare Turnstile 是可选的。如果希望 Google 按钮只在风险检查通过后出现,需要同时配置公开 site key 和服务端 secret。

3. 尽早配置商业计费

NimBuild 使用 Stripe 订阅结账。接受真实付款前,先替换为你自己的 Stripe Price ID。

文档中的 starter 方案为:

方案价格积分
Basic 月付$19每月 1,000
Basic 年付$190每年 12,000,按月发放
Pro 月付$49每月 5,000
Pro 年付$490每年 60,000,按月发放

然后把 Stripe Webhook 指向:

https://your-domain.com/api/payments/stripe/webhook

签名验证和重复支付检查是上线要求,不是后续加固项。

4. 把积分当产品账务

只存在于 UI 的余额无法支撑客服请求、退款和续费争议。NimBuild 将快速用户余额、可消费积分桶和不可变账本组合在一起。

上线前确认这些原因只出现在正确位置:

  • registration_bonus
  • daily_grant
  • subscription_cycle
  • subscription_schedule
  • adjustment
  • refund
  • credit_expired
  • ai_generation
  • ai_generation_refund

每次发放、扣除、退款、调整和过期都应具备事务性和可解释性。

5. 把 AI 工作流放进产品规则

NimBuild 文档中的 AI 工作区使用 Volcengine 生成 AI 文案,并包含积分扣除和生成历史。你的产品工作流应回答:

  • 接受什么输入 schema?
  • 哪些角色或套餐可以使用?
  • 消耗多少积分?
  • 是否只在扣款成功后启动外部工作?
  • 超时、无效响应或部分输出时怎么处理?
  • 用户在哪里查看生成历史?

把提供商调用留在 provider extension,把产品工作流留在 feature 或 module 边界内。这样后续替换 Volcengine 或新增提供商时,不需要重写计费和 UI。

6. 在第一个客服问题前准备好运营

第一批工单通常是:

  • “我付款了,但套餐没更新。”
  • “我被扣款了,但没有收到积分。”
  • “AI 失败了,我的积分却消失了。”
  • “为什么我的促销积分过期了?”

NimBuild 的管理后台覆盖用户、订阅、积分调整和账本历史。上线前用这些问题逐个测试。如果运营者无法诊断事件链,工作流就还没准备好。

7. 按生产清单部署

最低上线配置:

  1. 执行数据库迁移。
  2. 配置 Stripe Webhook。
  3. 配置订阅发放和积分过期的 cron。
  4. 创建管理员账号。
  5. 验证 Firebase authorized domains。
  6. 配置 Resend 和已验证发送域名。
  7. 配置 Volcengine API 凭据。
  8. 设置生产站点 URL。
  9. 只有准备好使用数据时才配置分析。

年付方案需要每小时调用 /api/cron/subscription-grants。可过期积分需要调度 /api/cron/credit-expiry。两者都要用 CRON_SECRET 或 Basic Auth 保护。

上线的是闭环

付费 AI SaaS 需要完整闭环:账户、结账、积分、AI 工作、历史、运营和续费。NimBuild Starter 的价值在于让你把时间花在客户付费的产品工作流上,而不是重建底层授权和账务系统。