文章目錄

MOSS-Image 是一個專精排版的生圖模型,我們能透過 ComfyUI 來使用此模型產圖,只要把想寫在圖上的字直接輸入進 Prompt,模型就會把它繪製到畫面上,做社群貼文或活動海報時就不用再另外開設計軟體排字。通常這類圖的標題、品名和價格有固定的位置,只靠 Prompt 描述的話,每次產出的版面容易有差異。ComfyUI 的 MOSS-Image 範本可讓我們先在畫布上框出每段文字和照片的位置,再照這個版面產圖。我嘗試用繁體中文來實驗生成咖啡店的新品貼文、市集活動海報和教學影片縮圖,每張的中文字品質頗高,且換一個隨機種子重產後,文字的位置也不會隨機偏移。
本文的測試環境是 Windows 11、RTX 3070 8 GB 顯示卡與 ComfyUI 0.43.2,模型用官方範本預設的 MOSS-Image 量化版本,圖裡的店家與活動都是虛構的。下面這張貼文就是框好五個位置後產出的:

準備模型與範本
MOSS-Image 由 OpenMOSS 在 2026 年 10 月公開,ComfyUI 從 0.42.0 起內建支援,還沒裝 ComfyUI 的話,可以參考 用 comfy-cli 安裝 ComfyUI 並讓 Claude Code 照範本產圖 的流程。在 ComfyUI 左側的「範本」搜尋 MOSS,會找到兩個範本:「MOSS-Image:版式控制生圖」可以在畫布上框出文字與物件的位置,「MOSS-Image:文字生圖」只用 Prompt 描述整張圖。
兩個範本用同一組模型,都可以從 Hugging Face 的 Comfy-Org/MOSS-Image 下載,放進 ComfyUI models 底下對應的資料夾:
| 模型 | 檔案 | 資料夾 | 大小 |
|---|---|---|---|
| 擴散模型 | moss_image_sft_int8_convrot.safetensors |
diffusion_models |
5.41 GB |
| 文字編碼器 | qwen3.5_9b_w4a8_gptq.safetensors |
text_encoders |
7.34 GB |
| VAE | flux2-vae_small.safetensors |
vae |
0.25 GB |
電腦上還有其他 ComfyUI 專案也要用這些模型的話,可以照 讓多個 ComfyUI 專案讀同一份模型 的做法,不必再下載一次。版式控制範本用「建立邊界框」節點畫框,這個節點的編輯器只在 Nodes 2.0 介面顯示,新的工作區預設是關的,要到「設定」的「Comfy」分頁打開「現代節點設計 (Nodes 2.0)」。
選擇圖片尺寸
兩個範本都在「解析度選擇器」節點設定圖的大小,選好「長寬比」和「百萬像素」後,節點下方會顯示實際的寬高。MOSS-Image 官方的使用指南建議總像素用 100 萬、150 萬或 200 萬,寬高要是 16 的倍數,解析度選擇器算出來的尺寸都符合。本文三種圖的設定如下:
| 用途 | 平台的規格 | 長寬比 | 百萬像素 | 產出尺寸 |
|---|---|---|---|---|
| Instagram 貼文 | 寬 1080,長寬比 1.91:1 到 3:4 | 3:4 | 1.5 | 1088 × 1456 |
| 活動海報 | 無固定規格 | 2:3 | 1.5 | 1024 × 1536 |
| YouTube 縮圖 | 16:9,寬度至少 640 | 16:9 | 1.5 | 1664 × 944 |
Instagram 的相片解析度說明寫明,貼文的相片會縮成寬 1080 像素,長寬比在 1.91:1 到 3:4 之間就不會被裁切。解析度選擇器沒有 4:5,直式貼文選 3:4。產出的 1088 × 1456 高度比 3:4 多一點,裁成 1086 × 1448 就剛好是 3:4。
YouTube 的自訂縮圖說明要求影片縮圖用 16:9、寬度至少 640 像素,並建議用 3840 × 2160。解析度選擇器的 16:9 在 1.5 百萬像素算出 1664 × 944,高度比 16:9 多一點,裁掉 8 個像素的高度就是 1664 × 936。
框出文字與物件的位置
打開「MOSS-Image:版式控制生圖」範本,「建立邊界框」節點有一塊畫布,在畫布上拉出的每個框就是圖上的一個區塊。文字框寫上要畫的字,物件框描述要畫的東西,模型會照框的位置產圖。
調整畫布比例
在解析度選擇器選好 3:4 後,把「建立邊界框」節點的「寬度」和「高度」也改成同樣的尺寸,畫布才會變成 3:4。這兩個欄位預設連著解析度選擇器,要先拆掉連線才能輸入:
- 從「建立邊界框」節點「寬度」的輸入點拖出連線,在畫布空白處放開。畫面跳出搜尋節點的視窗後按 Esc 關掉,連線就拆掉了。
- 「高度」照同樣的方式拆掉。
- 在出現的「寬度」與「高度」欄位輸入解析度選擇器顯示的尺寸,本例是寬度 1088、高度 1456。
畫布變成 3:4 後,已經畫好的框會照比例縮放。之後改了長寬比,這兩個欄位也要跟著改。
沒有拆線的話,畫布會維持 1024 × 1024 的正方形,框的位置照正方形計算,產圖時套在 1088 × 1456 的畫面上,所有的框都擠在畫面上方約七成的範圍。我在正方形畫布上框好開頭那張貼文的五個位置再產圖,左邊這張的下方多出一組沒要求的飲品照片拼貼,右邊這張的品名和日期變成亂碼:

畫框並填寫內容
按編輯器右上角的「全部清除」刪掉範本的範例框,再用滑鼠在畫布上拉出每個框。新拉出的框預設是「物件」,文字框要切換成「文字」,再在「文字」欄位輸入要畫的字。「描述」寫字的大小、顏色、字體和位置,物件框只要寫描述。描述照官方使用指南的建議用英文寫,要畫的字維持中文。咖啡店貼文的五個框是這樣填的:
| 框 | 類型 | 文字 | 描述 |
|---|---|---|---|
| 01 | 文字 | 秋季限定 | At the top center, medium-size dark brown rounded sans-serif characters on the cream background, clearly readable |
| 02 | 物件 | 無 | A tall glass of osmanthus oolong latte with visible milk and tea layers, a few golden osmanthus petals scattered on the wooden table, soft window light |
| 03 | 文字 | 桂花烏龍拿鐵 | Large bold dark brown sans-serif product name, centered, the largest text on the post |
| 04 | 文字 | 11/8 起每日限量 50 杯 | One line of small dark brown sans-serif text centered under the product name |
| 05 | 文字 | NT$ 150 | Price in bold amber sans-serif at the bottom right corner |
接著在「MOSS-Image 版面配置提示詞」節點的「提示詞」寫整張圖的描述,本例寫的是:
1Warm autumn Instagram post for a cafe: a glass of osmanthus oolong latte on a wooden table with fallen osmanthus petals, soft morning window light, cream and amber palette, clean layout with generous margins.
同一個節點的「角色方框」預設填了 2,會把 2 號框當成人物,這張圖沒有人物,就把這個欄位清空。填好的畫面如下:

「Text to Image (MOSS-Image)」節點上的「enable_prompt_enhancer」開啟後,產圖前會先把 Prompt 擴寫成一段詳細的英文描述。這個範本預設關閉,範本裡的說明提到開啟後會改寫框的內容,維持關閉就好。畫面右下另一則說明寫著「Prompt upsampler is on」,和實際的預設不同,不用理會。按「執行」,就會產出開頭那張貼文。
產出的貼文、海報與縮圖
同一份框換兩個隨機種子產圖,字的位置、大小和顏色幾乎一樣,只有照片裡的杯子、窗景和桂花裝飾不同:

活動海報框了標題、日期、地點、插畫和「免費入場」標籤,兩張的字都寫對,位置也幾乎一樣:

YouTube 縮圖框了標題(分兩行)、黃色副標和筆電三個框,兩張的字都寫對,標題和副標的位置幾乎一致,筆電的大小和角度不同:

只用 Prompt 描述版面
「MOSS-Image:文字生圖」範本不用畫框,把要放進圖裡的字和位置都寫進 Prompt 就能產圖。這個範本預設開啟「enable_prompt_enhancer」,擴寫後的英文描述會保留 Prompt 裡用「」括起來的字,Prompt 直接用中文寫就可以。咖啡店貼文的 Prompt 如下:
1咖啡店的 Instagram 新品貼文,3:4 直式。上方寫「秋季限定」,中間是一杯桂花烏龍拿鐵的照片,下方大字寫品名「桂花烏龍拿鐵」,品名下面寫「11/8 起每日限量 50 杯」,右下角寫價格「NT$ 150」。暖色、溫暖的秋天氛圍,版面乾淨。
用兩個隨機種子各產一張,兩張都照 Prompt 的上下順序排好字,照片、字體和價格的位置每張不同。左邊的照片滿版,文字壓在上下兩條色帶上,品名的「拿鐵」寫成日文字形的「拿鉄」。右邊的照片縮成圓角卡片,品名正確:

活動海報的標題、日期、地點和「免費入場」兩張都寫對,插畫和標題的顏色各不相同。右邊插畫的攤位招牌多出 Prompt 沒要求的簡體「艺术」和其他亂碼:

YouTube 縮圖的兩張字也都寫對,標題的排法不同。上面這張把「3」放大成跨兩行的數字,「分鐘看懂」和「ComfyUI」排在它的右邊,下面這張的「3 分鐘看懂」排成一行。兩張的筆電都有一部分被畫面右緣切掉:

實測紀錄
兩個範本都用預設的取樣設定(25 步、CFG 2.5、er_sde、simple),隨機種子是 20261103 和 20261104。版式控制範本預設關閉「enable_prompt_enhancer」、開啟「SLG」(Skip Layer Guidance)這項取樣設定,文字生圖範本預設開啟「enable_prompt_enhancer」,它的時間包含擴寫 Prompt 的時間。每一批的第一張要載入模型,約 130 到 160 秒,下表的時間不含這一張:
| 圖 | 做法 | 每張時間 | 文字 |
|---|---|---|---|
| 咖啡店貼文 | 框選位置 | 50 秒 | 兩張都正確 |
| 活動海報 | 框選位置 | 48 到 49 秒 | 兩張都正確 |
| YouTube 縮圖 | 框選位置 | 48 到 50 秒 | 兩張都正確 |
| 咖啡店貼文,寬高未拆線 | 框選位置 | 49 秒 | 版面擠到上方,第二張的品名與日期變成亂碼 |
| 咖啡店貼文 | Prompt 描述 | 61 秒 | 第一張把「拿鐵」寫成「拿鉄」,第二張正確 |
| 活動海報 | Prompt 描述 | 61 到 67 秒 | 主要文字都正確,第二張的攤位招牌有簡體字與亂碼 |
| YouTube 縮圖 | Prompt 描述 | 58 秒 | 兩張都正確 |
產出上表的圖時,整張顯示卡的記憶體用量最高 7.3 到 7.8 GB,閒置時桌面本身就佔用約 1.2 GB。系統記憶體是在 1024 × 1024 的測試裡量的,產圖時比 ComfyUI 剛啟動完成時多用約 12 GB,開啟「enable_prompt_enhancer」時多用約 14.5 GB。
總結
MOSS-Image 能把繁體中文的標題、品名、日期和價格直接畫進社群貼文、活動海報與 YouTube 縮圖,在版式控制範本框好位置的六張圖字都寫對,換隨機種子重產時版面幾乎一樣。框選前要把「建立邊界框」的寬高拆線改成圖片尺寸,沒改的話框只會佔到畫面上方約七成。只用 Prompt 描述版面時,每次的構圖和字體不同,也出現過日文字形的「鉄」和插畫裡多出的簡體字。