做 AI 短剧最难受的环节,不是写剧本,是分镜。剧本再精彩,真到了要喂给 Seedance 这类视频生成模型的时候,你会发现它根本听不懂什么叫“气氛”、什么是“节奏”。你只能老老实实把每个镜头拆成它认识的格式:景别、运镜、时长、画面里有什么、画面外又有什么。这个环节我手工抠了不知道多少个晚上,后来实在受够了,干脆给自己常用的 Agent 工作流写了一个专用 skill,名字就叫 smy-seedance-storyboard。
这个 skill 的作用特别直接:你丢给它一段剧情,它按照一套固定规则生成一份适合 Seedance 出片的短剧分镜表,并且每个镜头都配了一段可以直接复制的视频生成提示词。更关键的是,这套规则的“风格底座”,我参考的是以 上美影 为代表的经典国产美术片沉淀出的民族审美语言——水墨、留白、工笔线条、写意动作。这也是标题里“上美影”三个字的由来,我把它作为视频美学风格来落地,而不是简单地说“模仿某某动画”。
这个项目适合谁参考?我觉得主要是两类人。一类是每天跟 AI 短剧打交道、正被分镜逼疯的内容创作者;另一类是玩 Agent、玩 skill,想知道一个垂直技能包到底该怎么设计、怎么落地的开发者。这篇我就把自己的设计思路、skill 目录怎么排、规则怎么定、实测效果和踩过的坑全部摊开,尽量写得能直接抄作业。
1. 项目概述:短剧工作流里为什么非要加一层分镜
1.1 不是脚本写不好,是模型不理解镜头
先说一个很多人没想明白的问题:AI 短剧的瓶颈,其实不在剧本文案,而在“从文学语言到镜头语言”的转换。大模型写故事很擅长,能给你铺陈出千回百转的情节,但你把这段文字原封不动丢给 Seedance 让它生成视频,它就傻了。它会自己脑补一个“全景+固定机位”,把你写的所有信息塞在一个画面里,出来的东西看着像 PPT 翻页,完全不像剧。
问题不在模型,在于你没把镜头意图说清楚。视频生成模型需要的是“这一个镜头里到底拍什么、怎么拍”的确定性信息,而不是一段抒情散文。分镜表就是这个中间层。它负责把“书生在山寺避雨”这种文学描述,拆成“大远景固定镜头,雨中山门,人物撑伞走入画面,水墨留白”这种模型能直接消费的指令。所以分镜不是额外工作,它是 AI 短剧出片质量的分水岭。
这个道理我自己也是踩了无数次坑才彻底明白。最开始我也想过偷懒:直接用一段很长的提示词让模型自由发挥,结果十个镜头里能用的不到三个,素材废掉大半。后来才意识到,AI 短剧的工作流应该是“剧本→分镜→提示词→生成”,分镜这个环节越严格,后续返工越少。
1.2 “上美影风格”到底是什么,以及为什么选它
再说风格。现在做 AI 短剧,大家在提示词里都喜欢堆欧美电影质感、赛博朋克、二次元这些,同质化严重到观众已经免疫。而我这次做 skill 时选“上美影风格”,其实是一种反向操作:把根植于中国美术片的民族动画美学,变成一种可复用的视频风格约束。
我理解的上美影风格,核心是这几点。第一,构图上极度克制,讲究留白,主体经常只占画面一角或三分之一,大量空间留给山水云雾;第二,色彩上偏爱低饱和的墨色底子,再用朱砂红、石青这类点缀色提神;第三,线条有装饰感和工笔味,不追求真实物理质感;第四,人物动作是写意的,夸张中带着韵律,跟现实逻辑不完全挂钩;第五,转场常做淡入淡出或直接的意境切换,很少生硬硬切。这套语言用在玄幻、古风、志怪、民间传说题材的短剧里,天然就有一种“片子很贵”的错觉,而且和现在主流的快节奏短视频形成明显差异化。
这里要特别说明一下,我是把“上美影”当作一套审美规则来用的,不是要让模型去还原某个具体作品或者具体角色形象。做 skill 的人如果真想深耕某个风格,最好也像我这样先把风格拆成“构图、色彩、线条、动作、转场”几个可量化的维度,而不是笼统地说“我要 xx 风格”。风格一旦能拆成规则,机器就能执行;拆不出来,就只能靠运气。
1.3 skill 在整个流程里到底扮演什么角色
现在很多 Agent 工具(Claude Code、Codex 以及各种自建工作流)都开始支持 skill 机制,但不少人把它理解成了一个普通的“大号提示词”。其实不对。skill 更像是一个“专业技能包”,它里面装的不仅仅是提示词,还有一套完整的方法论:规则文件、模板、示例库、校验脚本。Agent 在碰到对应任务时按需加载 skill,暂时用不到的时候不占上下文空间。
在这个项目里,skill 的角色是“分镜顾问”。当我对 Agent 说“帮我给这段剧情出分镜”时,Agent 通过 skill 的描述信息判断匹配,然后自动加载规则、模板和示例,按既定流程产出分镜表。它不会临时自由发挥,也不会忘记你之前定好的风格约束。这就解决了 AI 创作里一个老大难问题:风格不稳定。普通对话里你跟模型说十遍“要水墨风”,它该跑偏还是跑偏;但 skill 每次动手前都会先读一遍风格规则,等于把审美标准固化下来了。
2. skill 的设计思路与核心机制
2.1 为什么做成 skill,而不是塞进系统提示词
我在做这个 skill 之前,试过直接在系统提示词里写“你是分镜大师,你擅长水墨风分镜”这种话,但效果很差。原因有三个。一是上下文被长期占用,不管聊什么都要带着这套规则,很浪费;二是规则一多,模型容易在执行时“选择性遗忘”,开头记得,写到后面就放飞了;三是没法版本管理,改一版提示词就得全量替换,协作和分享都不方便。
skill 的机制天然规避了这些问题。它按需加载,平时不占资源;它把规则拆成独立文件,可以逐条修改、单独调优;它还能带上校验脚本,让输出结果由机器帮你兜底检查。所以我个人的结论是:凡是需要“固定方法+固定风格+固定输出格式”的重复性任务,都值得做成 skill,而不是写进对话里。分镜、小说润色、代码审查、文档规范化,这些都很适合 skill 化。
2.2 分镜数据模型:每个镜头必须有哪些字段
做 skill 的第一步不是写提示词,而是把输出物的结构定下来。我设计的分镜表,每个镜头包含的字段如下:
| 字段 | 含义 | 示例值 |
|---|---|---|
| shot_id | 镜号 | 01、02…… |
| sequence | 场次/段落 | 第1场、第2场…… |
| shot_type | 景别 | 大远景、全景、中景、近景、特写 |
| camera | 运镜方式 | 固定、推近、拉远、摇、移、跟 |
| duration | 单镜时长(秒) | 3-8s |
| content | 画面内容描述 | 人物动作、环境、光线变化 |
| style_hint | 风格提示 | 留白构图、墨色低饱和、朱砂点缀 |
| dialogue_on | 对白/旁白 | 若有则写明 |
| transition | 转场方式 | 淡入、叠化、硬切、光圈转场 |
| seedance_prompt | 可直接复制的提示词 | 一句完整正向提示词 |
为什么字段要定这么细?因为每个字段其实都对应着 Seedance 这类模型生成时的某个控制维度。景别决定视野范围,运镜决定画面运动轨迹,时长决定视频生成长度,风格提示决定美术质感,转场则是后期剪辑时能对上的记号。字段不全,后续提示词就得靠猜,出片质量自然不稳定。
2.3 上美影风格规则怎么转成可执行约束
规则如果写成“要有中国风”“要好看”,模型是没法执行的。我把上美影风格拆成了六条可检查的约束,写进独立规则文件里。每次生成分镜时,Agent 都要逐条比对。
- 构图约束:主体在画面中占比建议不超过三分之一,至少保留二分之一以上的留白或虚化空间。
- 色彩约束:以墨色、青灰、米白为底,点缀色只保留一到两种,比如朱砂红、石青。
- 线条约束:画面中的轮廓强化装饰性和书写感,弱化真实光影和物理材质。
- 动作约束:人物动态采用写意化设计,动作保留一两个关键帧的夸张状态,不要求完全符合物理规律。
- 转场约束:优先使用淡入淡出、叠化、光圈收放等软转场,少用密集硬切。
- 环境约束:多用山水、云雾、竹林、古建筑、纸墨笔砚等具有东方意象的物体。
这些规则不是拍脑袋定的,而是从经典美术片的视觉语言里提炼出来的。做任何风格类 skill,我都建议用这种“约束清单+示例画面”的双层结构。约束清单负贵兜底,示例画面负贵告诉模型“好的标准长什么样”,两者缺一不可。如果只有规则没有例子,模型不知道边界;只有例子没有规则,模型又会直接抄形,不懂迁移。
3. 核心实现:smy-seedance-storyboard 的文件结构
3.1 skill 的目录与元信息写法
业界目前对于 skill 的文件组织并没有强制标准,各家 Agent 大同小异,但通常都是“一个目录 + 一个 SKILL.md 入口 + 若干资源文件”。我自己的 smy-seedance-storyboard 目录结构如下:
smy-seedance-storyboard/ ├── SKILL.md ├── rules/ │ └── shangmei-style-guidelines.md ├── templates/ │ ├── storyboard_table.md │ └── seedance_prompt.md ├── examples/ │ └── example_storyboard.md └── scripts/ ├── build_prompt.py └── validate_storyboard.py其中 SKILL.md 是整个 skill 的入口和索引。它的开头用 YAML 格式写元信息,核心就是 name 和 description。description 写得好不好,直接决定 Agent 在什么场景下会加载这个 skill。我的写法大概是这样:
--- name: smy-seedance-storyboard description: 当用户需要为短剧、短视频或视频脚本生成分镜表、镜头脚本、Seedance提示词时使用。默认采用上美影式水墨留白美学风格。 ---description 里要写清楚“触发场景”,但不能写太长。我看到不少人把 description 写得像论文摘要,结果 Agent 匹配时反而容易混淆。准确、简短的触发条件描述,比大段自我吹捧有用得多。
SKILL.md 正文部分,我一般会写一段工作流程:先读 rules 里的风格规则,再读 templates 里的表结构,然后解析用户输入的剧情,按镜号逐个生成,最后用脚本校验。Agent 执行复杂任务时最怕没有流程指引,你在 SKILL.md 里给出清晰的步骤,它就不容易漏环节。
3.2 规则文件与模板文件怎么组织
规则文件我单独放在 rules 目录里,不塞进 SKILL.md,原因很简单:规则文件是给 Agent“查阅”的,不是让它背下来的。SKILL.md 只需要告诉它“去查哪个文件”就够了,真正的内容放在外部文件里,避免一篇文档又长又重。我在 rules/shangmei-style-guidelines.md 里写了完整的六条风格约束,外加两三个正面示例,让 Agent 能照着比对。
模板文件则是把输出格式固定下来。templates/storyboard_table.md 规定了 Markdown 表格的结构、表头、字段顺序;templates/seedance_prompt.md 则规定了一条 Seedance 提示词的标准组装顺序:主体 + 动作 + 环境 + 气氛 + 镜头运动 + 风格关键词 + 时长。模板存在的意义,是保证无论剧情是古装还是玄幻,输出的结构都不会乱。
还有一个经常被忽略的目录是 examples。我给 Agent 准备了一个完整的示例分镜表:5个镜头、从避雨相遇写到纸鸢化形、再到雨停离别。Agent 在生成前会参考这个例子,理解“上美影风格”和“Seedance提示词”具体应该是什么长度、什么密度。对模型来说,一个高质量示例比十句抽象要求都管用。
3.3 从分镜到 Seedance 提示词的桥接逻辑
有了分镜表,下一步是把每个镜头转成 Seedance 能用的提示词。这一步我单独写了一个 build_prompt.py 脚本,把分镜表里的字段按固定顺序拼装成提示词。脚本核心逻辑大概是这样:
def build_seedance_prompt(shot): elements = [ shot.get("style_prefix", "水墨中国画风格"), shot.get("shot_type", "全景"), shot.get("content", ""), shot.get("style_hint", "留白构图,墨色低饱和"), shot.get("camera", "固定镜头"), shot.get("transition_hint", "淡入淡出"), ] prompt = ",".join(filter(None, elements)) return prompt + f",时长{shot.get('duration', 5)}秒,写意动作,美术片质感"这里有个很重要的经验:提示词不是堆得越多越好,而是要把“谁是主体、做什么动作、什么环境、什么镜头、什么风格”这五个要素讲清楚,就够了。如果你把一段提示词堆到一百多个字,各种形容词满天飞,Seedance 反而会抓不住重点,画面里可能出现一堆奇怪的东西。我的脚本里刻意控制提示词总长度在 60 到 90 字之间,宁可“留白”,也比“塞满”来得稳。
此外,transition 字段虽然主要给后期剪辑用,但如果有光圈转场(类似 iris out)、叠化这类特殊要求,我也会让它进入提示词的尾部,比如“结尾叠化转场”或“以水墨晕染方式收束画面”。实测下来,模型偶尔真能给出带转场效果的片段,算是意外惊喜。
4. 实操全流程:从剧情到 Seedance 出片
4.1 部署与触发方式
这个 skill 的部署过程不复杂。我用的 Agent 框架支持从目录加载 skill,所以只需把整个 smy-seedance-storyboard 文件夹放进 Agent 指定的 skills 目录,然后重启会话或者执行热加载命令,它就能被扫描到。放进去之后,先做一个最简单的测试:直接问 Agent“现在有哪些 skills 可用?”,如果列表里出现了 smy-seedance-storyboard,就说明加载成功。
触发方式有两种。一种是在对话里显式点名,比如输入“使用 smy-seedance-storyboard 给这段剧情出分镜表”;另一种是隐性触发,不点名,只说“帮我把这个短剧剧情拆成分镜”,Agent 读到 description 里的关键词“分镜”“Short剧提示词”,就会自动加载 skill。如果发现它死活不加载,十有八九是 description 里的触发词没写准,需要回去微调。
4.2 一次完整实测:书生、古画与纸鸢
为了验证 skill 效果,我拿一个原创短剧剧情做了测试。剧情设定大致是:一个进京赶考的书生在山寺避雨,遇到一个会折纸鸢的少女,两人因为一幅古画结缘,等到雨停日出,少女化作纸鸢飞走,书生才明白自己遇到的是画中仙。这个剧情很合适,因为它的关键情绪点都适合用留白和写意去表达。
我把这段剧情直接丢给 Agent,让它生成一份分镜表。它输出的第一个版本里,我摘录几个镜头供参考:
| 镜号 | 景别 | 运镜 | 时长 | 画面内容 | 风格提示 | 转场 |
|---|---|---|---|---|---|---|
| 01 | 大远景 | 固定 | 5s | 雨中山寺,云雾缭绕,一人撑伞从石阶走入画面 | 主体偏右下,左上大面积留白 | 淡入 |
| 02 | 中景 | 缓慢推近 | 4s | 书生于檐下收伞,抬头见寺内少女折纸鸢 | 墨色背景,纸鸢朱砂红点缀 | 叠化 |
| 03 | 近景 | 固定 | 3s | 少女手指灵巧翻折,纸鸢逐渐成形 | 手部特写,线条工笔感 | 硬切 |
| 04 | 全景 | 跟随横移 | 6s | 两人在古画前停住,画中景物与窗外雨景相似 | 青灰色调,雾气晕染 | 光圈转场 |
| 05 | 大远景 | 缓慢拉远 | 8s | 雨停云开,一只朱砂色纸鸢飞向天际 | 画面大面积留白,人物极小 | 淡出 |
这份表基本已经可用。我重点检查了风格约束有没有落实:第 01 镜用“主体偏右下、左上留白”呼应了留白规则;第 05 镜用“朱砂色纸鸢”呼应了点缀色规则;转场用了叠化和光圈转场,没有干巴巴的硬切。整体来说,skill 确实把“上美影风格”落进了每个镜头的细节里,而不是只挂个名。
4.3 参数建议与二次加工
分镜表出来后,我会再过一遍参数。针对 Seedance 出片,我个人的推荐参数如下:
| 参数 | 建议值 | 原因 |
|---|---|---|
| 单镜时长 | 3-8秒 | 太长容易动作崩坏,太短情绪攒不够 |
| 镜头运动强度 | 中低速为主 | 水墨写意风格适合舒缓运动 |
| 风格参考图 | 可配一张水墨范画 | 有参考图时风格返回率明显提升 |
| 转场后期 | 优先生成后再叠 | 单镜生成时强行做转场成功率有限 |
另外,AI 生成的分镜表不可能是完美的,它给的是“可执行的初稿”。我一般会做两个加工。第一个是检查逻辑连贯性:镜头与镜头之间动作是否接得上,上一镜人站在左边,下一镜不能突然跑到右边。第二个是强化情绪镜头:像“纸鸢飞向天际”这种关键情绪点,我会在原基础上补充“纸鸢线断、飘入云层”这类更具体的动作,让画面更有故事感。
4.4 我的实测出片心得
用这份分镜表去 Seedance 跑完以后,我最大的感受是:镜头运动的稳定性比原先裸写提示词强了不止一个档次。以前我直接写长段提示词,模型经常输出画面抖来抖去,或者人物运动方向莫名其妙。现在分镜表里给定了推、拉、移、固定等明确指令,模型对镜头的理解明显更准确,废片率大幅下降。
不过也要实话实说,Seedance 对纯水墨质感的还原程度还是有波动的。我试过几次,纯靠提示词“水墨风”来出片,有的镜头会偏清透水彩质感,有的镜头水墨味很足但细节容易糊。我的对策是:在风格提示里加入“墨色边缘晕染”“宣纸纹理”“笔触可见”这类更具体的微观描述,比单纯喊“水墨风”有效得多。这一点也写进了 skill 的注意事项里。
5. 常见问题与排查技巧实录
5.1 五个高频问题速查表
做 skill 和用 skill 的过程中,我遇到过不少幺蛾子,整理成一张速查表供大家对照:
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| Agent 死活不加载 skill | description 触发词与用户表达对不上 | 回 SKILL.md 增加同义触发词,比如“分镜”“镜头表”“短视频脚本” |
| 分镜表只有镜头,没有画面感 | 规则文件没被读取 | 检查 SKILL.md 里是否明确写了“先读取 rules 文件” |
| 生成的 Seedance 提示词风格跑偏 | style_hint 字段没进入最终提示词 | 检查 build_prompt.py 拼接顺序,确认风格字段被包含 |
| 镜头运动乱跳、人物位置不连贯 | 缺少前后镜逻辑检查 | 人为补充“上一镜/下一镜”衔接说明,或者在 content 里写明人物位置关系 |
| 时长与短剧总时长不匹配 | duration 字段和镜头数量没统筹 | 用脚本统计总时长,超过目标时长就拆分镜头或缩短单镜时长 |
5.2 几个值得单独说说的经验
第一个经验是关于 rules 文件的行文方式。我发现用“要/不要”的祈使句,比用描述性句子更有效。比如“主体占比不要超过三分之一”就是比“画面应具有较多留白”要好,模型对否定式和数值式的约束更敏感。我后来把规则文件全部改成了这种风格,分镜输出明显更稳。
第二个经验是校验脚本的重要性。validate_storyboard.py 每次生成完分镜后,会检查每个镜头是否有景别、运镜、时长、提示词,缺字段就报警。以前没有这个脚本时,偶尔会有某个镜头漏掉运镜指令,生成出来就是一个呆板固定镜头。加了脚本之后,漏字段的情况基本消失。做任何 skill,只要输出物是结构化数据,我都建议加一层自动校验。
第三个经验是我自己踩过的坑:不要把风格规则写得过于死板。一开始我把“低饱和墨色”写成了“必须黑白灰”,结果生成的分镜提示词全被带偏,画面完全没有生气。后来加了“朱砂红、石青点缀色”的例外条款,效果才恢复正常。规则要有边界,但也要留缝隙,尤其艺术风格这种东西,太死反而出不了好作品。
写在最后
做这个 smy-seedance-storyboard 前后,我自己最大的变化是把分镜从一个“临场动作”变成了“流程部件”。最开始我连分镜字段都懒得想清楚,总指望模型自己会“悟”,事实证明不行。后来我才意识到,分镜的核心不是约束模型,而是给模型一个明确的意图起点。你给它越清晰的镜头意图,它还给你的成片就越接近你脑子里的画面。
最后再分享一个小技巧给正在折腾自己 skill 的人:不要一上来就做完整版,先把 SKILL.md 写成最简单的“1条规则 + 1段提示模板 + 1个示例”,跑通核心流程再加脚本、再加规则文件。我第一版只花了不到半小时,后续的校验脚本和风格规则都是边用边补的。技能包这东西,重在使用中迭代,而不是一步设计到位。