把一段文字故事,穩定地、可複用地、不出戲地變成漫畫和成片。
MuStory(倉庫名 xu-story-studio)是一個 macOS 原生 App,Swift 6 + SwiftUI 寫的,沒有網頁版。起因很簡單:我之前用 AI 把童年故事畫成漫畫,流程跑通了,但要天天在終端裏跑腳本、在文件夾之間拷素材、在三四個工具之間切來切去,折騰半個下午。於是把那套流程做成了 App。

它能做什麼
一句話:粘進去一段原文,出來的是能直接發出去的漫畫和成片。
完整鏈路是七步,每一步都可調、可審核、可回滾:
- 原文導入:自己寫的童年回憶、神話傳說、公眾號草稿都行,原文是唯一的真值
- 角色抽取:從原文解析人物,建角色檔案,生成肖像圖、全身圖、三面圖
- 分鏡生成:按內容自適應切鏡頭,每個鏡頭帶旁白、構圖、運鏡、連續性字段,並掛一個原文錨點
- 漫畫生成:一鏡一圖,角色參考圖按優先級餵給模型,臉不崩
- 視頻生成:分鏡變成帶運鏡的動態片段
- 配音 + 字幕:固定音色全文配音,句子級時間軸燒字幕
- 本地合成:AVFoundation 直接出 1920×1080 / 30fps 的 MP4,不經過任何雲端
三條產線(圖文漫畫、成片視頻、公眾號人物本紀)共用同一份資產,所以同一個項目裏角色和分鏡不會畫兩遍。

跟自己較真的幾個地方
- Liquid Glass 主界面:項目卡是分層毛玻璃,邊緣一道白色高光,下面壓一道克制的藍色陰影;系統滾動條拆了換成 7pt 寬的玻璃軌道
- 分鏡板橫條 + 豎流獨立滾動:上面固定的鏡頭軌,下面獨立的詳情區,點上面跳下面,改下面縮略圖同步
- 角色參考圖優先級:肖像優先,沒有退全身,再沒有退三面,優先級可在角色檔案裏手動調
- 分鏡快照不可變:分鏡生成那一刻凍結原文錨點、角色、場景、運鏡、連續性字段,後面漫畫視頻配音都基於快照跑,不會出現「旁白改了畫面還是舊版」
- 任務抽屜 + 獨立進程:生成任務全在
StoryWorker子進程裏跑,主線程不卡,底部抽屜隨時看進度

版本記錄
沒有語義化版本號。下面的日期是從設計文檔、回歸腳本和打包產物回溯出來的,一條對應一次能跑的改動。
圖片模型快捷選擇:設置頁圖片 Provider 增加 gpt-image-2 / gpt-image-2.5-flare / gpt-image-2.5-sunburst 三個快捷按鈕,新默認切到 2.5 Flare,自由輸入保留。順帶修了原文解析的 prompt 順序和分鏡模型兼容性。
人物本紀封面新增「Q 版黑金權謀風」,封面規則和樣式 token 落盤成 character-chronicle-cover-rules.md。
分鏡數量建議改成按全文覆蓋計算(上限 80 鏡),不再只按段落估。
音畫同步守衛:字幕和配音時長對不上時拒絕出片。
分鏡嚴格錨定原文 + 分鏡文字與時長對齊;移除舊的首尾幀與火柴人定格管線。
單鏡人物選擇、白名單角色與群眾共存。
下集預告字幕疊層。
三態人物出場(有台詞 / 僅出鏡 / 不出現)、片頭居中定格、原文錨定分鏡、解析日誌按項目隔離、全局音樂庫命名修正並去掉靜音特效。當天出了兩個包:MuStory-三態人物出場-2026-07-27.dmg 和非沙盒版。
配音文本核對 + 可編輯配音請求文本、第八個旁白音色與緊湊卡片、固定片頭音頻、句子級時間軸、字幕顯示時長、可讀字幕成塊。發布包 MuStory-片頭音頻與配音文本核對-2026-07-24.dmg。
視頻片頭復用漫畫幀;分鏡人物勾選(整組與單鏡兩級)。
內容自適應項目風格。
本地視頻合成器上線(AVFoundation / Core Animation / VideoToolbox),第三方剪輯鏈路下線;盤古式人物名橫滑定格片頭;圖片防錯配簽名 + 盤古風格字幕。
配音驅動成片時長、固定五個旁白音色、全局背景音樂庫。
三類分鏡重構(圖文漫畫 / 動態漫畫 / 視頻)、批量生圖與畫風鎖定、分鏡歷史、真實產物回寫、底部任務抽屜、玻璃滾動條。
空白啟動清空、模塊獨立佈局、首頁與統一玻璃、原文解析工作流、智能分鏡數量、參考圖大圖與任務。
全局圖片角色資產庫:肖像 / 全身 / 三面三類參考圖,帶圖床版本。
AI 命令中心。
項目起步:定稿 macOS 原生工作台,漫畫 / 視頻 / 圖文三條產線共用一套資產。
技術棧
純原生,沒有 Electron:
- Swift 6 / SwiftUI / NavigationSplitView,部署目標 macOS 26,嚴格並發模式
- AppKit / AVFoundation / Core Animation / VideoToolbox 做本地合成
- StoryWorker 獨立進程跑生成任務,
TaskSupervisor管生命週期 - SwiftData + JSON 存項目和分鏡,密鑰走 Keychain
- 一個
StoryModels.swift收了 71 個 struct/enum,項目、分鏡、角色、生成任務、供應商配置全類型化 - 供應商可插拔:文本
gpt-5.6-sol(OpenAI-compatible)、圖片gpt-image-2/2.5-flare、視頻agnes-video-v2.0、配音 Fish Audios2.1-pro-free、公眾號draft/add。有哪個填哪個,沒填的對應能力自動降級
還沒解決的問題
不裝:
- 視頻運鏡不穩:推近、搖鏡這類高風險模式經常讓角色臉飛出畫面,加了「固定機位」兜底,但犧牲了動態感
- 免費配音模型會閉眼、張嘴:免費的總有代價
- 首頁沒有像素級設計稿:按批准過的行為描述和現成視覺 token 拼出來的,待完善
- 跨項目資產復用:一個角色在一個項目裏建好,換項目得重導入,這個遲早要做
相關閱讀
- MuStory:我把自己畫漫畫的流程做成了 macOS App
- 漫畫分鏡——第一次調參數
- 女媧:摶土造人與煉石補天 —— 用 MuStory 跑出來的 13 格漫畫
下一個目標:把《請回答 1992》整套童年故事用 MuStory 連載成漫畫。