Communitygithub.com

comic-story-video

將任意主題製作成「圖片說故事」的直式短影片——生成式線稿逐筆描繪 + 程式疊加對話泡泡 + 單口配音 + 大字幕。聲音是主線:旁白本身必須是一條聽得懂的故事。

comic-story-video 是什麼?

此技能旨在將任何主題轉化為 110–135 秒的直式短影片,風格類似「混子哥」或「漫畫說故事」。其核心特色是以「生成式線稿逐筆描繪」、「程式疊加對話泡泡」、「單口配音」與「大字幕」相結合,並強調「音訊為主線」:即使關閉畫面,僅聽旁白也能完全理解故事發展。支援平台包括 Claude Code、Cursor、Codex 等具備檔案操作與 Python 腳本執行能力的 AI 代理。工作流程分為五個階段:首先定義故事核心(story_line、question、answer)與每格旁白/對話;接著使用圖生圖方法生成線稿,並透過接觸頁面快速檢查;然後自動執行配音、合成字幕、逐筆渲染等步驟生成最終影片;最後進行驗證(檢查畫面動態、字幕位置、音訊可理解性)並交付成品。技能內建十條嚴格規則,涵蓋故事結構(如避免並列事件編號、根據主角與阻力關係選擇骨架)與製作規範(線稿不包含文字、對話泡泡不導入引擎、使用圖生圖且相似度調低、角色描述需具備明確區別等),確保輸出品質穩定。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liangdabiao/comic-story-video/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

漫畫說故事

把主題做成 110–135 秒直式短影片:線稿被一筆筆描出來,對話泡泡逐個彈入,單口配音 + 大字幕。 產物 <專案>/out/final.mp4(1080×1920)。

聲音是主線。 把音軌單獨抽出來聽,必須是一條講得通的故事;畫面負責加戲,不是理解的前提。


五步做完

① 定故事 → <專案>/story.json

建目錄、拷模板:

mkdir -p <專案>/raw && cp templates/comic/story.example.json <專案>/story.json

先填檔案頭三行,填不出來就別寫格子:

"story_line": "誰 / 想幹什麼 / 卡在哪 / 結果,一句話說完",
"question":   "開場砸出來的那個問題",
"answer":     "最後一格給出、能答掉它的答案"

question 要挑「說不通」的點,不要挑「這是什麼」。答案不該是一串時間線。

然後寫每格的 narration(旁白)和 bubbles[].text(對話)。旁白 440–540 字,標點算字,按 4.0 字/秒反算。

python scripts/pipeline.py <專案> --stage script     # 但不許往下走

① 的判定:三行齊全 → 字數在區間 → 每格有旁白 → 對話泡泡不出畫 → charts.py 裡的函數存在。

② 出圖 → <專案>/raw/<id>.png

先把所有 prompt 寫完,再一次性出圖。 出一張看一張會把出圖拖到一兩小時,中途改 prompt 還會讓畫風漂。

python scripts/comic_gen.py <專案> --list     # 打印沒出過的 prompt,出過的自動跳過

按打印出來的 prompt 逐張生成,圖存進 raw/。必須圖生圖,參考圖用 assets/reference/01-style-anchor.png,相似度調 low。

python scripts/contact_sheet.py <專案>        # 拼成一張總覽圖,看一次
python scripts/pipeline.py <專案> --stage image

② 的判定:總覽圖上只看兩件事——該在的人在不在、有沒有整片塗黑或空白。 其餘(圖上零星文字、身高差半個頭、線條髒、尾巴偏幾十像素)一律不看,直接往下走。

③ 製作 → final.mp4

python scripts/comic_run.py <專案>

依序跑:配音 → 泡泡層 / 資訊圖 → 淨化落版 → 逐筆渲染 → 合成直式 → 燒字幕。 單步重跑用對應的 comic_*.py。

④ 驗收

python scripts/verify_media.py --file <專案>/out/final.mp4 --expect <秒數>
ffmpeg -y -ss 3 -i <專案>/out/final.mp4 -vframes 1 <專案>/check/03.png

抽兩幀(第 3 秒、該格總長 × 0.75)比對:畫面在動嗎、底色對不對、字幕有沒有出畫。 再把音軌抽出來閉眼聽一遍:能說出「誰想要什麼、發生了哪幾件事、最後怎麼收」就算過。

⑤ 交付

<專案>/out/final.mp4。需要橫式版時用 out/story_flat.mp4。


十條硬規則

前三條管故事,違反就是「聽完不知道在說什麼」。後七條管製作,違反就是畫面或聲音錯了。

1. 先填 story_line / question / answer,填不出來不寫格子。 缺這三行,八格寫完才發現散,是最貴的一種返工。

2. 骨架按「主角和阻力是什麼關係」選,不要給所有主題套同一張格子表。

主角 vs 阻力骨架
一個具體對手,一來一回出招 → 化解 → 加碼 → 化解 → 最狠一招 → 化解
自己那條路走不通了老本行快死了 → 試了幾樣都不成 → 意外冒出一件 → 押上去 → 成了 → 才明白賣的是什麼
一個說不通的現象,倒著查反常的事 → 找到那個人 → 他當時的難處 → 他怎麼解的
爬到了頂,被不起眼的東西掀翻巔峰 → 一道裂縫 → 誰都沒當真 → 押錯 → 塌

格數跟著故事走,5–9 格都行。

3. 並列的事不要編號成回合。 把「第一回合」換成「第一次」,故事不損失,那就不是回合,是貼上去的標籤——刪掉。 同理,不要用「加碼」「到頂」「攤牌」「老底」這類解說員行話,觀眾聽到的是暗號。

4. 旁白必須是一條聽得懂的完整故事,對話要念出來。 「他回了一句」「批了兩字」「一句話把他點醒」——聽眾只知道有人說了話,不知道說了什麼。 泡泡重複旁白不算錯,字幕本來就是聲音的重複。

5. 生成模型只畫線稿,字由程式疊。 prompt 裡寫「不要畫任何文字」,這是預防,不是出圖驗收標準。

6. 泡泡不進引擎。 引擎會把彩色二值化成黑塊。泡泡在合成時按時間彈,節奏更可控。

7. 不傳 element_plan。 傳了每個物體按 1.6 秒上限畫完即停,整格兩秒就畫滿。不傳時按 √面積分預算,總時長恆等。

8. 必須圖生圖,參考圖相似度調 low(0.3–0.5)。 相似度 high 時模型會照抄參考圖的姿勢,無視你寫的動作。

9. 角色寫進 characters,prompt 裡用 {名字} 引用;任意兩人至少三項不同。 頭飾、鬍鬚、衣服、體型各寫清。主角用異類頭飾(軟布巾 / 無冠),方冠冕冠頭盔留給對手和兵。

10. 底色用 colorkey + overlay;字幕燒 ASS 本體並宣告 PlayResX/Y。 用 blend=all_mode=multiply 底色會變螢光綠;SRT 交給 libass 會落到 384×288 座標系,字飛出畫面。


遇到問題查哪份

情況讀
不知道怎麼把主題變成故事、每格該放什麼、結尾怎麼收references/story.md
寫 prompt、定角色、泡泡排版、TTS、渲染與合成參數references/production.md
畫面 / 聲音 / 時長出錯了references/troubleshooting.md
寫 prompt 的具體模板和反向約束詞references/prompt-recipes.md
配音音節 / 音色references/voice-design.md
edge-tts 報 403references/apiz-tts-fallback.md

目錄

<專案>/
├── story.json      唯一配置:標題、三行故事、每格旁白/泡泡/prompt
├── charts.py       資訊圖格的繪圖函數(有 chart 格才需要)
├── raw/            生成模型出的原圖 ← 你放進來
├── boards/ bubbles/ charts/ audio/ out/    ← 腳本產出
└── subs.ass

第一次用

bash scripts/setup.sh                                          # macOS / Linux / Git Bash
powershell -ExecutionPolicy Bypass -File scripts/setup.ps1      # Windows
python scripts/self_test.py                                    # 6 項自檢,跑一次就夠

相關技能