精華筆記

· @aihub.tw

AI SaaS 產品開發

綜合實戰:兩週上線覆盤與迭代

綜合實戰:兩週上線覆盤與迭代

五堂課下來,你有題目、有技術棧、有登入、有金流、有 AI 功能、有獲客策略。理論上,這些湊在一起就是一個產品。但大多數人在這裡卡住了——不是因為不懂,而是不知道「先做哪個」、「今天該做到哪裡」、「出了問題先修還是先繼續前進」。

這就是綜合實戰課要解決的問題。我們不再說「你應該做 X」,而是直接開一份日曆:D1 到 D14,每天做什麼、交出什麼成果、卡住了怎麼辦。上線之後,迭代節奏是什麼、成本怎麼試算、什麼時候該認賠放棄。都在這堂課。

這堂課適合誰 適合:已完成第 1–5 課、想把學到的東西整合做出真實產品並上線的人(本課屬工程師專區)。需要基礎:能使用 Next.js + Supabase + Claude API 串接,了解 git push 流程,有 Vercel 帳號。前置課:第 1–5 課(本課是整門課的綜合收尾)。

這堂學什麼

  • D1-D14 完整每日時間軸:兩週從零到上線的實際節奏,每天的可交付成果
  • 上線後迭代週期:怎麼把用戶回饋變成下一版的具體修改方向
  • 成本 vs 收入試算:幾個付費用戶才能打平,API 費用怎麼估
  • 誠實的放棄標準:三個時間點判斷是繼續、轉向還是收工
  • 六個最致命的常見坑,含具體錯誤訊息與逐步解法
  • 規模化下一步:從第一個付費用戶走到前 100 個的工具清單

D1-D14:兩週上線時間軸

D1-D14 兩週上線時間軸

兩週不是「隨意試試」的期限,是「刻意壓縮」的紀律。時間一拉長,功能範圍就會膨脹——你會在 D7 還在糾結某個 UI 細節,然後在 D14 還沒上線。以下時間軸是實際可行的最小路徑:每天的目標是「能跑通的東西」,不是「完美的東西」。

D1:選題確認 + 環境建好

上午用不超過半天確認你要做的題目。回到第 1 課的驗證框架,用一句話寫出來:

誰有什麼問題 → 我用 AI 幫他做什麼 → 他願意付多少錢/月?

這句話寫不出來,D2 就別開始。寫得出來,下午開環境:

# 建 Next.js 專案(App Router + TypeScript + Tailwind)
npx create-next-app@latest my-saas --typescript --tailwind --app
cd my-saas

# 安裝 Supabase client
npm install @supabase/supabase-js @supabase/ssr

# 安裝 Anthropic SDK
npm install @anthropic-ai/sdk

建好後立刻 git init + 第一次 commit。今天的 deliverable:本機跑得起來、git 有第一筆紀錄、選題那句話貼進 README。

D2-D3:核心 AI 功能跑通

第 4 課教過:AI 功能先做最醜的版本驗它能不能用,再做漂亮的 UI。D2 先把它做成 API route:

// app/api/core/route.ts
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

export async function POST(req: Request) {
  const { userInput } = await req.json();

  const message = await client.messages.create({
    model: "claude-sonnet-4-6",
    max_tokens: 1024,   // 先設低一點,避免費用暴衝
    messages: [
      {
        role: "user",
        content: `你的 system prompt 在這裡\n\n用戶輸入: ${userInput}`,
      },
    ],
  });

  return Response.json({ result: message.content[0] });
}

用 curl 打這個 API,確認輸出符合預期。D3 再接簡單的輸入框 UI——一個 textarea + 送出按鈕,能讓你自己操作就好。

D3 結束的標準:你自己能完整用過一次核心功能,而且輸出是你期望的結果。

D4:串登入 + 權限守門

第 3 課的 Supabase Auth 在這天接上去。重點不只是「登入成功」,還要確認未登入者打不到核心 API。用 Next.js middleware 在入口把關:

// middleware.ts
import { createServerClient } from "@supabase/ssr";
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";

export async function middleware(request: NextRequest) {
  const response = NextResponse.next();
  const supabase = createServerClient(
    process.env.NEXT_PUBLIC_SUPABASE_URL!,
    process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,
    { cookies: { /* cookie handlers */ } }
  );
  const { data: { session } } = await supabase.auth.getSession();

  // 核心功能路徑,未登入就擋回去
  if (!session && request.nextUrl.pathname.startsWith("/api/core")) {
    return NextResponse.json({ error: "請先登入" }, { status: 401 });
  }
  return response;
}

export const config = {
  matcher: ["/api/core/:path*", "/dashboard/:path*"],
};

今天的 deliverable:用測試帳號登入後可用 AI 功能;未登入打 API 收到 401。

D5:串金流(重要:不要留到最後)

很多人把金流留到 D13,結果上線時才發現審核要 1-2 週,這是整個時間軸最常見的致命踩坑(詳見常見坑第 1 條)。D5 就把申請送出去,同時用測試環境把付款流程跑通。

台灣市場 2026 年的主要選擇:

金流商 信用卡手續費 月費 台幣直撥帳戶
藍新 (NewebPay) 約 2.8% 支援
綠界 (ECPay) 約 2.875% 支援(永豐免手續費)
Stripe 2.9% + $0.30/筆 需美國公司

Stripe 目前(2026 年 7 月)仍不直接支援台灣本地公司開戶;想用 Stripe 必須先在美國設立公司。用台灣公司做台灣市場,選藍新或綠界。

今天的 deliverable:金流申請送出 + 測試環境付款成功並收到 webhook 通知。

D6-D7:UI 完善 + 全流程通測

D6 把 UI 做到「夠用的醜」:有登入頁、有核心功能頁、有定價頁(哪怕只有一個方案)。

D6 結束後,跑完整付費路徑測試,用一個新的 Incognito 視窗從頭走一遍:

開 Incognito → 首頁 → 點「開始使用」→ 建帳號 → 選方案
→ 付款(測試卡號) → 解鎖功能 → 用一次核心 AI 功能
→ 登出 → 重新登入確認還是付費用戶

這整條路要親自走一遍,任何一個環節卡住就是 D7 修的事。D7 是緩衝日,不要在 D7 加新功能——只修 D6 測出來的問題。

兩個日子的判斷邏輯:D7 結束時功能不夠完美沒關係,但「完整付費路徑能跑通」是不可妥協的底線。

D8:部署上線

第 5 課的 Vercel 部署流程在這天執行。部署前的核對清單:

□ .env.local 的每個變數都填進 Vercel Environment Variables
□ 生產環境的 Supabase URL 和 anon key 是正式專案(不是測試)
□ 藍新/綠界的 webhook URL 改成正式 domain
□ 本機先跑 npm run build,過了再 push
□ 用真實手機、不同網路測試正式網址
□ 用真實信用卡(自己的)完成一筆小額付款確認金流正常

最後一項非常重要——測試環境通不代表正式環境通,金流商的正式環境和沙盒有時設定不同。花 NT$1 確認它能跑,比上線後收到用戶投訴更值。

D9:Landing Page

第 5 課的獲客策略在這天落地。Landing Page 的最小結構:

  • Hero:一句話說清楚這個產品幫誰解決什麼問題
  • Features:3 個核心功能截圖或示意圖
  • Pricing:定價(就算只有一個方案)
  • FAQ:3-5 條常見問題

Landing Page 不需要漂亮,需要「清楚」。怎麼測試夠不夠清楚:找一個完全不知道你在做什麼的人,給他 10 秒看首頁,問他「你覺得這個產品在幫誰解決什麼問題?」答得出來就夠了。

D10-D11:邀測 + 首批回饋

邀 5 個你信任但不會濫好人的朋友測試。給他們一個具體任務,而不是一句「幫我試試看」:

任務說明:
你是一個需要[核心使用情境]的人。
請嘗試用這個產品完成[具體目標]。

用完後告訴我:
① 哪個地方讓你困惑或卡住?
② 你覺得最有用的功能是哪個?
③ 如果月費是 [你的定價],你會付嗎?

D11 整理回饋,只挑最高頻的 1-2 個問題修,其他先記下來。不要試圖一次全修——兩週能做到的事是有限的,選最痛的先動。

D12-D14:公開發布 + 觀察

D12 選一個你日常就在的社群發布:PTT 創業板、Dcard 職場板、LinkedIn、相關的 Discord 或 Slack 社群。不要寫廣告文——說你在做什麼、為什麼做、目前的狀態是什麼,附上連結。誠實的故事比行銷文案更有轉換率。

D13-D14 不要急著加功能。觀察三個數字:

點進首頁的人數 → 完成註冊的人數 → 付款的人數

這三個數字之間的掉落比例最能告訴你問題在哪。掉在「首頁→註冊」代表 Landing Page 沒說清楚;掉在「註冊→付款」代表定價或功能說服力不夠。D14 結束,你有第一批資料可以驅動下一個迭代。

上線後迭代節奏

上線不是終點,是「開始有真實資料可以做決策」的起點。推薦的迭代節奏是每兩週一個週期:

上線後迭代週期

值得做的回饋類型:

  • 3 個以上用戶獨立提出相同問題
  • 影響付費流程或核心功能的 bug
  • 流失用戶說「我因為 XXX 停用了」

先放著的回饋類型:

  • 只有一個人提的「如果能加 XXX 就好了」
  • 功能擴充請求(不是 bug)
  • 涉及大改架構的建議——在前 100 個付費用戶之前,讓現有功能更穩比加新功能更重要

回饋收集工具不需要複雜:在產品裡加一個最簡單的入口就夠了——一個 textarea 加送出按鈕,資料存進 Supabase 或寄到你的信箱。前 50 個用戶的回饋你應該逐字讀,不需要分析工具。

成本與收入試算

AI SaaS 成本結構與損益平衡試算

以下是 2026 年 7 月的實際數字:

費用項目 月費 備註
Vercel Pro $20 USD/人 商業用途必須升 Pro,Hobby 不能跑正式生意
Supabase Pro $25 USD/月 Free tier 足夠 ≤50 MAU,但有 project paused 陷阱
Claude Sonnet 4.6 API 約 $3/百萬 input token 每用戶每月 100 次呼叫,每次 500 token ≈ $0.15/人
藍新/綠界手續費 約 2.8%/筆 無月費,按收款金額計
網域 ~NT$500/年 摺算約 NT$42/月

損益平衡試算範例(月訂閱 NT$299/人):

固定成本:Vercel $20 + Supabase $25 ≈ NT$1,440/月
每人 API 成本:100 次 × 500 token × $3/百萬 ≈ NT$4.5/人
每筆手續費:NT$299 × 2.8% ≈ NT$8.4/人

每人淨利:NT$299 - NT$4.5 - NT$8.4 ≈ NT$286/人
損益平衡:NT$1,440 ÷ NT$286 ≈ 6 人

6 個付費用戶就能覆蓋固定成本,這是 AI SaaS 的優勢:邊際成本低,做到收入>固定成本的門檻並不高。但要注意 API 費用是完全跟用量走的——第 4 課的 token 控管在這裡直接影響利潤率。有用戶狂用但你的 prompt 沒設 max_tokens,一個月的 API 費用可以把好幾個月的利潤吃掉。

何時該放棄或轉向

這是整堂課最難寫、也最重要的一節。創業課通常不說這個,但如果不說,你只能靠「感覺」決定繼續還是放棄——而感覺通常告訴你「再撐一個月」,直到你把熱情燒完。以下是三個誠實的時間點判斷:

放棄或轉向決策樹

D14(上線兩週): 你邀了 5 個朋友測試,這 5 個人裡如果沒有任何一個完成付款——哪怕是朋友支持你——是非常強的訊號。不代表立刻放棄,而是「問題描述或定價有根本問題」。這時候要做的是回到第 1 課重新驗假設,而不是加功能。

第 6 週: 如果有人付費,但 6 週後沒有人續費(或大多數人要求退款),問題通常不在行銷,在產品核心——它解決的問題沒有嚴重到讓人願意持續付錢。這個訊號比「沒人付錢」更難面對,因為你知道問題出在核心假設,要改就要大改。

第 3 個月: 根據 2026 年 ChartMogul 的資料,月費低於 $50 USD 的 AI 工具年度毛收入留存率(GRR)只有 23%——大量「AI 觀光客」嘗試一個月後離開。如果 3 個月後 MRR 還是零,且沒有任何回饋告訴你「我想用但是 XXX 讓我沒辦法繼續」,就是認真考慮放棄的時候。

放棄不等於失敗。 一個做完、上線、有真實用戶回饋的產品讓你學到的,遠比另開十個沒做完的多。帶著這次做出來的東西去找工作、接案、或繼續下一個想法——這本身就是一個很強的作品集。

常見坑總整理

坑 1:金流審核比你預期晚兩週

症狀:D12 準備公開發布,才發現藍新帳號還在「審核中」,正式環境無法收款。藍新和綠界對新申請帳號需要 5-10 個工作日審核(連假前後更長),審核期間只能用測試沙盒,真實用戶無法付款。

解法:D5 就送出申請,不要等到 D10 之後。送出後繼續在沙盒環境開發,審核通過再替換正式 API key。時間軸把金流排在第 5 天就是因為這個原因。


坑 2:API 費用在上線後 48 小時暴衝

症狀:收到 Anthropic 帳單通知或 spending limit 警示,費用是預期的 5-10 倍。常見原因:沒設 max_tokens(模型輸出不受控)、前端重複送出請求(沒有 loading state)、或被惡意用戶循環打 API。

解法:三道防線一起上:

// 1. 永遠設 max_tokens
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 800,   // 絕對不要省略這行
  // ...
});

// 2. API route 加速率限制(用 Redis 或 Supabase 記錄每分鐘請求數)
// 3. Anthropic Console → Billing → Spend limits 設月度上限
//    超過上限後 API 自動停用,這是最後的保命機制

坑 3:Supabase Free Tier 的 project paused 陷阱

症狀:某天早上用戶回報「登入失敗」,打開 Supabase dashboard 看到:

Your project is paused.
Inactive projects on the Free plan are paused after 7 days of inactivity.
Click "Restore project" to resume.

恢復要等 2-5 分鐘,這段期間整個產品無法使用。對付費用戶來說這是不可接受的。

解法:有任何付費用戶後就立刻升到 Pro($25/月)。或者如果你想省這筆錢,設一個每 5 天打一次 Supabase API 的 cron job 讓它不進入閒置判斷——但坦白說,有在收錢的產品升 Pro 是正確的選擇。


坑 4:middleware 設錯,未付費用戶繞過存取了付費功能

症狀:用戶回報「我沒付錢也可以用」,或你自己測試發現。常見原因是 middleware 的 matcher 路徑沒寫對,或某些 route 用了 export const dynamic = 'force-static' 讓 middleware 失效。

解法:除了 middleware 層,核心 API route 裡一定要再做一次 server-side 驗證,永遠不信任 client 傳來的「這個用戶是付費的」:

// app/api/core/route.ts
export async function POST(req: Request) {
  const supabase = createServerClient(/* ... */);
  const { data: { session } } = await supabase.auth.getSession();

  if (!session) {
    return Response.json({ error: "請先登入" }, { status: 401 });
  }

  // 查 DB 確認付費狀態,不依賴 client 傳來的資訊
  const { data: subscription } = await supabase
    .from("subscriptions")
    .select("status")
    .eq("user_id", session.user.id)
    .single();

  if (subscription?.status !== "active") {
    return Response.json({ error: "請先訂閱方案" }, { status: 403 });
  }

  // 通過才執行 AI 功能
}

middleware 是第一道門,server-side 驗證是第二道門。兩道都要有。


坑 5:定價訂太低,留存反而更差

症狀:月費訂 NT$49,以為「門檻低、好轉換」,結果留存率慘不忍睹。根據 2026 年的 SaaS 資料,月費低於 $50 USD 的 AI 工具年度 GRR(毛收入留存率)只有 23%——大量用戶嘗試一個月後不續。

原因:太便宜讓人把它當「試玩」而不是「解決問題的工具」,用完一個月沒有深度使用就取消。月費 NT$299-599 的產品,用戶因為已付較多錢反而會認真嘗試用出效果,進而留存。

解法:定價從解決問題的價值出發,不是從「我希望降低門檻」出發。如果你的產品能幫用戶一個月省 4 小時,NT$299 是非常合理的定價。


坑 6:.env 檔案推進 git,API 金鑰外洩

症狀:push 後收到 GitHub 警告郵件「We found a potential secret in your repository」,或 Anthropic 發信通知金鑰可能外洩。

先換鑰匙,再滅火——這個順序不能錯:

# 第一步:立刻去 Anthropic Console 把這把 key revoke,換一把新的
# https://console.anthropic.com → API Keys → Revoke

# 第二步:讓 git 停止追蹤 .env 相關檔案
echo ".env" >> .gitignore
echo ".env.local" >> .gitignore
git rm --cached .env .env.local
git commit -m "fix: remove env files from tracking"
git push

為什麼先換 key:就算你之後把檔案從 git 歷史清除,這把 key 在那段時間已經公開了,機器人 24 小時在掃 GitHub 找外洩的 key。舊 key 一定要作廢,換新的才是安全的。

作業

  1. 今天就動手:用 D1-D14 時間軸,把你的題目填進去——每天的「交出什麼」寫成一句話。不動手的作業是最沒用的作業。
  2. 打開你的 Supabase dashboard,確認有沒有付費用戶在 Free Tier 上——如果有,今天升 Pro。
  3. 把成本試算表填成你自己的版本:你的定價是多少、幾個用戶才損益平衡、每個用戶的 API 成本你怎麼估。
  4. 選定你要在 D12 發布的社群頻道,現在就把帳號準備好(不是 D12 那天才開始想)。

下一步:規模化資源

這是這門課的最後一堂。你現在有了一個上線的產品、第一批用戶資料、以及迭代的節奏。從「活著」到「規模化」是另一段旅程,以下是繼續走下去實際有用的資源:

從 MVP 到規模化的升級路徑

產品分析與錯誤追蹤:

  • PostHog:開源的產品分析工具,有 Next.js SDK,Free tier 每月 100 萬事件,足夠早期用
  • Sentry:錯誤追蹤,出問題你比用戶更早知道;Free tier 5,000 錯誤/月

串流回應(讓 AI 輸出即時顯示):

  • Vercel AI SDK:Next.js 官方推薦,把 AI 回應做成 streaming,用戶不用盯著空白等全部輸出完

用量計費(usage-based billing):

  • Lago:開源的 usage-based billing 引擎,需要按 token 或用量向用戶收費時的解法

定價策略: 根據 2026 年的趨勢,43% 的 SaaS 公司已採用混合定價(固定基本費 + 用量計費),預計年底前升到 61%。如果你的產品用量差異大,值得考慮加入用量上限和超用計費,比單一月費的留存更好。


前五課的所有碎片,在這堂課拼成了一個完整的產品開發流程。這門課教的不只是「怎麼做 AI SaaS」,而是「怎麼用最短的時間知道你的想法值不值得繼續做」。兩週、一個上線、幾個用戶、幾筆真實資料——這就是你需要的全部。接下來,讓資料說話。

#AI SaaS#產品開發#上線#迭代#覆盤

← 回所有文章