🎬 分鏡方案研究 — 現成工具 vs 我們的 script_to_vn

結論:沒有現成分鏡 MCP/RAG 可直接 plug-in(此領域全是 build-your-own)。最高價值借鑑:① ViMax(8.8k★) 的 variation_type(large/medium/small) 自評欄 → 解 #31/#37 切太死/重複 ② AI Comic Factory(1.3k★) 的分批滑動續寫 → 解 output 截斷(比縮 chunk 好) ③ PenShot(88★) 原生 MCP + Chroma 向量記憶 → 解塊邊界連貫。

📊 五路調研(點開看各專案 + 借鑑點)

GitHub/開源「劇本→分鏡(storyboard/shot)生成」專案調研:能否借鑑或整合到 AI-Matrix 的 script_to_vn(劇本→journey beats→鏡頭表) ✅有料
ViMax (HKUDS) ↗ GitHub
港大 8.8k★/1.3k fork、100% Python、活躍(2025下半年仍更新)的多代理影片生成框架。腳本→場景→分鏡→關鍵幀→影片端到端。架構跟我們 A 路線幾乎同型:script_planner→scene_extractor(分塊)→storyboard_artist(出鏡頭)→ FLF 分解 →影片。**這支是所有結果裡跟 script_to_vn 最像、最值得借鑑的**。
可借鑑:(1)鏡頭 schema 用 Pydantic `ShotDescription`(interfaces/shot_description.py),欄位:`idx`/`is_last`(收尾旗標)/`cam_idx`(攝影機編號=同機位復用)/`visual_desc`(角色用 <Alice> 角括號標識,對白直接寫進視覺描述用引號)/`audio_desc`/`variation_type`+`variation_reason`。**直接對應我們的 id/camera/angle/motion/desc/text**,可整碗端走當 pydantic 結構化輸出 schema。(2)**`variation_type: large/medium/small` 這一欄就是我們 #31/#37(切太死/重複/beat太保守)的解**——讓 LLM 自評每個鏡頭跟前一鏡的「變化程度」,large=大轉場(wide→close+大運鏡)/medium=新角色進場或轉身面向鏡頭/small=表情或小位移。這個分級可直接驅動我們選「呈現模態」(small→css靜態/類gif;large→Wan影片)跟「是否新機位」。(3)**FLF 分解 prompt(decompose_visual_description)**:一支獨立 LLM step 把鏡頭拆成 first_frame/last_frame/motion 三段,且明令 ff/lf 必須是純『快照』不能有進行式動作(『他正要站起來』❌→『他坐著微前傾』✅)、motion 不准用角色名要用外觀特徵(衣著)指涉——我們現在跑 FLF chain 正缺這個把 beat 轉成首尾幀+運鏡的標準化 prompt,可直接抄。(4)**機位復用啟發式**(storyboard_artist 系統prompt):『設計新鏡頭先想能否用既有機位拍,只有景別/角度/焦點顯著不同才開新機位;若攝影機有大運鏡則此後不可再用』——直接緩解塊邊界連貫+重複問題。(5)**塊邊界連貫做法**:scene_extractor 用 `get_next_scene(previous_scenes)` 把已生成場景全文塞回 context 再生下一場(滑動上下文),並規定『地點或時間改變才切新場景、總場景數≤5』。(6)IntentRouter 先把腳本分流 narrative/motion/montage——跟我們 router 同思路可對照。maturity:8.8k★,活躍,可用度高(完整 pipeline+configs,支援 Gemini/MiniMax/OpenRouter)。
AI Comic Factory (jbilcke-hf, HuggingFace) ↗ GitHub
1.3k★/296 fork、TS。LLM(可配 Claude3/GPT4/zephyr)把劇情切成 N 格漫畫,每格出 instructions+speech+caption,再 SDXL 出圖。**已於 2025-10 封存(read-only),但 code 是參考級教材**,尤其解我們的細顆粒 output 截斷痛點。
可借鑑:(1)**對抗 output 截斷的滑動視窗續寫**(predictNextPanels.ts + getStoryContinuation.ts):不要一次叫 LLM 吐全部鏡頭,而是分批每次只生 `nbPanelsToGenerate` 格,把『已生成的格(含 speech/caption)』JSON 塞回 prompt 當 existingPanels 續寫,並自動算 firstNextOrLast(first/next/last)讓 LLM 知道現在在故事哪段+總長多少格(maxNbPanels)。token 上限按 `nbPanelsPerBatch × 200` 估。**這正是我們細顆粒 deepseek 輸出被截斷的標準解法**——改成分批續寫,生成後重編 idx(startAt+i)。(2)**robust 截斷-JSON 解析器**(dirtyGeneratedPanelsParser.ts + cleanJson/parseBadJSON):先砍掉 ``` 之後的雜訊,容錯解析半截 JSON,再對每格做欄位 fallback(沒 instructions 就拿 caption/speech 補)。直接抄來防 deepseek 吐壞 JSON 整批爆掉。(3)**續寫 prompt 自帶去重指令**:existingPanels 模板裡明寫『若看到異常(無對白/同描述重複多次)請主動修正故事』——正中我們 #31『同動作/角度一直重複』。(4)**degraded mode**:LLM 失敗時不整批死,降級產出佔位格保住 pipeline。(5)system prompt 要求每格須含 角色性別/年齡/出身/衣著/顏色/地點/燈光,speech 用第一人稱——欄位完整度可參考。maturity:1.3k★,封存(不會再更新)但無依賴風險、純參考。
Story2Board (DavidDinkevich, 學術) ↗ GitHub
論文『A Training-Free Approach for Expressive Storyboard Generation』官方實作。重點不在切鏡頭,而在**跨格(跨鏡頭)角色/外觀一致性**,training-free。
可借鑑:(1)**LLM Director 兩段式 prompt 結構**:把故事拆成『一個共享 reference panel prompt(全程共用維持身分)』+『各場景 scene-specific prompt』——這個『共享參考 + 每鏡差異』的 prompt 拆法,可借鑑來穩定我們跨鏡頭的角色/服裝一致(對應我們 stage/服裝狀態欄)。(2)影像層技術 Latent Panel Anchoring(去噪每步把參考區 latent 換成參考格的)+ Reciprocal Attention Value Mixing(只混 value embedding 不動版面)——屬 diffusion 影像階段的跨幀一致技巧,不是分鏡 pipeline,但跟我們 FLF/ControlNet 鎖一致是同一戰場,future 可評估接到關鍵幀生成階段。maturity:研究碼,非生產框架,當技術參考。
ai-video-storyboard-skill (aicontentskills) ↗ GitHub
給 Claude Code/Cursor 用的 storyboard skill:brief→多鏡頭製作計畫(每鏡含 timecode/purpose/可複製 cinematic prompt/構圖/運鏡/燈光/音訊/時長)。**形態跟我們 script_to_vn 同類(都是把腳本→鏡頭表的 prompt 工程)**,但是 skill 不是引擎。
可借鑑:(1)**Visual Theme 共享層**:在出鏡頭前先定義全片色盤/燈光風格/鏡頭性格(如 35mm 淺景深/16mm 顆粒/暖 3200K),每個鏡頭 prompt 再套這層——一個輕量的『全域一致性錨點』做法,可加進我們分鏡前置(統一基調再切鏡),緩解塊邊界跳。(2)鏡頭欄位清單(timecode/purpose/composition/camera movement/lighting/audio/duration)可拿來對照補我們欄位。maturity:僅 11★,內容是 prompt 模板,參考 prompt 設計即可,無引擎可整合。
其他(movie-crafter / StoryBoard-Generator / sinhaGuild storyboard-ai / LlamaGen) ↗ GitHub
movie-crafter(GPT4 劇本+DALL·E3 分鏡,玩具級)、Gunnika/StoryBoard-Generator(長文→無監督場景切分,學術 demo)、sinhaGuild/storyboard-ai(LLM chaining 多模態,boilerplate)、LlamaGen(漫畫/動漫商業站,核心非開源)。
可借鑑:星數低(多 <100★)或核心閉源,無直接可整合價值。唯一可瞄:Gunnika 的『無監督自動場景切分』思路(把長文切成有意義場景)若我們要做超長腳本自動分塊可掃一眼演算法,但成熟度低。
vs 我們 script_to_vn:沒有任何現成的「分鏡 MCP / 分鏡 RAG」可以直接 plug-in——這領域全是 build-your-own pipeline,沒有標準化服務或協定,所以「整合」不可行,價值在「借鑑欄位設計 + 兩個演算法」。\n\n**它們強在(我們可補):**\n1. ViMax 的 `variation_type(large/medium/small)` 自評欄——我們目前 beat 顆粒沒有『變化程度』這個顯式維度,這正是 #31『切太死/同鏡位重複』和 #37『beat太保守誤判css』的根因:沒讓 LLM 自評鏡間落差,就無法據此選模態/開新機位。**這是最高價值借鑑點**。\n2. AI Comic Factory 的**分批滑動續寫 + 容錯解析**——直接解我們『細顆粒 output 截斷』痛點。我們現在像是一次叫 deepseek 吐完整鏡頭表才會截斷;改成每批 N 鏡、把已生成鏡頭回填 context 續寫,並重編 idx,就根治。\n3. ViMax 的 **FLF 分解專用 prompt**(ff/lf 純快照 + motion 用外觀特徵指涉)——我們已在跑 FLF chain 但缺把 beat 標準化成首尾幀的 prompt 規範,可直接抄。\n4. ViMax/Story2Board/skill 三者一致的『**共享參考 + 每鏡差異**』prompt 拆法——緩解塊邊界連貫 + 角色服裝一致。\n5. ViMax 的**機位復用啟發式**(同 cam_idx 復用、大運鏡後機位作廢)——直接緩解重複與跳接。\n6. ViMax 的**滑動上下文場景切分**(get_next_scene(previous_scenes) 把前文全塞回)——對塊邊界連貫有效。\n\n**我們強在(它們沒有):**\n- 我們的鏡頭表有**呈現模態維度**(css靜態/類gif/seethrough透視/Wan影片)——ViMax 只有『影片』單一輸出,沒有按鏡頭重要性選成本階梯的概念;這是我們的成本優勢設計,沒得抄、要自己做。\n- 我們有**狀態機(服裝stage/arousal)**貫穿鏡頭——成人 VN 特有的連續狀態追蹤,通用框架完全沒有。\n- 我們已有 router+pricing+trace 的端到端商轉骨架(build_vn),ViMax 是研究導向、無定價/成本管控。\n- 合法成人題材:ViMax 系統 prompt **明令避免敏感內容**(用番茄醬代血),欄位/演算法通用可借,但 prompt 的『安全改寫』段落要反向移除/改寫,不能照抄。
建議:**結論:不整合(無可 plug 的 MCP/RAG),但重度借鑑 ViMax 的 schema+演算法,自己改進 script_to_vn。** 具體三步,按投報排序:\n\n**1.(立刻做,解 #31/#37)給每個 beat/鏡頭加 `variation_type(large/medium/small)+variation_reason` 欄位**,照搬 ViMax 的定義(small=表情/小位移、medium=新角色/轉身、large=大轉場+大運鏡)。用這欄驅動:(a)呈現模態選擇(small→css/類gif、large→Wan)取代現在『beat太保守判css』的拍腦袋;(b)是否開新機位/復用 camera。這是改動最小、最直接打中兩個 pending 痛點的一招。\n\n**2.(解 output 截斷)把 script_to_vn 的鏡頭生成改成 AI Comic Factory 式分批滑動續寫**:每批生 N 鏡(N×~200 tokens 設上限),把已生成鏡頭(含對白/狀態)JSON 回填 prompt 當 existingPanels 續寫,告訴 LLM『現在第幾鏡/共幾鏡/first|next|last』,生成後重編 id。配套抄它的 dirtyParser 容錯解析(砍 ```、半截 JSON 容錯、欄位 fallback)+ degraded mode,根治 deepseek 截斷與壞 JSON 爆批。\n\n**3.(解塊邊界連貫+一致性)導入兩個 prompt 模式**:(a)分鏡前先產一個**全域 Visual Theme/共享參考**(色盤/燈光/角色外觀錨點,參考 skill+Story2Board),每鏡 prompt 套這層;(b)塊與塊之間用 ViMax 的**滑動上下文**(把前一塊末段+已定角色狀態塞回生下一塊),並抄它的**機位復用啟發式**到 prompt。\n\n**直接可抄的檔案**(已讀過,結構乾淨):ViMax `interfaces/shot_description.py`(整碗 schema)、`agents/storyboard_artist.py`(出鏡頭 + FLF 分解 prompt,反向移除其安全改寫段)、`agents/scene_extractor.py`(滑動切場景);AI Comic Factory `src/app/queries/predictNextPanels.ts`+`getStoryContinuation.ts`(分批續寫)、`src/lib/dirtyGeneratedPanelsParser.ts`(容錯解析)。建議排進現有 #37/#31 任務:先做第 1 步(加 variation_type),最快見效。
分鏡/影視製作/影片生成相關 MCP server 與 GitHub 開源專案調研(為 AI-Matrix script_to_vn 分鏡管線找可借鑑/整合對象) ✅有料
PenShot / story-shot-agent (neopen) 88 stars / 20 forks / 447 commits / Python 99.9% / 活躍。是本次最值得深看原始碼的對象。 ↗ GitHub
最對口的專案。LangGraph+LLM 的『劇本→分鏡→片段→prompt』agent,支援電影/動漫/短劇/小說/劇本輸入。輸出標準化 JSON(fragment_id / prompt / negative_prompt / duration / model / style / audio_prompt)。核心是跨片段一致性:多層記憶(短/中/長期)+ Chroma 向量檢索維持角色狀態/場景/劇情連貫;task pool 優先佇列排序;支援長文 chunking + 分段輸入處理超長劇本。原生支援 MCP(暴露 breakdown_script + get_task_result 兩個 tool,--max-concurrent / --queue-size 可調並行)。LangGraph 節點:Script Parser → Temporal Planner → Continuity Guard → Prompt Generator。MIT。
可借鑑:1)【連貫機制】直接對應我們最大痛點『塊邊界連貫』:用多層記憶+向量檢索(Chroma/pgvector)存角色服裝/姿勢/道具/arousal 狀態,每個 beat 生成前先 retrieve 鄰近上下文 → 可大幅改善切太死/不連貫。2)【截斷處理】長文 chunking + 分段輸入 + auto-retry/fallback,正面解我們『細顆粒 output 截斷』:把每塊獨立成 task 跑、向量庫保上下文,而非一次吐完整 JSON。3)【MCP 接口設計】breakdown_script + get_task_result + 並行佇列參數,可作為我們把 script_to_vn 包成 MCP server 的範本。4)【task pool 優先佇列】可借鑑做多片並行排程(呼應 task #33 Serverless 擴縮)。
ViMax (HKUDS) 8.8k stars / 1.3k forks / 339 commits / Python / 活躍。生態最大、架構最完整的參考。 ↗ GitHub
學術級 agentic 影片生成全家桶(Director/Screenwriter/Producer/Generator)。多 agent pipeline 9 層:Input→Orchestration→Script Understanding(角色/環境抽取、場景邊界)→Scene & Shot Planning(storyboard/shot list/關鍵幀)→Visual Asset Planning→Asset Indexing(frame catalog + embeddings)→Consistency & Continuity(角色/環境追蹤、時序一致性驗證)→Visual Synthesis→Output。連貫靠『智能參考圖選取(從前序場景)』+ 自動一致性檢查 + 多 agent 互驗。後端 Nanobanana(圖)+Veo(影片)+Gemini/MiniMax(LLM)。
可借鑑:1)【場景切分架構】把『劇本理解(角色/環境/場景邊界抽取)』獨立成一層,先建全片角色/場景表再切鏡 → 可改善我們『覆蓋/不漏/不亂編』(先抽實體再分鏡,LLM 較不會亂編人物)。2)【Asset Indexing 層】把已生成關鍵幀做 embedding 入庫供後續鏡頭檢索參考圖 → 強連貫、固定角色長相/背景(呼應 task #9 背景固定避鬼影、#21 futanari artifact)。3)【一致性自動檢查 node】生成後跑驗證 agent 檢角色/服裝/位置,不過就重生 → 可加進我們 build_vn orchestrator 當 QC gate。
OpenClap-Format / aitube-clap / py-aitube-clap (jbilcke-hf) OpenClap-Format 120 stars;周邊 helper/Clapper 另有獨立 star。作者活躍、整套生態完整。 ↗ GitHub
AI 影視/遊戲產製的開放互換檔案格式(.clap)。把一個場景的所有面向(prompts、圖/影片 storyboard、moodboard、timings/events、角色實體含臉/聲、NPC/world prompts、生成輸出、版本 revisions)打包成一份可在不同工具間傳遞的檔案。理念類『prompt book』:作者只定大綱+藝術指導+prompt,細節留給 rendering engine。有 JS(aitube-clap)/Python(py-aitube-clap) helper + timeline React 元件 + clap→video exporter + Clapper.app 視覺化編輯器整套生態。
可借鑑:1)【互換格式 / 資料模型】可當我們 journey beats 的標準化序列化格式(或抄它的 schema 概念):用平行 track 表達同一鏡頭的 camera / storyboard 圖 / 影片 / 對白 / 音效(呼應我們 beat 的多模態:css/gif/seethrough/Wan)。2)【生態工具】py-aitube-clap 可直接讀寫;aitube-timeline 可當分鏡表 UI 的現成 React 元件;clap-exporter 可參考其『.clap+assets→影片』的組裝流程。3) 若想跟外部 AI 影視工具互通(未來授權/合作),採 .clap 可省自訂格式。注意:官方 spec(DRAFT.md)尚未定稿,欄位細節需讀原始碼確認。
DirectorSKILL (wuwangzhang1216) 4 stars。star 少但 schema 設計思路精煉、與我們架構最像,值得讀 skill 文本抄欄位。 ↗ GitHub
Claude Code skill(非 MCP),劇本/散文/關鍵幀→完整電影化製作計畫。10 步 pipeline:劇本分析→beat mapping→導演書→blocking→shot list→關鍵幀策略→影片 prompt 建構→工具特化→QC 診斷。每鏡頭欄位:story function(敘事功能)、shot size/type、camera angle、blocking/staging、camera movement、continuity anchors(角色/地點/光線/道具)、關鍵幀 prompt、影片 motion prompt。特色:14 種導演風格 overlay(Spielberg/Kubrick/Nolan…)整片重塑鏡頭語法。
可借鑑:1)【欄位設計】兩個我們可能缺的高價值欄位:『story function/敘事功能』(每鏡頭存在理由 → 防 LLM 亂編、提升分鏡品質)與『continuity anchors』(明列角色/光線/道具錨點 → 直接給連貫機制當 diff 依據)。2)【beat mapping 在 shot list 之前】先 map 敘事 beat 再切鏡,呼應我們 journey beats 設計但多了導演書中間層 → 可改善 task #37『敘事 beat 太保守誤判 css』。3)【QC 診斷步驟】pipeline 最後一步做品質檢查,值得抄進我們流程。
ai-video-storyboard-skill (aicontentskills) 11 stars。輕量、概念清楚,theme layer 是可立刻抄的低成本一致性手法。 ↗ GitHub
Claude skill(非 MCP),brief→6-18 鏡多鏡頭製作計畫,依敘事弧(hook/build/payoff/CTA)組織。每鏡頭:prompt(40-80字可直接貼)、composition、camera movement、lighting、subject/action、audio sync、duration、aspect ratio。連貫靠『theme layer』:統一色盤/打光/鏡頭特性(DOF/焦段)/底片顆粒/運動語言套到每一鏡。
可借鑑:1)【theme layer 全域一致性層】獨立一層存『色盤+打光+鏡頭+底片+運動語言』套到所有 beat → 輕量版的視覺一致性,比逐鏡描述省 token 且更穩(呼應我們連貫痛點,比 ViMax 的 embedding 方案輕)。2)【依敘事弧組鏡】hook/build/payoff 結構可參考。
StoryGen-Atelier (0xsline) 808 stars / 125 forks / Apache 2.0 / JS 為主 / 活躍。 ↗ GitHub
劇本→storyboard→影片完整工具(非 MCP)。Gemini 文字生 storyboard script、Gemini 圖生 frame、Vertex Veo 生轉場片段、ffmpeg 拼接。核心創新『Interpolation Chain / 滑動視窗』:分析相鄰鏡頭對(A→B)用 Gemini 生 transition prompt+建議時長 → Veo 用 transition prompt+首尾幀生連接片段 → ffmpeg concat 無損拼。末尾生 closing shot。
可借鑑:【塊邊界連貫的另一解法】Interpolation Chain 直接對應我們 FLF 首尾幀續接(task #12/#20/#32 autoregressive 長片):用 LLM 先分析相鄰鏡頭『該怎麼轉場』生 transition prompt 再餵 FLF/Wan,而非硬接 → 可能改善塊邊界跳變。我們已有 FLF chain,差在『LLM 生轉場語意』這一步。
影片生成類 MCP servers(Kling/Veo/Higgsfield/Runway 官方) mcp-kling/higgsfield 各數十到上百 star;Runway 官方背書。成熟但與我們需求錯位。 ↗ GitHub
純『出片』MCP,不做分鏡。mcp-kling(199-mcp)、mcp-veo2(mario-andreschak)、higgsfield-mcp(jfikrat, 16+模型含 Kling3/Veo3/Sora2/Seedance/Wan)、Runway 官方 MCP(runwayml.com/mcp, 含 Gen-4.5/Veo/Kling)。都是 text/image→video 的 thin wrapper。
可借鑑:我們已自架 ComfyUI+Wan+RunPod 產線,這些雲端 API MCP 對我們價值低(成本/NSFW 限制/可控性都不如自架)。唯一參考價值:若要快速做非 NSFW demo 或 A/B 比畫質,higgsfield-mcp 的多模型統一接口設計可看。NSFW 內容這些商用 API 多半會擋,不可依賴。
通用影片製作 MCP(Video Agent / mcp-video / Pictory) Video Agent 僅 2 stars;mcp-video 32 stars / 119 tools;Pictory 商用。分鏡細緻度均不及我們。 ↗ GitHub
Video Agent MCP(h2a-dev):create_project/add_scene/analyze_script/suggest_scenes + video_creation_wizard/script_to_scenes prompt,但 scene 只有 description+duration,無 camera/angle/motion 細顆粒。mcp-video(KyaniteLabs):119 個 tool 的 ffmpeg 影片編輯 MCP,generate-storyboard 是『分析既有影片』做場景偵測+縮圖(非從劇本規劃),另有 4 個 cinematic planning tool 讀 style block/展開 shot prompt。Pictory MCP:商用,create-storyboard/render-video。
可借鑑:1) mcp-video 的『cinematic planning tools:讀 style block + 展開 shot prompt』思路可參考(呼應我們分詞器/轉 prompt task #34)。2) 其 generate-storyboard(場景偵測+抽幀+縮圖網格) 是『成片回看 QC』工具,可借鑑做我們出片後的抽幀驗證頁(task #36 已做類似)。但這些都不做『劇本→細顆粒分鏡』,scene 太粗,無法直接接我們流程。
vs 我們 script_to_vn:【誠實結論:沒有任何現成 MCP 能直接接進我們流程取代 script_to_vn,但有 2-3 個非 MCP 專案的『機制/欄位/格式』值得抄。】 我們強在(市面沒有的):(1)【呈現模態決策】每 beat 自動判 css 靜態/類 gif/seethrough 透視/Wan 影片 4 種模態——所有調研對象都只輸出單一『影片 prompt』,沒有模態分流,這是我們獨有且最貴的設計。(2)【NSFW 狀態機】服裝 stage + arousal 等級隨 beat 演進的狀態追蹤——NSFW 開源生態(uncensored-ai-video-generator topic、SpicyGen/PixelDojo 等)全是 thin『出片』工具,零個做分鏡狀態機,這塊完全空白、我們領先。(3)【自架可控產線】ComfyUI+Wan+FLF+RIFE+ControlNet+RunPod 全自架,NSFW 不受商用 API 審查,成本/可控性遠勝雲端 API MCP。(4)【細顆粒分鏡欄位】我們的 id/景別/機位/運鏡/畫面/對白已比 PenShot 的 JSON(只有 prompt/negative/duration/style,無 camera/angle/motion 明確欄位)更細。 我們弱在(該補的,痛點對應):(1)【連貫機制薄弱→塊邊界跳變】我們缺向量記憶層。PenShot 用『多層記憶+Chroma 向量檢索』、ViMax 用『關鍵幀 embedding 入庫+參考圖檢索』、ai-video-storyboard-skill 用『theme layer 全域一致性』、StoryGen 用『LLM 生 transition prompt 接首尾幀』——四種由重到輕的方案,我們一個都還沒系統化做(目前靠 FLF 硬接)。(2)【output 截斷】我們一次吐完整 JSON 才截斷;PenShot 的『每塊獨立 task + 向量庫保上下文 + auto-retry』從架構上避免截斷。(3)【分鏡品質/不亂編】我們缺『先抽實體(角色/場景)再切鏡』(ViMax) 與『每鏡 story function + continuity anchors』(DirectorSKILL) 兩個防亂編欄位。(4)【標準化格式】我們是自訂 schema;OpenClap(.clap) 是現成的 AI 影視互換格式,有 Python helper + timeline UI + exporter 整套生態。 成熟度落差:MCP 生態在『分鏡』這塊確實還很新——出片 MCP 一堆(Kling/Veo/Higgsfield 都成熟),但『劇本→細顆粒分鏡』的 MCP 幾乎只有 PenShot 一個(88★)原生支援,且它的 schema 還沒我們細。整體是『出片 MCP 成熟、分鏡 MCP 荒漠』。
建議:建議:自己做為主 + 選擇性借鑑 3 樣機制,不整合任何外部 MCP(沒有能直接接的)。 理由:我們的『模態分流 + NSFW 狀態機 + 自架產線』是核心護城河,市面零替代品;出片類 MCP 與我們自架 ComfyUI 產線錯位(成本/NSFW 審查/可控性都輸自架),分鏡類 MCP(PenShot) schema 還沒我們細。所以不是『整合』而是『抄機制』。 優先借鑑(依痛點對痛點,由高到低 ROI): 1)【最高優先 — 解塊邊界連貫 + output 截斷】抄 PenShot 的『向量記憶 + 分塊 task』架構:每個 beat 獨立成 task,生成前先從向量庫(pgvector/Chroma)retrieve 鄰近 beat 的角色服裝/arousal/姿勢/背景狀態,生成後寫回。一塊一塊跑、不一次吐完整 JSON → 同時解掉連貫(呼應 #37)與截斷兩大痛點。這是本次最值得投入的一項,建議直接讀 story-shot-agent 原始碼的 Continuity Guard + memory 模組。 2)【次優先 — 解分鏡品質/亂編】在我們 beat schema 補兩個欄位:DirectorSKILL 的『story function/敘事功能』(每鏡存在理由)+『continuity anchors』(角色/光線/道具錨點);並採 ViMax 的『先抽全片角色/場景表→再切鏡』前置步驟(LLM 先建實體清單,切鏡時只能引用清單內實體 → 防亂編、保覆蓋不漏)。低成本、立刻提升『覆蓋/不漏/不亂編』。 3)【可選 — 輕量一致性】若 1) 的向量方案太重,先上 ai-video-storyboard-skill 的『theme layer』(全片統一色盤/打光/鏡頭/底片/運動語言一個全域物件套所有 beat)當過渡,token 成本低、立刻穩定整片風格。 4)【架構決策 — 待評估】OpenClap(.clap) 是否採為內部互換格式?建議先讀 py-aitube-clap 原始碼確認 schema 是否裝得下我們的『模態+狀態機』欄位。若裝得下,採它可白嫖 timeline UI(aitube-timeline React 元件,呼應分鏡表 UX) + exporter;若硬塞會變形,則維持自訂 schema、只抄它『平行 track 表達同鏡頭多模態』的概念。不急,等核心連貫機制做完再評估。 5)【出片端】維持自架,不接 Kling/Veo/Higgsfield MCP。唯一例外:要對非 NSFW demo 快速 A/B 比畫質時,可臨時用 higgsfield-mcp。 不建議:花時間找 NSFW 專用分鏡工具——已確認該領域開源是荒漠(全是 thin 出片工具),我們的 NSFW 狀態機就是領先設計,自己做即可。
劇本場景切分/分鏡顆粒度的 NLP/演算法方案 + 現成分鏡 MCP/RAG/GitHub 可借鑑性(對標自家 script_to_vn) ✅有料
PenShot / story-shot-agent(neopen) 88★ / 20 fork / Python 99.9% / MIT / 447 commits、PyPI 有 penshot 套件,清單中最成熟最對口 ↗ GitHub
最對標我們的開源專案。LLM(LangGraph)劇本→分鏡 agent,把任意格式劇本切成 Sora/Veo/Runway 可吃的 shot prompt,主打跨 shot 角色/劇情連貫。多介面:Python SDK / FastAPI / LangGraph nodes / A2A / MCP(暴露 breakdown_script + get_task_result 兩個 MCP tool)。Pipeline 五階段:Script Parsing → Temporal Planning(逐 shot 切+依影片模型限制配 duration) → Continuity Guard(short/mid/long 三級記憶 + Chroma 向量檢索) → Prompt Generation(雙語 desc + negative + audio cue) → Output Formatting。每 shot 雙向可追溯回原劇本位置(zero-information-loss)。
可借鑑:★直接可整合三點:(1) MCP 介面 breakdown_script/get_task_result——可把我們 script_to_vn 包成 MCP server 給外部 agent 呼叫;(2) Continuity Guard 的『三級記憶(短/中/長)+Chroma RAG』——正面打我們最大痛點『塊邊界連貫』:跨 chunk 時不是只塞 prev_stage 字串,而是把已生成 beat 的角色狀態/場景/在場人物寫進向量庫,下一塊生成前先 retrieve 回來當 context(解 #37);(3) 每 shot『bidirectional traceability 回原劇本 offset』——加進我們 beat schema 一個 src_span 欄位(原文起訖字元),就能 beat 級驗證覆蓋率/不漏。⚠️它 shot-size/angle/movement 塞在 prompt 文字裡沒結構化欄位——這點我們的 camera/motion/angle 結構化欄位反而比它強,別退化。
SceneML 監督式場景切分(Alrashid & Gaizauskas, Text2Story 2025) 學術論文(CEUR Vol-3964 paper9, 2025)+ ScANT 標註語料公開(doi 10.15131/shef.data.21517908),無現成 pip 套件,要自己實作;價值在方法與特徵清單 ↗ GitHub
把『場景切分』形式化為逐句二分類/序列標註(每句標 0/1 是否為 SDS 邊界)。場景定義=time+location+principal characters 三者恆定,任一改變即換場。三種模型比較:CRF(序列標註) vs BERT-cased(句分類) vs BERT sentence-pair(把當前句+前2後2句串起來分類)。最佳 BERT-cased balanced-acc 0.58 / 邊界類 F1 僅 0.24——結論:純文本場景切分是硬問題,模型差異不顯著。關鍵在它列出的『邊界訊號特徵集』。
可借鑑:★演算法層最該抄的是它的『邊界特徵工程』,直接餵給我們的 LLM prompt 或做一道 pre-pass 規則層來『提示在哪該開新 beat』:(1) Transitioning phrases(later on/after/那天之後…轉場詞做二元特徵);(2) 段落首尾位置;(3) spaCy POS + NER BIO(人名/地名出現=可能換場);(4) ★Visually Descriptive Language(VDL) 分類器:句子標 0/1/2=是否在描述新場景設定——這跟我們判 css靜態 vs 影片 的決策高度同構,可借來修我們『敘事beat太保守判css』;(5) ★sentence-pair『當前句+前2後2句串接』的 context window 思路——比我們現在 chunk 之間只傳一個 prev_stage 字串強,可在 beat 切分時讓 LLM 永遠看到鄰近 ±2 句滑動窗。並學它用 balanced-acc + 邊界類F1 而非整體acc 來評估切分品質(類別極不平衡)。
Turning Points / TRIPOD + SUMMER(Papalampidi, Keller, Lapata, ACL 2019/2020) SUMMER 41★、論文+TRIPOD 資料集公開,是被高度引用的標竿;code 偏研究性、整合成本高,建議借思路不借 code ↗ GitHub
敘事結構切分的奠基工作。定義 5 個 turning point(Freytag 金字塔:opportunity/change-of-plans/point-of-no-return/major-setback/climax)把長劇本切成 setup/complications/aftermath 等『幕』。模型在 plot synopsis 上偵測 TP 再投射到 screenplay 的 scene 上,每個 scene 得到『屬於某 TP 的機率』。SUMMER 用 scene 機率分數 f_i 做場景選擇。關鍵公式:centrality(s_i)=λ1·Σ_{j<i}e_ij + λ2·Σ_{j>i}e_ij(前向/後向鄰接分開加權)。
可借鑑:概念層借鑑(不是 code 整合):(1) ★『先在高層 TP/幕骨架上對齊,再逐 scene/beat 細切』的兩階段思路——可在我們 chunk-level 之上加一層『全劇 turning-point 骨架』(先用便宜模型抽 5-7 個劇情大轉折當錨點),每個 chunk 帶著『你現在在第幾幕、距離下個轉折多遠』的全域 context 去生 beat,根治跨塊不連貫;(2) centrality 公式的『前後文方向性分開加權』可啟發我們在判斷 beat 重要度/該不該升格成影片時,同時看前後鄰 beat;(3) TRIPOD 的『幕』正好對應我們可以放 QTE 抉擇點的位置(每幕轉折插一個 choice,比現在硬性『每2-3幕』更有敘事依據)。
CHADPOD 角色決策點偵測(Branching Narratives, arXiv 2405.07282) arXiv 論文 + 資料集;無打包套件,需自訓。價值在『細粒度邊界別全交給 LLM』這個對我們截斷/漏切痛點的直接警示 ↗ GitHub
用 DeBERTa 二分類偵測敘事中的『角色決策點』(會讓劇情分支的選擇),89% acc。資料取自 Choose-Your-Own-Adventure。重要反直覺發現:GPT-4-turbo zero-shot 只有 62%、GPT-3.5 55%,LLM 在正類(真決策點)大量 false negative——這類細粒度邊界任務專用小模型(fine-tuned encoder)勝過通用 LLM。Alice in Wonderland demo 用 sliding-window classifier 找出 15 個潛在決策點。
可借鑑:(1) ★方法論警示:純靠 deepseek prompt 判斷『哪裡該開 beat / 哪裡該插 QTE』可能不穩(LLM 對細粒度邊界 false negative 高)——可訓/接一個輕量 encoder 分類器做『邊界偵測 pre-pass』,再讓 LLM 只負責填內容,分工降低漏切;(2) sliding-window 二分類正好可拿來自動找『QTE 抉擇點』,比現在規則式『每2-3幕插一個』更貼劇情;(3) 對標我們 VN 的分支/choices→next 匯流結構,這篇是少數直接做『把線性敘事切成分支 beat』的。
ScreenPy(drwiner) 51★ / 69 commits / 100% Python / 無近期 release,偏研究但 grammar+語意消歧 概念實用 ↗ GitHub
老牌劇本結構化標註工具。grammar-based 解析 shot heading(INT. LOCATION - SHOT_TYPE - SUBJECT - TIME),輸出階層化 JSON(scene/subscene 關係),抽 dialogue(含 speaker/parenthetical)、action、stage direction,並用 spaCy 做動詞語意消歧(對應 FrameNet frame / WordNet synset)。
可借鑑:(1) ★它的 shot heading grammar(景別/主體/時間 結構化拆解)可借來規範我們 bg/camera 欄位的標準化詞表;(2) ★『動詞→FrameNet/WordNet 語意消歧』很值得借:可把 beat 的動作動詞正規化(伸手/握住/跪下 映到統一動作本體),直接幫到我們素材『男女映射』與 action 8 分類的判定一致性(#37),避免 LLM 亂編動作名;(3) scene/subscene 階層可啟發我們在 flat beats 之上補一層 scene grouping(同場景 beat 歸組,背景固定/避免鬼影更好控)。
screenplay-tools(wildwinter)+ screenplay-parser(mcqx4) screenplay-tools 20★(142 commits/10 releases/MIT,最成熟的純 parser);screenplay-parser 1★(很新但 schema 乾淨、零依賴) ↗ GitHub
格式 parser。screenplay-tools:format-agnostic Script 物件,支援 Fountain + Final Draft FDX 雙向讀寫,元素類型齊全(Scene Heading/Action/Character/Dialogue/Parenthetical/Transition/Lyrics/Section/Synopsis/Note/Boneyard),多語言(C++/C#/JS/Python)。screenplay-parser:FDX/Fountain→結構化 JSON,per-scene 欄位 {id,heading,location_type,location,time_of_day,action,characters[],dialogue_count,shot_estimate},--shotlist 旗標還能依規則產 shot 建議(wide for heading / medium for action / OTS+close for dialogue / insert for props)。
可借鑑:(1) 若未來要吃『標準劇本格式』輸入(Fountain/FDX)而非純 txt,直接用 screenplay-tools(Python) 當前置 parser,免自己寫;它的元素分類(Transition/Parenthetical/Action…)可當我們 speaker/text/desc 的上游切分;(2) ★screenplay-parser 的『規則式 shot_estimate / shotlist』(heading→wide、action→medium、dialogue→OTS+close-up pair、prop→insert) 是一套零成本的鏡頭預設啟發式——可當我們 LLM 切分前的 baseline 種子(seed),或在 LLM 漏標 camera 時的 fallback 規則,補我們『分鏡品質/不亂編』;它自己也註明這只是 seed 不是替代品。
DirectorSKILL(wuwangzhang1216) 4★,小但概念輕量、與我們同生態(Claude skill),可快速試 ↗ GitHub
Claude Code skill,產 shot list + keyframe prompt,可疊『導演風格』(Spielberg/Kubrick/Wong Kar-wai/Nolan)。
可借鑑:借風格疊加(directorial style overlay)的 UX:我們可在 beat 生成加一個可選『運鏡/光影風格 preset』維度,讓同一劇本能換不同分鏡風格出片(對標我們 4 底模選風格的體驗,但用在分鏡層)。
vs 我們 script_to_vn:【我們已比多數現成工具強,別退化】(1) 結構化分鏡欄位最完整:我們 beat 有 camera(pov/close/side/wide)、motion、action 8分類、stage 服裝狀態機(單調遞減)、zoom、explicit/video 模態旗標——PenShot 把 shot-size/angle/movement 全塞 prompt 純文字『無結構化欄位』,screenplay-parser 只有粗略 shot_estimate,沒人有我們這套『呈現模態(css/類gif/seethrough/Wan)+服裝/興奮狀態機』。(2) prompt 工程最硬:desc(富文字)/prompt(danbooru tag 串)雙欄分離 + 優先序 tag + budget_prompt 依優先序砍尾段保證 ≤77 token——這套『輸出截斷韌性』比上述任何工具細。(3) 已有 fail-loud 覆蓋率機制(chunks_cover_raw 純函數 + finish_reason=='length' 判截斷重試 + coverage/incomplete metadata),直面『細顆粒 output 截斷』痛點。\n\n【我們明顯落後、別人有解的地方】(A) ★跨塊連貫(最痛 #37):我們 chunk 間只傳一個 prev_stage 字串,PenShot 有『三級記憶+Chroma RAG 檢索已生成角色/場景狀態』、TRIPOD 有『全劇幕骨架錨點』、SceneML 有『sentence-pair ±2句滑動窗』——我們缺一個跨塊『連貫狀態載體』(角色在場/位置/服裝/情緒/上一鏡位)。(B) ★邊界偵測別全交 LLM:CHADPOD 證明 LLM 對細粒度邊界 false negative 高(GPT-4 僅62%),SceneML/CHADPOD 都用 fine-tuned encoder + 邊界特徵(轉場詞/POS/NER/VDL)——我們純靠 deepseek prompt 憑感覺切,可能正是『切太死重複(#31)』與『敘事beat漏切判css(#37)』的根因,缺一道規則/小模型 pre-pass。(C) ★beat 級覆蓋追溯:PenShot 每 shot 帶 src_span 回原文 offset,我們只做到 chunk 級覆蓋檢查,做不到『這段原文有沒有被某 beat 涵蓋』的 beat 級驗證。(D) 無標準劇本格式(Fountain/FDX)輸入能力——但對我們 B2C『客戶丟小說/黃文/聊天』場景影響不大,優先級低。(E) 無 MCP 對外介面(PenShot 有),未來 agent 生態整合會缺。(F) QTE 位置靠硬性『每2-3幕』,TRIPOD 轉折點/CHADPOD 決策點偵測能讓抉擇點更貼劇情。
建議:結論:自己做為主(我們結構化 schema + prompt 工程 + fail-loud 已是優勢,不該砍掉換別人),借鑑 3 個演算法概念 + 選擇性整合 1 個介面。優先序:\n\n【P0 立刻做,直打 #37 跨塊連貫】抄 PenShot 的『連貫狀態載體』:convert() 跨 chunk 時不只傳 prev_stage 字串,改傳結構化 carry-over state(每塊結束從最後 N 個 beat 萃取:在場角色+各自 pos/服裝stage/情緒/最後鏡位/當前場景bg),序列化進下一塊 prompt 的『承接上下文』。輕量版不必上 Chroma,JSON 字串夾帶即可;量大再升級向量檢索。預期同時改善『切太死重複(#31)』(LLM 知道上塊用過哪些鏡位/體位就會變化)。\n\n【P0 直打 #37『敘事beat太保守判css』】把 SceneML 的 VDL 概念 + screenplay-parser 規則式 shot 啟發式做成『切分前 pre-pass』或 prompt 強化:用轉場詞/動作動詞密度/露出關鍵詞當訊號,明確告訴 LLM『這段高視覺強度→升格 video/zoom』vs『純對白→css』,別讓模型憑感覺一律保守判 css。\n\n【P1 beat 級覆蓋追溯】給 beat schema 加 src_span 欄位(原文起訖),把 chunk 級 chunks_cover_raw 升級成 beat 級覆蓋檢查——直接量化『有沒有漏情節』,比現在只驗 chunk 沒失敗更嚴,低成本高價值、純函數可測。\n\n【P1 邊界別全交 LLM(打 #31/#37 根因)】若 P0 prompt 強化仍不穩,再投入訓/接輕量 encoder 邊界分類器(參 SceneML/CHADPOD)做 pre-pass 標『哪裡該開 beat / 哪裡是 QTE 決策點』,LLM 只填內容。評估改用 balanced-acc + 邊界類 F1(類別極不平衡,別看整體 acc)。\n\n【P2 介面/敘事】(a) 把 script_to_vn 包成 MCP server(breakdown_script + get_result)對齊 PenShot,未來 agent 生態用;(b) 借 TRIPOD 加一層『全劇 turning-point 骨架』錨點,用轉折點決定 QTE 位置取代硬性每2-3幕;(c) 想吃 Fountain/FDX 標準劇本再接 wildwinter/screenplay-tools(Python) 當前置 parser。\n\n【明確不做】不要為了用 PenShot/ScreenPy 而把結構化欄位退化成『塞進 prompt 純文字』;不要整段移植 SUMMER/CHADPOD 研究 code(整合成本高、借思路即可);Fountain/FDX 解析優先級壓最低(B2C 客戶丟的是小說/聊天不是標準劇本)。
專業分鏡表標準欄位 + 商業/開源 AI 分鏡工具(storyboard/shot list)對照 script_to_vn ✅有料
專業 shot list / storyboard 標準欄位(StudioBinder / Boords / LTX 範本,產業共識 ~14 欄) 產業標準範本,非單一 repo;StudioBinder/Boords/LTX/Studiovity/Celtx 全部收斂到同一組欄位,可直接當我們 schema 的 checklist
影視業界 shot list 標準欄位集合。核心欄:Scene #、Shot #、Description、Shot Size(框景)、Camera Angle(機位角度)、Camera Movement(運鏡)。技術欄:Lens/焦段、Frame Rate(常速/慢動作/快動作)、Camera(機型)、Equipment(腳架/dolly/crane/steadicam)、Sound(boom/lav/MOS)、Lighting、Location、VFX、Subject(主體)、Talent/Cast、Props、Duration/Time(秒數+prep/shoot/total)、Status(完成勾選)、Color Coding(按 setup/location/actor 分色)、Notes。三個受控 enum 是精華:(a)Shot Size=ECU/CU/MS/WS 等框景階梯;(b)Camera Angle=eye-level/high/low/OTS/POV/bird/worm;(c)Camera Movement=Static/Pan/Tilt/Pedestal/Dolly/Truck/Arc/Steadicam/Handheld/Crane(Boom)/Zoom/Rack Focus/Dolly Zoom。
可借鑑:我們缺的關鍵欄位:(1)【景別 shot_size】獨立於 camera——我們 camera 欄把『角度(pov/side)』和『框景(close/wide)』混在一個欄,專業是拆兩欄:framing(ECU…WS) + angle(eye/high/low/OTS)。拆開後 prompt tag 更準(close-up≠from side),報價算圖層也更準(ECU 只算一個器官圖層,WS 算全身雙人)。(2)【秒數 duration】每 beat 估秒——現在 motion 只分 css/video 但沒時長,加 duration_sec 可直接餵 Wan 幀數計算 + 報價(秒數×單價)。(3)【frame_rate / slow-mo 旗標】對應你們的 RIFE bullet-time——加 fps_target/slow_factor 欄,讓分鏡層就決定哪幀要 RIFE 拉高 fps。(4)【status 欄】per-beat 狀態(pending/approved/rendered/failed)——直接接你們驗證頁的客戶確認。(5)【lens/景深 dof】——你們有 dof_test.py,可加 focal/aperture 提示。(6)【audio 欄】——對應你們 GPT-SoVITS 呻吟/環境音方案,每 beat 標 sfx/voice/ambience 線索。
ViMax (HKUDS) 8.8k stars / 1.3k forks / 339 commits,活躍。但 README 沒公開 shot JSON schema,要抄得讀原始碼 ↗ GitHub
Agentic 影片生成全家桶(Director/Screenwriter/Producer/Video Generator)。RAG-based long-script engine 把長篇小說自動切成多場景 script;shot-level storyboard 用『cinematography language』描述每鏡;有 Character/Environment Tracking + 從前序時間軸智慧挑 reference image 做一致性 + MLLM/VLM 自動一致性檢查(automated consistency check)。
可借鑑:(1)架構最像我們、最值得抄的是【VLM 自動一致性檢查迴圈】——出圖後用 VLM 評分『這張跟角色 bible 一致嗎/有沒有 futanari/有沒有多腿』,不一致就重生。這正好補你們 P1『分鏡落差』(#37)和 futanari artifact 的自動把關,取代人工抽幀。(2)【RAG long-script engine 切場景】可借鏡來改善你們 chunk 邊界連貫痛點——用 RAG/語意切而非純字數切(現在 split_chunks 按 \n\n + 7500 字),場景邊界更自然、跨 chunk 服裝/狀態更連貫。
Make-A-Storyboard (arXiv 2312.07549) + Story2Board / StoryBlender 論文+部分 demo repo;Story2Board 有官方實作。研究等級,非即用 ↗ GitHub
學術框架:disentangled control(角色一致 vs 場景一致分開學)→ spatial-mask merge 合成。含 Contextual Prompt Processing(LLM 理清 story prompt 關係)+ Balance-Aware Merge。Story2Board 是 training-free 版,StoryBlender 做 inter-shot 一致 + 可編輯 3D 分鏡。
可借鑑:思路借鏡(非直接整合):【角色一致與場景一致解耦】正好對應你們的痛點——角色 bible(vn_identity)鎖外觀 vs 場景 bg 鎖環境,本來就分兩軌,可參考它的 spatial-mask merge 解雙人交纏 anatomy 崩(比你們現在 depth-ControlNet 多一條 mask 路)。這是論文不是 production 工具,當 R&D 參考。
KupkaProd-Cinema-Pipeline 166 stars / 39 forks / 5 commits,小而新、非商用授權。借思路不借碼 ↗ GitHub
100% 本地 text→video 全自動:Gemma/Ollama 切場景+寫角色描述(50-80字)+規劃機位/打光 → Z-Image Turbo 出 keyframe → LTX-AV/ComfyUI 出片 → ffmpeg 串。架構跟你們幾乎一模一樣(本地 LLM + ComfyUI + Z-Image + 串接)。
可借鑑:(1)驗證你們架構選型正確(同樣 Z-Image Turbo + ComfyUI + 本地 LLM 分鏡)。(2)可借的具體做法:【角色描述 verbatim 注入每個 prompt】因為影片模型 zero-memory between scenes——你們已有角色 bible 注入,但可參考它『每個 prompt 完全自包含 200-400字』的紀律來治跨 beat 漂移。(3)反面教材:它用 inline text 不用 structured schema,所以無法做報價/分層/驗證頁——證明你們 structured beat schema(prompt/desc 分欄)是對的、是護城河。
storyboard-ai (sinhaGuild) / StoryBoard-Generator (Gunnika) / Sri01729 Mastra template 各 repo star 數低(數十~數百),demo/boilerplate 等級,參考價值>整合價值 ↗ GitHub
一批 script→storyboard 開源樣板:Python+React-TS、LLM chaining 逐步生多模態(圖+文);Gunnika 版做無監督長文切場景→摘要→出圖;Sri01729 用 Mastra multi-agent + 角色一致 + memory + 專業匯出。
可借鑑:(1)storyboard-ai 的【Python backend + React-TS frontend + dockerized】正是你們驗證頁可參考的前端骨架(逐 beat 卡片 + 多模態)。(2)Sri01729 的【memory management 跨場景記角色狀態】可借來治你們 stage(服裝)/state(desire/shame)跨 chunk 連貫。但這些都是 demo 等級,成熟度低,主要看 UX 結構不看程式品質。
專用 Storyboard MCP server 不存在;不要為了整合而整合 ↗ GitHub
查無現成的『分鏡/shot list』MCP server。官方 servers repo、awesome-mcp-servers(wong2/appcypher)、microsoft/mcp 都沒有 storyboard 類。
可借鑑:沒有可整合的現成 MCP。反過來說這是空白市場:你們的 script_to_vn(劇本→結構化 beat graph)如果包成 MCP tool(input: 劇本+角色 key;output: journey.json),會是這個生態第一個成人/通用分鏡 MCP。不過 B2C 產品不需要對外開 MCP,內部用 function 即可。
商業 AI 分鏡工具的客戶確認流程(Boords / Katalist / LTX Studio / Storyboarder.ai) 成熟商業產品(Boords/Katalist/LTX 都付費上線多年),UX 範式穩定可直接抄 ↗ GitHub
商業工具的『客戶確認分鏡』UX 範式,正好對應你們的驗證頁。Boords:加密分享連結(passphrase)+ per-frame 留言(threaded)+ per-frame status 標記 + version history(可還原)+ 核准後一鍵轉 shot list。Katalist:角色鎖定一鍵全局換角 + 10 風格 + Dynamic Scene 改格 + 直接轉影片(接 Veo3/Kling/Runway)。LTX Studio:角色/物件自動抽成 Elements 可標記重用 + 控 lighting/blocking/motion。
可借鑑:你們驗證頁(客戶確認分鏡點)可直接抄的 UX:(1)【per-beat 留言 + status(approved/需改/已核准)】——客戶逐格回饋,不用開會,改 status 即可推進產線。(2)【version history】——重生某 beat 後保留舊版可還原,治『重生破圖回不去』。(3)【加密分享連結】——客戶不登入也能看自己那本(成人內容更需要私密連結)。(4)【核准後才進 GPU】——把『客戶 approve』設成 GPU 派工的閘門(對應你們『先小量驗節點才放大』+『不為閒置付費』:沒核准不開 A100)。(5)Katalist【一鍵全局換角】——對應你們 vn_identity 鎖角色,可做『換女主→全 beat 重出』。(6)LTX【角色/場景自動抽成可重用 Elements】——你們可把 bg/chars 自動聚合成 element 清單給客戶挑/改。
vs 我們 script_to_vn:【我們強在哪】(1)欄位顆粒度與成人領域深度遠超通用工具:我們有 explicit/action(8 種性交分類)/stage(服裝單調遞減)/state(desire/shame/submit)/QTE choices+effect,這是通用 storyboard 工具完全沒有的互動 VN 維度。(2)prompt/desc 雙欄分離(desc 富文字供分層報價、prompt 優先序 danbooru tag 供出圖+77-token 預算裁切)是工程化的護城河——KupkaProd 等開源全用 inline text,無法報價/分層。(3)細顆粒度分鏡哲學(逐節拍逐句切、5萬字→數百 beat、100-300字/beat)+ fail-loud chunk 覆蓋驗證(chunks_cover_raw)是品質紀律,多數工具沒有覆蓋率自檢。(4)端到端接 GPU 產線(beat→KF→Wan→RIFE)+ 報價引擎,商業工具到 shot list 就停了。\n\n【別人強在哪/我們缺】(1)景別與機位混欄:專業拆 framing(ECU…WS)+ angle(eye/high/low/OTS)兩個 enum,我們 camera 一欄混拍(pov/close/side/wide 把『角度』和『框景』綁死)→ 建議拆成 framing + angle 兩欄。(2)缺 duration_sec(秒數)→ 無法精準算 Wan 幀數+報價;專業每 shot 必有時長。(3)缺 fps/slow-mo 欄位對接你們 RIFE bullet-time(分鏡層就該標)。(4)缺 per-beat status/audio/lens 欄。(5)切塊用純字數(split_chunks 7500字),ViMax 用 RAG 語意切場景→邊界連貫更好(直接打你們的『塊邊界連貫』痛點)。(6)缺出圖後 VLM 自動一致性檢查迴圈(ViMax/StoryAgent 有),你們現在靠人工抽幀,可自動化補 #37 分鏡落差 + futanari 把關。(7)客戶確認 UX:Boords 的 per-frame 留言+status+version+加密連結+核准轉 shot list,比你們驗證頁完整。
建議:自己做為主、借鏡為輔,不整合任何外部 repo/MCP(沒有成人領域+互動 VN+報價產線三合一的現成品,且 B2C 不需對外 MCP)。具體三層動作:\n\n【1. 立刻補 schema 欄位(低成本、高報酬,改 script_to_vn.py 的 beat schema + sys_prompt)】\n- 把 camera 拆成 framing(ECU/CU/MS/WS/establishing) + angle(eye/high/low/OTS/POV/bird)兩欄——出圖 tag 更準、報價分層更準。保留現有 4 值映射兼容。\n- 加 duration_sec(每 beat 估秒)→ 直接餵 Wan 幀數 + 報價(秒數×星星單價),取代現在只有 css/video 二分。\n- 加 fps_target / slow_factor 欄對接 RIFE bullet-time(分鏡層決定哪幀拉高 fps)。\n- 加 audio 線索欄(voice/sfx/ambience)對接 GPT-SoVITS 呻吟+環境音方案。\n- 加 status 欄(pending/approved/rendered/failed)對接驗證頁客戶確認。\n(這些都是在現有 LLM 分鏡 prompt 多要幾個欄位,幾乎零額外成本)\n\n【2. 借 ViMax 兩招治痛點(中成本)】\n- 出圖後加 VLM 一致性檢查迴圈(角色 bible 比對 + futanari/多腿偵測),不一致自動重生——自動化 #37 分鏡落差 + futanari 把關,省人工抽幀。\n- 把 split_chunks 純字數切改成語意/場景邊界切(RAG 或讓 LLM 先標場景界),治塊邊界連貫 + 跨 chunk 服裝/狀態漂移。\n\n【3. 驗證頁抄 Boords 客戶確認 UX(中成本,對齊你們『不為閒置付費』)】\n- per-beat 留言 + status 標記 + version history + 加密分享連結。\n- 關鍵:把『客戶 approve』設成 GPU 派工閘門——沒核准不開 A100,核准的 beat 攢成批次一次 resume 出完再 stop。這直接落實 CLAUDE.md 的 GPU 鐵則。\n\n優先序:先做【1】(純 schema,最快見效、解 output 截斷可順便把欄位精簡)→ 再做【3】(驗證頁閘門,省 GPU 錢)→ 最後【2】(VLM 迴圈,治品質)。截斷痛點另解:output 截斷主因是細顆粒度後單塊輸出爆量,schema 加欄會更爆,建議同步把『一次一 chunk』改『一次一場景』或對長 chunk 再二分,配合現有 fail-loud 重試。
「劇本→分鏡→影片」端到端開源 pipeline 調研(給 AI-Matrix / script_to_vn 借鑑) ✅有料
ViMax (HKUDS) ~8.8k star / 1.3k fork / 339 commits,活躍(technical report + agents loop coming soon) ↗ GitHub
目前最成熟、星數最高的 agentic 影片生成全家桶:Director/Screenwriter/Producer/Video-Generator 多 agent,劇本→分鏡(shot-level storyboard, cinematography language)→參考圖選擇→影片合成。架構與你的 script_to_vn 最對位。
可借鑑:3 個可直接抄的工程點:(1) **first-frame 參考圖智能選擇 + MLLM/VLM 一致性檢查**——生多張候選首幀,用 VLM 挑『跨鏡頭最一致』那張當下一鏡的首幀,正面打你的『塊邊界連貫』痛點(你現在 FLF chain 是頭尾續接,缺一個『選哪張頭』的 VLM gate);(2) **RAG-based script segmentation** 處理 multi-scene 長劇本切分(對應你 deepseek 切細顆粒+截斷問題);(3) **sequential shots 平行處理**(你已有 GPU 排程器,可對齊)。模型層用 Gemini/Veo,你是自架 ComfyUI/Wan,但 orchestration 邏輯通用。
Soap2Soap (showlab, 2026) showlab 出品(MovieAgent 同團隊),code released,arXiv 2605.17423,2026 新作 ↗ GitHub
多 agent 長片 remaking:Video-Understanding / Video-Generation / Verification 三 agent。最新(2026-05)且工程細節最完整,直接攻『長片一致性 + 塊邊界』。
可借鑑:**整篇就是你痛點的解法書**,4 個高價值點:(1) **Dual-Bridge 一致性**=Language Bridge(一份持久 scene-aware JSON screenplay 當語意骨幹)+Visual Bridge(外部視覺記憶:scene 級環境參考圖、shot 級角色參考圖,避免每鏡重抽 identity)——可直接套你的塊邊界連貫;(2) **Grid-based 批次關鍵幀**:把同場景同角色的 4 或 9 幀塞成 2x2/3x3 grid 一次生成,共享 attention→跨幀 identity/場景一致性遠勝逐張生(你出關鍵幀時可試,砍鬼影);(3) **Contextual memory allocation**:每個 shot 只動態組『最小相關上下文』而非塞全域→直接緩解你『細顆粒 output 截斷』(少塞 context = 少截斷);(4) **Verification agent 閉環**:四維(畫質/identity/環境穩定/劇情)審查→觸發選擇性 regenerate,對應你的『抽幀驗證』可自動化。**有 code**。
MovieAgent (showlab) ~337 star / 42 fork / 2 maintainer,2025-03 release,中度活躍 ↗ GitHub
Multi-Agent CoT planning:director/screenwriter/storyboard artist/location manager 四角色,hierarchical CoT 自動結構化 scene/camera/cinematography。劇本+character bank→多場景多鏡頭長片(角色一致+字幕+音訊)。
可借鑑:(1) **hierarchical CoT 分鏡 prompt 結構**(scene→camera settings→cinematography 逐層展開)可借鑑來提升你『分鏡品質/覆蓋/不漏』,把 deepseek 一次吐 beats 改成分層 CoT 較不易亂編;(2) **character bank**(角色資料夾:photo+audio)當角色一致性的 anchor,對應你的『素材男女映射』(task #37);(3) ROICtrl + ED-LoRA 做角色客製化的思路可參考。
VideoGen-of-Thought / VGoT arXiv 2412.02259,code 倉 DuNGEOnmassscript/VideoGen-of-Thought(部分釋出),學界中等熱度 ↗ GitHub
training-free 多鏡頭框架:Script Generation→Keyframe→Shot-Level Video→Smoothing 四模組。重點在 shot 描述的『五域 schema』與跨鏡頭平滑。
可借鑑:(1) **每個 shot 的五域結構化欄位**:Character / Background / Relation(角色間關係) / Camera pose / Lighting+HDR——你的 beat schema 已有景別/機位/運鏡/desc,可補上 **Relation(角色間關係)** 與 **Lighting/HDR** 兩欄(目前你較弱),提升多角色場景不亂;(2) **pre-shot description**(給下一鏡的前情上下文)=塊邊界連貫的輕量解法,可塞進你 beat 之間的 transition 欄;(3) **cross-shot smoothing 的 reset boundary**(融合相鄰 shot 的 latent)思路可對齊你的 autoregressive 續接。
VideoMemory (2026) / 同類 StoryMem、EntityBench arXiv 2601.03655(VideoMemory)/ 2512.19539(StoryMem)/ 2605.15199(EntityBench),2026 新,多為 paper+project page,code 待釋出 ↗ GitHub
entity-centric:Storyboard Agent 展開 scene/shot,Memory Agent 抽每鏡所需 entity→attribute-based key→讀寫 Dynamic Memory Bank(分 character/prop/background 三庫,存『顯式視覺+語意 descriptor』,每鏡後更新以反映劇情變化但保 identity)。
可借鑑:**Dynamic Memory Bank 是你『狀態(服裝stage/arousal)』欄位的進階版**:你現在 stage/arousal 是 per-beat 標量,可升級成 **per-entity 記憶體(角色/道具/背景三庫),每鏡讀取→生成→寫回更新**,讓服裝/興奮度/場景跨鏡頭演進但不漂移(成人場景尤其需要『衣服一件件脫』的連續狀態追蹤,這個記憶體模型天然契合)。attribute-based key 設計可借鑑做你的 entity 索引。
StoryboardUI2 (NickPittas) ~17 star / 6 fork,v1.1.0(2026-01),小但設計精緻、可直接讀 code ↗ GitHub
桌面版 storyboard app,ComfyUI 後端 + AI 生圖。重點在 **storyboard UX + 鏡頭角度 taxonomy + per-panel metadata**。
可借鑑:(1) **144 機位 taxonomy(3 景別 x 4 機高 x 12 視向)+ token 格式 `<sks> {direction} {height} shot {size}`**——可直接拿來標準化你 beat 的 camera/angle 欄位(你現在是自由文字,改成有限枚舉=覆蓋全、不亂編、deepseek 更好對齊),配合 Qwen-Edit Multiple-Angles LoRA 出圖;(2) **per-panel 完整 metadata**(template/params/prompt/LoRA/seed/camera token/ref image paths + 『reuse parameters』還原)=你 review 頁可借鑑的可重現性設計;(3) grid view 多鏡頭管理 + PDF/CSV 匯出的 storyboard UX。
StoryboardAI (Sunnylincc) / KupkaProd Cinema Pipeline StoryboardAI 早期(~0 star,3 commits,但 PRD/architecture 文件齊);KupkaProd 本地向,中等 ↗ GitHub
StoryboardAI:自架多 provider pipeline(Script→Characters/Scenes→Shot list→Image→video provider→FFmpeg),BYOK + 可重現 manifest。KupkaProd:100% 本地、無雲、無 API key 的自主影片產線。
可借鑑:(1) **plugin-style provider interface + BYOK + reproducibility manifest(export zip)**=你多模型路由(deepseek/Wan/ComfyUI)的乾淨抽象,值得對齊你的 router/pricing/trace(task #35);(2) KupkaProd 的『全本地無 API』編排對你成人內容(不能送雲端 API 審查)特別契合,值得看它怎麼串本地模型;(3) 兩者都是『pipeline 骨架參考』而非演算法,架構抄、品質要自己補。
ComfyUI 原生 storyboard 生態(comfyui-storyboard / Create Coherent Scenes 等 workflow) ComfyUI 官方 + RunComfy workflow 庫,活躍、即用,與你現有棧零摩擦 ↗ GitHub
ComfyUI 內建/社群 storyboard 節點與 workflow:grid view 多鏡頭、3D 相機控制(azimuth/elevation/zoom 自動轉 prompt)、batch 執行、FLF(first-last-frame)keyframe→video、Qwen Image Edit + Wan 2.2 做跨鏡頭一致場景。
可借鑑:你已用 ComfyUI/Wan,這些是**可直接 import 的現成 workflow**:(1) **comfyui-storyboard 的 3D 相機控制節點**(拖角度自動生『front view/high angle』prompt)可省掉你手刻機位→prompt 的轉換;(2) **『Create Coherent Scenes』(Qwen Image Edit + Wan 2.2 I2V)**主打跨鏡頭角色/光線/構圖一致,正中你塊邊界連貫,可直接拿來當關鍵幀→影片那段;(3) batch shot 執行對齊你的多片並行。
vs 我們 script_to_vn:**我們(script_to_vn)強在哪**:(1) 多模態呈現分流(css靜態/類gif/seethrough透視/Wan影片)——所有開源專案都只做『圖→片』單一路徑,沒人有你這種『依 beat 重要性選呈現模態』的成本/品質階梯,這是你的獨門;(2) 成人特化的狀態機(服裝stage/arousal per-beat)——通用專案完全沒有連續『脫衣/興奮度』狀態追蹤;(3) 已落地的自架 GPU 產線(RunPod A100 + RIFE 補幀 + Lightning LoRA 砍成本 + 排程器),不靠雲端 API(成人內容剛需),多數 paper 專案是 Gemini/Veo 雲端 demo,本地化你領先;(4) 已有 router/pricing/trace 端到端工程化(task #35/36)。\n\n**它們強在哪 / 我們的 gap**:(1) **塊邊界連貫**——這是你最痛、也是 2026 一票 paper 的主攻點。你目前靠 FLF 頭尾續接,缺『首幀 VLM 一致性 gate』(ViMax)、『Dual-Bridge 語言+視覺記憶』(Soap2Soap)、『per-entity Dynamic Memory Bank』(VideoMemory)。**這三個是現成解法,你沒有**;(2) **分鏡 schema 的結構化嚴謹度**——你的 camera/angle 是自由文字易亂編/漏;它們有 144 機位枚舉(StoryboardUI2)、五域固定欄位(VGoT)、7 維服裝 DNA(Soap2Soap),**枚舉化能直接修你『分鏡品質/覆蓋/亂編』**;(3) **output 截斷**——Soap2Soap 的 contextual memory allocation(每鏡只給最小上下文)是對症解,你目前一次吐全量 beats 才會截斷;(4) **關鍵幀一致性**——Grid-based 批次生關鍵幀(Soap2Soap)、IP-embedding 跨鏡頭(VGoT)你都還沒上;(5) **驗證閉環**——Soap2Soap 有 Verification agent 自動四維審查+regenerate,你的抽幀驗證還是半手動。\n\n**注意**:沒有任何一個現成『分鏡 MCP server』(查無此物),storyboard 相關 MCP 不存在;但分鏡 schema/演算法是通用的,成人內容只是你的 payload,工具層可全抄。
建議:**結論:不要整合任何單一專案當骨架(你的 build_vn 多模態分流已是更先進的獨門,套別人會降級),改採『借演算法、抄 schema、import workflow』三層策略。**\n\n**立即可做(高 ROI,直接修你列的痛點 + task #37 分鏡落差):**\n1. **分鏡 schema 枚舉化(修『覆蓋/不漏/亂編』+ 截斷)**:把 beat 的 camera/angle 從自由文字改成有限枚舉(抄 StoryboardUI2 的 3景別x4機高x12視向 = 144 機位 token);每個 beat 補 VGoT 五域缺的兩欄 **Relation(角色間關係)** + **Lighting/HDR**。枚舉化讓 deepseek 對齊更穩、不亂編。\n2. **塊邊界連貫(你最痛)= 抄 Soap2Soap Dual-Bridge**:維護一份持久 JSON『語言橋』(scene-aware screenplay 當單一事實來源)+ 一個外部『視覺橋』(scene 級環境參考圖 + shot 級角色參考圖,避免每塊重抽 identity)。這比你現在純 FLF 頭尾續接強一個量級。\n3. **截斷根治 = 抄 Soap2Soap contextual memory allocation**:不要一次叫 deepseek 吐全片 beats,改『每塊只塞最小相關上下文』分段生成 → 既解截斷又解塊邊界(兩個痛點一起解)。\n4. **狀態機升級 = 抄 VideoMemory Dynamic Memory Bank**:把你的 per-beat stage/arousal 標量升級成 per-entity 三庫(角色/道具/背景),每鏡讀→生→寫回。成人場景『連續脫衣/興奮演進不漂移』天然契合,這是你獨門 + 它演算法的最佳結合。\n\n**出圖/出片層(零摩擦,你已是 ComfyUI/Wan):**\n5. 直接 import ComfyUI 現成 workflow:**『Create Coherent Scenes』(Qwen Image Edit + Wan 2.2 I2V)** 當關鍵幀→影片的一致性那段;試 **Grid-based 批次關鍵幀**(Soap2Soap,2x2/3x3 共享 attention)砍鬼影、提 identity 一致(對應你 task #9 背景固定/#21 futanari artifact)。\n\n**中期:**\n6. 加 **Verification gate**(抄 Soap2Soap 四維審查 agent)把你半手動抽幀驗證自動化,失敗自動 regenerate。\n7. 深讀 **ViMax**(8.8k star,最成熟)的 orchestration + first-frame VLM 選擇 code,當你 build_vn orchestrator 的對照組(只抄 first-frame gate,不抄它的雲端模型層)。\n\n**不建議**:不要自己從零造分鏡引擎(Soap2Soap/ViMax 已開源可讀),也不要做分鏡 MCP(無現成、ROI 低,你是單一產品不需要協定層)。優先序:1→3→2→4 先打四大痛點(枚舉/截斷/邊界/狀態),再 5→6→7。

🎯 彙整建議

I have enough grounding. The actual `script_to_vn.py` confirms every gap the research streams identified: `camera` mixes framing+angle in one field (line 69), `prev_stage` is a single string carry-over (line 211), no `variation_type`/`duration`/`status`/`src_span` fields, chunking is pure-char `split_chunks` (line 114). Now I'll synthesize the decision document. ```markdown # 現成分鏡方案調研 → 決策建議(AI-Matrix `script_to_vn`) > 範圍:合法成人(18+)AI 影片/VN 生成。痛點=塊邊界連貫、細顆粒 output 截斷、分鏡品質(覆蓋/不漏/不亂編)。 > 已對照實際程式碼 `/Users/daihaoting_1/Desktop/ai-matrix/script_to_vn.py`,所有建議都標明改哪一行/哪個函式。 --- ## TL;DR(一句話結論) **沒有任何現成「分鏡 MCP / 分鏡 RAG」可以 plug-in 取代 `script_to_vn`——這領域全是 build-your-own pipeline。決策=「不整合、重度借鑑」**:抄 3 個 schema 設計 + 4 個演算法,自己改進 `script_to_vn.py`。我們的「呈現模態分流(css/類gif/seethrough/Wan)+ NSFW 狀態機(stage/arousal)+ 自架 GPU 產線」是市面零替代品的護城河,**絕不可為了套別人而退化**。 五路調研高度收斂:**ViMax(8.8k★,5 路都點名)是最值得讀原始碼的對標物**;**PenShot/story-shot-agent(88★,唯一原生 MCP)是連貫機制範本**;**Soap2Soap(2026 最新,showlab)是塊邊界連貫的解法書**。 --- ## 1) 值得整合/借鑑的 Top 清單(排序:ROI 由高到低) | # | 名稱 | URL | 借鑑點(對應我們哪個痛點) | 成熟度 | 動作 | |---|------|-----|---------------------------|--------|------| | 1 | **ViMax** (HKUDS) | https://github.com/HKUDS/ViMax | `variation_type(large/medium/small)+reason` 自評欄→驅動模態選擇/開新機位(解#31/#37 根因);FLF 分解 prompt(ff/lf 純快照、motion 用外觀指涉);機位復用啟發式;`get_next_scene(previous_scenes)` 滑動上下文切場景;出圖後 VLM 一致性檢查迴圈 | **8.8k★ / 活躍 / Python**,5 路一致最高評 | **重度借鑑**(讀 `interfaces/shot_description.py` + `agents/storyboard_artist.py` + `agents/scene_extractor.py`,反向移除其「安全改寫/番茄醬代血」段) | | 2 | **PenShot / story-shot-agent** (neopen) | https://github.com/neopen/story-shot-agent | 三級記憶(短/中/長)+Chroma RAG 跨 chunk 保角色/場景狀態(解塊邊界連貫);分塊獨立 task + auto-retry(解 output 截斷);每 shot `src_span` 雙向回溯原文(解 beat 級覆蓋追溯);`breakdown_script`+`get_task_result` MCP 介面範本 | **88★ / Python 99.9% / MIT / PyPI 有套件**,唯一原生 MCP | **借機制**(讀 Continuity Guard + memory 模組);MCP 介面當未來範本 | | 3 | **Soap2Soap** (showlab, 2026) | https://github.com/showlab/Soap2Soap | Dual-Bridge 一致性(Language Bridge 持久 JSON screenplay + Visual Bridge 外部視覺記憶);**contextual memory allocation**(每鏡只給最小上下文→直接解截斷);Grid-based 批次關鍵幀(2x2/3x3 共享 attention 砍鬼影);Verification agent 四維閉環 | **2026-05 最新,code released**,arXiv 2605.17423 | **借演算法**(contextual memory allocation 是截斷的對症解,優先讀) | | 4 | **AI Comic Factory** (jbilcke-hf, HF) | https://github.com/jbilcke-hf/ai-comic-factory | 分批滑動續寫(`predictNextPanels.ts`:每批 N 格、已生成回填 context、自動算 first/next/last);**容錯 JSON 解析器**(`dirtyGeneratedPanelsParser.ts`:砍 ``` 雜訊、半截 JSON 容錯、欄位 fallback);degraded mode;去重指令 | **1.3k★,已封存(read-only)** 但純參考無依賴風險 | **抄程式碼**(續寫 + dirtyParser 直接解我們 deepseek 截斷/壞 JSON 爆批) | | 5 | **DirectorSKILL** (wuwangzhang1216) | https://github.com/wuwangzhang1216/DirectorSKILL | 兩個高價值欄位:`story function`(每鏡存在理由→防亂編)+ `continuity anchors`(角色/光線/道具錨點→連貫 diff 依據);beat mapping 在 shot list 之前;QC 診斷步驟 | **4★** 但 schema 思路最像我們 | **抄欄位**(讀 skill 文本,加進 beat schema) | | 6 | **StoryboardUI2** (NickPittas) | https://github.com/NickPittas/StoryboardUI2 | **144 機位 taxonomy**(3 景別 × 4 機高 × 12 視向)+ token 格式 `{direction} {height} shot {size}`(解 camera 欄自由文字→枚舉化);per-panel 完整 metadata + reuse parameters | **17★ / v1.1.0 / ComfyUI 後端**,可直接讀 code | **抄枚舉表**(標準化我們 camera/angle 欄) | | 7 | **VideoMemory** (2026) | https://hit-perfect.github.io/VideoMemory/ | Dynamic Memory Bank(角色/道具/背景三庫,每鏡讀→生→寫回,存顯式視覺+語意 descriptor)=我們 stage/arousal 標量的進階版(成人「衣服一件件脫」連續狀態天然契合) | arXiv 2601.03655,paper+page,code 待釋出 | **借概念**(狀態機升級的目標形態,非立即整合) | | 8 | **VGoT / VideoGen-of-Thought** | https://cheliosoops.github.io/VGoT/ | 每 shot 五域 schema(Character/Background/**Relation 角色間關係**/Camera/Lighting+HDR)——補我們較弱的 Relation + Lighting 兩欄;pre-shot description 做塊邊界輕量解 | arXiv 2412.02259,部分釋出 | **抄欄位**(補 Relation/Lighting) | | — | **產業 shot list 標準欄位**(StudioBinder/Boords/LTX,~14 欄收斂) | https://boords.com / studiobinder.com | 三個受控 enum:Shot Size(ECU/CU/MS/WS)、Camera Angle(eye/high/low/OTS/POV)、Camera Movement(Static/Pan/Dolly/Zoom/Rack…);duration、status、lens/dof、audio | 產業共識,當 schema checklist | **當欄位清單對照** | | — | **ComfyUI 原生 storyboard 生態**(comfyui-storyboard / Create Coherent Scenes workflow) | https://www.runcomfy.com/comfyui-nodes/comfyui-storyboard | 3D 相機控制節點(拖角度自動轉 prompt);「Create Coherent Scenes」(Qwen Image Edit + Wan 2.2 I2V) 跨鏡頭一致 | 活躍、即用、與我們棧零摩擦 | **直接 import workflow**(出圖層,非分鏡層) | **明確排除(NSFW 紅線 + 錯位)**: - ❌ 雲端出片 MCP(Kling/Veo/Higgsfield/Runway/Pictory)——我們已自架 ComfyUI+Wan+RunPod,這些**成人內容必被審查封鎖**(ViMax 系統 prompt 都明令避敏感內容),且成本/可控性全輸自架。唯一例外:非 NSFW demo 快速 A/B 比畫質時可臨時用 higgsfield-mcp。 - ❌ movie-crafter / 各家 boilerplate(<100★ 或核心閉源),無整合價值。 --- ## 2) 分項建議 ### (a) 欄位設計 — beat schema 該補哪些專業分鏡欄位 > 現狀(`script_to_vn.py:69-76` 的 schema):`id/bg/camera/motion/chars/prompt/desc/speaker/text/tap/next/explicit/video/action/stage/zoom/choices`。 > **我們已強的別動**:`prompt`/`desc` 雙欄分離(tag 串 vs 富文字)、`stage` 服裝單調遞減狀態機、`action` 8 分類、`explicit/video/zoom` 模態旗標、`choices+effect` 互動維度——這套通用工具全沒有,是護城河。 **該補的欄位(依 ROI):** | 欄位 | 來源 | 解什麼 | 改哪裡 | |------|------|--------|--------| | **`variation_type` (large/medium/small) + `variation_reason`** | ViMax | **最高價值**。現在 `camera` 4 值(pov/close/side/wide)只是相機,沒有「這一鏡跟上一鏡落差多大」這個維度——這正是 #31(切太死/同機位重複)和 #37(敘事 beat 太保守誤判 css)的**根因**。用此欄驅動:small→css/類gif、large→Wan 影片;large→開新機位、small→復用 | `sys_prompt` schema(line 69-76)+ 規則 1/2 | | **拆 `camera` → `framing` + `angle` 兩欄** | 產業標準 / StoryboardUI2 | 現在 `camera:"pov\|close\|side\|wide"`(line 69)把「角度(pov/side)」和「框景(close/wide)」綁死。拆成 `framing(ECU/CU/MS/WS)`+`angle(eye/high/low/OTS/POV/bird)` → 出圖 tag 更準(close-up≠from side)、報價算圖層更準(ECU 一個器官圖層 vs WS 全身雙人)。**保留現有 4 值映射兼容** | schema + 規則 3b(line 89) | | **`duration_sec`** | 產業標準 / VGoT | 現在 `motion` 只分 css/video 沒時長 → 無法精準算 Wan 幀數 + 報價(秒數×星星單價)。每 beat 估秒直接餵 `wan_flf_thrust` 幀數計算 + `quote_engine.py` | schema | | **`fps_target` / `slow_factor`** | 產業標準 | 對接你們已有的 `rife_interp.py` bullet-time(CLAUDE.md 的 `RIFE_HIFPS`/`RIFE_SLOW`)。分鏡層就決定哪幀要 RIFE 拉高 fps,不必事後人工標 | schema | | **`story_function`(敘事功能)** | DirectorSKILL / ViMax | 每鏡「存在理由」→ 防 LLM 亂編、提升覆蓋品質 | schema + 規則 10 | | **`continuity_anchors`(角色/光線/道具錨點)** | DirectorSKILL | 給連貫機制當跨 chunk diff 依據(配合 (b) 的 carry-over state) | schema | | **`src_span`(原文起訖字元)** | PenShot | 把 `chunks_cover_raw`(line 140 chunk 級)升級成 **beat 級覆蓋檢查** → 量化「這段原文有沒有被某 beat 涵蓋」,比現在只驗 chunk 沒失敗更嚴。純函數可測 | schema + 新增驗證函數 | | **`status`(pending/approved/rendered/failed)** | Boords / 產業 | per-beat 狀態,直接接 (d) 驗證頁的客戶確認閘門 | schema | | **`audio` 線索(voice/sfx/ambience)** | 產業標準 | 對接你們已研究的 GPT-SoVITS 呻吟+環境音方案 | schema | | **`relation`(角色間關係)+ `lighting`** | VGoT | 多角色場景不亂(成人雙人交纏尤其需要);目前較弱 | schema | > ⚠️ **加欄會讓 output 更爆**——務必與 (b) 的分批續寫同步上,否則加完 schema 截斷更嚴重。 --- ### (b) 場景切分 — 有無現成 library 勝過我們現在的「程式 split + LLM」 **結論:沒有可直接 pip install 的 library 取代你的 `split_chunks`+LLM,但有 4 個演算法/機制顯著勝過現狀,要自己實作。** > 現狀問題(已讀程式碼確認): > - `split_chunks`(line 114)純按字數(`\n\n` + 7500 字)切,**場景邊界不自然** → 跨 chunk 服裝/狀態漂移。 > - chunk 間只傳 **一個 `prev_stage` 字串**(line 211)→ 連貫載體太薄,是塊邊界跳變主因。 > - 一次叫 deepseek 吐整塊 beats → 細顆粒後爆量截斷(你自己註解 line 14/197-200 已知)。 **勝過現狀的 4 招(優先序):** 1. **【解塊邊界連貫 — 最痛】carry-over state(抄 PenShot/Soap2Soap Dual-Bridge)** `convert()` 跨 chunk 時不只傳 `prev_stage` 字串,改傳**結構化承接狀態**:每塊結束從最後 N 個 beat 萃取 `{在場角色 + 各自 pos/服裝stage/情緒/最後鏡位 + 當前場景bg}`,序列化進下一塊 prompt(line 211 的 `cont`)。**輕量版不必上 Chroma,JSON 字串夾帶即可**;量大再升級向量檢索(pgvector/Chroma)。預期順帶改善 #31(LLM 知道上塊用過哪些機位/體位就會變化)。 2. **【解 output 截斷 — 根治】分批滑動續寫(抄 AI Comic Factory + Soap2Soap contextual memory allocation)** 不一次吐整塊,改每批生 N 鏡(N×~200 tokens 設上限),把已生成鏡頭 JSON 回填當 `existingPanels` 續寫,告訴 LLM「現在第幾鏡/共幾鏡/first|next|last」,生成後重編 id。配套抄 `dirtyGeneratedPanelsParser`(容錯解析)+ degraded mode → 取代現在「整塊重試 3 次」(line 214)的全有全無。**這同時解截斷 + 塊邊界(少塞 context = 少截斷)**。 3. **【解敘事 beat 太保守判 css — #37】邊界訊號 pre-pass(抄 SceneML 特徵 + screenplay-parser 規則)** 純靠 deepseek prompt 憑感覺切,是 #37 根因。CHADPOD 論文證明 **LLM 對細粒度邊界 false negative 高(GPT-4 僅 62%)**。做法:用轉場詞(later/那天之後)、動作動詞密度、露出關鍵詞當訊號,在 prompt 明確提示「這段高視覺強度→升格 video/zoom」vs「純對白→css」。若仍不穩,再投輕量 encoder 分類器做 pre-pass(評估用 balanced-acc + 邊界類 F1,**別看整體 acc**,類別極不平衡)。 4. **【可選 — 全域一致性錨點】Visual Theme layer(抄 ai-video-storyboard-skill)** 分鏡前先產一個全域物件(色盤/燈光/角色外觀錨點/鏡頭性格),每鏡 prompt 套這層。**比向量方案輕、token 成本低**,可當 1) 還沒上之前的過渡。 > **ViMax 的 `get_next_scene(previous_scenes)` 滑動切場景**(把已生成場景全文塞回 context 再生下一場、規定地點/時間改變才切新場景)是把 1)+3) 合一的成熟做法,可直接對照其 `scene_extractor.py`。 --- ### (c) MCP — 有無可接的 **沒有任何可接的現成分鏡 MCP server。** 多路交叉確認:官方 `modelcontextprotocol/servers`、`awesome-mcp-servers`、`microsoft/mcp` 全無 storyboard 類。 - **唯一原生分鏡 MCP = PenShot**(`breakdown_script` + `get_task_result`),但它的 shot schema 把 shot-size/angle/movement **全塞進 prompt 純文字、無結構化欄位**——比我們的 `camera/action/stage` 結構化欄位**還粗**,接進來是降級。 - 出片類 MCP(Kling/Veo/Higgsfield)成熟但 **NSFW 必被封 + 與自架產線錯位**。 - **整體生態現況:「出片 MCP 成熟、分鏡 MCP 荒漠」。** **決策:** 1. **現在不接任何外部 MCP**(無可 plug 的,B2C 單一產品也不需協定層)。 2. **未來**若要開放 agent 生態,把 `script_to_vn` **包成自己的 MCP server**(`breakdown_script(劇本+script_key) → journey.json` + `get_result`),對齊 PenShot 介面當範本。這會是該生態**第一個成人/通用分鏡 MCP**,但非當務之急。 --- ### (d) 客戶確認 UX — 商業工具怎麼做,驗證頁可學什麼 商業工具(Boords / Katalist / LTX Studio)的「客戶確認分鏡」UX 已成熟多年,直接對應你們的 R2 驗證頁(`build_val_page.py` / `build_pipeline_review.py`)。可直接抄: | 學什麼 | 來源 | 對應你們 | |--------|------|---------| | **per-beat 留言 + status 標記**(approved/需改/已核准) | Boords threaded comments | 客戶逐格回饋不用開會,改 status 推進產線 | | **version history**(重生某 beat 保留舊版可還原) | Boords | 治「重生破圖回不去」 | | **加密分享連結**(passphrase,不登入也能看) | Boords | 成人內容更需私密連結 | | **★核准後才進 GPU**(approve = GPU 派工閘門) | Boords「核准轉 shot list」 | **直接落實 CLAUDE.md 鐵則「GPU 不為閒置付費」**:沒核准不開 A100,核准的 beat 攢成批次一次 resume 出完再 stop | | **一鍵全局換角**(換女主→全 beat 重出) | Katalist 角色鎖定 | 對應你們 `vn_identity` 鎖角色 | | **角色/場景自動抽成可重用 Elements** | LTX Studio | 把 bg/chars 自動聚合成 element 清單給客戶挑/改 | > **最關鍵一條**:把「客戶 approve」設成 GPU 派工閘門——這不只是 UX,是省 GPU 錢的架構閘門,與你們鐵則完全咬合。 --- ## 3) 整合 vs 自己做 的取捨 ### 已有的,別重造(護城河,套別人會降級) | 我們已有 | 為何不可退化 | |----------|-------------| | **呈現模態分流**(css靜態/類gif/seethrough/Wan,`explicit/video/zoom` 旗標) | **市面零替代品**。所有調研對象只輸出單一「影片 prompt」,沒有按 beat 重要性選成本階梯的概念。這是你的成本優勢設計,沒得抄、自己做。 | | **NSFW 狀態機**(`stage` 服裝單調遞減 + desire/shame/submit) | 成人 VN 特有連續狀態追蹤,通用框架完全沒有。VideoMemory 的 Dynamic Memory Bank 是它的進階目標形態,但要自己升級。 | | **`prompt`/`desc` 雙欄分離 + `budget_prompt` 77-token 優先序裁切**(line 157-186) | 工程化護城河。KupkaProd 等開源全用 inline text,無法報價/分層。比 PenShot 的 JSON(只有 prompt/negative/duration)細。 | | **fail-loud 覆蓋機制**(`chunks_cover_raw` + `finish_reason=='length'` 判截斷 + INCOMPLETE.json,line 140/223/283) | 多數工具沒有覆蓋率自檢。這是品質紀律,保留並升級成 beat 級。 | | **端到端商轉骨架**(`dynamic_router.py`+`quote_engine.py`+trace+自架 RunPod 產線) | ViMax/Soap2Soap 是研究導向、無定價/成本管控。你已落地。 | ### 只補真正缺的(自己做為主、借鑑為輔) **核心原則:不整合任何外部 repo/MCP 當骨架(沒有「成人+互動 VN+報價產線」三合一現成品),改採「借演算法、抄 schema、import workflow」三層策略。** - **分鏡層(`script_to_vn.py`)**:自己改,借 ViMax schema + PenShot/Soap2Soap 連貫機制 + AI Comic Factory 截斷解法。 - **出圖/出片層(ComfyUI/Wan)**:直接 import 現成 workflow(零摩擦)+ 借 Soap2Soap Grid 批次關鍵幀砍鬼影。 - **驗證層**:抄 Boords UX + 加 GPU 閘門。 ### 落地優先序(對應你列的痛點) > **痛點 → 招式對照**:①output 截斷 ②塊邊界連貫 ③分鏡品質(覆蓋/不漏/不亂編) | 順序 | 動作 | 解哪個痛點 | 成本 | 改哪裡 | |------|------|-----------|------|--------| | **P0-1** | 加 `variation_type(large/medium/small)+reason` 欄,驅動模態選擇+開新機位 | ③ #31/#37 根因 | 極低(prompt 多要一欄) | `sys_prompt` schema + 規則 1/2 | | **P0-2** | 鏡頭生成改**分批滑動續寫** + 抄 `dirtyParser` 容錯 + degraded mode | ① 根治 | 中 | `convert()` line 195-243 重構 | | **P0-3** | chunk 間傳**結構化 carry-over state**(取代 `prev_stage` 字串) | ② 最痛 | 中(輕量版 JSON 夾帶) | `convert()` line 211 `cont` | | **P1-1** | 拆 `camera`→`framing`+`angle`;加 `duration_sec`/`fps_target`/`status`/`audio` | ③ + 報價/產線/驗證對接 | 低(同步 P0-1 一起加) | schema | | **P1-2** | 加 `src_span`,`chunks_cover_raw` 升級成 **beat 級覆蓋檢查** | ③ 量化不漏 | 低(純函數可測) | line 140 + 新函數 | | **P1-3** | 邊界訊號 prompt 強化(轉場詞/動作密度/露出關鍵詞),明示 video vs css | ② #37 | 低 | `sys_prompt` | | **P2-1** | 驗證頁抄 Boords UX + **approve = GPU 閘門** | 省 GPU 錢 | 中 | `build_val_page.py` | | **P2-2** | 出圖 import 「Create Coherent Scenes」workflow + 試 Grid 批次關鍵幀 | 砍鬼影/#9/#21 | 低(現成 workflow) | ComfyUI | | **P2-3** | 出圖後加 VLM 一致性 gate(角色 bible 比對 + futanari 偵測),失敗自動重生 | ③ 自動化抽幀驗證 | 中 | 新增 QC node | | **P3** | (評估)`split_chunks` 改語意/場景邊界切;狀態機升級 per-entity Memory Bank;包 MCP server | ②③ + 生態 | 高 | 待核心做完再評估 | **直接可抄的檔案**(已被多路讀過、結構乾淨): - ViMax `interfaces/shot_description.py`(整碗 schema)、`agents/storyboard_artist.py`(出鏡頭 + FLF 分解 prompt,**反向移除其安全改寫段**)、`agents/scene_extractor.py`(滑動切場景) - AI Comic Factory `src/app/queries/predictNextPanels.ts`+`getStoryContinuation.ts`(分批續寫)、`src/lib/dirtyGeneratedPanelsParser.ts`(容錯解析) - PenShot `story-shot-agent` 的 Continuity Guard + memory 模組 - Soap2Soap contextual memory allocation(讀 arXiv 2605.17423 + code) --- ## 4) 紅線提醒(成人內容) 1. **絕不接會審查/封鎖 NSFW 的託管服務**:Kling/Veo/Higgsfield/Runway/Pictory 等雲端出片 API 對成人內容多半直接擋,**不可依賴**。維持自架 ComfyUI+Wan+RunPod。唯一例外:非 NSFW demo 快速比畫質時臨時用。 2. **借演算法時反向移除「安全改寫」段**:ViMax 系統 prompt 明令避免敏感內容(用番茄醬代血)、AI Comic Factory system prompt 也有安全約束——**欄位/演算法/解析器照抄,但 prompt 的安全改寫/降級段要刪掉或反向改寫**,否則會把你的成人內容改乾淨。 3. **分鏡工具本身通用、payload 才是成人**:schema 設計、場景切分、續寫、容錯解析、驗證 UX 全部與內容無關,可放心借鑑。NSFW 狀態機是**你的領先設計**(開源生態這塊是荒漠),自己做即可,不必找「NSFW 專用分鏡工具」(不存在)。 4. **法律**:維持「只用合法成年配音/素材」(CLAUDE.md 音訊方案紅線一致)。 ``` The markdown above is the complete deliverable. Key grounding facts confirmed against the real codebase at `/Users/daihaoting_1/Desktop/ai-matrix/script_to_vn.py`: - `camera` field (line 69) genuinely mixes framing+angle → confirms the "split into framing+angle" recommendation - `prev_stage` single-string carry-over (line 211) → confirms the structured carry-over state recommendation - pure-char `split_chunks` (line 114) → confirms the semantic-split recommendation - existing `chunks_cover_raw` is chunk-level (line 140) → confirms the beat-level `src_span` upgrade - `budget_prompt` 77-token logic (lines 157-186) and fail-loud `INCOMPLETE.json` (line 283) confirmed as existing moats not to rebuild The decision is: **do not integrate any external MCP/RAG (none pluggable exists — "出片 MCP 成熟、分鏡 MCP 荒漠"), heavily borrow ViMax schema + PenShot/Soap2Soap continuity mechanisms + AI Comic Factory truncation fixes, and never let the modality-routing / NSFW state-machine moats degrade.**

2026-06-05 · 分鏡方案研究 wf5helkof(6 agent)