不只是提示词:AI短视频内容工程与角色一致性流水线
如果你以为做一条“雪糕看AI小视频”或者“小糖糕唐诗幽默重现江湖”这类AI短视频只需要把一句提示词扔进文生视频模型然后坐等成片那么大概率会在更新到第三条时放弃。原因很简单这类栏目看起来是“AI生成”实际上是一个内容工程。它有固定角色、连续剧情、幽默对白、唐诗文本改编还要求能稳定更新。真正卡住你的不是某个模型效果不够好而是几个环节之间没有打通角色一致性怎么保证、脚本怎么批量产出、配音和图生视频怎么对齐、素材目录怎么管理。这篇文章不想泛泛讨论“AI视频有多厉害”而是把一套从唐诗选题到成片的完整流水线拆开给你一条可以照着落地执行的路径。先给一个判断像“雪糕看AI小视频”“小糖糕唐诗幽默”这类内容本质上是“创意 IP 内容工程”。如果只关注单次生成效果你会一直困在抽卡里如果先把流程搭出来哪怕模型版本更新你也能快速迁移。读完这篇文章你能学会用大模型把一首古诗改写成幽默分镜脚本用固定角色参考图保证人物形象不漂移再用图生视频、配音和剪辑工具合成一条完整短视频并掌握最基本的排错手段。1. 这篇文章真正要解决的问题AI短视频最近非常火但有一个现象很值得注意大量账号发了几条“惊艳”作品之后就不再更新。原因不是创意枯竭而是流程跑不通。创作者把太多精力放在“怎么生成一张好看的图”上忽略了成片需要的是稳定、可复制、可排错的流水线。“雪糕看AI小视频”“小糖糕唐诗幽默重现江湖”这类内容表面上是把唐诗和幽默对白结合实际上对生产流程提出了四个具体要求角色是连续 IP。雪糕、小糖糕不能这一集长一个样下一集又换了发型。角色是观众记住这个栏目的核心。剧本要可控。古诗不能乱改尤其是大家耳熟能详的《静夜思》这类作品既要保留原诗意境又要制造反差笑点。单条视频有完整叙事。不能只有画面奇观还要有“起承转合”配音、字幕、画面节奏必须对齐。产量要能支撑更新。如果做一条片子要手工处理十几个文件那每周更新就是灾难。所以这篇文章解决的不是“怎么生成一段AI视频”而是“怎么搭建一条可持续生产AI短片的流水线”。最应该看这篇文章的读者有三类想认真做AI动画短视频账号的内容创作者想用AIGC提升内容生产效率的开发者和产品运营以及需要把“故事创意”转成“代码任务”的技术人。2. 基础概念与核心原理不是所有AI视频都是一个玩法要理解这类项目先要把几个容易混淆的概念分清。2.1 文生视频、图生视频与视频驱动文生视频是“文本直接出视频”。优点是零门槛缺点是控制力弱。角色容易漂移动作不稳定很难做到一个人物从第一秒到最后一直保持同一种形象。图生视频是把一张图片变成动态视频。这张图可以是角色定妆图也可以是分镜图。图生视频更适合做角色IP短片因为你可以先严格控制画面中的角色长什么样再让模型去动。视频驱动则是用一段视频素材去影响另一张图的动态或者让人物图片开口说话。对“小糖糕唐诗幽默”这种以对白推进剧情的短片口型驱动几乎是必须的。2.2 角色一致性这个栏目的生命线“雪糕看AI小视频”里的雪糕和“小糖糕唐诗幽默”里的小糖糕如果形象不稳定观众就会觉得陌生。角色一致性的常见实现路径有三种方案原理适合场景固定参考图每张生成图都携带同一张角色定妆图快速验证创意成本最低LoRA角色模型用十几张角色图片训练一个小模型需要大量画面、追求风格统一角色ID嵌入提示词用文字描述详细外貌特征没有参考图时兜底使用对新手来说最快上手的是“固定参考图”。先把雪糕和小糖糕的定妆图各做一张之后所有画面都在提示词和图片参考中复用这两张图。对进阶玩家LoRA能解决更多复杂问题但训练数据要自己做脏手和脏背景反而会让效果退化。2.3 为什么不能完全依赖单模型出片把“唐诗幽默”做成完整视频中间的步骤至少有六个选题拆解、脚本生成、角色定妆、分镜画面、配音和视频合成。没有任何一个模型能把六件事一次做到位。如果强行用文生视频一条龙出片你会遇到三个常见问题画面里的文字不可控可能出现乱码人物说话内容与文本不一致口型对不上镜头一多同一人物在前后镜头里长相完全不同。因此更合理的思路是“分工协作”大模型负责文本多模态模型负责画面TTS负责配音FFmpeg负责合成。这也是本文后面所有示例的设计基础。2.4 从唐诗到短视频的核心创作逻辑为什么“唐诗幽默重现江湖”这类内容能火因为它把两个原本不搭的东西放进一个场景里一个是有千年文化底蕴的唐诗一个是现代人熟悉的吐槽口吻。雪糕可以扮演冷静的“吐槽担当”小糖糕可以扮演天真的“行动担当”一收一放笑点自然出现。但幽默不能伤害原诗的情感。写脚本时要注意“反差但不下沉”。以《静夜思》为例原诗的情感是孤独和思乡改编时可以让小糖糕把月光误当成“要命的加班灯光”雪糕在旁边吐槽一句“那是月亮不是甲方需求”。既有现代职场共鸣又没有把李白写成小丑。3. 环境准备与前置条件开始写代码之前先准备好环境。这里不绑定某一款具体产品因为AI模型迭代太快今天流行的工具可能下个月就改了。重点是理解每个环节你需要什么。3.1 基础运行环境操作系统Windows 10/11、macOS、Linux 均可。Python建议 3.10 或更高版本主要用于写脚本调用模型接口。FFmpeg用于视频片段合并、音频合成、字幕烧录。建议 6.x 以上版本。内存16GB 以上更稳妥普通 8GB 也可以跑但不要同时开太多本地模型。3.2 模型与API服务为了控制成本建议采用“混合链路”环节推荐方式说明脚本生成大模型API用文本模型生成分镜脚本角色定妆图文生图模型生成角色标准参考图分镜动态图生视频API将定妆图变成动态片段配音TTS服务或本地开源模型按角色生成对白音频字幕语音识别或人工校准中文短剧字幕必须人工检查本地方案可以选用 Stable Diffusion WebUI 或 ComfyUI 做图像生成如果要在本地训练角色 LoRA建议使用 NVIDIA 显卡显存 12GB 以上。如果电脑配置不够直接用云端API按量付费更省心。3.3 项目目录结构建议新建一个项目目录长期更新内容一定要从第一天就把目录规范起来tangshi_ai_video/ ├── poems/ # 原始唐诗文本 ├── scripts/ # 生成的分镜脚本 ├── characters/ # 角色定妆图 ├── scenes/ # 分镜图片和视频片段 ├── audio/ # 配音文件 ├── subtitle/ # 字幕文件 └── output/ # 最终成片这样做的价值在于后续如果要批量生产你只需要按目录扫描素材脚本能自动找到对应文件。4. 核心流程拆解从《静夜思》到一条30秒短片整个拆解过程分为六步。为了讲清楚本文以《静夜思》为例床前明月光疑是地上霜。举头望明月低头思故乡。这首诗画面感强、情绪转折清晰非常适合做成短剧情。4.1 第一步选题与情感拆解选诗不是看哪首有名而是看它能不能变成“场景冲突反转”。古诗要足够大众画面感要强情绪层次要适合改编。《静夜思》好改编是因为它有三层结构眼前细节、抬头动作、内心情绪。这三层正好对应短视频的起承转合。选诗时不宜选太长、太晦涩的作品。短视频时长最好控制在30到60秒一首绝句、一句名句就够。4.2 第二步角色设定设定两张角色卡固定下来后不要随意改动。雪糕冷静型吐槽角色说话语速偏快声音偏少年感。外形可以是高个子、冷色调、戴眼镜的卡通形象。在诗里负责“拆穿幻想”。小糖糕天真行动派声音软萌语速慢一点外形偏圆润、暖色调。在诗里负责“认真执行错误理解”。角色卡不仅服务于画面还服务于配音。配音演员或TTS音色选择也要对应角色否则观众会出戏。4.3 第三步脚本生成这一步可以用大模型API完成。你需要把“角色设定、诗歌文本、分镜要求、输出格式”全部写进提示词而不是只丢一句“帮我写脚本”。一个可复用的提示词框架如下你是短视频编剧擅长把古典诗歌改编成幽默但尊重原作的AI动画脚本。 角色设定 - 雪糕冷静吐槽型音色偏高冷普通话标准。 - 小糖糕天真行动派音色软萌语气夸张。 请根据以下唐诗生成5至7个镜头。每个镜头必须包含 - scene画面内容 - shot景别如中景、近景、特写 - character出现角色 - dialog该镜头台词 - duration镜头时长单位秒 - visual_style画面风格 要求 1. 保留原诗情感不得恶搞。 2. 反差幽默来自角色对诗句的错误理解。 3. 结尾收回到诗意本身。 诗歌原文床前明月光疑是地上霜。举头望明月低头思故乡。这个提示词模板可以存成文件之后批量换诗歌内容即可。4.4 第四步分镜画面生成根据脚本生成的镜头列表逐镜生成图片。每一个镜头都要带上角色定妆图作为参考并且在画面描述中写清楚“保持雪糕的冷色系设计”“保持小糖糕的圆润形象”。每一个分镜图片不需要一次生成到完美。如果画面崩了先检查是不是参考图权重设置太低如果角色身体比例不对可以在提示词里补充“全身、站姿、正视镜头”等约束。4.5 第五步图生视频与口型驱动把分镜图片放进图生视频模型让静态画面产生动作。这个环节的重点不是“动作越大越好”而是“动作是否服务于台词”。一个人说话时嘴部自然开合、身体轻微晃动就足够不要每句话都让角色跳起来那样反而显得诡异。如果短视频以对白为主建议先配音再根据音频时长决定每个镜头的长度最后生成视频片段。这样可以避免画面长于语音或语音长于画面。4.6 第六步配音、字幕与合成配音建议按镜头逐句生成而不是一次性合成一整段。逐句配音的好处是某个镜头的语音不对只需要重录这一句不需要重新处理整条音频。字幕不要直接信任自动识别结果。中文古诗里“明月光”“地上霜”这类词语音识别很容易错。成片前必须人工校对字幕否则一个错别字就让专业感大打折扣。5. 完整示例与代码实现下面给出三个可直接运行的脚本示例。它们不是某个平台的唯一写法而是通用的参考框架。API地址、模型名称、参数名都需要根据你实际使用的服务商替换。5.1 示例一用大模型生成分镜脚本# 文件路径scripts/generate_script.py import os import json from openai import OpenAI client OpenAI( api_keyos.getenv(LLM_API_KEY), base_urlos.getenv(LLM_BASE_URL, https://api.example.com/v1) ) def generate_script(poem_title: str, poem_text: str) - dict: prompt f 你是短视频编剧擅长把古典诗歌改编成幽默但尊重原作的AI动画脚本。 角色设定 - 雪糕冷静吐槽型音色偏高冷普通话标准。 - 小糖糕天真行动派音色软萌语气夸张。 请根据以下唐诗生成5至7个镜头。每个镜头必须包含 - scene画面内容 - shot景别如中景、近景、特写 - character出现角色 - dialog该镜头台词 - duration镜头时长单位秒 - visual_style画面风格 要求 1. 保留原诗情感不得恶搞。 2. 反差幽默来自角色对诗句的错误理解。 3. 结尾收回到诗意本身。 诗歌标题{poem_title} 诗歌原文{poem_text} resp client.chat.completions.create( modelos.getenv(LLM_MODEL, gpt-4o-mini), messages[ {role: user, content: prompt} ], response_format{type: json_object}, temperature0.8 ) return json.loads(resp.choices[0].message.content) if __name__ __main__: script generate_script( poem_title静夜思, poem_text床前明月光疑是地上霜。举头望明月低头思故乡。 ) os.makedirs(scripts, exist_okTrue) with open(scripts/jingyesi.json, w, encodingutf-8) as f: json.dump(script, f, ensure_asciiFalse, indent2) print(脚本已保存到 scripts/jingyesi.json)这段代码做了三件事把角色设定写进提示词、要求模型输出JSON、把结果保存到本地文件。保存成JSON后后面的分镜生成和配音步骤都可以直接读取同一个文件不再需要手工抄写。运行前先设置环境变量export LLM_API_KEY你的API密钥 export LLM_BASE_URLhttps://api.example.com/v1 export LLM_MODELgpt-4o-mini python scripts/generate_script.py注意base_url示例地址不是真实服务。你要换成自己使用的模型服务商提供的地址和密钥。5.2 示例二用角色参考图生成分镜图片不同文生图服务的接口差异很大有的叫image有的叫reference_image有的需要先上传图片拿到图片ID。下面是通用思路的伪代码重点在“参考图如何参与生成”# 文件路径scripts/generate_image.py import os import base64 import requests api_key os.getenv(IMAGE_API_KEY) url os.getenv(IMAGE_API_URL, https://api.example.com/v1/images/generations) def encode_image_to_base64(path: str) - str: with open(path, rb) as f: return base64.b64encode(f.read()).decode(utf-8) def generate_image(prompt: str, reference_image_path: str, out_path: str) - None: payload { prompt: prompt, size: 1024x576, n: 1, response_format: url, # 下面这个参数是示意具体名称以服务商文档为准 reference_image: encode_image_to_base64(reference_image_path), } headers {Authorization: fBearer {api_key}} resp requests.post(url, jsonpayload, headersheaders, timeout120) resp.raise_for_status() data resp.json() image_url data[data][0][url] image_data requests.get(image_url, timeout60).content with open(out_path, wb) as f: f.write(image_data) print(图片已保存:, out_path) if __name__ __main__: generate_image( prompt雪糕站在窗前月光洒进房间表情冷静夜景古风动画风格, reference_image_pathcharacters/snow_stick.png, out_pathscenes/scene001.png )这个脚本的核心价值在于“锁定参考图”。如果去掉参考图每次生成的雪糕都可能换一张脸。实际项目中图片API的上传方式、大小限制、参考图数量都可能不同你需要先阅读服务商文档把参数名和格式替换成真实值。5.3 示例三用FFmpeg合成视频、音频和字幕分镜图片生成后先用图生视频服务把每张图变成视频片段再把所有片段合成一条完整的短视频。# 将分镜图片变成5秒视频片段 ffmpeg -loop 1 -t 5 -i scenes/scene001.png \ -vf fps25,formatyuv420p scene001.mp4 # 生成视频片段列表文件内容为 # file scene001.mp4 # file scene002.mp4 # file scene003.mp4 ffmpeg -f concat -safe 0 -i list.txt \ -i audio_final.mp3 \ -c:v libx264 -c:a aac -pix_fmt yuv420p \ -shortest output.mp4 # 给视频烧录字幕 ffmpeg -i output.mp4 \ -vf subtitlessubtitle.srt:force_styleFontSize20,PrimaryColourHFFFFFF \ final.mp4命令解释-loop 1 -t 5让图片循环播放5秒适合把静态分镜变量成视频片段。-f concat按列表顺序拼接多个片段。-shortest视频和音频中较短的作为总时长避免出现黑屏或静音。subtitles把SRT字幕烧录到画面里。如果你用的是 Windows字幕文件名路径要小心处理建议把文件放到当前目录并简化文件名。中文字体问题也需要在系统里配置可用字体否则烧录时可能不显示。5.4 批量运行的最小执行顺序实际生产时可以按顺序执行以下命令python scripts/generate_script.py python scripts/generate_image.py # 逐个镜头调图生视频API生成 video_scene001.mp4 # 用TTS逐句生成 audio_scene001.mp3 ... ffmpeg -f concat -safe 0 -i list.txt -i audio_final.mp3 -c:v libx264 -c:a aac -shortest output.mp4先跑通“一首诗、一个脚本、一张图、一条视频”的最小闭环再考虑批量。6. 运行结果与效果验证运行结果不是只看“有没有视频文件”而是要看“这条视频能不能发”。6.1 预期输出文件跑完上面的命令后你应该得到scripts/jingyesi.json结构化的分镜脚本。scenes/scene001.png等多张分镜图。scene001.mp4等视频片段。audio_final.mp3对白音频。subtitle.srt字幕文件。final.mp4成片。如果少任何一个文件不要急着生成下一首唐诗先检查流程断在哪一步。6.2 成片验证清单检查项通过标准不通过怎么处理角色一致性雪糕和小糖糕在前后镜头中长得一样重新用定妆图参考生成字幕准确字幕中没有错别字时间轴不漂移人工修正SRT语音与画面同步台词出现时角色口型已经张开说完后闭嘴逐镜头剪辑或调节音频起止时间节奏镜头不会持续超过5秒不说话缩短镜头或增加动作诗意底色幽默之外观众还能感受到原诗情绪修改脚本调整结尾镜头判断“成功”的标准很简单如果去掉字幕只看画面和听声音观众依然能理解剧情逻辑并且雪糕和小糖糕看起来是同两个人这条片子就算基本合格。7. 常见问题与排查思路AI短视频生产最烦的不是“效果不好”而是“不知道哪里出了问题”。下面按现象列出排查方向问题现象可能原因排查方式解决方案同一角色在不同镜头长相突变生成时没带参考图或提示词中角色特征描述不一致检查每个镜头的生成记录固定角色定妆图统一提示词前缀画面崩坏手指、文字乱码生成分辨率较高但模型水平不足放大画面检查局部区域缩短镜头运动幅度或使用局部重绘视频动作太小像PPT图生视频运动系数设置太低查看动作参数是否被模型转换调高运动强度或在提示词中加动作动词声音和画面不同步整段音频时长大于或小于视频长度查看每个镜头长度和音频段长度逐镜头配音或剪辑音频对齐字幕时间轴错位SRT是按脚本时间生成但成片剪辑后时间变了用播放器对照字幕和口语用语音识别工具重新校准字幕API反复超时或限流并发太高或套餐额度不足查看错误码和响应时间增加重试、指数退避、降低并发这里要特别提醒接口超时不是只有网络一个原因也可能是生成队列太长。建议每调用一次大模型请求之间至少停1到2秒不要写一个for循环瞬间发几十个请求。8. 最佳实践与工程建议8.1 把提示词当成代码管理角色设定、分镜要求、画面风格都应该沉淀为模板放进Git仓库管理。每次调整提示词后记录改动原因。你可以在项目里维护一个prompts.yaml文件character_snow_stick: name: 雪糕 appearance: 冷色系、高个子、戴眼镜、动画风格 voice: 少年音、语速偏快 personality: 冷静吐槽 character_sugar_stick: name: 小糖糕 appearance: 暖色系、圆润身材、动作夸张、动画风格 voice: 软萌音、语气夸张 personality: 天真行动 script_rules: poem_emotion: 保留原诗情感不恶搞 humor_style: 反差来自角色对诗句的错误理解 ending: 结尾收回到诗意有了固定模板模型输出的质量会稳定很多。8.2 先小成本跑通再规模化不要一开始就追求高清、长视频、大量镜头。第一条片子控制在30秒左右5个镜头分辨率720P都足够。跑通之后再逐步提升画质和时长。如果一上来就同时处理大量素材遇到问题时你会分不清是脚本问题、图片问题还是剪辑问题。8.3 角色一致性优先于画面精致度观众会原谅不够精致的动画但很难接受“上一秒是这个角色下一秒变另一个人”。所以所有画面生成步骤都要围绕同一组定妆图来工作。换模型、换平台时先重新验证角色一致性不要只看单张图单独有多好看。8.4 内容合规与安全边界制作这类内容一定要注意合规古诗文本大多属于公共领域但翻译、白话改编版本要注意版权来源。角色形象最好是原创设计不要使用真实人物肖像也不要使用有清晰版权归属的知名动漫角色。内容不要过度低俗尤其涉及未成年人或校园场景时要避免不良暗示。发布AI生成内容时遵守目标平台对“AI生成内容”的标识要求。8.5 为批量生产留好接口当一首诗的流程跑通后批量生产就变成“换文本、跑脚本、扫目录、合成视频”四件事。建议把所有视频片段列表、音频对齐方式都做成配置文件不要在每个镜头里手写绝对路径。目录结构越规范自动化越容易。9. 总结与后续学习方向这篇文章从“为什么AI短视频账号容易断更”这个问题出发拆解了“雪糕看AI小视频”“小糖糕唐诗幽默重现江湖”这类内容背后的完整生产链路。核心不是某一个大模型效果多强而是把“创意 IP 内容工程”结合成一条可复制的流水线。你学会了用大模型生成分镜脚本用角色参考图和图生视频保持形象稳定用FFmpeg完成最终合成也知道了最常见的排查方向。下一步建议分两条线走。如果你是内容创作者先选三首画面感强的唐诗用最小闭环各做一条30秒的短片再对比数据效果如果你是开发者可以继续研究三个方向本地部署开源图像生成模型并用LoRA锁定角色为TTS配音搭建批量缓存机制把整个流程封装成一个带任务队列的自动化工具。最后给一个很实际的提醒不要急着把所有环节都自动化。先手工跑通一条片确认每个步骤的输出是你可控的再写脚本去简化它。流程一旦稳定你就有时间真正打磨剧情和幽默感而这才是这类栏目能持续更新的关键。建议把文中代码和排查表收藏备用做第一条片子时按清单逐项核对。