一份完整的产品方案 — 技术选型、商业模型、运营策略、落地路线,一周内交付一款能跑通的产品
面向国内用户的 AI 生图平台,用户输入 Prompt 调用第三方 API(如 GPT-image2)生成图片,后期可能扩展至视频生成。
| 服务 | 买什么 | 在哪里买 | 费用 | 说明 |
|---|---|---|---|---|
| 域名 | .com 域名 | Cloudflare / Namecheap | ≈¥60/年 | 唯一固定支出 |
| 后端服务器 | 海外 VPS 或 Railway | Vultr / Railway | ≈¥0–35/月 | Railway 免费额度够 MVP |
| 中转站充值 | API 调用余额 | 你选的中转站平台 | 按需充值 | 建议先充 ¥50–100 测试 |
| 服务 | 用什么 | 在哪里 | 免费额度 | 说明 |
|---|---|---|---|---|
| 前端托管 | Vercel / CF Pages | vercel.com | 免费 | 前端静态资源托管 |
| 数据库 | Neon PostgreSQL | neon.tech | 0.5GB + 190h/月 | Serverless PG |
| 图片存储 | Cloudflare R2 | dash.cloudflare.com | 10GB + 无出口流量费 | 这就是你的 OSS |
| DNS + CDN | Cloudflare | cloudflare.com | 完全免费 | 域名解析 + 全球 CDN |
| 错误监控 | Sentry | sentry.io | 5000 事件/月 | 前后端报错通知 |
| 访问统计 | Umami / 百度统计 | 自建/免费 | 无限制 | 用户行为分析 |
| 代码托管 | GitHub 私有仓库 | github.com | 无限制 | 版本管理 |
| 服务 | 什么时候花钱 | 预估费用 | 说明 |
|---|---|---|---|
| 虎皮椒支付 | 有收入后 | 收入的 1.5% | 按交易额抽成 |
| R2 超额存储 | 图片超过 10GB | ≈¥3.8/月 | 用户多了以后 |
| 邮件服务 | V2 加邮箱验证 | Resend 免费 100 封/天 | 超出后按量付费 |
| 国内服务器 | V2 迁移国内 | ≈¥50–100/月 | 阿里云/腾讯云 |
| 短信服务 | V2 加手机登录 | ≈¥0.04/条 | 阿里云/腾讯云 |
开工前需要注册的账号:
✓ Cloudflare 账号(DNS + R2 图片存储 + 前端部署)
✓ Vercel 账号(前端部署备选)
✓ Neon 账号(数据库)
✓ Railway 或 Vultr 账号(后端服务器)
✓ GitHub 账号(代码托管)
✓ Sentry 账号(错误监控)
✓ 虎皮椒账号(支付,可以 Day 5 再注册)
✓ 域名注册(Cloudflare 或 Namecheap)
✓ 中转站平台账号(充值 API 余额)
前端 React SPA + 后端 Python FastAPI,前后端分离部署
核心背景:开发者只会 React,后端代码由 AI 辅助编写。
| 问题 | 说明 |
|---|---|
| SSR 价值低 | 产品是登录后的工具型应用,搜索引擎抓不到登录后的页面 |
| API Routes 超时 | Vercel 免费版函数超时 10 秒,生图需要 10–30 秒 |
| 不适合长任务 | 不支持 WebSocket,不适合独立扩展后端性能 |
| 前后端耦合 | 一个项目里混在一起,改 UI 可能影响 API |
# 一个完整的 API 接口,就这么几行,一目了然
@app.post("/generate")
async def generate_image(req: GenerateRequest):
image_url = await call_provider(req.prompt)
return {"url": image_url}
| 维度 | Python + FastAPI | Node.js + Express | Java + Spring Boot |
|---|---|---|---|
| 代码可读性 | 极高 — 最接近伪代码 | 较高 | 一般 — 过于冗长 |
| 项目文件数 | 很少 | 较少 | 很多 |
| AI 生成质量 | 非常好 | 好 | 一般 — 容易过度设计 |
| 你能看懂多少 | 最多 | 较多 | 较少 |
| 出 Bug 时定位 | 容易 | 一般 | 困难 |
| 后期 AI 扩展 | 天然优势 | 一般 | 一般 |
| 模块 | 最终方案 | 说明 |
|---|---|---|
| 前端 | React + Vite + TypeScript + Tailwind CSS | 纯 SPA,开发快 |
| 后端 | Python + FastAPI | 代码可读性最高,AI 生成质量最好 |
| ORM | SQLAlchemy / Tortoise ORM | 自动生成 SQL |
| 数据库 | Neon PostgreSQL(Serverless) | 免费额度够用 |
| 图片存储 | Cloudflare R2(boto3,兼容 S3) | 免费 10GB |
| 认证 | JWT(FastAPI 原生支持) | 免费无限制 |
| 支付 | 虎皮椒(微信 + 支付宝) | 个人可用,费率 1.5% |
| 前端部署 | Vercel / Cloudflare Pages | 免费 |
| 后端部署 | Railway / VPS(Vultr) | $0–5/月 |
fastapi → Web 框架
uvicorn → ASGI 服务器
sqlalchemy → ORM
alembic → 数据库迁移
pydantic → 数据校验
python-jose → JWT 认证
bcrypt → 密码加密
boto3 → R2/S3 存储操作
httpx → HTTP 客户端
python-dotenv → 环境变量管理
users → 用户信息(id, email, nickname, avatar, created_at)
subscriptions → 订阅记录(user_id, plan_type, start_at, end_at, remaining_quota)
orders → 支付订单(user_id, plan_type, amount, status, paid_at)
transactions → 交易记录(user_id, amount, type, created_at)
images → 生成图片(user_id, prompt, image_url, provider_name, status, created_at)
api_providers → 中转站配置(name, base_url, api_key, cost_per_image, is_enabled...)
quota_records → 额度变更明细(user_id, change_amount, reason, created_at)
invite_records → 邀请关系(inviter_id, invitee_id, created_at)[V2]
commissions → 分润记录(inviter_id, from_user_id, amount, created_at)[V2]
方式 1:返回 Base64
{ "data": [{ "b64_json": "/9j/4AAQSkZJRgABAQ..." }] }
方式 2:返回 URL(临时链接,1–24 小时后失效)
{ "data": [{ "url": "https://xxx.com/image/xxx.png" }] }
import boto3
s3 = boto3.client("s3",
endpoint_url="https://xxx.r2.cloudflarestorage.com",
aws_access_key_id="your-key",
aws_secret_access_key="your-secret")
s3.put_object(Bucket="images", Key=f"{user_id}/{uuid}.png", Body=image_bytes)
价格优先 + 自动 Fallback + 熔断机制,成本最优且高可用
| 字段 | 说明 |
|---|---|
id | 主键 |
name | 名称 |
base_url | API 地址 |
api_key | API Key(加密存储) |
model | 模型名称(如 gpt-image-1) |
cost_per_image | 单张成本 |
is_enabled | 是否启用 |
daily_limit | 每日调用上限 |
error_count | 连续失败次数 |
优先级 1:is_enabled = true
优先级 2:error_count < 阈值
优先级 3:current_daily < daily_limit
优先级 4:cost_per_image 从低到高
优先级 5:同价格时按 priority 字段排序
连续失败 3 次 → 自动标记为「冷却中」,30 分钟内不再调用
30 分钟后 → 试探请求 → 成功恢复正常,失败继续冷却
| 档位 | API 成本 | 毛利 | 毛利率 |
|---|---|---|---|
| 免费用户 | ¥7.2/月 | -¥7.2 | 获客成本 |
| 体验包 | ¥0.24 | ¥1.75 | 88% |
| 基础月卡 | ¥4 | ¥5.9 | 60% |
| 专业月卡 | ¥16 | ¥13.9 | 46% |
| 加量包 | ¥2.4 | ¥2.5 | 51% |
| 额度类型 | 有效期 | 累积规则 |
|---|---|---|
| 免费额度 | 每天重置 | 不累积,当天没用完作废 |
| 体验包额度 | 永久有效 | 用多少扣多少 |
| 月卡额度 | 每月 1 号重置 | 不累积 |
| 加量包额度 | 永久有效 | 用多少扣多少 |
体验包/加量包(永久)→ 月卡 → 免费额度
原因:先消耗永久的,再消耗会过期的
| 项目 | 决定 |
|---|---|
| 触发条件 | 被邀请人消费后才算 |
| 分润比例 | 10%(持续分润) |
| 绑定周期 | 永久绑定 |
| 单人月总上限 | ¥200 |
| 余额用途 | 仅充值套餐,不可提现 |
| 上线时间 | V2 阶段(MVP 不做) |
| 风险 | 不设上限 | 有上限 |
|---|---|---|
| 大 V 邀请 200 人 | 月分润 ¥500–1000 | ¥200 封顶 |
| 羊毛党刷 100 号 | 月分润 ¥150+ | ¥200 封顶 |
用户输入邮箱+密码 → POST /api/auth/login
→ 后端验证密码 → 生成 JWT Token → 返回给前端
→ 前端存 localStorage → 每次请求 Header 带上
→ 后端验证 Token 有效性
| 防刷类型 | 措施 |
|---|---|
| 注册防刷 | 邮箱验证码(V2);同 IP 每天最多 3 个 |
| 生图防刷 | 额度硬限制;10 秒冷却;同 IP 每小时最多 20 张 |
| 接口防刷 | Rate Limiting;超出返回 429 |
| 支付防刷 | 同时 1 个未支付订单;30 分钟过期 |
| 邀请防刷 | 自邀自检;同 IP 不计入;24h 延迟结算 |
| 方案 | 个人可用 | 费率 | 优缺点 |
|---|---|---|---|
| 虎皮椒 推荐 | 是 | 1.5% | 支持微信+支付宝 |
| 爱发卡 | 是 | 2–3% | 适合虚拟商品卡密 |
| YunGouOS | 是 | 0.6% | 费率低;需实名 |
| 微信/支付宝官方 | 否(需企业) | 0.6% | 最正规 |
用户点击"购买" → 前端 POST /api/payment/create
→ 后端创建订单 → 调用虎皮椒 API 生成支付链接
→ 前端跳转支付(微信/支付宝扫码)
→ 支付成功 → 回调验证签名 → 核对金额 → 更新订单 → 增加额度
| 组件 | 方案 | 成本 |
|---|---|---|
| 前端 | Vercel / Cloudflare Pages | 免费 |
| 后端 | Railway / Vultr VPS | ¥0–35/月 |
| 数据库 | Neon PostgreSQL | 免费 |
| 图片存储 | Cloudflare R2 | 免费 |
| DNS + CDN | Cloudflare | 免费 |
| 域名 | .com | ≈¥60/年 |
MVP 阶段:注册 .com 域名,不需要备案。
V2 阶段:购买国内服务器 → ICP 备案(1–2 周)→ 公安备案。
| 监控类型 | 工具 | 用途 |
|---|---|---|
| 错误监控 | Sentry | 报错自动通知 |
| 访问统计 | Umami / 百度统计 | 用户量、来源 |
| 业务指标 | 自建 Dashboard | 注册数、付费数、收入 |
| 项目 | 月成本 |
|---|---|
| 域名 | ≈¥5/月 |
| 前端托管 | ¥0 |
| 后端服务器 | ¥0–35/月 |
| 数据库 + 图片存储 | ¥0 |
| 总固定成本 | ¥5–40/月 |
| 场景 | 用户量 | 付费用户 | 月收入 | API + 服务器 | 毛利 |
|---|---|---|---|---|---|
| 初期 | 100 | 10 | ¥99 | ¥80 | ¥19 |
| 成长 | 500 | 75 | ¥742 | ¥340 | ¥402 |
| 稳定 | 2000 | 400 | ¥3,960 | ¥1,700 | ¥2,260 |
| 增长 | 5000 | 1250 | ¥12,375 | ¥5,200 | ¥7,175 |
| 决策点 | 决定 | 理由 |
|---|---|---|
| 开发策略 | 从头写 | Fork 改造成本 > 从头写 |
| 前端 | React + Vite + TS + Tailwind | 最熟悉,效率最高 |
| 后端 | Python + FastAPI | 可读性最高,AI 生成质量最好 |
| 免费额度 | 3 张/天 | 获客效果好 |
| 体验包 | ¥1.99/3 张 | 锚定免费额度价值 |
| 邀请分润 | 10% | 行业标准,留涨价空间 |
| 多中转站 | 价格优先 + fallback | 成本最优 + 高可用 |
| 先海外后国内 | 是 | 快速上线,验证后再合规 |
| R2 作为 OSS | 是 | 免费 10GB,无出口流量费 |
| 后端部署 | Railway / VPS | 不受 Serverless 超时限制 |
ai-image-app/
├── frontend/
│ ├── src/
│ │ ├── pages/ Landing | Login | Create | History | Pricing | Dashboard | Admin
│ │ ├── components/ PromptInput | ImageCard | Gallery | PricingCard | Status | Navbar
│ │ ├── api/ client (Axios+JWT) | auth | generate | images | payment | quota
│ │ ├── store/ userStore (Zustand)
│ │ └── utils/ poller
│ ├── package.json | vite.config.ts | tailwind.config.js
│
├── backend/
│ ├── app/
│ │ ├── main.py (FastAPI + CORS) | config | database | models | schemas
│ │ ├── routers/ auth | generate | images | quota | payment | admin
│ │ ├── services/ provider_router | quota_service | r2_storage | sensitive_words
│ │ ├── adapters/ base | openai_compatible
│ │ └── middleware/ rate_limit
│ ├── data/ sensitive_words.txt
│ ├── requirements.txt | .env | Dockerfile
│
├── docker-compose.yml | .gitignore | README.md