跳到正文
阿里雲開發者社區 AI·· 2 小時前AI 評分41

男女頻短劇編劇 Skill 落地實踐|劇本自動流轉至 AI 漫劇製作的全鏈路工程方案

男女频短剧编剧 Skill 落地实践|剧本自动流转到 AI 漫剧制作全链路工程方案

AI 導讀

【103】男女頻短劇編劇 Skill 以輸出格式和敍事結構約束大語言模型,並透過自動化腳本把劇本轉為分鏡資料,串連 AI 漫劇製作流程。方案可在本地離線部署,支援 8G 顯存,並對接 ComfyUI 批量渲染、TTS 配音及 FFmpeg 合成。

正文

2026-11-01 10

版权

版权声明:

本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

简介: 【103】男女频短剧编剧Skill是一套本地化AI漫剧制作方案:通过约束大模型输出范式,标准化生成含钩子、分镜-ready的剧本;自动清洗、拆解、映射提示词,并对接ComfyUI批量渲染、TTS配音与FFmpeg成片。8G显存即可部署,支持红果规范竖屏短剧量产。(239字)

摘要

在 AI 漫剧制作流程中,剧本质量直接决定成片的流量潜力,通用大模型自由生成的文本经常出现节奏松散、爽点 / 情感钩子缺失、男女频风格跑偏、文本无法直接转为可视化分镜等问题。【103】男女频短剧编剧 Skill 通过对大模型的输出范式、叙事结构、台词风格做强约束,标准化输出短剧剧本,再依托自动化脚本完成剧本清洗、分镜拆解、提示词映射、台词剥离,打通从剧本生成、角色管理、画面渲染到音视频合成的 AI 漫剧制作闭环。整套方案支持本地部署,适配 8G 显存显卡,可批量产出符合红果短剧规范的竖屏漫剧素材,适合个人创作者搭建稳定量产流水线。

English Abstract: The 103 male and female short drama screenwriting skill constrains the narrative structure and output format of large language models. It standardizes script output, and automatically converts scripts into storyboard data through engineering scripts, realizing the whole link of AI comic drama production. The pipeline can be deployed locally on consumer GPUs, supporting batch production of vertical short drama materials.

Keywords:短剧编剧 Skill;AI 漫剧制作;本地大模型;剧本结构化;分镜自动化;ComfyUI;Wan2.2

一、前言

AI 漫剧制作的瓶颈往往不在视频渲染模型,而在上游剧本环节。很多创作者直接使用通用提示词让大模型写剧本,产出内容偏向小说叙事,充斥大量心理描写,缺少短剧必备的 3 秒钩子、中段反转、片尾悬念,拿到 ComfyUI 等渲染节点时,还需要人工逐句拆分分镜、整理台词、编写画面提示词,人力成本极高,很难批量生产。

【103】男女频短剧编剧 Skill 本质是一套可复用的系统提示词约束体系,区分男频逆袭爽文、女频情感复仇两套叙事范式,限定单集时长、镜头描述方式、剧本排版格式,让本地 LLM 输出 “机器可读” 的剧本文本。本文重点讲解如何把这套 Skill 嵌入工程流水线,实现剧本产出之后自动流入 AI 漫剧制作环节,减少人工干预,搭建自动化生产链路。

完整资源模型可以看这一篇文章:https://developer.aliyun.com/article/1777622?spm=a2c6h.13148508.setting.14.80a24f0e6mosEq

二、整体流水线架构

【103】编剧Skill模板 + 本地LLM推理 → 标准化短剧剧本
→ 剧本校验&清洗脚本 → 角色、场景、动作、台词字段抽取
→ 分镜自动生成模块 → 生成ComfyUI可读取的批量渲染JSON
→ IPAdapter角色特征绑定 → 画面一致性控制(AI漫剧渲染)
→ 台词分发本地TTS生成配音音频
→ FFmpeg音视频混流、字幕压制、成片导出

整套链路全部离线本地运行,不需要调用云端大模型和视频生成接口,能够规避调用限额、计费、版权溯源等风险。

三、环境依赖准备

# 基础推理、数据解析依赖
pip install llama-cpp-python pydantic regex -i https://pypi.tuna.tsinghua.edu.cn/simple
# 图像处理、IP特征缓存辅助库
pip install pillow numpy

硬件适配说明: GGUF 量化模型优先选择 Q4_K_M 档位,8G 显存环境下 n_gpu_layers 按需调整,显存溢出时降低加载层数,关闭桌面其他占用 CUDA 程序。

四、Skill 调用封装脚本(支持男女频动态切换)

新建 skill_drama_entry.py,统一管理 Skill 文件加载、LLM 对话、剧本输出,后续可以被漫剧流水线调度程序直接调用。

from llama_cpp import Llama
import os
class SkillDramaGenerator:
    def __init__(self, gguf_model_path: str):
        self.llm = Llama(
            model_path=gguf_model_path,
            n_ctx=8192,
            n_gpu_layers=-1,
            temperature=0.7,
            top_p=0.82,
            max_tokens=2000
        )
    def load_skill_prompt(self, skill_file_path: str):
        with open(skill_file_path, "r", encoding="utf-8") as f:
            return f.read()
    def generate_script(self, skill_prompt: str, user_requirement: str):
        msg_list = [
            {"role": "system", "content": skill_prompt},
            {"role": "user", "content": user_requirement}
        ]
        result = self.llm.create_chat_completion(messages=msg_list)
        script_content = result["choices"][0]["message"]["content"]
        return script_content
if __name__ == "__main__":
    generator = SkillDramaGenerator("./models/qwen2.5-7b-instruct-q4_k_m.gguf")
    # 切换:skill_male.txt 男频 / skill_female.txt 女频
    skill_prompt = generator.load_skill_prompt("./skill_female.txt")
    req = "写女频重生短剧第2集,女主当众拆穿继妹的伪装,结尾留下被男主误会的悬念"
    script = generator.generate_script(skill_prompt, req)
    with open("./drama_raw.txt", "w", encoding="utf-8") as f:
        f.write(script)
    print("剧本生成完成,准备进入AI漫剧制作分镜解析环节")
    print(script)

运行指令:

python skill_drama_entry.py

五、剧本清洗与分镜提取脚本(对接 AI 漫剧制作)

原始剧本会存在换行混乱、多余标记、无效注释,本脚本基于正则清洗文本,抽取场景、动作描述、台词,输出标准化分镜数据,直接供给 ComfyUI 批量渲染节点。 新建 script_to_comfy_storyboard.py

import re
import json
class DramaStoryboardConvert:
    def __init__(self):
        # 角色+动作+台词正则
        self.re_line = re.compile(r"【(.+?)】\s*((.*?))\s*(.+?)(?=【|$)", re.S)
        self.re_scene = re.compile(r"第(\d+)场\s*(.*?),(内|外),(日|夜)")
    def clean_text(self, raw_text: str):
        # 清洗markdown标记、空行
        clean = re.sub(r"#|```", "", raw_text)
        clean = re.sub(r"\n+", "\n", clean)
        return clean.strip()
    def parse_to_storyboard(self, raw_text: str, ep_name: str, genre: str):
        clean_txt = self.clean_text(raw_text)
        blocks = re.split(r"第\d+场", clean_txt)
        storyboard_list = []
        shot_index = 1
        for block in blocks:
            block = block.strip()
            if len(block) < 8:
                continue
            scene_match = self.re_scene.search(block)
            scene_info = scene_match.group(0) if scene_match else "通用场景"
            matches = self.re_line.findall(block)
            action_merge = []
            dialogue_merge = []
            char_set = set()
            for char_name, action, words in matches:
                char_set.add(char_name.strip())
                action_merge.append(action.strip())
                dialogue_merge.append(f"{char_name.strip()}:{words.strip()}")
            action_all = ",".join(action_merge)
            dialogue_all = ",".join(dialogue_merge)
            # 组装漫剧渲染提示词
            pos_prompt = f"9:16竖屏,短剧漫剧,{scene_info},{action_all},人物五官稳定,画风统一,光影柔和,镜头平稳"
            neg_prompt = "画面闪烁,人物变形,多手指,水印,文字,画风跳变,畸形肢体"
            storyboard_list.append({
                "shot_id": f"{ep_name}_shot{shot_index}",
                "scene": scene_info,
                "characters": list(char_set),
                "action": action_all,
                "dialogue": dialogue_all,
                "positive": pos_prompt,
                "negative": neg_prompt
            })
            shot_index += 1
        return storyboard_list
if __name__ == "__main__":
    with open("./drama_raw.txt", "r", encoding="utf-8") as f:
        raw = f.read()
    converter = DramaStoryboardConvert()
    res = converter.parse_to_storyboard(raw, ep_name="ep02", genre="女频")
    with open("./comfy_storyboard.json", "w", encoding="utf-8") as fw:
        json.dump(res, fw, ensure_ascii=False, indent=2)
    print("分镜JSON已生成,可直接导入AI漫剧批量渲染工作流")

运行指令:

python script_to_comfy_storyboard.py

六、批量渲染调度脚本(调用 ComfyUI API,AI 漫剧渲染)

前提:ComfyUI 开启 API 服务,工作流提前配置好 IPAdapter、视频生成节点,读取上面输出的comfy_storyboard.json批量推任务。

import requests
import json
import time
COMFY_URL = "http://127.0.0.1:8188"
def queue_prompt(workflow_json):
    payload = {"prompt": workflow_json}
    resp = requests.post(f"{COMFY_URL}/prompt", json=payload)
    return resp.json()
def batch_render(storyboard_path, workflow_template_path):
    with open(storyboard_path, "r", encoding="utf-8") as f:
        shots = json.load(f)
    with open(workflow_template_path, "r", encoding="utf-8") as f:
        base_workflow = json.load(f)
    for shot in shots:
        # 替换工作流内提示词节点
        base_workflow["6"]["inputs"]["text"] = shot["positive"]
        base_workflow["7"]["inputs"]["text"] = shot["negative"]
        print(f"提交任务:{shot['shot_id']}")
        queue_prompt(base_workflow)
        time.sleep(3)
if __name__ == "__main__":
    batch_render("./comfy_storyboard.json", "./workflow_template.json")

七、台词导出 & TTS 配音、后期 FFmpeg 指令

7.1 台词提取脚本

import json
with open("./comfy_storyboard.json","r",encoding="utf-8") as f:
    data = json.load(f)
lines = []
for item in data:
    lines.append(item["dialogue"])
with open("./tts_input.txt","w",encoding="utf-8") as f:
    f.write("\n".join(lines))

7.2 FFmpeg 成片处理指令

# 拼接所有分镜视频
ffmpeg -f concat -safe 0 -i filelist.txt -c copy ep2_raw.mp4
# 嵌入字幕
ffmpeg -i ep2_raw.mp4 -vf "subtitles=sub.srt:force_style='FontName=SimHei,Fontsize=28,Outline=2'" -c:a copy ep2_sub.mp4
# 统一输出竖屏短剧标准参数
ffmpeg -i ep2_sub.mp4 -c:v libx264 -preset medium -crf 24 -vf scale=408:720 ep2_final.mp4

八、Skill 结合 AI 漫剧制作的常见问题调优

  1. Skill 输出格式错乱,解析脚本读取失败 不要把 temperature 调太高,男女频模板分开使用;在 Skill 提示词中强制要求固定剧本格式,解析脚本增加异常捕获,过滤无效行。
  2. AI 漫剧画面人物漂移、画风不一致 Skill 产出剧本时,脚本统一收集本场角色列表,渲染阶段绑定 IPAdapter 角色特征文件,同一个角色在多镜头使用同一个参考特征。
  3. 剧本缺少钩子,成片完播差 【103】Skill 本身内置叙事约束,同时可以增加简单检测脚本,扫描文本是否包含冲突、悬念关键词,对不合格剧本标记,人工复核后再送入 AI 漫剧制作流程。
  4. 8G 显存连续批量渲染 OOM 批量脚本增加任务间隔,单镜头渲染完成后执行缓存清理,关闭不必要的后台 GPU 进程,模型全部使用 Q4 量化版本。

九、总结

【103】男女频短剧编剧 Skill 解决了剧本标准化的痛点,把主观的编剧经验固化为可复用的提示词体系,再通过整套 Python 脚本打通剧本到分镜、渲染、配音、成片的链路,让 AI 漫剧制作从零散手工操作变成流水线工程化生产。这套方案可以持续批量产出短剧素材,只需要定期微调 Skill 提示词适配平台风格偏好,非常适合长期稳定做漫剧量产。

來源:阿里雲開發者社區 AI · developer.aliyun.com