HS Design SaaS 平台 改造项目范围
把现有的 hsdesign.biz 报价单工具转型为面向马来西亚装修设计师的多租户 SaaS 平台。每位设计师获得独立子域名工作区、自定义品牌、共享基础设施。免费版含 Google Ads,付费版无广告。
愿景与背景
HS Design 已有面向单一品牌的报价单系统,部署在 hsdesign.biz(Cloudflare Pages + D1 数据库)。本次改造目标是把这个工具变成开放给所有装修设计师使用的 SaaS 平台,每位设计师都获得:
- 独立的子域名工作区(如
designer1.hsdesign.biz) - 可上传自家 logo、设置主题色的品牌页面
- 独立的客户与报价单数据空间
- 免费起步,付费升级(去除广告 + 解锁配额)
这次转型的战略意义:
- 架构:Cloudflare Pages(前端)+ Workers(API + 子域名路由)+ D1(数据,按 tenant_id 隔离)+ R2(logo 等静态资产)。
- 子域名:用 Cloudflare for SaaS / Workers 通配符路由,
*.hsdesign.biz全部走同一 Worker,用 Host header 解析 tenant。 - 数据隔离:共享数据库 + tenant_id 列(Row-Level Tenancy),代码层强制注入。最快、最便宜、足够安全。
- 定价:Free(100 份/月 + Google Ads)vs Pro(无限 + 无广告,约 RM 49/月 起)。
- 模板:平台统一管理,租户不可改 — 简化运维、保证质量、便于未来批量升级。
- 获客:SEO 长尾词 + 设计师社群 + 案例展示墙(病毒效应)+ 推荐返佣。Google Ads 主要做导出广告变现,对自身引流帮助有限。
- MVP 时间:4–6 周可上线核心功能。
- 未来:项目管理模块(v2)、AI 装修问答助手(v3)— 本文档已定义但不在 MVP 范围。
现有系统基线
| 资产 | 当前状态 | 改造影响 |
|---|---|---|
| 主域名 | hsdesign.biz → CNAME hsdesign-7ni.pages.dev | 保留为主站 + 营销门户;子域名归 SaaS 工作区 |
| 前端托管 | Cloudflare Pages(GitHub: JakeBilu/Landing-Page) | 继续用,新增 SaaS 工作区前端项目 |
| API | 独立 Worker:hsdesign-d1-api.ida-czia.workers.dev | 扩展为多租户 API,加入鉴权 + tenant 解析 |
| 数据库 | D1:8d776216-e135-4c9f-b1bb-9669cb10bd85 | 扩展 schema:新增 tenants、subscriptions、usage_quotas 等表 |
| 报价单模板 | 已有标准化模板(HS Design 自用版本) | 抽象化为平台统一模板,注入租户品牌信息 |
| 用户系统 | 无(单店模式无需登录) | 新建:设计师注册、登录、订阅管理 |
SaaS 架构总图
┌──────────────────────────┐
设计师A 的客户访问 │ Cloudflare DNS │
designer-a.hsdesign.biz ───►│ *.hsdesign.biz wildcard │
designer-b.hsdesign.biz │ CNAME → SaaS Pages │
└──────────┬───────────────┘
│
┌────────────────▼─────────────────┐
│ Cloudflare Pages (Frontend) │
│ 单一 React/Vue SPA │
│ 读取 location.host → 解析租户 │
│ GET /api/tenant?host=... │
└────────────────┬─────────────────┘
│
┌────────────────▼─────────────────┐
│ Worker: hsdesign-saas-api │
│ ┌──────────────────────────┐ │
│ │ 1. 解析 Host header │ │
│ │ 2. 查询 tenants 表 │ │
│ │ 3. 注入 tenant_id 上下文 │ │
│ │ 4. 验证 JWT/session │ │
│ │ 5. 检查配额 + 订阅状态 │ │
│ └──────────────────────────┘ │
└─┬───────────────┬───────────────┘
│ │
┌─────────▼──┐ ┌──────▼────────┐
│ D1 DB │ │ R2 Storage │
│ tenants │ │ logos/ │
│ users │ │ exports/ │
│ quotations │ │ tenant-1/... │
│ items │ │ tenant-2/... │
│ usage │ └───────────────┘
└────────────┘
关键设计决策:
tenant_id。低成本、易备份、易升级。tenant_id/ 前缀存储,便于清理与归属。子域名路由方案
方案 A:Cloudflare for SaaS(推荐 · 长期)
Cloudflare 官方的多租户产品,专为子域名 SaaS 设计:
- 免费用户也可以接入自定义域名(之后让付费用户绑定
quote.theirsite.com) - SSL 证书自动签发与续期
- 每月免费 100 个 Custom Hostname,超出 $0.10/个 — 对早期足够
方案 B:Workers 通配符路由(推荐 · MVP 阶段)
更简单的实现,MVP 阶段足够:
# wrangler.toml — 通配符路由配置
name = "hsdesign-saas-api"
routes = [
{ pattern = "*.hsdesign.biz/*", zone_name = "hsdesign.biz" },
{ pattern = "hsdesign.biz/api/*", zone_name = "hsdesign.biz" }
]
在 Worker 里解析子域名:
export default {
async fetch(req, env) {
const url = new URL(req.url);
const host = req.headers.get('host'); // designer-a.hsdesign.biz
const sub = host.split('.')[0]; // designer-a
// 保留子域:app/www/admin/api
if (['app','www','admin','api'].includes(sub)) {
return handleSystemRoute(req, env, sub);
}
// 查 tenant
const tenant = await env.DB.prepare(
'SELECT * FROM tenants WHERE subdomain = ? AND status = ?'
).bind(sub, 'active').first();
if (!tenant) return render404();
// 把 tenant 注入到所有下游处理器
return handleTenantRoute(req, env, tenant);
}
}
DNS 配置
| 记录类型 | 名称 | 目标 | 说明 |
|---|---|---|---|
| CNAME | * | hsdesign-saas.pages.dev | 通配符指向 Pages |
| CNAME | @ | hsdesign-7ni.pages.dev | 主站不变 |
| CNAME | app | hsdesign-saas.pages.dev | 设计师登录入口 |
| CNAME | admin | hsdesign-admin.pages.dev | 平台后台 |
*.hsdesign.biz 已自动覆盖。但如果未来要让付费用户绑自己的域名,必须用 SSL for SaaS(每域名收费)。
多租户数据隔离
| 模式 | 实现 | 成本 | 隔离强度 | 适用阶段 |
|---|---|---|---|---|
| 独立数据库 | 每租户一个 D1 | 高(D1 上限/账户) | ★★★★★ | 企业大客户 |
| 独立 Schema | 共享 D1,每租户独立表 | 中 | ★★★★ | D1 不直接支持 |
| 行级隔离 ✓ | 共享 D1,所有表带 tenant_id | 低 | ★★★(代码强制) | MVP 与中期 |
强制注入 tenant_id 的关键代码模式
// ❌ 危险:直接 SQL 容易漏掉 tenant_id
db.prepare('SELECT * FROM quotations WHERE id = ?').bind(id);
// ✅ 安全:每个 query 都通过统一 helper
function scoped(db, tenantId) {
return {
quotations: {
find: (id) => db.prepare(
'SELECT * FROM quotations WHERE id=? AND tenant_id=?'
).bind(id, tenantId).first(),
list: () => db.prepare(
'SELECT * FROM quotations WHERE tenant_id=? ORDER BY created_at DESC'
).bind(tenantId).all(),
}
};
}
db.prepare。在 CI 里用静态扫描强制此规则。
品牌定制系统
租户可定制的元素
| 元素 | 存储位置 | 注入方式 | 限制 |
|---|---|---|---|
| Logo | R2: tenants/{id}/logo.png | API 返回 URL,前端 <img> | ≤ 500KB · PNG/SVG · 推荐 800x200 |
| 主题色 (Primary) | D1: tenants.theme_primary | 注入到 --primary CSS 变量 | HEX 格式,需通过对比度检查 |
| 强调色 (Accent) | D1: tenants.theme_accent | 注入到 --accent CSS 变量 | 同上 |
| 公司名 | D1: tenants.company_name | 头部 + 报价单页眉 | ≤ 60 字符 |
| 联系信息 | D1: tenants.contact_* | 报价单页脚 | 电话、邮箱、地址 |
| 报价单签名 | R2: tenants/{id}/signature.png | 嵌入到 PDF 导出 | 可选 · ≤ 200KB |
动态主题注入示意
// 前端启动时
const tenant = await fetch('/api/tenant/current').then(r => r.json());
document.documentElement.style.setProperty('--primary', tenant.theme_primary);
document.documentElement.style.setProperty('--accent', tenant.theme_accent);
document.title = `${tenant.company_name} · 报价单`;
不可定制(明确划线)
- 报价单模板版式 — 平台统一控制,便于批量升级
- 表单字段结构 — 保证数据一致性,未来 AI 可分析
- 导出 PDF 排版 — 全平台同一设计语言
- 底部水印(免费版)— "Powered by HS Design" + 平台 logo
数据库设计
新增核心表
-- 租户主表
CREATE TABLE tenants (
id TEXT PRIMARY KEY, -- ULID
subdomain TEXT UNIQUE NOT NULL, -- e.g. "designer-a"
company_name TEXT NOT NULL,
owner_email TEXT NOT NULL,
theme_primary TEXT DEFAULT '#d4af37',
theme_accent TEXT DEFAULT '#0a0a0a',
logo_url TEXT,
contact_phone TEXT,
contact_address TEXT,
plan TEXT DEFAULT 'free', -- free | pro
status TEXT DEFAULT 'active', -- active | suspended | trial
trial_ends_at DATETIME,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE UNIQUE INDEX idx_tenants_subdomain ON tenants(subdomain);
-- 用户表(设计师 + 团队成员,未来支持多人协作)
CREATE TABLE users (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
email TEXT NOT NULL,
password_hash TEXT,
role TEXT DEFAULT 'owner', -- owner | member
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (tenant_id) REFERENCES tenants(id)
);
CREATE UNIQUE INDEX idx_users_email ON users(tenant_id, email);
-- 订阅记录
CREATE TABLE subscriptions (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
plan TEXT NOT NULL, -- pro_monthly | pro_yearly
status TEXT NOT NULL, -- active | canceled | past_due
current_period_start DATETIME,
current_period_end DATETIME,
provider TEXT, -- stripe | iPay88 | manual
provider_subscription_id TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 用量配额(按月统计)
CREATE TABLE usage_monthly (
tenant_id TEXT NOT NULL,
year_month TEXT NOT NULL, -- '2026-05'
quotations_count INTEGER DEFAULT 0,
pdf_exports_count INTEGER DEFAULT 0,
storage_bytes INTEGER DEFAULT 0,
PRIMARY KEY (tenant_id, year_month)
);
-- 报价单(改造现有表,新增 tenant_id)
ALTER TABLE quotations ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'legacy';
CREATE INDEX idx_quotations_tenant ON quotations(tenant_id, created_at DESC);
ALTER TABLE quotation_items ADD COLUMN tenant_id TEXT NOT NULL DEFAULT 'legacy';
CREATE INDEX idx_items_tenant ON quotation_items(tenant_id);
-- 客户表(设计师管理自己的客户)
CREATE TABLE customers (
id TEXT PRIMARY KEY,
tenant_id TEXT NOT NULL,
name TEXT NOT NULL,
phone TEXT,
email TEXT,
address TEXT,
notes TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_customers_tenant ON customers(tenant_id);
迁移现有数据
把 HS Design 自己的报价数据迁移为一个特殊租户:
INSERT INTO tenants (id, subdomain, company_name, owner_email, plan)
VALUES ('tnt_hsdesign', 'hs', 'HS Design', 'admin@hsdesign.biz', 'pro');
UPDATE quotations SET tenant_id = 'tnt_hsdesign' WHERE tenant_id = 'legacy';
UPDATE quotation_items SET tenant_id = 'tnt_hsdesign' WHERE tenant_id = 'legacy';
之后 HS Design 自己用 hs.hsdesign.biz 访问,与平台其他租户使用同一系统 — 这是吃自己的狗粮,最有效的质量保证手段。
定价与商业模式
- 每月 100 份报价单
- 子域名工作区(
name.hsdesign.biz) - 自定义 logo + 主题色
- PDF 导出(带平台水印)
- Google AdSense 广告显示
- 1 个用户席位
- 无客户支持(仅文档与社群)
- 无项目管理(v2)
- 无 AI 助手(v3)
- 无限报价单
- 子域名工作区 + 自定义域名(v1.5)
- 自定义 logo + 主题色
- PDF 导出(无水印)
- 无广告体验
- 3 个用户席位(团队协作)
- 邮件客户支持(48h SLA)
- 项目管理模块(v2)
- AI 装修助手优先体验(v3)
定价依据
- RM 49/月 对马来西亚装修设计师属于"几顿饭钱",决策门槛低;同时高于 Notion (RM 35) 这类工具,体现专业属性。
- 年付折扣 17%(RM 490 vs 588)— 提升留存,降低月度流失风险。
- 100 份免费配额 可让大部分中小设计师"长期免费但顺便挂广告",是流量基础。一名活跃设计师月均 30–60 份报价,100 份额对真实使用者基本够用 → 留下中尾流量挂广告。
支付通道
| 方案 | 说明 | 建议 |
|---|---|---|
| Stripe | 国际信用卡,开发体验最佳 | v1 支持,支持外籍设计师 |
| iPay88 / Billplz | 马来西亚本地(FPX 直转、TnG) | v1.5 接入,本地用户首选 |
| 手动转账 | 微信/银行转账后人工开通 | MVP 即可上,0 开发成本 |
Google Ads / AdSense 集成方案
广告位规划(仅 Free 用户可见)
| 位置 | 尺寸 | 预期 CTR | 用户体验影响 |
|---|---|---|---|
| 仪表盘顶部横幅 | 728x90 / 自适应 | 0.3–0.8% | 低(首屏外) |
| 报价单列表侧栏 | 300x250 | 0.5–1.2% | 中 |
| 导出 PDF 后的回到列表页 | 插页式 | 1–3% | 高(需谨慎) |
| 设置页底部 | 自适应 | 0.2–0.5% | 低 |
收入预估(保守)
马来西亚 AdSense 单价较低,但装修家居类目相对高价值。粗略估算:
- RPM(每千次展示收入):RM 4–12
- 假设 1000 个免费设计师,月均每人产生 200 个页面浏览 → 200,000 PV/月
- 预估月广告收入:RM 800 – RM 2,400
这个数字告诉我们:广告不是主要收入来源,而是"免费用户的兜底变现 + 转化付费的微推动力"(用户嫌广告烦 → 升级)。
实现要点
// 只对 Free 用户加载 AdSense
function AdSlot({ slotId }) {
const { tenant } = useTenant();
if (tenant.plan !== 'free') return null;
return (
<ins className="adsbygoogle"
data-ad-client="ca-pub-XXXXXXXX"
data-ad-slot={slotId}
data-ad-format="auto" />
);
}
红线
✗ 广告不得出现在客户分享链接
quote.hsdesign.biz/q/abc 这种公开页 — 同上。✗ 不使用强制视频广告 / 弹窗广告 / 倒计时广告。
✓ 广告只出现在设计师自己的工作台,不影响其客户体验。
用户获客策略
这是这个项目的核心问题。下面按预期 ROI 从高到低排列:
1. SEO 长尾关键词 MVP 必做
装修设计师与他们的客户在 Google 搜什么?我们要排进首页:
- "装修报价单 模板 马来西亚" / "renovation quotation template Malaysia"
- "装修预算计算" / "kitchen cabinet quotation"
- "室内设计师 报价 系统" / "interior designer software"
- "装修 报价单 PDF 模板 免费"
策略:在主域名 hsdesign.biz/blog/ 持续产出"如何写装修报价单"、"装修单价参考表 2026"、"客户砍价应对话术" 等长文。每篇文末引导"用 HS Design 一键生成专业报价单 — 免费"。
资源投入:2–3 篇/周,6 个月可见明显效果。可用 AI 协助初稿,设计师本人审校(保真实性)。
2. 案例展示墙(病毒效应) MVP 必做
每个免费用户生成的报价单(在他们同意的情况下)会有"由 HS Design 制作"的水印 + 链接。当客户收到 PDF:
- 客户被精美排版打动 → 点击水印 → 进入平台 → 推荐给自己的设计师朋友
- 客户自己想做装修对比 → 注册成"业主版"(v2 拓展)
- 设计师之间互相看到同行用的工具 → 自然口碑
这是每一份导出的 PDF 都是一个广告位的原理。Calendly、Notion、Typeform 都是这么做大的。
3. 设计师社群渗透 MVP 必做
- Facebook 群组:"马来西亚室内设计师交流"、"装修业主分享"等群,定期分享干货+工具截图
- 小红书 / Xiaohongshu:马来西亚华人装修博主聚集地,发"我用了一个免费工具做报价,客户当场签单"类型内容
- Reddit r/malaysia / r/InteriorDesign:低频但精准
- LinkedIn:对接连锁装修公司的设计主管,做 B 端转化
4. 推荐返佣 v1.5
每位设计师推荐一位同行付费成功 → 自己下个月免费。规则简单透明:
- 用户专属推荐链接:
hsdesign.biz/?ref=designer-a - 被推荐人付费 → 推荐人获得 1 个月免费(最多累积 12 个月)
- 双向激励:被推荐人首月 50% 折扣
5. 内容合作 / KOL v1.5
- 找马来西亚装修类 YouTube / 小红书 KOL(5–50K 粉丝)合作软广 / 测评
- 给装修博客提供"专属推广码 + 30% 首年返佣"
- 赞助装修类播客单集
6. 直接 Google Ads 投放(付费搜索)v1.5+
购买 "装修报价软件"、"renovation quote tool" 这类词的搜索广告。预算控制在 RM 500–1500/月 起步,盯紧 CAC(获客成本):
- 目标:CAC < 3 个月 LTV(即 < RM 147)
- 转化路径:广告 → 落地页 → 注册免费 → 14 天后促销升级
7. B2B 合作 / 装修材料商 v2+
与马来西亚装修材料供应商(厨柜、瓷砖、灯饰)合作 — 把他们的产品库内置到报价单系统里:
- 设计师选材料 = 直接生成报价行 → 减轻设计师工作量 = 强力卖点
- 材料商按订单付佣金给平台
- 同时建立护城河,竞品难复制此供应链关系
技术栈选型
不选的方案与原因
- Next.js:SSR 在 Cloudflare 上有限制;SaaS 工作区是登录后内容,SPA 足够。
- Supabase:方便但与 Cloudflare 生态隔离;如果换库,迁移到 Neon 更顺手。
- Auth0 / Clerk:每月数百 RM,给马来西亚价位的 SaaS 太贵。Lucia 自建 1 周搞定。
- 独立 PDF 服务:每月成本高且慢;用 HTML 渲染足够 95% 场景。
报价单模板系统
用户已明确:模板标准化,租户不可改。这是好决策。具体落地:
模板类型(首期 3 套,覆盖主流场景)
| 模板 ID | 名称 | 适用场景 | 核心字段 |
|---|---|---|---|
tpl_basic | 简洁型 | 小型整改 / 单房间 | 项目分类、单价、数量、小计 |
tpl_full | 详尽型 | 整屋装修 | 分区域 + 工序 + 材料明细 + 工期 |
tpl_commercial | 商业空间 | 店铺 / 办公室 | 含工程进度款、付款节点 |
租户能控制的部分
- 选用哪个模板(每张报价单独立选择)
- 填什么内容(项目条目、单价、备注)
- 头部 logo + 配色(来自租户设置)
- 底部公司信息 + 签名(来自租户设置)
租户不能控制的部分
- 排版结构 / 字段位置
- 字体(除主题色外)
- 单位与计算方式(统一 RM、面积单位 sq.ft)
模板存储与升级
-- 模板表(平台运营,租户只读)
CREATE TABLE templates (
id TEXT PRIMARY KEY,
name TEXT,
description TEXT,
schema_json TEXT, -- 字段定义(JSON)
layout_html TEXT, -- 渲染模板(HTML+占位符)
version INTEGER,
is_active INTEGER DEFAULT 1
);
未来要升级模板时,新增 version,老报价单仍用老模板渲染(避免破坏历史数据)。
开发时间表
MVP 范围定义
✅ MVP 必须有
- 设计师注册 + 子域名创建
- Logo 上传 + 主题色设置
- 3 套标准报价单模板
- 报价单创建 / 编辑 / 删除
- 客户管理(基础 CRUD)
- PDF 导出(带 / 不带水印)
- 免费版 100 份/月配额
- AdSense 广告位
- 手动升级 Pro(联系客服)
❌ MVP 暂不做
- 多人协作 / 团队席位
- 自动续费支付
- 项目管理模块
- AI 助手
- 移动 App(用响应式 Web 即可)
- 第三方集成(如 WhatsApp / 邮件群发)
- 自定义模板编辑器
- 多语言(先做中英双语,马来文后续)
- API 给第三方
未来路线图
v2:项目管理模块 月 4–6
一个装修项目从签约到交付通常 2–6 个月,涉及大量文件、阶段、沟通。把项目作为顶层实体,报价单、施工图、文档、付款记录、客户沟通都挂在项目下。
| 子模块 | 核心功能 |
|---|---|
| 项目主页 | 项目概览、进度、关键日期、相关人 |
| 文档库 | 施工图(CAD/PDF)、效果图、合同、收据;按项目归类,R2 存储 |
| 报价单关联 | 一个项目可关联多版报价单(初版/修订版/最终版) |
| 付款进度 | 定金 / 工程款 / 尾款的发起与记录 |
| 客户分享 | 生成只读链接,客户在浏览器查看进度(无需账号) |
| 时间线 | 关键节点(开工 / 验收 / 完工) |
商业价值:项目管理把"用户从临时工具用户变成长期用户",付费转化率会显著提升。
v3:AI 装修问答助手 月 7–9
训练一个针对马来西亚装修场景的助手,回答设计师与业主的问题:
- "吉隆坡 1500 sq ft 公寓的厨柜大概多少钱?"
- "乳胶漆和墙纸的优缺点比较"
- "这份报价里 RM 8000 做电工合理吗?" — 基于平台数据回答
- "客户说要砍价 20%,怎么回应?"
训练数据来源(独家护城河)
- 平台累积的真实报价数据(脱敏后)
- Reddit / Lowyat / 小红书的装修讨论
- 马来西亚装修材料商的产品库 + 价格
- 合作专家(资深设计师、QS)的问答
技术方案
- 初期:用 OpenAI/Anthropic API + RAG(向量检索)
- 中期:基于 Llama / Qwen 微调一个领域模型
- 部署:Cloudflare Workers AI 或 Modal serverless GPU
商业模式
- Pro 用户每月 200 次免费
- 超出按量计费(RM 0.50/次)或升级 Pro+ 套餐
- "AI 报价审查" — 上传报价单让 AI 找出问题、优化建议(核心增值功能)
v4 之后的可能性
- 业主端入口(C 端):业主上传需求 → 平台匹配 3 位设计师投标 → 抽佣
- 装修材料市场:平台内嵌商城,材料商挂货,设计师下单抽佣
- 设计师培训 / 认证体系:付费课程、平台徽章
- 装修保险 / 担保交易:为业主提供工程款托管
风险与缓解
| 风险 | 影响 | 缓解策略 |
|---|---|---|
| 多租户数据泄露 关键 | 声誉毁灭 | scoped helper 强制注入;CI 静态扫描;定期红队测试 |
| 免费用户太多挤爆资源 | 成本失控 | D1 / R2 用量监控;Free 限 100 份;异常账号自动暂停 |
| AdSense 收入不及预期 | 免费用户无变现 | 把 AdSense 当兜底;不依赖广告收支平衡;持续推付费转化 |
| 付费转化率低(< 2%) | 无法增长 | MVP 后 8 周内必须做用户访谈;调整 Pro 卖点 |
| SEO 见效慢(6+ 月) | 初期增长缓慢 | 加大社群运营 + KOL 合作 + 案例水印病毒效应弥补 |
| 设计师不愿换工具 | 获客困难 | "导入旧报价单"功能;提供首月免费 Pro;强调"客户更专业的印象"卖点 |
| Cloudflare 服务异常 | 全平台不可用 | 每日 D1 备份到 R2;关键 API 加二级 fallback |
| 竞争对手出现 | 失去先发优势 | 护城河靠数据 + AI,越早累积越多;社群 + KOL 锁定关系 |
| 本地支付通道审核慢 | 付费上线延后 | MVP 用手动转账先跑通流程;Stripe 同步申请 |
用户核心问题答复
核心结论:先做能持续累积价值的渠道,再做付费投放。建议执行顺序:
- SEO 长尾内容(必做,6 个月见效但永久受益)— 详见上方"用户获客策略"。马来西亚装修类关键词竞争中等,本地中文内容稀缺,存在窗口期。
- 报价单水印病毒效应(产品自带获客)— 每份免费用户导出的 PDF 都是免费广告位。这是最低成本的获客渠道。
- Facebook 群组 + 小红书(高 ROI 社群)— 马来西亚华人装修圈活跃在这两个平台。每周 2–3 篇深度内容(不要硬广)。
- 推荐返佣(v1.5 后启用)— 设计师圈子小,口碑传播效率高。
- KOL 合作(有付费用户基数后)— 找 5–50K 粉丝的中腰部 KOL,比头部更精准、更便宜。
- Google Ads / Facebook Ads(最后做)— 当 LTV / CAC 模型跑通后再投。预算从小(RM 500/月)起步迭代。
额外建议:不要忽视 B 端。马来西亚有上百家中小装修公司,每家有 5–20 位设计师。说服一家公司用 = 一次获取一打用户。这种 B2B2C 模式的销售可以从月 3 起做。
简短回答:几乎不能。需要分清两件事。
"集成 Google Ads"在你的提问里有两种含义,要分开看:
含义 A:在自己网站展示 AdSense 广告(你目前的计划)
- 不带流量。AdSense 是把你站内的流量变现,钱从 Google 给你;而不是 Google 给你送流量。
- 本质:你把广告位卖给 Google,Google 替广告主把你的用户引导出去(点击离开你的站)。
- 对你的好处:免费用户的兜底变现(预估 RM 800–2400/月)+ 反向促进升级(用户烦广告 → 升 Pro 去广告)。
- 对你的坏处:会有少量用户被广告引走、报价单制作流程被打断。所以广告位规划必须谨慎(见上方红线)。
含义 B:购买 Google Ads 投放(搜索/展示广告)
- 能带流量,但要花钱。这是另一个方向 — 你给 Google 钱,Google 把搜"装修报价软件"的用户引到你的着陆页。
- 建议时机:不在 MVP 阶段做。先验证产品市场契合度(PMF)和付费转化率,否则只是把钱倒进无底洞。
- 建议时机点:付费用户 ≥ 50 个,留存率 ≥ 60%,能算出 CAC vs LTV 时再开。
- 建议预算:起步 RM 500–1500/月,盯 CAC < RM 150 这条线。
更可靠的"流量来源"排序:
- SEO(自然搜索)— 长期最大流量来源,完全免费
- 产品病毒效应(PDF 水印)— 每个用户都是渠道
- 社群 / KOL / 内容营销— 中等成本,质量高
- 推荐返佣— 边际成本低
- 付费投放(Google Ads / Facebook Ads)— 见效快但烧钱,PMF 后再开
建议的下一步行动
- 本周:评审本文档,确认范围、定价(RM 49 是否合适)、配额(100 份是否合适)。
- 下周:注册必要服务(Stripe Sandbox、AdSense、Resend、Sentry)、设计 logo + 营销主页 wireframe。
- 第 1–6 周:按上方时间表执行。
- 第 6 周末:邀请 10 位设计师内测,启动获客 plan。
- 每月 1 号:复盘 KPI(注册数、付费转化、月活、广告收入),调整策略。
需要你尽快决定的事
| 决策点 | 选项 | 建议 |
|---|---|---|
| 价格 | RM 39 / 49 / 69 | RM 49(中间档,留调整空间) |
| 免费配额 | 50 / 100 / 200 份 | 100 份(符合中尾设计师) |
| 支付通道 | Stripe / Billplz / 手动 | MVP 手动;月 2 起接 Billplz |
| Beta 用户来源 | 朋友圈 / 公开招募 | 10 位朋友圈定向邀请,有反馈渠道 |
| 主域名定位 | SaaS 入口 / HS 自家网站 | 改为 SaaS 入口,HS 用 hs.hsdesign.biz |
| 多语言 | 中 / 中英 / 中英马 | MVP 中英,马来文 v1.5 |