Communitygithub.com

漫画分镜视频

将任意选题制作成「图片讲故事」风格的竖屏短视频:生成式线稿逐笔描出 + 代码叠台词气泡 + 单口配音 + 大字幕。

漫画分镜视频란 무엇인가요?

该技能将任意选题转化为110-135秒的竖屏短视频,核心风格是「图片在讲故事」——生成式线稿逐笔描出、台词气泡通过代码动态叠加、单口配音配合大字幕。音频是叙事主线:即使只看音轨,也能听懂一个完整的故事。适合漫画风格解说、历史/知识类短视频、贱萌吐槽科普,或用户要求「像混子哥那样讲」「漫画分镜视频」时使用。触发词包括:漫画讲故事、混子哥风格、图片讲故事、漫画分镜视频、贱萌科普、历史短视频、comic storytelling、mixige。工作流程分为五步:定故事、出图、制作、验收、交付,并设有十条硬性规则确保故事清晰、画面正确。支持平台包括通用命令行环境及edge-tts等配音工具。

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/liangdabiao/comic-story-video/tree/HEAD

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

漫画分镜视频은(는) 무엇을 하나요?

把选题做成 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 项自检,跑一次就够

관련 스킬