aigc-director

install
source · Clone the upstream repo
git clone https://github.com/HITsz-TMG/AIGC-Claw
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HITsz-TMG/AIGC-Claw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/aigc-director" ~/.claude/skills/hitsz-tmg-aigc-claw-aigc-director && rm -rf "$T"
manifest: aigc-director/SKILL.md
source content

AIGC-Director Agent Skill

本地运行:这是一个本地部署的视频生成项目,前后端都运行在本机

  • 后端:
    http://localhost:8000
  • 前端:
    http://localhost:3000
  • 所有 API 调用都请求本地服务器,不要请求其他地址!
  • 确保在调用任何 API 之前,后端和前端服务都已经启动并运行正常!

核心理念:Agent 应该像"持续陪伴的智能视频制作助理",每完成一个用户可感知的重要任务,都应立即给用户一条简报,并等待用户确认。

核心原则:每个阶段的产物都必须展示给用户,必须停下来等待用户确认后才能继续下一阶段。

防止遗忘:在整个流程中,Agent 可能会忘记之前的用户输入或之前阶段的产物内容。每当进入一个新的阶段时,Agent 都必须重新加载这篇SKILL文档,确保不会忘记任何细节


项目结构

aigc-director/                    ← OpenClaw 调用的 skill 根目录
├── aigc-claw/                    ← 前后端项目代码
│   ├── backend/                  ← FastAPI 后端(端口 8000)
│   │   └── code/result/          ← 模型生成产物存放目录
│   │            ├── image/       ← 图片产物(角色、场景、参考图)
│   │            └── video/       ← 视频产物
│   └── frontend/                 ← Next.js 前端(端口 3000)
├── references/                   ← OpenClaw 调用时的参考文档
│   ├── init_project/             ← 项目初始化
│   ├── run_project/              ← 服务启动
│   ├── workflow/                 ← 六阶段工作流 API
│   ├── sandbox/                  ← 临时工作台 API
│   └── send_message/             ← 消息发送
└── SKILL.md                      ← skill 正文

产物存放目录

aigc-claw/backend/code/result/

  • script/
    - 剧本产物
  • image/
    - 图片产物(角色、场景、参考图)
  • video/
    - 视频产物

阶段与停点(含停点0,共7个停点)

停点阶段phase 值描述操作
0剧情及视觉确认-确认项目创意、集数、文档以及风格比例展示初版规划 → 用户确认
1AI模型参数配置-确认项目将调用的各种底层AI模型类型及其他控制参数展示配置 → 用户确认
2剧本生成script_generation确认全集剧本展示每集剧情概要,发送阶段url → 用户确认
3角色/场景设计-确认角色/场景图片展示所有人物/场景图片,发送阶段url → 用户确认
4分镜设计-确认分镜列表发送分镜个数、每集时长、总时长信息 → 用户确认
5参考图生成-确认参考图发送阶段url → 用户确认
6视频生成-确认视频片段发送阶段url → 用户确认
-后期剪辑post_production拼接视频并生成最终成片无需确认,完成后发送阶段url和分集视频

注意:原有的部分复杂剧本流程(扩写、模式选择等)由于系统优化已简化,目前直接输出最终的剧本列表,以分集(

episode_number
)为单位。


工作流程

1. 本地部署(仅初始化时执行)

当用户要求"初始化项目"、"配置项目"、"部署项目"时,需要先进行项目初始化:参考 init_all.md 执行完整初始化流程。

注意:仅在用户首次下载项目或需要重新配置环境时使用。项目已初始化过则跳过此步骤,直接检查服务运行状态。

2. 检查本地服务

参考 start_backend.mdstart_frontend.md 检查服务是否运行。

⚠️ 强制要求:如果服务未运行,必须先启动服务再继续!

2. 路由判断

用户说处理
"生成图片"临时工作台 (sandbox)
"生成视频"必须先询问:长视频(工作流) 还是 短视频(工作台)?
"分析图片"临时工作台 (sandbox)
"问 LLM 问题"临时工作台 (sandbox)
"照片转动漫"临时工作台 (sandbox)

3. 执行流程

1. 检查后端运行状态 → 未运行则参考 start_backend.md 启动 → 等待3秒 → 再次检查
2. 检查前端运行状态 → 未运行则参考 start_frontend.md 启动 → 等待5秒 → 再次检查
3. 检查 API Key 配置 → 读取 .env 文件,确认所需 API Key 已配置
4. 参考 create_project.md,询问用户剧情与集数相关配置(停点0),确认无误后接着确认生成参数选项(停点1)。全部确认完毕后 → 创建项目
5. 参考 create_script.md 执行剧本生成 → 停点2
6. 参考 create_character.md 执行角色设计 → 停点3
7. 参考 create_storyboard.md 执行分镜设计 → 停点4
8. 参考 create_reference.md 执行参考图生成 → 停点5
9. 参考 create_video.md 执行视频生成 → 停点6
10. 参考 create_post.md 执行后期剪辑
11. 完成 → 发送最终视频给用户(若用户在看完成片后希望继续推进故事,参考 smart_continue.md 开始智能续写,然后继续执行新生成片段的后续流程)

注意:一定要参考

references/
目录下的具体文档执行每一步操作,不要凭记忆或想当然去调用 API!

检查 API Key 配置

在创建项目前,必须检查用户选择的模型对应的 API Key 是否已配置:

# 读取 .env 文件检查配置
cat aigc-claw/backend/.env | grep -E "API_KEY|KEY"

# 必需的配置(根据选择的模型)
# LLM: DASHSCOPE_API_KEY / DEEPSEEK_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY
# 图片: ARK_API_KEY / DASHSCOPE_API_KEY
# 视频: DASHSCOPE_API_KEY / VOLC_ACCESS_KEY / KLING_ACCESS_KEY

如果 API Key 未配置,需要提醒用户:

  1. 告知缺少哪个平台的 API Key
  2. 提供获取方式
  3. 配置位置(
    aigc-claw/backend/.env
    文件)
  4. 等待用户配置完成后才能继续
平台API Key 变量获取链接
DeepSeek
DEEPSEEK_API_KEY
https://platform.deepseek.com/api_keys
阿里云 DashScope
DASHSCOPE_API_KEY
https://bailian.console.aliyun.com/cn-beijing/?tab=home#/home
字节火山方舟
ARK_API_KEY
VOLC_ACCESS_KEY
/
VOLC_SECRET_KEY
https://www.volcengine.com/product/ark
快手可灵 Kling
KLING_ACCESS_KEY
/
KLING_SECRET_KEY
https://klingai.com/cn/dev

🚨 停点处理(强制规则)

当查询状态为

completed
waiting
时,必须按以下步骤执行:

步骤1:获取产物

curl "http://localhost:8000/api/project/{session_id}/artifact/{stage}"

步骤2:展示给用户

将 artifact 中的内容(选项列表、建议、产物摘要)完整展示给用户

步骤3:询问决策

明确告诉用户:

  • 选项有哪些
  • 每个选项的含义
  • 需要用户选择什么

步骤4:等待用户回复

禁止在用户回复前自行调用

intervene
continue

步骤5:用户确认后执行

根据用户的选择,调用相应的 API


❌ 错误示例(我刚才犯的错)

收到确认剧情停点 → 直接调用 intervene → 跳过用户确认

✅ 正确示例

1. 阶段中间遇到不确定内容
收到 waiting 停点
→ 获取 artifact 查看内容
→ 展示给用户选项
→ 询问:"是否同意修改?"
→ 用户回复"同意" → 调用 intervene

2. 阶段完成停点触发
收到 completed 停点
→ 获取 artifact 查看产物内容
→ 展示给用户:"第一阶段已完成,生成了剧本内容(x集)..."
→ 询问:"是否继续下一阶段?"
→ 用户回复"继续" → 调用 continue

每个停点必须

  1. 展示产物或选项给用户
  2. 询问确认
  3. 用户确认后才能继续

状态判断

status含义操作
pending新建会话启动项目
running执行中轮询等待
waiting等待用户介入调用
intervene
completed阶段完成调用
continue
completed全部完成结束

注意:只有 status 变化时才需要干预,不要反复调用 artifact API 去"确认"!


消息发送渠道

根据向用户发送消息的渠道(飞书/微信),读取

references/send_message/
下的对应参考文档,获取注意事项和发送方法:


任务简报格式

每个阶段完成后,发送简报必须包含:

  1. 刚完成什么
  2. 下一步做什么
  3. 需要用户决策的内容
  4. Web 界面链接
    http://[本地IP]:3000/?session={session_id}&stage={stage}
    (注意,这里使用本地 IPv4 地址,不要用 localhost!)
  5. 产物图片/视频(直接发送文件,禁止只发路径)

Web 界面链接格式

# 获取本地 IPv4 地址
import socket
local_ip = socket.gethostbyname(socket.gethostname())

# 构造前端 URL
frontend_url = f"http://{local_ip}:3000/?session={session_id}&stage={stage}"

# 发送给用户
send_to_user(f"📊 查看详情:{frontend_url}")

重要:必须使用本地 IPv4 地址(如

192.168.1.x
),不要使用
localhost
127.0.0.1
,否则用户无法从其他设备访问!


详细参考

根据用户的需求和当前阶段,参考

references/
目录下的具体文档执行相应操作:

references 目录

文件用途查看时机
init_project/项目初始化用户首次下载或要求"初始化项目"时
init_all.md完整初始化流程用户要求初始化部署时
init_backend.md后端初始化首次配置后端环境时
init_frontend.md前端初始化首次配置前端环境时
run_project/项目启动
start_backend.md启动后端服务服务未运行时
start_frontend.md启动前端服务服务未运行时
workflow/六阶段工作流
create_project.md创建新项目 API开始新视频项目时
create_script.md剧本生成 API执行第一阶段时
create_character.md角色/场景设计 API执行第二阶段时
create_storyboard.md分镜设计 API/剧情续写 API执行第三阶段时/用户提出续写剧情时
create_reference.md参考图生成 API执行第四阶段时
create_video.md视频生成 API执行第五阶段时
create_post.md后期剪辑 API执行第六阶段时
modify_character.md修改角色提示词用户要求修改角色时
modify_storyboard.md修改/续写分镜用户要求修改/续写分镜时
modify_reference.md修改参考图提示词用户要求修改参考图时
modify_video.md修改视频提示词用户要求修改视频时
sandbox/临时工作台
generate_image_t2i.md文生图 API用户要求生成图片时
generate_image_it2i.md图生图/风格转换 API用户要求转换图片风格时
generate_video.md短视频生成 API用户要求生成15秒内视频时
send_message/消息发送
feishu.md飞书发送媒体文件用户通过飞书渠道发起对话,并且需要向用户发送图片/视频给用户时
wechat.md微信发送媒体文件用户通过微信渠道发起对话,并且需要向用户发送图片/视频给用户时