TinyPilot:第 17 個月
一句話總結
移除一個連結如何帶來 62% 的銷售成長
重點摘要
- TinyPilot 的銷售額躍升至 57,000 美元,而且可能是可持續的。
- 我即將推出 TinyPilot 的新產品與新品牌識別。
- 我在副業專案上的 Google Cloud Platform 費用降低了 90%。
目標成績
每個月月初,我都會宣告想完成的目標。以下是本月的達成狀況:
完成 TinyPilot 網站的品牌重塑
- 結果:品牌重塑已完成 95%,但尚未發布。
- 評分:B
我已經與設計公司確定了標誌概念與配色方案,但在正式推出新品牌識別之前,我們仍在調整一些細節。
硬體就緒後盡快準備 Voyager 2 上市
- 結果:一切就緒,收到硬體後一週內即可上市
- 評分:A-
為了取得 Voyager 2 所需的客製化硬體,我們經歷了一段漫長的奮鬥,不過上週已完成製造並收到首批硬體,所以應該本週就能準備好上市。由於我們一直在努力跟上 Voyager 1 的需求,進度比預期稍有落後,但應該只會延遲一兩天。
聘請行銷公司或自由接案者,協助 TinyPilot 探索付費行銷管道
- 結果:因優先順序改變而暫緩
- 評分:N/A
我和幾家行銷公司談過,但還沒準備好聘用任何人。目前光是要跟上 TinyPilot 不斷成長的銷售就已經很吃力,所以我暫停行銷計畫,專注於擴大產能以滿足現有需求。
TinyPilot 數據
| 指標 | 2021 年 10 月 | 2021 年 11 月 | 變化 |
|---|---|---|---|
| 不重複訪客 | 6,898 | 7,983 | +1,085 (+16%) |
| 總瀏覽次數 | 13,008 | 14,596 | +1,588 (+12%) |
| 銷售營收 | $34,927.55 | $56,626.33 | +$21,698.78 (+62%) |
| 企業訂閱 | $48.00 | $47.75 | -$0.25 (-1%) |
| 權利金 | $6,804.53 | $8,185.78 | +$1,381.25 (+20%) |
| 總營收 | $41,780.08 | $64,859.86 | +$23,079.78 (+55%) |
| 利潤 | $1,936.22 | $12,758.39 | +$10,822.17 (+559%) |
縮減至單一產品讓銷售額幾乎翻倍
由於供應短缺,我在 10 月停售了 TinyPilot 較低價的產品,專注於我們的高階產品 TinyPilot Voyager。這使得產品目錄只剩下 Voyager 和一些銷售量不大的配件,因此我決定廢除產品目錄頁面。
基本上,我只是在網站的導覽列上移除了一個連結。
我在 TinyPilot 網站上做過影響最大的改變,就是移除導覽列上連向產品目錄頁面的連結。
在上個月的回顧中,我提到我開始看到銷售呈現上升趨勢,並好奇這是否與簡化產品組合有關。經過一個月額外數據的驗證,我相當確信這帶來了巨大的差異:

將網站整合為單一產品前後,TinyPilot 的每週銷售額
我們以前也曾出現銷售高峰,但總是伴隨著某個明顯的事件,例如在 YouTube 上被提及或在熱門網站上獲得評測。銷售額會飆升,然後慢慢回落。
自從整合為單一產品後,銷售額一直維持在過去高峰的水準,只是不像一次性事件那樣逐漸下滑。
如果我的判斷正確,銷售成長是來自於移除產品目錄頁面,那麼這將是我在 TinyPilot 上做過投資報酬率最高的舉措。我僅僅移除一個連結,就獲得了 62% 的銷售成長!
成長陣痛再度來襲
在 TinyPilot 的前六個月,我總是手忙腳亂地跟上成長。銷售額每四到八週就翻倍,因此我必須不斷尋找新的供應商並重新設計流程來擴大業務規模。這樣的成長雖然令人振奮,但也讓人筋疲力盡。在 2021 年的大部分時間裡,能穩定在一個更一致、可預測的步調,我感到很慶幸。
最近的銷售成長又帶來了一些成長陣痛。我們針對銷售暴增有應變計畫,今年以來也發揮了很好的作用,但我們並沒有針對這種持續性成長的計畫。
電源連接器快用完了
首先,我們注意到電源連接器的消耗速度很快,在下一批電路板到貨前就會用完,這將導致我們無法銷售 Voyager。

我們差幾天就要把 TinyPilot 電源連接器用完了。
我將它們標示為單獨販售缺貨,這才剛好放慢了消耗速度,讓庫存撐到新貨到達。
[附註:如果你好奇為什麼我還在販售電源連接器,儘管我剛大力強調不再販售 Voyager 以外的任何產品,我可以解釋。透過我的DIY TinyPilot 指南,仍有一些連結連向 TinyPilot 的次要產品,但使用者若只是瀏覽 TinyPilot 網站,並不容易發現這些頁面。]
排線快用完了
接著,我們的排線也開始短缺。我們通常大量採購,手邊的庫存很多,多到不值得在庫存系統中追蹤。但正因為沒有追蹤,我們沒注意到上一筆訂單延遲了。庫存只剩下 30 條,只夠製作幾天的 Voyager。

TinyPilot 的銷售差點因為 70 公釐排線用罄而停擺。
我們使用的是非標準尺寸的排線,所以必須特別訂製。難道我得因為排線這種小東西而暫停銷售數週嗎?
幸好,供應商能夠加速處理我們的訂單,在幾天內就送來了新的排線。我也恐慌性地加購了 1,500 條,所以短期內應該沒問題了。
此外,我們將開始在正規的庫存系統中追蹤這些排線。我們意識到,非正式的追蹤方式讓我們難以分辨「可以悠閒下新訂單的時候」和「這是緊急狀況!」之間的差別。
擴大 3D 列印產能
最後一項短缺是我們仍未解決的問題:外殼。我們一直採用 3D 列印來製作外殼,因為這讓我們能靈活地快速迭代。我們使用的 3D 列印材料具有高級質感,經常收到客戶與評測者對外殼品質的正面回饋。
問題在於 3D 列印速度很慢,尤其是我們使用的材料。列印一個 Voyager 1 的外殼需要八小時,Voyager 2 則需要十二小時。我們的 3D 列印供應商已為我們增購了一台印表機,但我預期切換到 Voyager 2 後,還是會超過新的產能。可惜的是,供應商不可能每次我們銷售成長就購買新印表機。
短期內,TinyPilot 的歐盟經銷商改為在當地自行列印外殼,而非向我們採購,因此將我們的列印負擔減輕了約 30%。長期來看,我正在與 3D 列印供應商合作,探索其他列印速度更快但仍具高級質感的材料。也可能是時候重新考慮射出成型了,這項技術前期成本為 2 萬至 4 萬美元,但每週可產出數千個外殼。
將我的副業專案從 Google Cloud Platform 遷移出來
在這些回顧中,我主要聚焦於本業,但過去這個月,我在將副業專案從 Google Cloud Platform(GCP)遷移出來的過程中倒是樂在其中。
大約八年前我開始使用 GCP。當時大多數雲端供應商託管一個網頁應用程式要收取每月 10 至 20 美元。Google 的服務如 AppEngine 和 Firebase 可以為小型專案縮減至每月 0 美元,這讓實驗變得很有吸引力。如果我知道不必承諾無限期每月支付 20 美元,我就更有可能發布新專案。
如今,GCP 通常不是小型專案的理想解決方案。服務過於臃腫複雜,以至於我光是為了建立並部署一個基本的網頁應用程式,就得花大約一小時擺弄設定與權限。幸好,現在有許多優秀的 GCP 替代方案,能提供更低的成本、更好的開發體驗,以及更優越的客戶支援(我的意思是,任何客戶支援都算優越)。
因為我使用 GCP 已久,許多副業專案仍在 Google Cloud Platform 上運行,並持續累積越來越多的服務費用。上個月我利用晚上與週末的時間,將最昂貴的服務從 GCP 遷移出來。
以下是在大遷移之前,我的 GCP 費用狀況:

2021 年 8 月至 10 月在 GCP 上託管副業專案的費用
而這是遷移完成後的費用狀況:

11 月遷移至 Google Cloud 替代方案後,Google Cloud 服務的費用
HTTP 負載平衡 - 每月 37 美元
HTTP 負載平衡是個大陷阱。
在 What Got Done 和WanderJest 上,我讓使用者上傳圖片,然後將上傳的檔案儲存在 Google Cloud Storage(GCS)儲存桶中。預設情況下,GCS 的網址是一長串難看的網址,例如 https://storage.googleapis.com/whatgotdone-public/...。我想要一個像 https://media.whatgotdone.com 這樣簡潔俐落的網址。
這個簡單的80 步驟流程說明了 Google 從子網域提供 GCS 檔案的做法。這涉及配置一個靜態 IPv4 位址、設定 HTTP 負載平衡器,以及產生 TLS 憑證。我照著所有步驟操作,卻沒意識到每個網站的負載平衡器會讓我的成本增加約每月 18 美元。
我透過改用BunnyCDN 大幅降低了這項成本。我原本擔心設定整個 CDN 會很麻煩,結果卻異常簡單。在發現 BunnyCDN 這項服務不到 30 分鐘後,它就已透過 media.whatgotdone.com 網域來提供我的 Google Cloud Storage 儲存桶內容。我只需要告訴 Bunny 我的 GCS 儲存桶網址和想要的子網域,然後新增一筆 DNS 紀錄即可。

BunnyCDN 讓我僅用三個步驟就能為 GCS 儲存桶自訂網域名稱。
BunnyCDN 的最低收費總計為每月 1 美元,而 Google 則是每個網站約每月 18 美元。我遠低於最低收費門檻。到目前為止我只用了 78.55 MB 的頻寬,費用約為 0.0008 美元。即使超過 BunnyCDN 的最低額度,其頻寬價格也不到 Google 的十分之一。
頻寬 - 每月 21 美元
我的對外頻寬費用主要來自這個部落格和Is It Keto。我原本將這兩個網站託管在 Google Firebase 上,其頻寬費用為每 GB 0.15 美元。我的網站總共每月提供約 150 GB 的頻寬,但部落格讀者的激增可能會讓這個數字增加三倍。
我曾尋找其他靜態檔案託管服務,但不知為何,幾乎每家靜態託管供應商都想接管整個持續整合(CI)工作流程。我不想要那樣。我想用 CI 廠商來做 CI,用託管服務商來做託管。
我過去曾研究過Netlify,但當時將它視為「堅持要當你的 CI」的託管服務而予以排除。後來,Siddhant Goel(席德漢特·戈埃爾)告訴我關於 Netlify 的「手動建置」模式,它可以跳過所有那些 CI 的繁瑣流程。他們有每月 19 美元、包含 400 GB 頻寬的方案,超過後每 GB 0.20 美元,因此即使在訪客大量湧入的罕見月份,我每月也只需支付約 20 美元。
AppEngine - 每月 13 美元
我最後一筆可觀的費用是 What Got Done 的 AppEngine 託管。多年來費用約為每月 2 美元。到了 7 月,帳單突然飆升至每月 10 至 15 美元,我也不知道原因。
幸好,What Got Done 是一個標準的 Go 網頁應用程式,所以不一定需要在 AppEngine 上運行。較難處理的依賴是 Google Firestore 資料庫。我本可以分別遷移 AppEngine 和 Firestore,但處理 Google 服務帳號與權限實在太麻煩,所以我決定一次徹底擺脫這兩項服務。
為了取代 Firestore,我使用了SQLite 和Litestream。SQLite 是一個將所有資料保存在單一檔案中的簡易 SQL 資料庫。Litestream 則是將 SQLite 資料庫同步至雲端的工具。我曾使用這些相同的技術來建立 LogPaste,效果很好,因此想進一步投入。
為了取代 AppEngine,我使用了fly.io。過去一年我一直在試驗 fly.io,體驗始終很好。他們的文件清晰,工具的運作符合預期,而且創辦人與首席工程師們都會在他們的支援論壇上積極互動。
我遷移至 fly.io 主要是為了降低成本並獲得廠商獨立性,但這些改變最終也大幅提升了效能。在我遷移至 SQLite 與 fly.io 後,What Got Done 的大多數 API 請求速度提升了 2 至 20 倍。
| 請求 | AppEngine 延遲(毫秒) | fly.io 延遲(毫秒) | 延遲降低幅度 |
|---|---|---|---|
| 擷取最新文章 | 745.3 | 27.3 | 96.3% |
| 擷取使用者個人檔案 | 300.0 | 29.3 | 90.2% |
| 擷取個人化動態 | 572.0 | 68.7 | 88.0% |
| 擷取使用者的完整文章紀錄 | 215.7 | 62.0 | 71.3% |
| 擷取瀏覽次數 | 349.7 | 20.0 | 94.3% |
| 發布文章 | 183.3 | 72.7 | 60.4% |
舊有專案
以下是我仍在維護、但非開發重心的專案的簡要更新:
Is It Keto
| 指標 | 2021 年 10 月 | 2021 年 11 月 | 變化 |
|---|---|---|---|
| 不重複訪客 | 20,321 | 17,790 | -2,531 (-12%) |
| 總瀏覽次數 | 47,487 | 40,722 | -6,765 (-14%) |
| 網域權重(Ahrefs) | 11.0 | 15.0 | +4.0 (+36%) |
| AdSense 營收 | $230.64 | $235.36 | +$4.72 (+2%) |
| Amazon 聯盟行銷營收 | $27.76 | $26.25 | -$1.51 (-5%) |
| 總營收 | $258.40 | $261.61 | +$3.21 (+1%) |
Is It Keto 仍在背後持續帶來少量營收。我這個月唯一的改變是將它從 Firebase 遷移至 Netlify,這降低了我的託管成本。
Hit the Front Page of Hacker News(《登上 Hacker News 首頁》)
| 指標 | 2021 年 10 月 | 2021 年 11 月 | 變化 |
|---|---|---|---|
| 不重複訪客 | 100 | 159 | +59 (+59%) |
| Gumroad 營收 | $75.27 | $94.57 | +$19.30 (+26%) |
| Blogging for Devs 營收 | $0.00 | $0.00 | 0 |
| 總營收 | $75.27 | $94.57 | +$19.30 (+26%) |
我的部落格課程在過去一個月有幾筆銷售。我曾考慮舉辦黑色星期五特賣,但當時我正享受著不去想生意的長週末,所以決定作罷。我很慶幸沒有舉辦,因為我反而盡情享受了動手改造 What Got Done 的樂趣。
Zestful
| 指標 | 2021 年 10 月 | 2021 年 11 月 | 變化 |
|---|---|---|---|
| 不重複訪客 | 613 | 576 | -37 (-6%) |
| 總瀏覽次數 | 1,426 | 1,489 | +63 (+4%) |
| RapidAPI 營收 | $99.74 | $727.17 | +$627.43 (+629%) |
| 總營收 | $99.74 | $727.17 | +$627.43 (+629%) |
Zestful 這個月因為一位新客戶帶來了約 700 美元的請求量而大幅成長。客戶的名稱看起來很眼熟,所以我查看了電子郵件。我在三年前曾主動聯繫過他們,當時他們禮貌地拒絕了。看來他們需要幾年的時間考慮。
總結
完成了什麼?
- 發布了 TinyPilot 2.3.1 版本
- 為 Voyager 2 的上市做準備
- 將 What Got Done 遷移從 GCP 與 Firestore 遷移至 fly.io、SQLite 與 Litestream
- 將這個部落格、Is It Keto 以及其他幾個靜態網站從 Google Firebase 遷移至 Netlify
經驗教訓
- 當銷售開始呈現上升趨勢時,要及早思考擴展規模。
- Google Cloud Platform 通常不是小型專案的正確選擇。
下個月的目標
- 推出 Voyager 2。
- 推出 TinyPilot 的品牌重塑。
- 這次是真的。
- 建立足夠的庫存,讓 TinyPilot 不再為滿足需求而手忙腳亂。
備註:我在本文中提到了一些服務,但除了作為客戶之外,我與其中任何一家都沒有商業關係。我討厭在部落格上讀到看似真誠的產品推薦,結果卻發現作者正透過推薦分潤獲利,因此我刻意不使用任何會產生推薦獎金或聯盟行銷費用的連結。
隨機一篇部落格


