開發過程

哈哈狗毛孩顏值卡

上傳一張照片,AI 幫你家毛孩打七項分數,生成一張可以直接丟進群組的顏值卡。免費工具最難的不是做出來,是免費之後發生的事。

網頁 App 免費 為了被分享而做
兩張狗狗顏值卡,含總分與臉部比例、眼神魅力等細項評分
2026 年 4 月第一個 commit
104 次累積 commit
已上線完全免費

01起點:做一個「會被傳出去」的東西

這個產品的目標從一開始就不是賺錢,是被分享。 養狗的人有一個共通點:他們永遠準備好要跟你講他家狗有多可愛。 我們只是給他們一個好看的、有數字的、可以直接貼進群組的理由。

所以整個產品只有一條路徑:上傳一張照片、填幾個基本資料、拿到一張卡。 沒有註冊、沒有登入、沒有教學。

02產出物本身就是廣告

關鍵不在網頁,在那張卡。因為傳出去的是圖不是連結, 所以卡片必須自己站得住:總分要大、細項要一眼看懂、 要有毛孩自己的照片、還要有一個小小的來源標記讓看到的人知道去哪做。

評分拆成七項 —— 臉部比例、眼神魅力、鼻型狀態、耳朵造型、毛髮質感、表情氣質、整體協調。 拆七項不是為了精準,是為了好看跟好聊: 單一個總分沒什麼話講,七項就會有人開始說「我家的耳朵造型只有 8.9 欸」。

刻意的取捨

分數整體偏寬容,而且卡片上一定會有「顏值亮點」跟「照顧建議」。 這是故意的 —— 沒有人想把一張說自己狗很醜的圖傳給朋友看。 這個產品要的是被分享,不是被評審。

03速度就是體驗

使用者按下送出之後,如果等超過一分鐘,很多人就走了。 我們把目標訂在45 秒內拿到卡片,而這件事幾乎完全由 AI 生圖的時間決定 —— 程式那邊怎麼優化都只是幾秒,模型算圖動輒二三十秒。

所以速度不是工程問題,是選型問題

04不押注在單一模型上

AI 模型半年就換一輪,今天最好的下個月不一定是。 與其把某一家寫死在程式裡,我們把它做成可以隨時切換的設定: 後台可以直接換生圖的供應商跟品質等級,不用改程式、不用重新部署。

後台還有一個三欄並排的比較介面:同一張照片、同時丟給三個模型, 結果並排放在一起看,而且現在真的在服務使用者的那一欄會標紅框。 這樣「正在調的東西」跟「使用者拿到的東西」不會搞混。

目前接過的有 OpenAI 的生圖模型、Google 的 Nano Banana, 以及透過中介平台呼叫的同款模型 —— 有的比較快、有的比較好看、有的比較便宜, 而且這個排名一直在動。能換,比選對更重要。

05免費的代價:擋濫用

免費工具會遇到一個做付費產品不會遇到的問題: 每一次點擊都是我們在付錢。 一個腳本掛在那邊跑一整晚,帳單是我們的。

所以這裡花的力氣意外地多:

  • 用 Cloudflare Turnstile 擋機器人 —— 而且設成幾乎不打擾真人,一般使用者根本看不到它。
  • 每個瀏覽器有免費次數,用完之後跳出一個小視窗請你留 email 換更多次。
  • 這道防線是可以繞過的,我們知道,而且選擇接受 —— 它擋掉的是隨手亂點的量,不是有決心的人。為了完全擋死而讓真實使用者變麻煩,划不來。

06中途改了名字

產品原本叫「狗狗顏值評分」,網域也本來規劃成另一個。 後來我們把幾個寵物相關的東西收在同一個品牌底下,改成「哈哈狗毛孩顏值卡」, 跟哈哈狗客製 LINE 貼圖共用一個家。

對外的名字改了,但程式碼裡面還是叫 DogRating —— 沒有跟著改。 因為改內部代號會讓使用者的登入狀態失效、圖片儲存被拆成兩半、 出問題的時候更難查。換一個沒人看得到的名字,風險全部歸我們,好處是零。

07用了哪些 AI 工具和服務

Claude Code產品實作主力。
Codex第二個 AI 編碼工具,換機器時接手。
OpenAI 視覺模型看照片、判斷七個項目的分數與描述。
OpenAI 生圖模型把評分結果畫成一張卡片。
Google Nano Banana另一個生圖選項,速度快,後台可以直接切過去。
Cloudflare Turnstile擋機器人,而且不打擾真人。
Cloudinary使用者照片的上傳與處理。
Supabase生成紀錄與次數控管。
Vercel網站與後端函式。

08這個產品真正的介面是那張卡

網頁只是產卡片的機器。真正被看到的是那張圖 —— 它會出現在一個 我們完全看不到的群組裡,旁邊沒有說明、沒有網址列、沒有任何補充。 所以卡片上的每一個元素都要能獨立成立:總分要大、七個細項要一眼看懂、 毛孩的臉要夠清楚,還要留一個小到不干擾、但找得到的來源標記。

目前還沒解決的是速度。45 秒的目標靠換模型達成,但生圖時間本身仍佔掉大部分, 下一步是把生成中的畫面做成漸進顯示,讓等待至少看得到進度。

想幫你家毛孩打分嗎?

免費,不用註冊,一張照片就好。

前往哈哈狗毛孩顏值卡 →