skills/ai-director/SKILL.md
AI短剧生成全流程:账号管理、编剧、视频生产。集成X2C计费系统,适用于商业化部署。包含 ad-account-manager(账号管理)、ad-writer(编剧提示词)、ad-producer(视频生产)三大模块。
npx skillsauth add giggle-official/skills ai-directorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
完整的AI短剧生成解决方案,从创意到成片,集成X2C平台账号管理和计费。
本Skill支持多用户共享设备,每个用户拥有独立的X2C账号和配置。
用户凭证存储位置: credentials/{USER_ID}.json
调用脚本时需设置 USER_ID 或 TELEGRAM_USER_ID 环境变量:
USER_ID=5470522468 node scripts/ad-account-manager.js check-binding
OpenClaw从聊天调用时会自动传递用户ID。
scripts/ad-account-manager.jsreferences/AD-WRITER-GUIDE.mdscripts/ad-producer.js用户必须自行完成以下步骤:
示例对话:
用户:我想生成视频
助手:好的,需要先绑定X2C账号。请打开 https://www.x2creel.ai 登录,然后在个人中心获取API Key发给我。
用户:x2c_sk_xxx...
助手:验证通过!你的账号已绑定,现在可以开始生成视频了~
Agent 收到 API Key 后,调用 ad-account-manager.js verify-key 验证有效性:
node scripts/ad-account-manager.js verify-key x2c_sk_xxx
验证成功后将 key 保存到 credentials/{USER_ID}.json
node scripts/ad-producer.js config
选项A - 仅编剧(Agent模式):
Agent 读取 references/AD-WRITER-GUIDE.md,根据用户创意生成剧本。
选项B - 全流程(剧本 + 视频):
node scripts/ad-producer.js full-workflow "一个程序员穿越到古代当宰相" --duration 120 --wait
在用户提供有效的 X2C API Key 之前,禁止执行任何视频生成或剧本生成操作!
如果用户要求生成视频但尚未绑定账号:
# 发送验证码
node scripts/ad-account-manager.js send-code [email protected]
# 验证并获取 API Key
node scripts/ad-account-manager.js verify [email protected] 123456
# 检查绑定状态
node scripts/ad-account-manager.js check-binding
# 查看配置选项
node scripts/ad-account-manager.js config
# 解绑账号
node scripts/ad-account-manager.js unbind
# 帮助
node scripts/ad-account-manager.js help
node scripts/ad-account-manager.js bind --key "x2c_sk_<REDACTED>xxx"
管理自定义角色,可在视频制作中用作主角。制作时系统会根据性别自动匹配角色与剧本中的人物。
注意: 每个用户最多 5 个角色。
# 查询角色列表
node scripts/ad-character-manager.js list
# 创建角色
node scripts/ad-character-manager.js create <name> <gender> <image_url>
# 删除角色
node scripts/ad-character-manager.js delete <character_id>
# 帮助
node scripts/ad-character-manager.js help
| 参数 | 说明 | 必填 | 选项 | |-----|------|:----:|------| | name | 角色显示名称 | ✅ | - | | gender | 性别 | ✅ | male, female, other | | image_url | 角色图片的公开 URL(最大 10MB) | ✅ | - |
# 查看当前角色
node scripts/ad-character-manager.js list
# 创建女性角色
node scripts/ad-character-manager.js create Alice female https://example.com/alice.png
# 创建男性角色
node scripts/ad-character-manager.js create Bob male https://example.com/bob.png
# 删除角色
node scripts/ad-character-manager.js delete <uuid>
| Action | 说明 | |--------|------| | character/list | 查询角色列表 | | character/create | 创建角色 | | character/delete | 删除角色 |
这是提示词工程模块,AI Agent 读取指南后自己生成剧本。
Agent 工作流程:
references/AD-WRITER-GUIDE.md(完整编剧指南)用户指令示例:
帮我写一个短剧剧本:一个程序员意外拯救了CEO,却不知道对方的真实身份
# 查看配置和定价
node scripts/ad-producer.js config
# 生成剧本
node scripts/ad-producer.js generate-script "你的创意" --wait
# 查询剧本状态
node scripts/ad-producer.js script-status <project_id>
# 生产视频
node scripts/ad-producer.js produce-video <project_id> 1 --wait
# 查询视频进度
node scripts/ad-producer.js video-status <project_id> 1
# 全流程(推荐)
node scripts/ad-producer.js full-workflow "创意描述" --duration 120
| 参数 | 说明 | 默认值 | |-----|------|-------| | --mode | short_video / short_drama | short_video | | --duration | 60 / 120 / 180 / 300 | 120 | | --ratio | 9:16 / 16:9 | 9:16 | | --style | 风格名称 | - | | --episodes | 集数(固定值,不可用户自定义) | short_video=1, short_drama=10 | | --language | zh / en | zh | | --character-ids | 角色UUID数组(逗号分隔),用作主角 | - | | --wait | 等待完成 | false |
| 项目 | 积分 | 美元 | |-----|------|-----| | 剧本(short_video) | 10 | $0.1| | 剧本(short_drama) | 100 | $1 | | 视频 60s | 299 | $2.99 | | 视频 120s | 599 | $5.99 | | 视频 180s | 799 | $7.99 | | 视频 300s | 999 | $9.99 |
# 1. 绑定账号(首次使用)
node scripts/ad-account-manager.js send-code [email protected]
node scripts/ad-account-manager.js verify [email protected] 123456
# 2. 查看定价
node scripts/ad-producer.js config
# 3. 生成剧本
node scripts/ad-producer.js generate-script "一个程序员穿越古代" --wait
# → 获得 project_id
# 4. 生产视频
node scripts/ad-producer.js produce-video <project_id> 1 --wait
node scripts/ad-producer.js full-workflow "一个程序员穿越到古代当宰相" \
--mode short_video \
--duration 120 \
--ratio 9:16
config.json:
{
"x2cApiKey": "x2c_sk_<REDACTED>your_api_key_here",
"x2cEmail": "[email protected]",
"x2cUserId": "user-uuid"
}
config.json❌ X2C Account Not Bound
解决方案:
node scripts/ad-account-manager.js send-code [email protected]
node scripts/ad-account-manager.js verify [email protected] <code>
❌ Error: Insufficient credits
解决方案: 访问 https://x2creel.ai 充值
❌ Error: Invalid or missing API key
解决方案:
node scripts/ad-account-manager.js unbind
node scripts/ad-account-manager.js send-code [email protected]
Base URL: https://eumfmgwxwjyagsvqloac.supabase.co/functions/v1/open-api
| Action | 说明 | |--------|------| | auth/send-code | 发送验证码 | | auth/verify | 验证获取 API Key | | config/get-options | 获取配置选项 | | character/list | 查询角色列表 | | character/create | 创建角色 | | character/delete | 删除角色 | | script/generate | 生成剧本 | | script/query | 查询剧本状态 | | video/produce | 生产视频 | | video/query | 查询视频进度 |
详细 API 文档见 references/X2C-OPEN-API.md
references/AD-WRITER-GUIDE.mdreferences/example.mdreferences/X2C-OPEN-API.md先用 short_video 测试
选择合适的时长
创意要清晰具体
选择合适的风格
config 命令查看可用风格适用场景: 商业化部署、付费短剧生成服务、B端创作工具
使用 Gemini 2.0 Flash 分析视频质量,按标准打分。
维度一:单片段质量 (100分) | 指标 | 权重 | 说明 | |-----|------|-----| | 时空一致性 | 35% | 主体特征在镜头内保持稳定 | | 动态动力学 | 30% | 运动符合物理规律,无跳帧 | | 视觉纯净度 | 20% | 纹理清晰,无 AI 噪点 | | 光影交互 | 15% | 阴影随物体运动同步变化 |
维度二:合成视频质量 (100分) | 指标 | 权重 | 说明 | |-----|------|-----| | 视觉流一致性 | 30% | 镜头间色调匹配 | | 剪辑节奏感 | 25% | 转场自然,匹配 BGM | | 叙事匹配度 | 25% | 准确传达剧本剧情 | | 音画同步率 | 20% | 音效与视觉契合 |
# 评估单个视频
node scripts/quality-evaluator.js <video_url> --prompt "原始提示词"
# JSON 输出
node scripts/quality-evaluator.js <video_url> --json
{
"total_score": 75,
"pass": false,
"issues": ["人物面部不一致", "光影不自然"],
"suggestions": ["简化角色描述", "明确光源方向"],
"prompt_improvements": "改进后的提示词..."
}
自动评估 + 改进提示词 + 重新生成,直到质量达标。
node scripts/auto-iterate.js "你的创意" \
--duration 60 \
--style "吉卜力" \
--threshold 80 \
--max-iterations 5
config.json 需要包含:
{
"x2cApiKey": "x2c_sk_<REDACTED>xxx",
"geminiApiKey": "your_gemini_api_key"
}
适用场景: 商业化部署、付费短剧生成服务、B端创作工具
当用户要求创建视频时,必须用文字让用户直接回复选项来确认参数。必须等用户确认全部参数后才能开始生成:
📋 参数确认
请回复你的选择:
🎬 模式:短剧(10集) 或 短视频(1集)
⏱️ 时长/价格:60秒/299、120秒/599、180秒/799、300秒/999
📐 比例:竖屏(9:16) 或 横屏(16:9)
🎨 风格:3D古风 / 2D漫剧 / 吉卜力 / 皮克斯 / 写实 / 二次元 / 国风水墨
📂 分类:玄幻 / 悬疑 / 科幻 / 都市 / 热门 / 霸总 / 仙侠
例如:「短剧、180秒、竖屏、3D古风、仙侠」
**语言**: 中文 / English
## ⚡ 异步任务处理(重要!)
当用户要求生成视频时,必须使用**异步方式**,不要等待完成!
### 流程:
1. **启动任务,不等待**
```bash
# 启动视频生成,返回project_id
USER_ID=$USER_ID node scripts/ad-producer.js full-workflow "主题" --mode short_video --duration 60 --style "风格" --language zh
# 视频开始生成后,立即调用:
/opt/storyclaw/add-video-task.sh "$USER_ID" "$project_id" "$CHAT_ID"
# 参数: user_id, project_id, chat_id (Telegram用户ID)
用户创建短剧时,以下5个参数只能从配置选项中选取,不允许自定义值:
short_video 或 short_drama60 / 120 / 180 / 3009:16 或 16:93D古风 / 2D漫剧 / 吉卜力 / 皮克斯 / 写实风格 / 二次元 / 国风水墨玄幻异能 / 悬疑惊悚 / 科幻末世 / 都市复仇 / 热门综合 / 霸总甜宠 / 仙侠古装Werewolf & Shifter / Suspense & Horror / Power & Revenge / Sweet & CEO / Magic & Fantasy / AI Drama Lab如果用户提供的任何一项不在配置列表中,必须提示用户从列表中重新选择,不得自行替换或忽略。
集数规则(强制):
short_video → 固定1集,不询问用户short_drama → 固定10集,不询问用户每个episode只能提交一次 produce-video 命令!
video-statusproduce-video如果任务失败,等待第三方系统修复,不要重复提交。
1. 生成剧本
2. 视频生成 → 完成后通知用户
1. 生成剧本 (10集)
2. 等待剧本完成
3. EP1 视频生成 → 等待完成
4. EP2 视频生成 → 等待完成
5. EP3 视频生成 → 等待完成
...
10. EP10 视频生成 → 等待完成
11. 全部完成 → 通知用户
关键点:
调用 config/get-options API可获取最新配置列表(风格和分类可能会更新)。
短剧(10集)模式下,当前集完成后必须询问用户是否继续制作下一集!
当一集视频生成完成后:
示例回复:
🎉 视频生成完成!
📊 积分消耗:599积分
继续制作下一集吗?
- 是,继续EP3
- 暂时停止
注意:
视频生成失败后,禁止自动重试生成!
原因:每次生成都会扣除用户积分,自动重试会导致额外扣费。
处理流程:
video-status 命令查看 status 和 progress)示例回复:
❌ 视频生成失败
原因: 人物生成失败 (character step failed at 14%)
当前余额: 20,013 积分
请选择:
- 重试生成(将从余额中扣除相应积分)
- 更换风格/参数后重试
- 取消任务
视频必须逐集生产,不能同时启动多集。 流程:
total_episodes 参数(如 "total_episodes": 10),否则只会生成1集video/produce 启动第1集视频制作video/produce 启动第2集CDN返回的视频URL末尾带有 &response-content-disposition=attachment,会导致浏览器强制下载而非播放。
规则:拿到视频URL后,必须去掉 &response-content-disposition=attachment 参数,然后可以直接在浏览器中播放,无需下载到本地。
流程:
video-status 命令)&response-content-disposition=attachmentbrowser navigate 到清理后的URL → 即可播放WebChat 是 StoryClaw 设备的网页聊天渠道,通过 webchat-stream-ws.sh 脚本推送消息。
/opt/storyclaw/webchat-stream-ws.sh
# 发送新消息(INSERT 模式)
webchat-stream-ws.sh <user_id> --file <message_file> <agent_id>
# 更新现有消息(UPDATE 模式)
webchat-stream-ws.sh <user_id> --update <message_id> --file <message_file> <agent_id>
| 参数 | 说明 |
|------|------|
| user_id | WebChat 用户 ID(32位hex) |
| message_id | 已有消息的 ID,用于更新 |
| message_file | 包含消息内容的文件路径(必须用 --file 传递,避免 $ 符号丢失) |
| agent_id | 目标 agent ID(如 director) |
# 1. 发送确认消息并获取 message_id
echo "正在生成视频..." > /tmp/msg.txt
MSG_ID=$(webchat-stream-ws.sh "180d08e23cdac976b4" --file /tmp/msg.txt "director")
echo "Message ID: $MSG_ID"
# 2. 任务完成后更新消息
echo "✅ 视频生成完成!" > /tmp/result.txt
webchat-stream-ws.sh "180d08e23cdac976b4" --update "$MSG_ID" --file /tmp/result.txt "director"
$ 符号丢失使用 add-video-task.sh 添加任务时,chat_id 格式决定通知渠道:
# WebChat 推送(chat_id 格式:webchat:<user_id>:<agent_id>)
add-video-task.sh "180d08e23cdac976b4" "project-id" "webchat:180d08e23cdac976b4:director"
# Telegram 推送(chat_id 为纯数字)
add-video-task.sh "5470522468" "project-id" "5470522468"
check-video-tasks.sh 会每2分钟检查任务状态,根据 chat_id 格式自动选择推送渠道。
版本: 2.1.2 (X2C Open API + WebChat 推送支持)
development
Talking-head video from image + driving audio: submit tasks via the wrapped generation API and poll for results; requests go through the Giggle gateway.
development
Discord-specific markdown syntax for formatting message strings. Use when constructing strings that will be sent as Discord messages, including: text formatting (bold, italic, underline, strikethrough, spoilers), headers, subtext, code blocks, block quotes, lists, and masked links.
development
Discord bot development - community management, moderation, notifications, and AI integration
development
Auto-deploy a Discord AI bot connected to OpenClaw Gateway. Handles Node.js bot setup, PM2 process management, and Gateway API integration. Use when the user has completed Discord Bot onboarding and needs the bot deployed and running.