AI漫剧制 | 第 3 天:从小说到漫画:AI漫剧制完整工作流

第 3/60 天

引言

经过了前两天的概念预热和工具基础搭建,今天我们将正式进入 AI 漫剧制作的核心环节——从小说文本到成品漫画的完整工作流

你可能已经读过不少小说,也看过不少漫画,但有没有想过:如何把脑海中那些文字描述的场景,变成一张张风格统一、叙事流畅的漫画画面?过去,这需要专业的漫画师、分镜师、上色师团队协作数周甚至数月。而在 2026 年的今天,借助 AI 工具链,一个创作者可以在一天之内完成从小说到漫画的完整转换。

本文将拆解一条经过实战验证的 6 阶段工作流,每个阶段都配有具体的工具、Prompt 模板和代码示例,让你看完就能上手实践。

核心概念

什么是 AI 漫剧制?

AI 漫剧制(AI Comic Production)是指利用大语言模型(LLM)和图像生成模型(Diffusion Model),将小说文本自动或半自动地转化为漫画分镜、角色设计、场景画面,最终排版输出为漫画书或漫剧视频的创作流程。

6 阶段工作流全景

小说文本 → 分镜脚本 → 角色设计 → 画面生成 → 排版 → 输出

每个阶段的输入输出如下:

阶段 输入 输出 核心工具
① 文本解析 小说章节 分镜脚本 + 场景描述 LLM(GPT-4 / Claude)
② 角色设计 角色描述 角色一致性参考图 Midjourney / Stable Diffusion
③ 画面生成 分镜 Prompt 单帧漫画画面 SD XL / ComfyUI
④ 排版 单帧画面 + 对话 漫画页 Photoshop / Figma / 自动化脚本
⑤ 后期 漫画页 调色 + 特效 CapCut / After Effects
⑥ 输出 处理完的漫画 EPUB / PDF / MP4 Calibre / FFmpeg

关键原则:一致性

AI 漫剧制作最大的挑战不是画面质量,而是一致性——角色长相一致、场景风格一致、光影调性一致。我们将在每个阶段通过 ControlNet、LoRA、角色库等机制来保证这一点。

实战步骤

阶段一:小说文本 → 分镜脚本

首先,我们需要让 LLM 理解小说文本,并输出结构化的分镜脚本。

1.1 文本解析

将小说章节输入 LLM,使用以下 System Prompt:

你是一个专业的漫画分镜师。你的任务是将小说文本转换为分镜脚本。

输出格式要求 JSON:
{
  "scene": [
    {
      "panel_id": 1,
      "description": "场景描述(50字以内)",
      "composition": "构图描述(全景/中景/特写/仰视/俯视)",
      "dialogue": "角色对话内容(如果有)",
      "camera_angle": "镜头角度",
      "emotion": "情绪基调",
      "character_actions": ["动作1", "动作2"],
      "background": "背景描述"
    }
  ]
}

每个 panel 对应一个漫画格子。一页 A4 漫画放 4-6 个 panel。
保持叙事节奏:高潮用大格特写,过渡用小格全景。

1.2 分镜 Prompt 生成

有了分镜脚本后,需要为每个 panel 生成图像生成模型的 Prompt:

#!/usr/bin/env python3
"""从分镜 JSON 生成 Stable Diffusion Prompt"""
import json

def panel_to_sd_prompt(panel, character_refs):
    """将单个 panel 转换为 SD Prompt"""
    base = f"{panel['background']}, {panel['composition']}, {panel['emotion']}"
    chars = ", ".join([f"{ref['name']}: {ref['appearance']}" for ref in character_refs])
    actions = ", ".join(panel['character_actions'])

    prompt = f"{chars}, {actions}, {base}, comic style, cel shading, line art, detailed background, vibrant colors"
    negative = "photorealistic, 3d render, low quality, blurry, deformed, extra limbs, bad anatomy"

    return {
        "prompt": prompt,
        "negative_prompt": negative,
        "width": 768,
        "height": 768,
        "cfg_scale": 7.0,
        "steps": 30,
        "seed": -1
    }

# 示例:处理第 1 章
with open("chapter1_script.json", "r") as f:
    script = json.load(f)

character_refs = [
    {"name": "林夜", "appearance": "black hair, red eyes, teenage boy, school uniform, slender build"}
]

for scene in script["scene"]:
    for panel in scene["panels"]:
        sd_params = panel_to_sd_prompt(panel, character_refs)
        print(json.dumps(sd_params, ensure_ascii=False, indent=2))

阶段二:角色设计

角色一致性是 AI 漫剧制作的生命线。我们使用 LoRA(Low-Rank Adaptation)来固定角色外观。

2.1 训练角色 LoRA

使用 Kohya’s GUI 或 sd-scripts 训练一个角色 LoRA:

# 安装依赖
pip install torch torchvision diffusers transformers accelerate

# 使用 sd-scripts 训练 LoRA
accelerate launch train_network.py 
  --pretrained_model_name_or_path="runwayml/stable-diffusion-v1-5" 
  --train_data_dir="./character_images/林夜" 
  --output_dir="./output/lora" 
  --output_name="linye" 
  --resolution=512 
  --train_batch_size=1 
  --learning_rate=1e-4 
  --max_train_steps=1500 
  --network_module=networks.lora 
  --network_dim=64 
  --network_alpha=32 
  --caption_extension=".txt"

2.2 角色参考图 Prompt 模板

# Midjourney 角色设计 Prompt 模板
/imagine prompt: 
Character design sheet for "林夜" — 
a teenage boy with black spiky hair, red eyes, 
wearing a dark school uniform, 
front view, side view, 3/4 view, 
anime style, cel shaded, 
white background, full body shot, 
consistent character design sheet --ar 3:4 --v 6

阶段三:画面生成(批量)

使用批量生成脚本,配合角色 LoRA 和 ControlNet 保持构图一致性:

{
  "batch_config": {
    "model": "sd_xl_base_1.0",
    "lora_models": [
      {"name": "linye_v1.safetensors", "weight": 0.8},
      {"name": "comic_style_v2.safetensors", "weight": 0.6}
    ],
    "controlnet_units": [
      {
        "model": "control_v11p_sd15_openpose",
        "weight": 0.6,
        "input_image": "./pose_refs/panel_01_pose.png"
      }
    ],
    "output_dir": "./output/frames/",
    "batch_size": 4,
    "steps": 30,
    "cfg_scale": 7.0
  }
}

阶段四:排版

画面生成完毕后,需要将单帧图片排版为漫画页面。这里提供一个 Python 自动化排版脚本:

#!/usr/bin/env python3
"""漫画自动排版脚本"""
from PIL import Image, ImageDraw, ImageFont
import os
import json

# 页面布局配置
PAGE_WIDTH = 2480   # A4 300dpi
PAGE_HEIGHT = 3508
GAP = 20            # 格子间距
BORDER = 40         # 页边距

# 从分镜脚本读取布局
with open("page_layout.json", "r") as f:
    layout = json.load(f)

def layout_page(panels, page_num):
    """将 panel 图片排版为一页漫画"""
    page = Image.new("RGB", (PAGE_WIDTH, PAGE_HEIGHT), "white")

    for panel in panels:
        img = Image.open(panel["image_path"])
        # 根据分镜脚本中的坐标放置
        x = BORDER + panel["x"]
        y = BORDER + panel["y"]
        w = panel["width"]
        h = panel["height"]

        img_resized = img.resize((w, h), Image.LANCZOS)
        page.paste(img_resized, (x, y))

        # 添加对话气泡(如果有)
        if panel.get("dialogue"):
            draw = ImageDraw.Draw(page)
            # 简化的气泡绘制逻辑
            draw.text((x + 10, y + 10), panel["dialogue"], fill="black")

    page.save(f"./output/pages/page_{page_num:03d}.png")
    print(f"✅ 第 {page_num} 页排版完成")

# 执行排版
for page_num, panels in enumerate(layout["pages"], 1):
    layout_page(panels, page_num)

阶段五:后期处理与输出

排版完成后,使用 FFmpeg 将漫画页合成为漫剧视频:

#!/bin/bash
# 漫画页 → 漫剧视频

# 参数设置
FPS=0.33          # 每页 3 秒
IMAGE_DIR="./output/pages"
OUTPUT_VIDEO="./output/comic_video.mp4"

# 生成 file list
rm -f /tmp/comic_images.txt
for f in $(ls "$IMAGE_DIR"/page_*.png | sort); do
  echo "file '$f'" >> /tmp/comic_images.txt
  echo "duration 3.0" >> /tmp/comic_images.txt
done

# 合成视频(无音频)
ffmpeg -y -f concat -safe 0 -i /tmp/comic_images.txt 
  -vf "fps=$FPS,scale=1920:1080" 
  -c:v libx264 -preset medium -crf 23 
  "$OUTPUT_VIDEO"

echo "✅ 漫剧视频已生成: $OUTPUT_VIDEO"

# 导出为电子书(可选)
# 使用 Calibre 的 ebook-convert 工具
# ebook-convert ./output/pages/ ./output/comic.epub --output-profile=tablet

阶段六:完整 Pipeline 自动化

将以上所有阶段串联成一个一键执行的 Shell 脚本:

#!/bin/bash
# AI漫剧制完整 Pipeline
# 用法: ./run-pipeline.sh <chapter_text.txt>

set -euo pipefail
CHAPTER_FILE="${1:?请提供小说章节文件}"
CHAPTER_NAME=$(basename "$CHAPTER_FILE" .txt)

echo "🚀 开始处理: $CHAPTER_NAME"

# 阶段 1: 文本 → 分镜脚本
echo "[1/5] 解析小说文本..."
python3 scripts/parse_novel.py "$CHAPTER_FILE" > output/script.json

# 阶段 2: 生成角色参考图
echo "[2/5] 生成角色设计图..."
python3 scripts/generate_characters.py output/script.json

# 阶段 3: 批量生成画面
echo "[3/5] 批量生成漫画帧..."
python3 scripts/batch_generate.py output/script.json --lora models/linye_v1.safetensors

# 阶段 4: 排版
echo "[4/5] 排版漫画页面..."
python3 scripts/layout_comic.py output/script.json output/frames/

# 阶段 5: 输出
echo "[5/5] 导出视频+电子书..."
bash scripts/export_output.sh output/pages/ "$CHAPTER_NAME"

echo "🎉 完成! 输出目录: output/$CHAPTER_NAME/"

常见问题

Q1: 角色在不同画面中长相不一致怎么办?

A: 这是最常见的问题。解决方案有三层:
1. LoRA:为每个主要角色训练一个 LoRA,在生成时以 0.7-0.9 的权重加载
2. IP-Adapter:使用角色参考图作为 IP-Adapter 的图像 Prompt
3. Seed 锁定:同一角色的不同画面使用相近的 seed 值,并在生成后手动挑选最一致的版本

Q2: 画面风格不统一,有些像日漫,有些像美漫?

A: 需要固定一个风格 LoRA(如 “comic_style_v2″),并在所有 Prompt 中使用相同的风格关键词。推荐搭配:
– 基础模型:SD XL + AnimeLineart 风格 LoRA
– 关键字:comic style, manga style, cel shading, black outlines, screentone
– Cfg Scale:7.0-8.0,不要低于 6.0

Q3: 生成的画面构图太单一,全是中景镜头?

A: 在分镜脚本阶段就要明确指定每个 panel 的构图类型:
– 全景(Wide Shot):场景建立、大场面
– 中景(Medium Shot):对话、日常动作
– 特写(Close-up):情绪高潮、关键道具
– 仰视/俯视(Low/High Angle):戏剧性效果

在 Prompt 中明确加上 wide shotclose-up from below 等关键词。

Q4: 批量生成速度太慢,一天只能出几十页?

A: 优化建议:
1. 使用 --xformers--attention-slicing 加速推理
2. 批量大小设为 4-8(取决于 GPU 显存)
3. 使用 --lowvram 模式在 8GB 显存上运行
4. 考虑使用 cloud GPU(RunPod / Vast.ai)并行生成
5. 步数从 30 降到 20,Cfg Scale 降到 6.0,质量损失可接受

Q5: 对话气泡怎么加?

A: 有两种方式:
1. AI 直接生成:在 Prompt 中加 speech bubble, text in bubble,但文字质量不可控
2. 后期叠加:先用排版脚本生成空白气泡区域,再用 Photoshop / PIL 添加文字
3. 推荐工具:Comic Life 3 或 Krita 的漫画模板,半自动添加气泡

总结

今天我们完整走通了 AI 漫剧制作的 6 阶段工作流:

阶段 核心要点
小说 → 分镜 LLM 结构化输出,每段对应一个 panel
角色设计 LoRA 训练 + 角色参考图,确保一致性
画面生成 SD XL + ControlNet + LoRA 批量生成
排版 Python PIL 自动布局,A4 300dpi 输出
后期 FFmpeg 合成漫剧视频,Calibre 导出电子书
自动化 一键 Pipeline 串联所有阶段

关键收获:
– 一致性 > 单帧质量——宁可用 80 分的统一风格,不要 95 分但每张图角色长不一样
– 结构化 Prompt 是核心——分镜脚本越详细,画面质量越高
– 自动化是生产力——用 Python 脚本串联所有工具,而非手动操作

明天预告:第 4 天我们将深入「角色一致性」这一核心难题,系统讲解 ControlNet + IP-Adapter + LoRA 的组合方案,并给出完整的角色库管理工具。

本文是「AI漫剧制」60 天系列的第 3 天。关注本系列,从零开始掌握 AI 漫剧制作全流程。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容