with one click
with one click
| name | laoli-shorts |
| version | 2.15.0 |
| description | 短视频制作管线 - 从选题到成片的完整工作流 |
| author | agent_created |
| triggers | ["做个视频","制作短视频","新视频","shorts"] |
核心理念:台词与画面同步设计,视觉指令为AI生图模型定制,不是导演笔记。
执行规则:每步完成后必须展示产出物,等待用户确认后再执行下一步。
进度管理:通过 Pipeline Hooks 机制自动管理,简洁透明。
采用类似切面编程的钩子机制,在管线执行的特定阶段自动触发:
| 钩子点 | 触发时机 | 执行内容 |
|---|---|---|
@before_step(N) | 第N步开始前 | 检查进度,决定跳过/执行 |
@after_step(N) | 第N步完成后 | 更新进度标记 |
@on_confirm() | 用户确认后 | 将 ⏸ 改为 ✅ |
@on_error() | 步骤失败时 | 标记 ⚠️ 并记录 |
位置:<projects_dir>/[项目名]/文案/制作进度.md
# [项目名] · 制作进度
> 上次更新:{日期}
## 当前阶段
| 步骤 | 状态 | 完成时间 |
|------|------|----------|
| 第1步 选题大纲 | ✅ | 2026-05-09 |
| 第2步 视觉指令 | | |
| 第3步 分镜脚本 | | |
| 第4步 定妆照 | | |
| 第5步 分镜图 | | |
| 第6步 生成视频 | | |
| 第7步 配音 | | |
| 第8步 视频剪辑 | | |
| 第9步 提取台词 | | |
| 第10步 选取配乐 | | |
| 第11步 封面图 | | |
| 第12步 发布文稿 | | |
## 备注
- (可选:关键备注信息)
启动 → @before_step(N) → 执行步骤 → @after_step(N) → 等待确认 → @on_confirm() → 下一步
素材管理:直接从项目目录读取,不重复记录 断点续做:可选功能,启动时检测进度文件询问是否继续 状态透明:通过进度文件一目了然
本步骤必须在管线启动前完成。若 EXTEND.md 不存在,禁止启动管线。
按以下优先级查找 EXTEND.md(第一个命中即生效):
| 优先级 | 路径 | 作用域 |
|---|---|---|
| 1 | <workspace>/.laoli-recipe/laoli-shorts/EXTEND.md | 项目级(当前工作区优先) |
| 2 | $HOME/.laoli-recipe/laoli-shorts/EXTEND.md | 用户级(所有工作区通用) |
default_profilereferences/config/first-time-setup.md),通过 AskUserQuestion 收集偏好后保存 EXTEND.md,然后继续⚠️ 在 EXTEND.md 创建或加载完成前,不得开始第1步。
EXTEND.md 字段说明见 references/config/preferences-schema.md。
⚠️ 执行前必读:读取
references/profiles/<default_profile>(由 EXTEND.md 指定,默认为history-oil.md),了解本方案的调性、受众、视觉风格、制作规范和风格铁律。所有台词创作必须遵守该文件中的"五条风格铁律",所有 IMAGE PROMPT 末尾必须追加该文件中的风格后缀。
在
references/profiles/目录下放置不同方案的配置文件,并在 EXTEND.md 中切换default_profile即可让同一套管线适配不同方案。
项目目录规范:每个选题创建一个独立项目文件夹,所有产出物按类型存放。项目根目录固定为 <workspace>/项目,下文用 <projects_dir> 代指。
<projects_dir>/[项目名]/
├── 文案/
│ ├── 制作进度.md ← 进度跟踪文件
│ ├── 创作底本.md ← 第1+2+3步产出(选题大纲→视觉指令→分镜脚本)
│ ├── 视频剪辑.md ← 第8步产出
│ ├── 字幕文稿.txt ← 第9步产出
│ ├── 配乐方案.md ← 第10步产出
│ └── 发布文稿.md ← 第12步产出(发布文案)
├── 素材/
│ ├── 图片/ ← 分镜图 + 第11步封面图
│ ├── 视频/ ← 生成视频(原始,不动)
│ │ ├── sync/ ← 第8步产出(变速对齐)
│ │ └── sync_crop/ ← 第8步产出(去水印+变速)
│ ├── 音频/ ← 配音文件
│ └── 参考/ ← 角色定妆照(不进剪映)
└── 成品/ ← 剪映工程+最终发布视频
按以下步骤顺序执行,每步完成后展示产出物,等待用户确认再继续。
⚠️ 第5步特别提醒:视频生成成本高,分镜图必须经人工确认无误后,才能执行第6步生成视频。
输入:用户给的主题,或基于方案定位的建议
输出:确定项目名后,创建 <projects_dir>/[项目名]/ 目录结构(含文案/、素材/图片/、素材/视频/、素材/音频/、素材/参考/、成品/),然后创建两个文件:
文案/创作底本.md:写入选题大纲文案/制作进度.md:初始化进度文件规则:
⚠️ 本步产出格式(严格执行):
# [项目名]
## 选题大纲
- **选题标题**:
- **核心人物**:
- **核心冲突**:
- **3秒钩子**:
- **叙事引擎**:主___ + 辅___
- **节奏段**:
1. [节奏段名称] [情绪] 一句话描述
2. [节奏段名称] [情绪] 一句话描述
...
依赖:读取第1步的选题大纲,获取核心冲突(决定谁出场)、叙事引擎(影响角色设定方向)。
在编写分镜脚本之前,先定义本选题的核心角色和视觉风格。这一步解决两个核心问题:
核心角色设定中嵌入差异化视觉锚点来解决。根据上一步大纲中【核心人物】字段所列名单,为名单中的每一个角色生成**核心角色设定**。不得遗漏、不得合并、不得擅自增减名单中的任何角色。
角色设定要点:
references/profiles/<default_profile> 中的「制作规范」)素材/参考/ref_角色ID.jpg,第5步生成分镜图时作为角色参考图传入定妆照提示词规范:参见方案配置(references/profiles/<default_profile>)中的「定妆照视觉要求」章节,获取定妆照的构图、背景、光影等约束。
定妆照提示词模板:
Portrait of a [age]-year-old [build] [cultural/ethnic descriptor, e.g., East Asian] [person] with [distinctive physical features that reflect the character's cultural background and visual identity, e.g., monolid eyes, sharp cheekbones], wearing [signature outfit], [signature accessories], half-body portrait from chest up, facing slightly left, dark solid background, [character's core气质 in English], [风格后缀], no text, no letters, no watermark, no background elements
示例(萨拉热窝选题·普林西普,风格后缀取自方案配置):
- **普林西普 [角色ID: PRN01]**:
- **年龄外貌**:19岁,**具有典型的巴尔干地区斯拉夫青年特征**,体型瘦削,深色眼窝,黑色凌乱短发,下巴尖削,面色苍白
- **核心气质**:瘦弱但眼神偏执,像一只被逼到角落的困兽
- **标志性服饰**:深色旧西装,领口微敞,袖口磨白
- **视觉锚点**:深色眼窝+凌乱黑发+苍白尖下巴
- **定妆照提示词**:Portrait of a 19-year-old gaunt **South Slavic** young man with deep dark eye sockets, messy black hair and pale sharp chin, wearing a worn dark suit with collar slightly open and frayed cuffs, half-body portrait from chest up, facing slightly left, dark solid background, intense paranoid eyes like a cornered animal, [风格后缀], no text, no letters, no watermark, no background elements
每个选题定义统一的视觉风格和背景时代。
风格后缀:从方案配置(references/profiles/<default_profile>)中的「视觉风格设定」章节读取,追加到每个 IMAGE PROMPT 末尾,不可省略。
⚠️ 不要自己编风格后缀——必须从方案配置逐字复制,确保跨分镜风格一致。
⚠️ 不要写笼统描述——如
oil painting texture太笼统,产出颗粒粗、细节糊的结果。
⚠️ 本步产出格式(严格执行)
追加到:
<projects_dir>/[项目名]/文案/创作底本.md(接在第1步内容之后)
## 视觉执行指令
### 核心角色设定
- **[角色名] [角色ID: XXX01]**:
- **年龄外貌**:[具体年龄,具有XX地区/文化/时代背景的典型特征(如:东亚、地中海、南亚等),体型、面部特征、肤色、发型]
- **核心气质**:[一句话概括此人给观者的第一印象]
- **标志性服饰**:[时代服饰的具体描写,包括材质、颜色、配饰]
- **视觉锚点**:[此角色最突出的1-2个视觉特征,用于跨分镜识别和写入IMAGE PROMPT]
- **定妆照提示词**:[完整英文prompt]
### 通用视觉准则
- **统一风格**:从方案配置的「视觉风格设定」读取
- **背景时代**:[具体年代和地点]
- **视觉符号 (Callback)**:[本选题的反复出现的视觉隐喻,在关键节点重复出现]
依赖:读取第1步的【节奏段】、3秒钩子;读取第2步的核心角色设定(视觉锚点写入 IMAGE PROMPT)、通用视觉准则(风格后缀追加到 IMAGE PROMPT)。
智能分镜规划与创作规则:
输入:你已获得第1步输出的“节奏段”列表(每个节奏段都包含名称和情节描述),以及第2步的“角色设定”与“视觉风格”。
核心任务:为每一个“节奏段”创作分镜脚本。节奏段与分镜不是1对1关系。你需要根据以下规则进行创作
对每个分镜,同时输出以下4项:
references/profiles/<default_profile> 中的「制作规范」)格式规范:
[主体:引用第2步`核心角色设定`中的文化特征与视觉锚点] + [动作/状态] + [环境/背景] + [风格后缀] + [负向排除]
要点:
核心角色设定的定妆照提示词中直接引用或适配。
a gaunt **South Slavic** young man with dark eye sockets, messy black hair and pale sharp chin (PRN01), gripping a pistol...a young man holding a sword...(缺少来自第2步核心角色设定文化与视觉识别信息)no modern buildings, no tourists)
no text, no letters, no watermark(避免无关文字)no text/no letters/no watermarkVIDEO MOTION 是图生视频(i2v)的 prompt,描述从分镜图出发的画面运动。视频生成必须基于分镜图(图生视频),以保证画面质量和角色一致性。
格式规范:
[camera movement] + [subject motion] + [environment motion] + [atmospheric elements]
要点:
常用运动模式(参考):
| 情绪段 | 推荐运动 | 示例 |
|---|---|---|
| 冲击/钩子 | 极慢推进+主体微动 | subtle zoom in on the clenched fist, dust particles floating |
| 压抑 | 水平缓移+环境静止 | slow horizontal pan, flags gently swaying, civilians still |
| 暗涌 | 固定+光影变化 | flickering lamplight, smoke drifting, shadows moving |
| 荒诞 | 缓移+意外元素 | car slowly rolling to a stop, figure tensing |
| 爆发 | 快速运动+混乱 | rapid motion, people rushing, dust rising |
| 雪崩 | 宏大缓移+变化积累 | slow zoom out, shadows spreading across the map |
| 余韵 | 极慢+环境细节 | slow dim light shift, dust motes, subtle breathing |
⚠️ 本步产出格式(严格执行)
追加到:
<projects_dir>/[项目名]/文案/创作底本.md(接在第2步内容之后)
输出格式:请严格按照以下格式为你规划出的每一个分镜生成内容,分镜标题中的 [节奏段名]必须与第1步的输出严格对应。
## 分镜 N / [节奏段名]-[镜头描述]
**台词**:
> 具体台词内容(★金句标注)
**角色参考图**:
> 本分镜出场核心角色的定妆参考图,图生图时传入以提升角色一致性。多个用逗号分隔,格式:`ref_角色ID1.jpg, ref_角色ID2.jpg`
> 无核心角色出场时填 `无`
**IMAGE PROMPT**:
> 英文生图指令,一行写完(必须包含角色文化特征、视觉锚点+风格后缀)
**VIDEO MOTION**:
> 视频运动描述,一行写完
调用:laoli-imagine skill
核心角色设定中的「定妆照提示词」素材/参考/ref_角色ID.jpg核心角色设定的角色顺序逐个生成不需要定妆照的角色:群众/配角(无角色设定)
生成完毕后:图片质量检查(必须人工确认)
展示 素材/参考/ 下所有已生成图片,等待用户确认
检查项:
核心角色设定定义的种族/地域背景。核心角色设定中定义的标志性视觉锚点是否清晰、准确呈现。发现问题:记录有问题的文件名,重新生成对应图片,重新检查
确认无误后:继续下一步
⚠️ 未通过检查前,禁止执行下一步。
使用第3步输出的 IMAGE PROMPT 生成每段分镜图,生成完毕后必须进行图片质量检查,确认无误后方可继续。
调用:laoli-imagine skill
素材/参考/ref_角色ID.jpg(第4步生成),提升角色一致性素材/图片/scene0x_描述.jpg,按命名规范生成生成完毕后:图片质量检查(必须人工确认)
展示 素材/图片/ 下所有已生成图片,等待用户确认
检查项:
核心角色设定中的视觉锚点是否一致(重点检查发色、脸型、标志性配饰)。发现问题:记录有问题的文件名,重新生成对应图片,重新检查
确认无误后:继续下一步
⚠️ 未通过检查前,禁止执行下一步。
以第5步生成的分镜图为参考图,用图生视频(i2v)方式生成每段视频。
调用:laoli-videoize skill
素材/视频/scene0x_描述.mp4将第3步的台词逐段转换为音频,每段台词独立调用一次。
调用:laoli-tts skill
text:第3步每条分镜的「台词」纯文本。注意:★符号及其后面的金句(画面字幕)整段都去掉,不配音output_directory:素材/音频/ 的绝对路径(即 <workspace>/项目/[项目名]/素材/音频/)素材/音频/scene0x_描述.mp3处理分镜视频:先对齐配音时长,再按需检查并去水印,输出处理报告。
输入:第6步的分镜视频(素材/视频/,原始文件不动)+ 第7步的配音(素材/音频/)
处理流程:
将所有分镜视频时长调整至与配音时长一致。
素材/视频/scene0x_描述.mp4(原始)、素材/音频/scene0x_描述.mp3setpts = 音频时长 / 视频时长setpts),不加补帧,去掉音频轨道(-an)素材/视频/sync/scene0x_描述.mp4(无声,所有分镜都有)说明:如果分镜视频全部来自 AI 生成(第 6 步正确执行),则没有水印,直接跳过本步。仅在混入手工/外部视频素材时执行。
检查 sync/ 中的视频是否有平台水印(如 Veo),仅在确认有水印时执行裁剪。
sync/ 中的视频,确认是否有平台水印sync_crop/
1040x1850,居中裁切)crop=1040:1850:20:0(宽 1040、高 1850,从 x=20 开始)素材/视频/sync_crop/scene0x_描述.mp4sync/ 中的文件⚠️ 本步产出格式(严格执行):
保存到
文案/视频剪辑.md
# 视频剪辑
| 分镜 | 视频原长 | 音频时长 | 系数 | 水印处理 | 剪映补帧 |
|:----|:-------:|:--------:|:----:|:---------|:--------:|
| scene01 | 8.0s | 8.1s | 1.0125 | 无 | 否 |
| scene04 | 8.0s | 10.5s | 1.3125 | 裁剪70px | 是 |
| sceneXX | x.xs | x.xs | x.xxxx | 裁剪70px/无 | 是/否 |
剪映补帧说明:放慢的分镜(系数<1.0)在剪映中对对应片段勾选AI补帧(本地模型)。
剪映导入指引:
sync/ 中的文件sync_crop/ 中的文件从第3步的分镜脚本中逐段提取纯台词,格式化后输出为剪映可直接导入的文稿文件。
输入:第3步每个分镜的「台词」文本
处理规则:
输出:保存到 <projects_dir>/[项目名]/文案/字幕文稿.txt
示例(静默频道项目):
1912年4月14日深夜
泰坦尼克号最后的冰山警告淹没在一堆付费电报里
首席电报员杰克菲利普斯已连续工作了十几个小时
...
基于选题调性为视频选取贯穿全程的 BGM(纯音乐,一条到底)。提供三级策略,按优先级从高到低尝试。
输入:第1步选题大纲(核心情绪/视觉风格/节奏段划分)
根据选题调性与视觉风格,生成中英文搜索关键词,供用户在免版权平台搜索 BGM(如剪映素材库、YouTube Audio Library、Uppbeat 等)。
历史叙事 悬疑 管弦 / historical narrative suspense orchestral如果搜索未找到合适 BGM,生成 MiniMax 官网音乐生成页面可用的 prompt 词,用户复制到 minimax.io/music 免费生成。
管弦乐, 悬疑叙事节奏, 低音提琴与钢琴交替, 适合历史纪录片BGM如果上述方式均不满足,经用户确认后,调用 laoli-bgm skill 基于 MiniMax API 生成 BGM。
laoli-bgm skill<projects_dir>/[项目名]/素材/音频/输出:
<projects_dir>/[项目名]/文案/配乐方案.md素材/音频/bgm.mp3,同时将描述关键词存档到 文案/配乐方案.md产出确认:展示 BGM 搜索结果或播放生成的音频,等待用户确认。不满意则调整策略重新尝试。
基于选题核心视觉意象设计并生成视频封面图。
输入:第1步选题大纲(选题标题/核心冲突/视觉符号)
设计要点:
调用:laoli-imagine skill
输出:素材/图片/封面_项目名.jpg
产出确认:展示封面图,等待用户确认。不满意则调整prompt重新生成。
基于视频内容和后期规格,设计视频号发布文案(标题+描述)。
输入:第1步选题大纲(选题标题/核心冲突/金句)+ 第3步分镜脚本(台词金句)
发布标题规则:
描述结构:必须包含以下三部分:
输出格式:
# 发布材料草稿
## 1. 发布标题
**标题**:[6-16字的发布标题]
## 2. 视频描述
[emoji] [钩子文案]
**资料来源**: [历史/事实依据]
[热门标签]
输出:保存到 <projects_dir>/[项目名]/文案/发布文稿.md
产出确认:展示发布文稿,等待用户确认后结束管线。
[HINT] Download the complete skill directory including SKILL.md and all related files