script-pipeline

SKILL.md

Script Pipeline Skill

剧本 → 角色图 → 分镜图 → 视频 的完整生成流水线。

使用前配置

首次使用前,需要在以下文件中填写真实的密钥:

文件 变量 说明
step0_story_brief.py API_KEY LLM / 图像生成 API Key
step1_breakdown.py API_KEY 同上
step2_gen_character_images.py API_KEY 同上
step3_gen_storyboard_images.py API_KEY 同上
step4_gen_videos.py API_KEY 同上
notify.py APP_ID 飞书自建应用 App ID
notify.py APP_SECRET 飞书自建应用 App Secret
notify.py RECEIVE_ID 接收通知的用户飞书 Open ID

所有 API 调用均指向同一个 Base URL,可在各文件顶部的 LLM_URL / API_URL / BASE_URL 常量中确认或修改。

文件结构

skills/script-pipeline/
├── SKILL.md
├── run_pipeline.py                 # 流水线入口
├── step0_story_brief.py            # 故事梗概 + 分镜规划预览
├── step1_breakdown.py              # 拆解角色,生成标准素体提示词
├── step2_gen_character_images.py   # 生成角色图(Seedream 4.5),每张完成后立即发飞书
├── step3_gen_storyboard_images.py  # 分镜规划(--plan-only)+ 分镜图生成(--images-only)
├── step4_gen_videos.py             # 分镜转视频(Veo 3.1),每个完成后立即发飞书
└── notify.py                       # 飞书通知工具

输出目录

~/.openclaw/workspace/video_projects/<项目名>/
├── script.txt            # 剧本原文
├── story_brief.json      # Step 0 结构化文档数据
├── story_brief.md        # Step 0 文档预览(标题正文 + 出场人物表 + 脚本正文表)
├── characters.json       # 角色列表(含提示词、图片路径)
├── storyboard_table.md   # 分镜 Markdown 表格(调试用)
├── storyboards.json      # 分镜列表(含 image_prompt、video_prompt、图片路径、视频路径)
├── characters/           # 角色图(c_1.jpg, c_2.jpg ...)
├── storyboards/          # 分镜图(01.jpg, 02.jpg ...)
└── videos/               # 视频片段(01.mp4, 02.mp4 ...)

交互式工作流(标准流程)

用户发来剧本后,AI 助手按以下步骤编排,每步完成后发飞书通知等用户确认再继续:

Step 0  →  发故事梗概 + 分镜规划给用户确认
           ↓ 用户回复「继续」
Step 1  →  发角色人设提示词给用户确认
           ↓ 用户回复「继续」
Step 2  →  生成角色图,每张完成后立即发飞书
           ↓ 全部完成后发汇总,等用户确认
Step 3p →  发分镜内容规划给用户确认
           ↓ 用户回复「继续」
Step 3i →  生成分镜图,每张完成后立即发飞书
           ↓ 全部完成后发汇总,等用户确认
Step 4  →  生成视频,每个完成后立即发飞书

Step 0 文档结构

Step 0 不再只输出简版故事梗概,而是生成一个可直接确认的精简文档,包含:

  • 标题 + 正文
  • 出场人物表
  • 脚本正文表

story_brief.json 结构如下:

{
  "title": "故事标题",
  "body": "正文导语",
  "characters": [
    {
      "name": "角色名",
      "brief": "角色简介"
    }
  ],
  "script_rows": [
    {
      "scene": "Sc.1 场次名",
      "sequence": 1,
      "shot_description": "【中景】镜头画面描述",
      "extract_copy": "提取文案"
    }
  ]
}

其中:

  • story_brief.md 是便于阅读和转发的文档版预览
  • script_rows 字段贴近飞书确认文档,聚焦 场次 / 序号 / 镜头画面描述 / 提取文案

分镜数据结构

storyboards.json 中每个分镜至少包含以下字段:

{
  "id": 1,
  "description": "画面内容简述",
  "image_prompt": "静态分镜图提示词,供 Step 3i 生图",
  "video_prompt": "图生视频提示词,供 Step 4 生视频",
  "characters": ["出场角色"],
  "camera_motion": "镜头运动摘要",
  "subject_motion": "主体动作摘要",
  "scene_motion": "环境动态摘要",
  "motion_notes": "节奏与首尾闭环说明",
  "image_path": null,
  "video_path": null
}

说明:

  • image_prompt 只负责生成首帧分镜图,强调构图、主体、环境和光影。
  • video_prompt 只负责图生视频,强调在参考图不变前提下的动作、运镜、节奏和收尾状态。
  • Step 4 严格读取 video_prompt,不再复用静态图提示词。
  • 旧项目如果是旧版 storyboards.json,需要重新执行 Step 3p / Step 3i 后再执行 Step 4。

分步执行命令

SKILL=~/.openclaw/workspace/skills/script-pipeline
PROJECT=~/.openclaw/workspace/video_projects/<项目名>

# Step 0: 生成文档式故事规划
python3 $SKILL/run_pipeline.py <script.txt> <项目名> --step 0 [--count 8]

# Step 1: 拆解角色
python3 $SKILL/run_pipeline.py <script.txt> <项目名> --step 1

# Step 2: 生成角色图
python3 $SKILL/run_pipeline.py <script.txt> <项目名> --step 2

# Step 3p: 生成分镜规划(等确认)
python3 $SKILL/run_pipeline.py <script.txt> <项目名> --step 3p [--count 8]

# Step 3i: 生成分镜图(读取 image_prompt)
python3 $SKILL/run_pipeline.py <script.txt> <项目名> --step 3i

# Step 4: 图生视频(读取 video_prompt + image_path)
python3 $SKILL/run_pipeline.py <script.txt> <项目名> --step 4 [--seconds 6]

通知命令

NOTIFY=~/.openclaw/workspace/skills/script-pipeline/notify.py

python3 $NOTIFY text "消息内容"
python3 $NOTIFY image /path/to/img.jpg "说明"
python3 $NOTIFY images /path/to/dir/ "说明"   # 目录下所有图片
python3 $NOTIFY video /path/to/video.mp4 "说明"

全自动模式

用户明确要求全自动时使用(跳过所有确认):

python3 ~/.openclaw/workspace/skills/script-pipeline/run_pipeline.py \
  <script.txt> <项目名> --auto [--count 8] [--seconds 6]

AI 助手编排规则

  1. 用户发来剧本文本时,先在 video_projects/<项目名>/ 创建项目目录,将剧本保存为 script.txt
  2. 项目名取剧本标题或用户指定名称,无法判断时用时间戳(如 project_20260311
  3. Step 0 先生成文档式故事规划,重点确认标题、正文、人物表和脚本正文表是否合理
  4. 每步执行完毕后,等待用户明确回复「继续」 再执行下一步
  5. 用户要求修改时(如"重新生成角色2"),直接删除对应文件后重跑该步骤(断点续跑会自动跳过已存在文件)
  6. Step 3p 负责同时产出静态图提示词和图生视频提示词;Step 4 只读取图生视频提示词
  7. 用户确认分镜内容时,重点关注动作是否合理、运镜是否过猛、6 秒内是否能完成自然闭环
  8. 视频生成耗时较长(每个约 2-5 分钟),告知用户耐心等待

模型

步骤 模型
角色拆解 / 分镜描述 turing/gemini-3.1-pro-latest
角色图 / 分镜图 doubao-seedream-4-5-251128(最小 3686400px)
分镜视频 turing/veo-3.1-generate(multipart/form-data)

API: https://live-turing.cn.llm.tcljd.com/api/v1

断点续跑

每步都检查输出文件是否已存在,已存在则跳过,支持中断后继续。

Installs
4
First Seen
Mar 18, 2026