AI漫剧制 | 第 9 天:漫画脚本自动生成——AI编剧入门

第 9/60 天

引言

对于许多AI漫画创作者来说,最耗时的环节往往不是绘画本身,而是脚本创作。一个完整的故事需要合理的情节结构、生动的对白、精准的分镜描述——这些都需要编剧功力。而AI大语言模型(LLM)的出现,让”从零到脚本”的效率提升了数倍。

本文将从基础概念到实战操作,全面解析如何利用AI(特别是 ChatGPT、Claude、DeepSeek 等大语言模型)自动生成漫画脚本,涵盖结构设计、角色对话、分镜拆分、批量生成等核心技能。

核心概念

漫画脚本的基本结构

一个完整的漫画脚本通常包含以下层级:

层级 说明 示例
故事大纲 完整故事的概要,300-500字 主角发现神秘符文,踏上冒险旅程
章节划分 按情节节点分段,每章5-10页 第1章:召唤,第2章:试炼
页面分镜 每页的格数、构图、视角 第1页:全景→中景→特写,共4格
格内描述 每格的角色动作、场景、表情 主角回头,面露惊讶,背景是燃烧的城堡
对白/旁白 角色说的话、叙述性文字 主角:”这……不可能!”

AI编剧的核心能力

现代AI大语言模型在脚本创作方面具备以下优势:

  1. 情节生成 — 基于给定的设定自动构建完整的故事线
  2. 角色对话 — 生成符合角色性格的自然对白
  3. 分镜描述 — 将文字故事转化为可视化的分镜指令
  4. 风格适配 — 支持日漫、美漫、条漫、国漫等不同风格
  5. 批量产出 — 一次生成多页/多章节的完整脚本

提示词工程(Prompt Engineering)的关键

AI编剧的质量90%取决于提示词的质量。一个好的编剧提示词需要包含:

  • 角色设定:姓名、年龄、性格、外表、口头禅
  • 世界观:时代背景、魔法/科技规则、地理环境
  • 情节要求:起承转合、高潮点、结局方向
  • 格式约束:分镜格式、每页格数、对白标记方式

实战步骤

步骤 1:构建角色设定卡

首先,用AI生成标准化的角色设定卡。这是所有脚本生成的基础。

{
  "角色设定卡": [
    {
      "name": "林逸",
      "age": 17,
      "role": "主角",
      "personality": "勇敢但冲动,重情义,有点中二",
      "appearance": "黑色短发,琥珀色眼睛,校服外套改装成战斗服",
      "speech_style": "语速快,喜欢用感叹词,紧张时会结巴",
      "special_ability": "符文召唤——能召唤古代符文的力量"
    },
    {
      "name": "苏小雨",
      "age": 16,
      "role": "女主角",
      "personality": "冷静理智,行动派,嘴硬心软",
      "appearance": "及腰长发,扎单马尾,常穿白色连衣裙",
      "speech_style": "简洁直接,偶尔毒舌,危急时刻话最多",
      "special_ability": "时间感知——能短暂预判3秒内的未来"
    }
  ]
}

步骤 2:用提示词生成故事大纲

使用以下提示词模板来生成完整的故事大纲:

你是一位专业的漫画编剧。请根据以下设定,生成一个完整的短篇漫画故事大纲(4页篇幅)。

【世界观】
现代都市背景,但存在隐藏的"符文之力"——古代符文散落在城市各处,
只有少数被选中的"符文使"能感知并使用它们。符文使之间遵循不干涉普通人生活的规则。

【角色设定】
林逸:17岁,主角,符文使新人,性格冲动热血,能力是符文召唤
苏小雨:16岁,女主角,资深符文使,冷静理智,能力是时间感知
神秘老者:引导者角色,知道符文世界的真相

【故事要求】
- 起承转合完整
- 第1页:冲突引入
- 第2页:矛盾升级
- 第3页:高潮转折
- 第4页:结局与悬念
- 包含至少3句关键对白
- 每页4-5格的分镜描述

【输出格式】
请用Markdown格式输出,每页标注页号,每格标注格号,
每格包含:画面描述、对白/旁白、镜头语言建议。

将上述提示词输入到AI(ChatGPT/Claude/DeepSeek 等),即可获得完整的分镜脚本。

步骤 3:用Python批量生成系列脚本

对于需要多章节的长篇漫画,可以用Python调用AI API来自动化批量生成:

#!/usr/bin/env python3
"""
AI漫画脚本批量生成器
使用 OpenAI API 批量生成漫画脚本
"""

import openai
import json
import time
from pathlib import Path

# 配置
openai.api_key = "your-api-key-here"
API_MODEL = "gpt-4"  # 或 "deepseek-chat", "claude-3" 等

# 系统提示词
SYSTEM_PROMPT = """你是一位专业的漫画编剧。你擅长创作分镜脚本,
输出格式严格遵循JSON结构。每个页面包含4-5格,每格包含:
- panel: 格号
- composition: 画面构图描述(镜头、角度、景别)
- action: 角色动作描述
- dialogue: 对白/旁白(若无可为空字符串)
- camera: 镜头语言建议"""

def generate_chapter(chapter_num, title, character_sheet, plot_summary):
    """生成单章脚本"""
    user_prompt = f"""
第{chapter_num}章:{title}

【剧情概要】
{plot_summary}

【角色设定】
{json.dumps(character_sheet, ensure_ascii=False, indent=2)}

【要求】
- 本章共5页,每页4格
- 保持角色性格一致
- 对白要自然,符合角色说话风格
- 画面描述要具体,便于AI绘画生成
"""

    try:
        response = openai.ChatCompletion.create(
            model=API_MODEL,
            messages=[
                {"role": "system", "content": SYSTEM_PROMPT},
                {"role": "user", "content": user_prompt}
            ],
            temperature=0.8,
            max_tokens=4000
        )
        return response.choices[0].message.content
    except Exception as e:
        print(f"生成第{chapter_num}章失败: {e}")
        return None

# 批量生成
def batch_generate(total_chapters, output_dir="scripts"):
    """批量生成多章脚本"""
    Path(output_dir).mkdir(exist_ok=True)

    character_sheet = {
        "林逸": {"age": 17, "trait": "热血冲动", "speech": "语速快"},
        "苏小雨": {"age": 16, "trait": "冷静理智", "speech": "简洁直接"}
    }

    chapters = [
        {"title": "符文的觉醒", "summary": "林逸偶然发现符文之力,遭遇第一个敌人"},
        {"title": "初战告捷", "summary": "林逸在苏小雨指导下学习控制符文"},
        {"title": "暗影来袭", "summary": "更强的敌人出现,两人陷入苦战"},
    ]

    for i, ch in enumerate(chapters[:total_chapters], 1):
        print(f"正在生成第{i}章: {ch['title']}...")
        script = generate_chapter(i, ch["title"], character_sheet, ch["summary"])
        if script:
            output_path = Path(output_dir) / f"chapter_{i:02d}.json"
            with open(output_path, "w", encoding="utf-8") as f:
                f.write(script)
            print(f"  ✓ 已保存到 {output_path}")
        time.sleep(2)  # API限流保护

    print("批量生成完成!")

if __name__ == "__main__":
    batch_generate(total_chapters=3)

步骤 4:将脚本转换为AI绘画提示词

生成脚本后,需要将每格的描述转换为AI绘画工具(如Stable Diffusion、Midjourney)能理解的提示词:

#!/usr/bin/env python3
"""
脚本转AI绘画提示词转换器
"""

def script_to_prompt(panel_description, art_style="anime"):
    """
    将漫画脚本中的画面描述转换为AI绘画提示词

    Args:
        panel_description: 脚本中的画面描述文本
        art_style: 艺术风格 (anime, manga, realistic, etc.)

    Returns:
        包含正/负面提示词的字典
    """

    style_prompts = {
        "anime": {
            "positive": "anime style, cel shading, vibrant colors, detailed lineart",
            "negative": "photorealistic, 3D render, oil painting, blurry"
        },
        "manga": {
            "positive": "manga style, black and white, screentone, high contrast",
            "negative": "color, painting, 3D, photorealistic"
        },
        "webtoon": {
            "positive": "webtoon style, soft lighting, pastel colors, clean lines",
            "negative": "grainy, noisy, dark, heavy shadows"
        }
    }

    style = style_prompts.get(art_style, style_prompts["anime"])

    prompts = {
        "positive": f"{panel_description}, {style['positive']}",
        "negative": style['negative']
    }

    return prompts

# 使用示例
panel = "林逸在夕阳下的天台,右手举起,掌心浮现金色符文光芒,表情坚定,身后是城市剪影"
result = script_to_prompt(panel, art_style="anime")

print("=== 正面提示词 ===")
print(result["positive"])
print()
print("=== 负面提示词 ===")
print(result["negative"])

步骤 5:使用配置文件管理系列脚本

对于长篇连载,建议使用YAML配置文件来管理整个系列的脚本生成参数:

# series_config.yaml — AI漫画系列配置文件
series:
  name: "符文使者"
  genre: "都市奇幻"
  total_chapters: 12
  pages_per_chapter: 5
  panels_per_page: 4

  world_setting:
    time: "现代"
    location: "虚构都市·星城"
    rules: "符文之力对普通人不可见"

  characters:
    - name: "林逸"
      role: "主角"
      arc: "从菜鸟到独当一面的符文使"

    - name: "苏小雨"
      role: "女主角"
      arc: "从封闭自我到信任伙伴"

  art_style:
    base: "anime"
    color_palette: "暖色调为主,战斗场景用冷色对比"
    reference: "类似《咒术回战》的线条风格"

  output:
    format: "json"
    script_dir: "./scripts"
    prompt_dir: "./prompts"
    image_dir: "./images"

配合Python读取此配置:

import yaml

with open("series_config.yaml", "r", encoding="utf-8") as f:
    config = yaml.safe_load(f)

print(f"系列: {config['series']['name']}")
print(f"篇章数: {config['series']['total_chapters']}")
print(f"角色列表:")
for char in config['series']['characters']:
    print(f"  - {char['name']} ({char['role']})")

步骤 6:用Shell脚本一键生成完整脚本

将上述步骤串联为一个自动化管线:

#!/bin/bash
# generate_script_pipeline.sh
# AI漫画脚本生成管线

SERIES_NAME="符文使者"
CHAPTER=${1:-1}  # 默认第1章

echo "=== AI漫画脚本生成管线 ==="
echo "系列: $SERIES_NAME"
echo "章节: 第${CHAPTER}章"

# 1. 检查Python依赖
echo "[1/4] 检查依赖..."
pip install openai pyyaml -q 2>/dev/null

# 2. 读取配置
echo "[2/4] 读取系列配置..."
python3 -c "
import yaml
with open('series_config.yaml') as f:
    cfg = yaml.safe_load(f)
print(f'  系列名称: {cfg["series"]["name"]}')
print(f'  总章节: {cfg["series"]["total_chapters"]}')
"

# 3. 生成脚本
echo "[3/4] 调用AI生成脚本..."
python3 batch_script_generator.py --chapter $CHAPTER

# 4. 生成AI绘画提示词
echo "[4/4] 转换为绘画提示词..."
python3 script_to_prompt_converter.py --chapter $CHAPTER

echo "=== 完成!==="
echo "输出目录: ./scripts/chapter_$(printf '%02d' $CHAPTER)/"
echo "提示词目录: ./prompts/chapter_$(printf '%02d' $CHAPTER)/"

常见问题

Q1:AI生成的脚本缺乏创意,总是套路化怎么办?

A: 这是最常见的问题。解决方法:在提示词中加入”反套路”约束,例如”避免使用天降神器解决危机”、”主角必须付出代价才能获胜”、”请设计一个意料之外但情理之中的反转”。另外,可以先用AI生成10个创意方向,再人工挑选最有趣的一个。

Q2:AI生成的对白很生硬,不像真人说话怎么办?

A: 在角色设定卡中详细描述说话风格(语速、用词习惯、口头禅),并加入示例对白供AI参考。例如:”主角说话像《海贼王》的路飞——直率、大喊大叫、喜欢用感叹词”。也可以先生成对白,再人工润色一遍。

Q3:AI脚本的分镜描述太模糊,AI绘画无法理解怎么办?

A: 在提示词中明确要求”画面描述必须包含:角色位置、服装状态、表情、背景、光线方向、镜头角度(俯视/仰视/平视)、景别(远景/中景/特写)”。同时,可以参考步骤4中的脚本转提示词工具,自动补充绘画关键词。

Q4:如何保证多章脚本的角色一致性?

A: 使用统一的角色设定卡(JSON格式),在每章生成时都作为上下文注入。同时,在Python脚本中维护一个”角色状态追踪器”,记录每个角色在不同章节中的变化(受伤、升级、换装等),确保连续性和一致性。

Q5:AI生成脚本太长了,一次生成的内容用不完怎么办?

A: 在提示词中指定输出长度。例如”请生成4页、每页4格的分镜脚本”或”总字数控制在2000字以内”。也可以先生成故事大纲,确认方向后再逐页生成详细脚本——分步生成更可控。

总结

AI编剧入门的核心要点:

  1. 脚本是漫画的骨架 — 好的脚本决定了漫画质量的上限,AI可以大幅提升脚本创作效率,但人工审核和润色仍然不可或缺
  2. 提示词决定质量 — 角色设定卡、世界观、格式约束是高质量AI脚本的三大支柱,花时间打磨提示词会带来成倍回报
  3. 管线化批量生产 — 使用Python脚本+配置文件,可以实现从角色设定→故事大纲→分镜脚本→绘画提示词的全自动化管线
  4. 结构化输出是关键 — 让AI输出JSON/Markdown/YAML等结构化格式,便于后续工具链处理和AI绘画工具对接
  5. 人机协作是最优解 — AI负责”量”(快速生成大量素材),人类负责”质”(筛选、润色、注入灵魂),两者结合才能产出真正的精品

下一期我们将深入探讨AI漫画的叙事结构,学习如何让AI讲好一个完整的故事。

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

昵称

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

    暂无评论内容