Communitygithub.com

漫剧(小說/網文)影片生成流水線(novel-video-pipeline)

將小說、網文或劇本轉為橫屏 16:9 AI 漫劇的完整流水線。包含 S1 改編劇本、S2 資產庫(角色+場景)、S3 分鏡提示詞、S4 音訊、S5 合成共 5 個工作站,全程確保版權乾淨、資產優先、兒童安全閘門。

網文)影片生成流水線(novel-video-pipeline) 是什麼?

novel-video-pipeline 是一個專為 AI 漫劇(16:9 橫屏多集)設計的模組化生成流水線技能。它將文字故事(網文、漫畫、劇本)依序通過五個工作站:S1 改編劇本(壓縮出節拍表)、S2 資產庫(建立角色三視圖與場景多視圖資產,搭配 CC0 參考圖與 IP 防火牆)、S3 分鏡提示詞(引用資產庫撰寫每鏡頭的 prompt,鎖定角色一致性)、S4 音訊(配 CC0 BGM/音效)、S5 合成(逐鏡生圖生影、音訊對齊、剪輯成片)。其核心設計原則是「資產優先」:先建立角色與場景資產,再撰寫分鏡提示詞,確保跨鏡頭一致性。支援即夢、Runway Gen-4、Kling、Seedance 等平台。內建 IP 防火牆(封鎖 Disney、Marvel 等第三方版權形象)與兒童安全閘門(可選啟用)。另有自我成長資料閉環(選用),能透過回饋自動改善生成品質。適用於製作爆款節奏的漫劇、短影音或分鏡腳本。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add woanderingboy/novel-video-pipeline

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

漫劇(小說 / 網文 / 漫畫改編)· 四站式流水線(novel-video-pipeline)

Overview

把一段文本故事(網文小說、漫畫、原創劇本、童話繪本等)穩定地轉化為可餵給文生影片模型的分鏡提示詞包 + 視覺參考圖 + CC0 配音配樂,全程守住「不複製真實第三方版權形象」底線。預設面向漫劇(橫屏 16:9 / 多集連載)產線,也可按需切換為兒童向漫劇、單集短影音等子類型。產線基調對標當下爆款漫劇的「強鉤子 + 情緒拉扯 + 反轉 + 爽點 + 集間懸念」節奏,但只取法其方法層骨架,角色 / 情節 / 畫風一律原創。

流水線由四個順序工作站組成,每站產出一份約定 JSON / 資源目錄,下一站消費上一站產物。核心生產順序:先建資產庫(S2),再寫分鏡詞(S3)——分鏡只是把資產按鏡頭語言排布,確保角色一致性與場景空間連續。

S1 改編劇本  ──script.json──▶  S2 資產庫  ──character_manifest + scene_manifest (+ visual_manifest)──▶  S3 分鏡提示詞  ──storyboard.json(引用資產+ref_images錨定)──▶  S4 音訊  ──audio_manifest──▶  S5 合成  ──成片
  • S1 改編劇本:把長篇/原文壓縮成「教學或敘事價值骨架 + 節拍表」,輸出 script.json(title / logline / characters / scenes / beats)。
  • S2 資產庫(先建):通讀全局劇本,建立角色三視圖資產(character_manifest.json:visual_lock + front/side/back 三視圖 + 錨定圖包 + fixed_prompt)與場景正反打多視圖資產(scene_manifest.json:axis_of_action + establishing/OTS A→B/reverse/insert),並配套拉取公共領域 / CC0 視覺參考圖(visual_manifest.json)。套用 IP 防火牆負向詞。這一步產出的就是「資產庫」,供 S3 直接引用。
  • S3 分鏡提示詞(基於資產庫):把每個 beat 展開成鏡頭(shot),每條 shot 引用 character_ref(角色+視圖)與 scene_ref(場景+視圖),從資產庫鎖定描述 + 運鏡庫(camera-movements.json)+ 平台預設拼出 prompt,注入 negative_prompt,輸出 storyboard.json。
  • S4 音訊:為鏡頭匹配 CC0 BGM / 音效,輸出 audio_manifest.json。
  • S5 合成(閉環到成片):把 S3 storyboard.json(含 ref_images 錨定圖)+ S4 audio_manifest.json 閉合成片——逐鏡生圖/圖生影片(用 ref_images 鎖臉)→ 音訊對齊 → 剪輯拼接(按 duration_s 與 aspect_ratio)→ 平台導出 → 一致性終檢。詳見 references/s5-composite.md 與 scripts/build_ffmpeg_concat.py。

When To Use(觸發)

  • 用戶給出一段故事/小說/網文/漫畫/劇本,要「做成漫劇 / 短影音 / 分鏡 / 動畫」。
  • 用戶要「改編劇本、寫分鏡提示詞、生成影片腳本、配畫風、配音樂」。
  • 用戶需要任意單站產出(如只想要分鏡提示詞,或只想要公共領域參考圖)。
  • 用戶對素材有「版權乾淨 / 可商用 / 零 IP 風險」硬要求。

工作流(Workflow)

全流程參考熱門開源方案的編排思路,但程式碼自研、資產自包含:

  • ViMax(MIT,~392 commits 的 S1→S4 編排流水線)→ 借鑑其「故事→分鏡→影片」的階段切分與產物契約。
  • seedance-prompt-skill / ai-shortfilm-prompts(MIT)→ 借鑑其 SKILL 格式的提示詞模板組織方式,作為 S3 底座。
  • ArcReel(AGPL)→ 僅學架構,不抄程式碼(AGPL 傳染性,禁止合入本 MIT 風格 skill)。 詳見 references/architecture-licenses.md。

第 0 步 · 接收需求

確認四點:① 源故事(網文 / 漫畫 / 原創劇本 / 貼文或給路徑);② 目標平台(橫屏漫劇預設 B站 / YouTube 向,見 assets/s3/platform-presets.json 的 bilibili;豎屏抖音 / 影片號向則用 douyin);③ 畫風(國漫 / 水彩 / 寫實 / 浮世繪 / 童書插畫…);④ 子類型與受眾(預設橫屏 16:9 漫劇,對標爆款節奏但原創;若兒童向則額外強制 IP 防火牆 + 排除 mature 內容)。

第 1 站 · S1 改編劇本

  1. 載入 assets/s1/story-structure.md(三幕 / 節拍結構模板)+ assets/s1/adaptation-method.md(壓縮方法論:保留價值骨架、刪冗、情緒曲線)。
  2. 按需填 assets/s1/beat-sheet.md(可填節拍表)。
  3. 參考 assets/s1/example-romeo-juliet.md、example-journey-to-west.md 兩個改編範例。
  4. 產出 script.json,欄位見 references/workflow.md §S1 契約。

第 2 站 · S2 資產庫(先建,後寫分鏡)

  1. 通讀 S1 全部 beats / characters / scenes,建立角色資產:載入 assets/s2/character-design.md,為每個主要角色產出 character_manifest.json(visual_lock + fixed_prompt + 三視圖 front/side/back + 錨定圖包 ref_pack + 一致性規則)。
  2. 建立場景資產:載入 assets/s2/scene-multiview.md,為每個主要場景產出 scene_manifest.json(geography + axis_of_action + views{establishing, ots_a, ots_b, reverse, insert})。
  3. 配套拉取 / 生成公共領域 / CC0 視覺參考圖 visual_manifest.json(多畫風:國漫 / 水彩 / 寫實 / 童書插畫 / Met 公版美術…),套用 IP 防火牆。
  4. 套用 IP 防火牆:assets/s2/negative-ip.json + assets/s2/negative-ip-firewall.md。
  5. 許可閘門:僅收 Public Domain / CC0。角色 / 場景資產一律原創,禁止同名同設定照搬爆款(詳見 IP 防火牆 §六)。

第 3 站 · S3 分鏡提示詞(基於資產庫寫)

  1. 載入 assets/s3/template-library.json(分鏡模板庫:鏡頭類型 / 景別 / 情緒)+ assets/s3/camera-movements.json(運鏡庫:40+ 運鏡 + 節拍→運鏡映射 + 平台語法)+ assets/s3/platform-presets.json(各平台 prompt 語法、寬高比、時長上限)+ assets/s3/tag-stats.json(標籤頻率統計)+ assets/s3/negative-quality.md(品質負向詞)+ assets/s2/negative-ip.json(IP 防火牆)。

  2. 每 beat → 至少一 shot;每條 shot 必帶 character_ref 與 scene_ref(引用 S2 資產庫),並從資產 fixed_prompt 取鎖定角色描述;從 camera-movements.json 取 1 個主運鏡(subject_aware_map 按 beat 類型推薦);必帶 negative_prompt(IP 防火牆 + 品質負向拼接)。

  3. 產出 storyboard.json:shots[{shot_id, beat_ref, character_ref[], scene_ref, ref_images[](可選·直連錨定圖,見下方「參考圖錨定」), camera_movement, shot_size, speed(可選·速度修飾 slow_motion 等,見 camera-movements.json 的 speed_modifiers), prompt, prompt_readable, negative_prompt, platform, aspect_ratio, duration_s, attribution}]。權力變化鏡頭用 camera_movement: low_angle/high_angle + speed: "slow_motion"(寫法見 assets/s2/scene-multiview.md §三(補)權力軸)。

    參考圖錨定(ref_images,跨鏡一致性關鍵):ref_images 是每鏡直連錨定圖的列表,比純文字 fixed_prompt 更穩(對齊即夢 @引用 / Runway Gen-4 單圖鎖臉)。每條為字串,約定兩種寫法:① 資產引用令牌 char:<char_id>:<ref_pack鍵或three_view鍵> / scene:<scene_id>:<view>(由腳本自動從 character_manifest.ref_pack 抽取,生成器再解析為真實圖路徑);② 直接圖路徑 / URL(如 /assets/char_shen_zhao_face.png)。建議每角色配 2–3 張(正面近景/側面/全身),即夢上限 9 張、Runway 單張即鎖。build_storyboard.py 預設自動把角色 ref_pack 抽成 ref_images;也可在 S5 合成時直接餵給圖生影片模型做鎖臉/鎖服裝參考。

  4. CC BY 4.0 資料須帶 attribution(本庫資產均為 PD/CC0,預設免署名;若引入外部 CC BY 資料則必須填 attribution)。

  5. 腳手架加速(可選):先建好 S1 script.json + S2 character_manifest.json / scene_manifest.json,執行 python scripts/build_storyboard.py --project <DIR> --platform bilibili 自動生成 storyboard.json 草稿(按 beat 自動填 character_ref/scene_ref、從 subject_aware_map 選 1 主運鏡、按 beat 類型選景別、拼接 negative_prompt 全覆蓋 IP 令牌),再人工精修相機角度 / 情緒 / 台詞 / 節奏。該腳本是「資產優先」順序的自動落地,產出可被 validate_pipeline.py 直接通過。

第 4 站 · S4 音訊

  1. 載入 assets/s4/audio-manifest.json(已拉取的 CC0 音訊清單,含 BGM / 音效 / 情緒類別:ambient / cinematic / playful / tense / romantic / lullaby 等)。
  2. 按鏡頭情緒匹配:懸疑低音→反轉段、溫柔鋼琴→溫情段、whoosh→轉場、lullaby→安睡段、cartoon bounce→活潑段。
  3. 產出 audio_manifest.json:items[{file, license, source, duration_ms}],僅 CC0。

第 5 站 · S5 合成(閉環到成片)

  1. 載入 references/s5-composite.md(S5 合成 SOP:五步閉環 + 工具矩陣 + 一致性終檢清單)。 1.5 解析錨定圖:執行 python scripts/resolve_ref_images.py --project <DIR>,把每條 shot 的 ref_images 令牌(char:<id>:<key> / scene:<id>:<view>)展開為真實圖路徑,產出 storyboard.resolved.json(未解析令牌保留原串並告警)。
  2. 逐鏡生圖 / 圖生影片:以 storyboard.resolved.json 的 ref_images(已解析真實圖)作為鎖臉/鎖服裝參考,配合 fixed_prompt + camera_movement + camera-movements.json 的 lens/stages 餵給即夢 @引用 / Runway Gen-4 / Kling / Seedance 生成每段 clip。
  3. 音訊對齊:按 beat 情緒從 audio_manifest.json(CC0)選 BGM,按 duration_s 裁音效。
  4. 剪輯拼接:執行 python scripts/build_ffmpeg_concat.py --project <DIR> --clips-dir <DIR>/clips 生成 concat 列表與命令,按 aspect_ratio(橫屏 16:9)導出 1080p。
  5. 一致性終檢:核對 §四清單(角色/場景/軸線/權力軸/時長/IP 防火牆/音訊/比例)後再發布。

第 6 步 · 門禁校驗(必做)

執行 scripts/validate_pipeline.py --project <DIR> --platform bilibili [--strict] [--content-rating {normal,child}],校驗四站產物契約 + 五道品質閘門:S3 每條 shot 的 negative_prompt 必須覆蓋 assets/s2/negative-ip.json 全部被屏蔽 IP 令牌(守住真實第三方版權形象剛需,缺失在 strict 下即失敗);時長須落在 platform-presets.json 對應平台合法集、比例須匹配(橫屏漫劇預設 16:9);S4 音訊時長 0.3–180s(保留真實極短音效)。--strict 下 warn 也判失敗。通過後才可進入影片合成。

內容分級(重要 · 預設不限制題材):門禁預設 --content-rating normal —— 不做任何內容分級限制,打鬥 / 暴力 / 懸疑 / 暗黑等成人向題材均可正常產出,僅守版權 IP 防火牆與資產契約。兒童向產線才追加 --content-rating child(或舊別名 --child):強制 S1 含「價值收尾」類節拍、S3 覆蓋兒童安全負向令牌(violence/gore/horror/blood/mature/nudity/weapon…)、掃描 beats 命中成熟內容(strict 下為失敗)。即:--child 是純可選的「兒童安全開關」,不傳則漫劇內容完全自由,不會低齡化。

拉取腳本(零 IP 風險)

兩個腳本僅標準庫 + 系統 curl,無需 pip install:

# S2 視覺資產:OBI 公共領域多畫風插畫(含童書/國漫風)+ Openverse CC0 圖 + Met 公版美術
python scripts/fetch_visual_assets.py --out <DIR> --sources obi,openverse,met

# S4 音訊:Openverse CC0(免 key);填 PIXABAY/FREESOUND key 可啟用擴充通道
python scripts/fetch_audio.py --out <DIR>
  • 品質閘門內置:許可(PD/CC0)、畫質(長邊≥1000 且短邊≥600、檔案≥50KB)、去重(SHA256 跨執行)、來源閘(僅機構源)、敏感閘(Openverse mature=true 一律排除,全平台硬要求)。
  • OBI 傳輸用 curl 引擎(--retry 5 --retry-all-errors -k)繞過本環境 Python urllib 偶發 SSL 斷流。

五道品質閘門(全站通用)

  1. 許可閘門:S2/S4 僅收 Public Domain / CC0;引入 CC BY 4.0 必須帶 attribution。
  2. 畫質閘門:圖最長邊≥1000 且短邊≥600;音訊時長 0.3–180s、檔案≥100KB。
  3. 去重閘門:SHA256 跨執行持久化,重複圖/音訊自動跳過。
  4. 來源閘門:僅機構級 / 公共領域源(OBI、Openverse、Met、Freesound CC0…);拒收不明來源。
  5. 敏感閘門:全內容排除 mature(兒童向額外強化);S2/S3 強制注入 IP 防火牆負向詞,屏蔽已知版權形象;對熱門漫劇 / 網文 IP 可借鑑其題材 / 情緒 / 爽點結構(方法層),但禁止逐角色、逐場、名場面完全照搬(完全抄襲)。

IP 防火牆(借鑑不照搬)

  • 恆定負向詞見 assets/s2/negative-ip.json,覆蓋 Peppa Pig、Disney、Marvel、Sanrio、Numberblocks、My Little Pony 等已註冊的真實第三方版權形象——這些是硬邊界,無論借鑑與否都不得復現(門禁會強制校驗令牌覆蓋)。
  • 漫劇專項紀律(借鑑不照搬):熱門漫劇 / 網文 IP 的「題材類型、情緒結構、爽點範式、鏡頭語言、節奏」屬方法層,不可版權、可作創作養料,鼓勵借鑑;但禁止完全抄襲——即不得逐角色照搬(同名同設定)、逐場複製名場面構圖、直接復刻招牌畫風 / 標誌性配色組合、搬運原文台詞。即使使用者點名某爆款,也只提取其「可複用的方法骨架」而非「表達」,轉成原創描述(「強宿命感的黑衣男主 + 紅衣女主對峙」),再送圖像 / 影片模型,並疊加 negative prompt 雙保險守住真實第三方版權形象。
  • 本 skill 不內嵌任何版權文本,只統計結構 / 寫法層範式;所有範例均為公版或使用者自有素材。

Resources

  • assets/s1/:故事結構模板、改編壓縮方法論、可填節拍表、劇本格式規範、兩個改編範例。
  • assets/s2/:負向詞庫 negative-ip.json + IP 防火牆說明 negative-ip-firewall.md + 角色資產方法論 character-design.md + 場景資產方法論 scene-multiview.md。
  • assets/s3/:分鏡模板庫 template-library.json、運鏡庫 camera-movements.json、平台預設 platform-presets.json、標籤統計 tag-stats.json、品質負向詞 negative-quality.md。
  • assets/s4/:已拉取 CC0 音訊清單 audio-manifest.json。
  • scripts/:fetch_visual_assets.py(S2 拉圖)、fetch_audio.py(S4 拉音)、build_storyboard.py(S1+S2 → S3 分鏡腳手架自動生成,支援 ref_images 錨定自動抽取 / power_dynamic 自動選角 / --target-duration 鏡頭預算 / --no-growth 關閉自我生長建議)、resolve_ref_images.py(S5 把 ref_images 令牌解析為真實圖路徑,產出 storyboard.resolved.json)、build_ffmpeg_concat.py(S5 由 storyboard.json 生成 FFmpeg 拼接列表 + 命令)、validate_pipeline.py(站間門禁,預設 --content-rating normal 零內容限制;--content-rating child / --child 觸發兒童向硬門禁)、collect.py(自我生長採集端:把一次執行產物 + 人類評分 + 失敗日誌回灌記憶伺服器)、load_learnings.py(自我生長回灌端:從記憶伺服器拉取 learnings.json 快取到本地,供 build_storyboard.py 讀取高頻失敗模式建議)。
  • memory_server/:server.py(零依賴記憶服務,4 表 SQLite + Bearer 鑑權 + 限速)、growth.py(聚合 → snapshot/learnings.json + 回灌 priors)、.env.example、README.md(Caddy HTTPS / systemd / cron 部署)。
  • references/:architecture-licenses.md(開源方案借鑑與許可證邊界)、workflow.md(四站詳細契約與用法)、case-studies.md(爆款漫劇/短劇運鏡·分鏡語法借鑑,方法論文獻,不照搬 IP)、benchmark.md(對比測評:NVP vs ViMax/seedance/ai-shortfilm/ArcReel 等評分矩陣 + 實證自測)、s5-composite.md(S5 合成 SOP:五步閉環 + 工具矩陣 + 一致性終檢清單)。

注意事項

  • 大體積圖庫/音訊庫不內嵌進 skill(保持可攜帶);執行時用腳本拉取,或指向你自己的 CC0 素材目錄(如 ./assets/characters、S4-音訊庫/samples/ 這類本地潔淨批)。
  • 本 skill 為編排方法論 + 自包含資產,不依賴 ViMax/ArcReel 等外部程式碼執行。
  • 取得 BHL key / NYPL token 後,可自行在 fetch_visual_assets.py 追加 fetch_bhl() / fetch_nypl() 通道(OBI 已驗證無需 key)。

自我生長(可選 · 資料閉環)

讓 skill 隨使用自我生長:每次產線執行後把客觀指標 / 人類評分 / 失敗日誌回灌進記憶庫,經聚合後把「高頻失敗模式建議 / 評分 / 風格訊號」回灌 skill,下次生成時提前規避。純標準庫、零依賴、可獨立部署在一台小伺服器上,與 skill 本體解耦。完整部署見 memory_server/README.md。

單機用?不用部署。 不設定 NVP_MEMORY_URL 時,collect.py / load_learnings.py 會自動直連 skill 內的 SQLite(memory_server/data/nvp_memory.db)並在採集後自動聚合,零設定即可跑完整閉環。只有「多機彙總 / 多人協作 / 遠程回灌」才需要起 server.py(見下方「服務啟動」與 README §2)。

閉環三步:

  1. 採集(跑完產線後):python scripts/collect.py --project <DIR> --platform bilibili 自動從 script.json / storyboard.json / storyboard.resolved.json 讀取 beats / shots / 解析率 / 時長等指標,寫入記憶庫(預設本地 SQLite;若設了 NVP_MEMORY_URL 則 POST 到服務)。可追加人類評分 --feedback 5 overall "節奏很爽",或失敗日誌 --failures fails.json。離線機用 --mirror ./mirror.json --dry-run 生成鏡像,稍後 collect.py --sync ./mirror.json 同步上伺服器。加 --local 可強制本地、--remote 強制走服務。
  2. 聚合(本地自動 / 伺服器定時):本地模式下採集後已自動聚合;HTTP 模式下用 cron 每小時跑 python memory_server/growth.py,把 SQLite 四表聚合成 snapshot/learnings.json,並把穩定知識 upsert 進 priors 表。
  3. 回灌(下次生成前):python scripts/load_learnings.py 讀取 learnings.json 快取到 .cache/learnings.json(預設讀本地 snapshot;設了 URL 則遠程拉取;--local 強制本地、--no-fetch 僅讀快取);build_storyboard.py 自動讀取並在生成時列印「自我生長建議」(高頻失敗模式 → 提前規避,例如未解析參考圖、權力軸缺鏡),也可 --no-growth 關閉。

服務啟動:python memory_server/server.py --no-auth(本地測試)或 python memory_server/server.py(公網,需 NVP_API_TOKEN 環境變數 / --token;由 Caddy 反向代理做 TLS)。端點:GET /health、POST /ingest、GET /query、GET /snapshot、GET /export。

相關技能