一個每天自己長出一種字體的網站,卡死了三天我才發現

從別人整理的 100 種 AI 生圖字體風格名稱起家,我把它做成有實測圖、能一鍵複製提示詞的站,然後讓它每天自動長一種。這篇講那條產線怎麼接,以及它安靜掛掉三天的兩個原因。

AI 繪圖字體風格庫

這篇講的東西

先把來源講清楚:最初那 100 種字體風格名稱是阿吉整理的,不是我想的。我做的是把它變成看得到效果、複製得走、而且自己會長大的東西。

站上每個條目都有兩張實測生成圖,不是示意圖:一張純字(字體名稱本身用該風格呈現),一張應用(把字套進真實設計場景的迷你成品,知識圖卡、雜誌封面、促銷廣告、遊戲海報那種)。旁邊兩顆複製鈕,一顆給字體提示詞,一顆給含場景描述的應用提示詞。

寫這篇的時候 fonts.json 裡是 124 種,最新一種是刺繡布標字,今天早上自己長出來的。你讀到的時候應該又多了幾種。

每天長一種是怎麼運作的

GitHub Actions,台北時間每天 10:30:

  1. queue.json 候選佇列取出第一筆。名稱、風格描述、應用場景都預先寫好,佇列可以隨時手動增刪排序。
  2. 打自架的 codex-image-service 生純字圖跟應用圖。
  3. Gemini 視覺驗字:繁體字形對不對、有沒有錯字漏字、風格符不符合名稱。單張最多重生 3 次,全過才上線。
  4. 寫進 fonts.json、commit,Pages 自動更新。

重生三次還是不合格的字體,挪到佇列尾端換下一筆繼續,當天 13:30 跟 16:30 還有兩個補跑時段。生圖服務本身掛掉就直接讓 workflow 失敗,佇列原封不動。

佇列低於 14 筆時 workflow 會自動開 issue 提醒我補貨。補貨是批次補約 20 個候選、跟全表查重、補分類缺口,走 PR 人工審過再合。選題我故意不自動化,品味那部分留在手上。

它卡死了三天

7 月 28 到 30 號,站上沒有長出新字體,而且沒有任何人(包括我)發現。7 月 31 日修的時候找到兩個原因,兩個都很典型。

第一個是驗字硬要白背景。驗證的 prompt 寫死了「背景應該是白的」,於是任何本來就該有背景的風格全部被判不合格。咖啡拉花字沒有液面、黑板字沒有黑板,模型為了通過檢查就退化成通用字體只換個皮。這一條後來變成寫候選時的規則:如果風格本身隱含特定背景(黑板、液面、夜空),desc 就要點出來,不能假設一律白底。

第二個更蠢:單筆失敗會擋住整條佇列。第一筆過不了,後面 100 多筆就一起停在那裡等。修法就是前面寫的那句「挪到佇列尾端、換下一筆」,一行邏輯的事,但沒想到就是不會有。

我從這件事學到的不是「要加監控」這種漂亮話,是:一條每天跑的自動化產線,失敗要嘛吵到我,要嘛自己繞過去,安靜停住是最糟的第三種。

稽核那一輪:應用圖在自我介紹

7 月 23、24 兩天我把前面所有的應用圖重看一遍,抓到一個從一開始就存在的毛病:應用圖上的主標題直接寫字體名稱本身。電路板字的海報上寫著「電路板字」。

這看起來只是無聊,實際上它讓應用圖失去意義。應用圖要證明的是「這個字體放進真實案例好不好看」,標題寫字體名稱等於只是把名字貼到一張背景上。修法是候選佇列多一個 headline 欄位,寫那個場景裡真的會出現的一句話,電路板字配「DEV CONF 2026」這種。純字圖不受影響,純字圖本來就是拿名稱當展示文字。

同一輪還有一條規則寫進補貨守則:desc 要交代筆畫怎麼構成,線條走向、堆疊方式、鑲嵌結構、書寫筆觸,不能只寫材質形容詞。「金屬感」「絨毛感」這種字眼不夠具體,模型收到之後多半就是把一個普通字體換個表面。

怎麼用

任何圖卡生成都適用,格式就三行:

[主題與內容描述]
標題使用「科技標題字」,內文使用「現代知識字」
[版型、情緒、使用場景描述]

這些不是真的字型檔,是寫進提示詞的風格描述詞。做圖卡、封面、海報的時候直接指定,比說「幫我換一個好看的字」快很多。

不過講清楚它現在的程度:複製貼上不會一次到位,實測都還要自己再調一點。 這個公式目前只能做到「標題用這個、內文用那個」這種粗的指定,它給的是一種換字體的概念跟一套講得出口的詞彙,不是一貼就成的模板。

我覺得下一步要補的就是這裡:提示詞太簡易了。真正好用的版本應該要能指定到「這幾個字用這個字體、那一行用另一個」,甚至同一句話裡的重點字單獨換風格。現在的三行格式做不到,那是接下來要設計的東西。

站上擴充出來的字體會標「擴充」徽章,跟阿吉原本整理的 100 種明確區分開。

產線要不要全自動、哪裡留人工、失敗怎麼處理,是我定的;daily_font.py 跟那些工具腳本是 AI 寫的。

去挑一個字體試試看,把它當起點而不是終點。明天回來會多一種。