這站每篇文章的封面圖都是 API 生的(tools/make-cover.js),累積 20 張。最近想確認「有沒有更便宜的平台」,把 Google、fal.ai、Replicate、Together AI 的價目表全部攤開對完之後,結論跟原本想的不一樣:
價差主要不是來自平台,而是來自計費單位。 同一個開源模型 FLUX.1 [schnell],在三個平台的實際單價差到兩倍,而三家的表定價格幾乎一樣。關鍵在這站的封面圖是 1376×768 = 1.057 MP,只超過 1 MP 門檻 5.7%,就足以讓「按 MP 無條件進位」的平台收兩倍的錢。
順帶驗掉一個直覺:把 Gemini 模型掛在 fal.ai 上跑不會比較便宜,而是貴 25%。轉售就是轉售。
一、先確認現況:這個站到底在花多少錢
不查價目表,先看程式碼在呼叫什麼。tools/make-cover.js 的預設值:
1 | const model = args.model || 'gemini-3.1-flash-lite-image'; |
搭配 response_format 裡的 aspect_ratio: '16:9'。也就是 Nano Banana 2 Lite,Gemini 家族最便宜的生圖模型。
母檔留在 assets/covers-original/(已 gitignore),直接解 JPEG header 拿實際尺寸:
1 | batch-loop-db-cache.jpg 1376x768 1.057 MP 458KB |
1376×768,每張都一樣。 這個數字等一下會變成整篇文章的關鍵。
Google 按 output token 計價,跟實際像素無關,只看 image_size 檔位:1K 一張固定 1,120 tokens,費率 $30 / 1M tokens,所以一張是 1120 × 30 / 1000000 = $0.0336,約台幣 1.05 元。站上 20 張 ≈ $0.67(NT$21)。含試錯重生的次數,撐死一杯咖啡。
二、把四家的價目表攤開
驗證過的數字(1K、16:9、單張):
| 平台 | 模型 | 表定價格 | 計費單位 |
|---|---|---|---|
| Google 直連 | Gemini 3.1 Flash Lite Image | $30 / 1M tok | token(檔位) |
| Google 直連 | Gemini 3.1 Flash Image | $60 / 1M tok | token(檔位) |
| Google 直連 | Gemini 3 Pro Image | $120 / 1M tok | token(檔位) |
| fal.ai | Nano Banana 2 Lite | $37.50 / 1M tok | token |
| fal.ai | FLUX.1 [schnell] | $0.003 / MP | MP,進位 |
| fal.ai | FLUX.2 | $0.012 / MP | MP |
| fal.ai | Qwen-Image | $0.02 / MP | MP,進位 |
| fal.ai | Seedream V4 | $0.03 / 張 | 張 |
| Replicate | FLUX schnell | $3.00 / 1000 張 | 張 |
| Replicate | FLUX dev | $0.025 / 張 | 張 |
| Replicate | FLUX 1.1 pro | $0.04 / 張 | 張 |
| Together AI | FLUX.1 [schnell] | $0.0027 / MP | MP |
| Together AI | FLUX.1 [dev] | $0.0154 / 張 | 張 |
第一眼看起來,fal 的 schnell($0.003/MP)最便宜。這就是陷阱所在。
三、第一個陷阱:同一個模型,轉售平台只會更貴
先處理最單純的一項。fal.ai 上確實有 google/nano-banana-2-lite,也就是這站現在用的同一個模型。價格是 $37.50 / 1M image output tokens,而 Google 直連是 $30.00。
| 走法 | 費率 | 1K 一張 |
|---|---|---|
| Google 直連 | $30 / 1M tok | $0.0336 |
| fal.ai 轉售 | $37.50 / 1M tok | $0.042 |
貴 25%。 而且 fal 的這個端點固定輸出 1024×1024,連 16:9 都拿不到。
這其實是合理的:fal 自己也要付 Google 的錢,中間那 25% 是它的營收。所以「改用 fal 省錢」如果指的是繼續跑 Nano Banana,方向從一開始就錯了——多繞一層、多付錢、還少一個尺寸選項。
要省錢就得換模型,而換模型跟平台是誰無關。
四、第二個陷阱:1.057 MP
換模型的話,最便宜的候選是 FLUX.1 [schnell]。但這裡有個要命的細節,fal 的模型頁寫得很清楚:
Your request will cost $0.003 per megapixel. Images are billed by rounding up to the nearest megapixel.
無條件進位。而這站的封面圖是 1.057 MP。
1.057 進位 = 2。 只超過門檻 5.7%,付兩倍的錢。
把這條規則套回價目表,同一張 1376×768 的圖:
| 平台 | 模型 | 表定 | 實際付 | vs 現況 |
|---|---|---|---|---|
| Replicate | FLUX schnell | $0.003 / 張 | $0.003 | −91% |
| Together AI | FLUX.1 schnell | $0.0027 / MP | ~$0.003 | −91% |
| fal.ai | FLUX.1 schnell | $0.003 / MP | $0.006 | −82% |
| Google 直連 | Flash Lite(現況) | — | $0.0336 | — |
| fal.ai | Qwen-Image | $0.02 / MP | $0.04 | +19% |
兩個反直覺的結果:
- 同一個開源模型,Replicate 比 fal 便宜一半。 不是因為 Replicate 有折扣,純粹因為它按張計費($3.00 / 1000 張),不管你的圖是 0.9 MP 還是 1.05 MP。
- Qwen-Image 表定 $0.02/MP 看起來比現況便宜,實際付 $0.04,比現況貴 19%。 只看表定價格會做出完全相反的決定。
所以真正該問的不是「哪家便宜」,而是**「我的圖幾 MP、這家怎麼進位」**。
順帶一提,如果哪天真的要換到按 MP 計費的平台,換之前該做的第一件事不是選平台,是把輸出尺寸壓到 1 MP 以下:1280×720 = 0.92 MP,落在第一個級距內,直接省一半。對部落格封面來說,版面寬度撐死 800px,1280 寬綽綽有餘。這比選哪一家重要得多。
五、那到底誰 CP 值最高?
分場景,因為答案不只一個:
| 場景 | 最佳選擇 | 理由 |
|---|---|---|
| 大量產圖(月產千張以上) | Replicate FLUX schnell | $0.003/張,按張計費不會被尺寸咬 |
| 要試很多種模型 | fal.ai | 一把 key 打遍所有模型,省的是時間不是錢 |
| 要 Gemini 系列 | Google 直連 | 轉售必貴,沒有例外 |
| 低量、要風格一致 | 維持現狀 | 見下 |
這個部落格屬於最後一種。把年度成本算出來就知道為什麼:
| 方案 | 每張 | 一年 50 張 | 年省 |
|---|---|---|---|
| 現況(Google Flash Lite) | $0.0336 | $1.68(NT$53) | — |
| 換 Replicate schnell | $0.003 | $0.15(NT$5) | NT$48 |
一年省不到台幣 50 元。 這個數字不足以支撐任何工程決策。
六、換平台的真實代價
省 NT$48 要付出什麼:
腳本要重寫。 現在的 generate() 是一次同步 POST,直接從回應拿 base64:
1 | const img = (body.steps || []).flatMap((s) => s.content || []).find((c) => c.type === 'image'); |
fal 是 queue-based(submit → poll 或 webhook),回傳的是圖片 URL 不是 base64;Replicate 的 prediction API 同樣要輪詢。整個函式加錯誤處理都得改,還要多一把 key、多一個帳號要儲值。
風格會斷層。 20 張封面已經是同一套 STYLE 產出的視覺語言,換模型等於往後的圖跟前面的對不上。這個代價無法用錢衡量,而且不可逆——除非把舊的 20 張全部重生(那又是一筆錢跟一個下午)。
STYLE 裡的 no-text 是硬需求,而且沒驗過。 腳本的 STYLE 結尾寫著:
1 | Absolutely no text, no letters, no numbers, no labels, no watermarks anywhere in the image. |
這條不是偏好,是這個腳本的設計前提(檔頭註解寫得很清楚:中文字形準確率不穩,所以乾脆全面禁止)。FLUX schnell 對這種否定式指令的遵循度我沒有實測過,不能宣稱它比較差——但這正是換之前必須先驗的一件事。只要它有一定機率糊出假字母,退貨重生的次數就會吃掉一部分價差,而且吃掉的是時間不是錢。用 NT$48 去賭一個未知數,划不來。
七、真正值得評估的優化
如果目標真的是省這筆錢,有一個不用換平台、不用換模型、不用重寫風格的選項:Google 的 Batch 模式。
| 模式 | 費率 | 每張 |
|---|---|---|
| Standard(現況) | $30 / 1M tok | $0.0336 |
| Batch | $15 / 1M tok | $0.0168 |
直接半價,而且是同一個模型、同一套 STYLE、同一種視覺語言,零風格風險。 這是這次對價過程裡唯一在技術上乾淨的省法。
但它的代價一樣真實:Batch API 是非同步的,作業最長可能排到 24 小時才回。而封面圖的實際流程是「生完馬上看,不喜歡就改 prompt 重生」——一個要等一天才知道結果的迴圈,會把原本五分鐘的事變成三天。
為了省 NT$26 讓迭代週期從五分鐘變成一天,這筆交易比換平台更糟。
所以決策樹跑完是這樣:
flowchart TD
Q([想省生圖的錢]) --> A{換平台跑
同一個模型}
A -->|fal 轉售| X1["貴 25%,否決"]
A -->|否| B{換更便宜的模型}
B -->|是| C{目標平台
怎麼計費}
C -->|按 MP 進位| X2["1.057 MP 算 2 MP
先把尺寸壓到 1 MP 以下"]
C -->|按張| D["年省 NT$48
代價:重寫腳本 + 風格斷層"]
B -->|否| E{改用 Batch}
E -->|是| X3["省一半,但迭代
從 5 分鐘變 1 天,否決"]
E -->|否| F([維持現狀])
D --> G{值得嗎}
G -->|這站的量級| F
G -->|月產千張| H([換 Replicate])
結論
CP 值最高的平台不存在,只有 CP 值最高的組合。 而這次對價真正的收穫不是價格表,是三件可以帶走的事:
- 轉售平台不會比原廠便宜。 想用某家的模型就去那家直連,fal 這類聚合平台的價值在「一把 key 試遍所有模型」,那是省時間不是省錢。
- 看計費單位,不要看表定單價。 按張 / 按 MP 進位 / 按 token 檔位,是三種完全不同的東西。Qwen-Image 表定比現況便宜,實際貴 19%,價差整整來自那 0.057 MP。
- 先算年度總額再決定要不要優化。 這站一年 $1.68,最極端的優化省下 NT$48。任何需要改程式碼的方案,光是寫的時間就已經超過它一輩子能省的錢。
至於這站的封面圖,維持 gemini-3.1-flash-lite-image 不動。真要動的理由應該是「想換一種視覺風格」,那時候值得比的是 Seedream V4($0.03/張)或 FLUX.2($0.012/MP)這種同價位、不同美感的選項——schnell 那個價差在這個量級構不成理由。
延伸閱讀:
- 封面圖轉 WebP 省 91%:順便算清楚 Cloudflare Pages 的免費額度——生出來之後的那一段,壓縮與流量額度
- 用 Hexo + GitHub + Cloudflare Pages 免費架部落格——這個站的整體架構
留言