Skills neodomain-ai
Generate images and videos via Neodomain AI API. Supports text-to-image, image-to-video, text-to-video, universal multi-modal video, motion control video, and batch storyboard video generation. Use when user wants to create AI-generated images or videos using the Neodomain platform.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bandwhite/neo-ai" ~/.claude/skills/clawdbot-skills-neodomain-ai && rm -rf "$T"
manifest:
skills/bandwhite/neo-ai/SKILL.mdsource content
Neodomain AI Content Generator
核心行为规范
- Token 检查:每次执行前确认
已设置。若未设置或遇到 token 过期错误(errCode 2001),立即走 认证流程,动态询问用户手机号/邮箱,不要硬编码保存。NEODOMAIN_ACCESS_TOKEN - 模型选择:根据用户需求按 模型选择逻辑 自主选择,无需询问用户(除非用户明确指定)。
- 提示词规范:必须遵循各模式的提示词公式,尤其是 UNIVERSAL_TO_VIDEO 必须用
/@图片 1
等明确引用素材。@视频 1 - 输出目录:默认使用
,若用户未指定则不需询问。./output
是布尔 flag,写--generate-audio
即可,不要写--generate-audio
。--generate-audio true
⚠️ 常见问题与解决方案 (FAQ)
1. Token has been revoked (errCode 2001)
现象:视频生成 API 返回
Token has been revoked,但图片 API 可能正常。
原因:
- 企业版 token 的视频服务权限被撤销
- Token 已过期
- 服务端认证系统临时故障
解决方案:
- 先用图片 API 测试 token 是否有效:
curl -H "accessToken: $TOKEN" https://story.neodomain.cn/agent/ai-image-generation/models - 如果图片 API 正常但视频 API 失败 → 联系管理员确认视频服务权限
- 如果全部失败 → 重新登录获取新 token(走认证流程)
2. 模型不支持某 generationType
现象:
❌ Failed: 模型 xxx 不支持 YYY 类型
原因:不是所有模型都支持所有生成类型。
解决方案:
/neo-video-2-0
→ 仅支持neo-video-2-0-fastUNIVERSAL_TO_VIDEO
/kling-video-o1
→ 仅支持kling-v3-omniUNIVERSAL_TO_VIDEO
→ 支持veo-3.1-*
(多图参考)REFERENCE_TO_VIDEO- 其他模型 → 通常支持
和TEXT_TO_VIDEOIMAGE_TO_VIDEO
正确选择:
- 多张角色图 → 用
+neo-video-2-0UNIVERSAL_TO_VIDEO - 单张首帧 → 用
+doubao-seedance-1-5-proIMAGE_TO_VIDEO - 纯文字 → 用
+doubao-seedance-1-5-proTEXT_TO_VIDEO
3. UNIVERSAL_TO_VIDEO 提示词写法错误
错误示例:
--prompt "蓝白校服的男生和穿碎花裙子的女生在校园里散步"
正确示例:
--prompt "参考@图片 1 的男生和@图片 2 的女生,两人在阳光明媚的校园里并肩散步,镜头缓慢跟随"
规则:
中第 1 个 URL → 用--image-urls
引用@图片 1
中第 2 个 URL → 用--image-urls
引用@图片 2
中第 1 个 URL → 用--video-urls
引用@视频 1
中第 1 个 URL → 用--audio-urls
引用@音频 1- 必须在 prompt 中明确引用每个素材,不要用"那张图"等模糊表达
4. 认证服务不可用
现象:
Authentication service unavailable, please try again
原因:Neodomain 服务端认证系统临时故障(可能在重启)
解决方案:等待 5-10 分钟后重试
意图识别与路径选择
根据用户意图选择正确路径:
| 用户意图 | 路径 |
|---|---|
| 生成图片(无参考图) | → TEXT_TO_IMAGE |
| 生成图片(有参考图/角色一致性) | |
| 生成视频(纯文字描述) | → |
| 生成视频(有参考图/首帧) | → |
| 生成视频(多张参考图保持一致性) | → (仅 Veo 3.1) |
| 生成视频(多模态:图 + 视频 + 音频组合) | → (Universal 模型) |
| 动作迁移(把参考视频动作转移到图片人物上) | |
| 故事板/分镜批量生视频 | |
Model Selection Logic
图片模型选择
有参考图? ├─ 是 → generate_image_ref.py,模型用 doubao-seedream-5-0-260128 └─ 否 → generate_image.py ├─ 追求高性价比 → doubao-seedream-5-0-260128 (25pts) ├─ 追求最高质量 → gemini-3-pro-image-preview (100pts) └─ 默认/普通需求 → gemini-3.1-flash-image-preview (90pts)
视频模型选择
有多模态素材(视频/音频参考)? └─ 是 → UNIVERSAL_TO_VIDEO ├─ 追求最高品质 → neo-video-2-0 ├─ 追求速度/性价比 → neo-video-2-0-fast └─ 需要高分辨率 (1080p) → kling-v3-omni 或 kling-video-o1 有多张参考图(保持角色一致性)? └─ 是 → REFERENCE_TO_VIDEO,模型用 veo-3.1-generate-preview 有参考图(图生视频)? └─ 是 → IMAGE_TO_VIDEO ├─ 需要音频 → doubao-seedance-1-5-pro-251215 或 kling-v3 ├─ 需要首尾帧精确控制 → kling-v3 或 kling-v2-6 ├─ 需要超高清 4K → veo-3.1-generate-preview ├─ 需要超长时长 (15s+) → kling-v3(最长 15s) 或 vidu-q3-pro(最长 16s) └─ 默认 → doubao-seedance-1-5-pro-251215 纯文字生视频? └─ 是 → TEXT_TO_VIDEO ├─ 需要音频 → doubao-seedance-1-5-pro-251215 或 kling-v3 ├─ 高性价比 → doubao-seedance-1-0-pro-fast-251015 └─ 默认 → doubao-seedance-1-5-pro-251215
视频参数选择规则
- resolution:用户未指定时默认
;明确要求高清用720p
;明确要求超清用1080p
(仅 Veo 3.1 支持)4K - duration:用户未指定时默认
;需注意各模型上限(见下表),不要超出范围8s - aspect-ratio:根据用途自主判断——竖屏内容用
,横屏用9:16
,方形用16:9
;IMAGE_TO_VIDEO 模式下此参数无效,无需传入1:1 - generate-audio:用户提到"有声音"/"带音频"/"有背景音乐"时自动加上
Authentication
# Step 1:发送验证码(询问用户手机号或邮箱后执行) python3 {baseDir}/scripts/login.py --send-code --contact "手机号或邮箱" # Step 2:用户提供验证码后登录 python3 {baseDir}/scripts/login.py --login --contact "手机号或邮箱" --code "验证码"
Step 2 可能出现两种结果:
-
单一身份:直接输出
,告知用户设置到accessToken
环境变量。NEODOMAIN_ACCESS_TOKEN -
多身份:输出身份列表(含编号、类型、昵称、企业名、userId),需执行 Step 3 选择身份:
# Step 3:选择身份(仅在 Step 2 返回多身份时执行) python3 {baseDir}/scripts/login.py --select-identity --contact "手机号或邮箱" --user-id "选中的userId"
Step 3 成功后输出
accessToken,告知用户设置到 NEODOMAIN_ACCESS_TOKEN 环境变量。
Image Generation
generate_image.py(文生图 / 图生图)
python3 {baseDir}/scripts/generate_image.py \ --prompt "A beautiful mountain landscape, golden hour, cinematic" \ --model "doubao-seedream-5-0-260128" \ --aspect-ratio "16:9" \ --size "2K" \ --token $NEODOMAIN_ACCESS_TOKEN
| 参数 | 说明 | 默认值 |
|---|---|---|
| 图片描述 | 必填 |
| 模型 ID | |
| , , , , | |
| 或 | |
| , , | |
| 负向提示词 | - |
| 提示词遵循度 (1.0-20.0) | |
| 随机种子 | 随机 |
| , , | |
| 保存目录 | |
可用模型:
| 模型 ID | 费用 | 支持尺寸 | 特点 |
|---|---|---|---|
| 30 pts | 1K | 快速低价 |
| 90 pts | 1K, 2K, 4K | 均衡 |
| 100 pts | 2K, 4K | 最高质量 |
| 25 pts | 2K, 3K | 最高性价比,推荐参考图用 |
| 30 pts | 2K, 4K | - |
| 25 pts | 2K, 4K | - |
| 100 pts | 1K | GPT 风格 |
| 30 pts | 1K | 二次元/动漫 |
| 30 pts | 1K | 艺术风格 |
generate_image_ref.py(参考图生图 / 角色一致性)
python3 {baseDir}/scripts/generate_image_ref.py \ --prompt "A woman walking in a forest" \ --reference-image "https://example.com/character1.jpg" \ --reference-image "https://example.com/character2.jpg" \ --model "doubao-seedream-5-0-260128" \ --aspect-ratio "16:9" \ --token $NEODOMAIN_ACCESS_TOKEN
--reference-image 可多次指定,上限 10 张。其余参数同 generate_image.py,默认模型为 doubao-seedream-5-0-260128。
Video Generation
generate_video.py
统一入口,通过
--generation-type 区分模式。
TEXT_TO_VIDEO(文生视频)
python3 {baseDir}/scripts/generate_video.py \ --prompt "A serene lake at dawn, mist rising, cinematic wide shot" \ --model "doubao-seedance-1-5-pro-251215" \ --generation-type "TEXT_TO_VIDEO" \ --aspect-ratio "16:9" \ --resolution "720p" \ --duration "8s" \ --generate-audio \ --token $NEODOMAIN_ACCESS_TOKEN
IMAGE_TO_VIDEO(图生视频)
# 首帧必填,尾帧可选(需模型支持首尾帧);宽高比自动按参考图,无需指定 python3 {baseDir}/scripts/generate_video.py \ --prompt "The camera slowly pans across the landscape" \ --model "kling-v3" \ --generation-type "IMAGE_TO_VIDEO" \ --first-frame "https://example.com/image.jpg" \ --last-frame "https://example.com/end.jpg" \ --resolution "1080p" \ --duration "5s" \ --generate-audio \ --token $NEODOMAIN_ACCESS_TOKEN
REFERENCE_TO_VIDEO(多图参考生视频)
仅
veo-3.1-generate-preview / veo-3.1-fast-generate-preview 支持。
python3 {baseDir}/scripts/generate_video.py \ --prompt "Characters interacting in a scene" \ --model "veo-3.1-generate-preview" \ --generation-type "REFERENCE_TO_VIDEO" \ --image-urls "https://example.com/ref1.jpg,https://example.com/ref2.jpg" \ --aspect-ratio "16:9" \ --resolution "1080p" \ --duration "8s" \ --generate-audio \ --token $NEODOMAIN_ACCESS_TOKEN
UNIVERSAL_TO_VIDEO(多模态组合生视频)
支持图片、视频、音频混合参考。必须在 prompt 中用
@图片 1/@图片 2/@视频 1/@音频 1 精确引用对应素材(顺序即编号)。
python3 {baseDir}/scripts/generate_video.py \ --prompt "参考@图片 1 的男生和@图片 2 的女生,两人在阳光明媚的校园里并肩散步,镜头缓慢跟随" \ --model "neo-video-2-0" \ --generation-type "UNIVERSAL_TO_VIDEO" \ --image-urls "https://example.com/boy.jpg,https://example.com/girl.jpg" \ --resolution "720p" \ --duration "5s" \ --token $NEODOMAIN_ACCESS_TOKEN
Universal 提示词公式:
@素材引用 + 主体描述 + 动作/场景 + 镜头语言 + 风格美学
@素材引用规则(重要!):
中第 1 个 URL → 用--image-urls
引用@图片 1
中第 2 个 URL → 用--image-urls
引用@图片 2
中第 1 个 URL → 用--video-urls
引用@视频 1
中第 1 个 URL → 用--audio-urls
引用@音频 1- 必须在 prompt 开头明确引用每个素材,不要用"那张图""这个角色"等模糊表达
错误示例 ❌:
--prompt "蓝白校服的男生和穿碎花裙子的女生在校园里散步" --image-urls "boy.jpg,girl.jpg"
正确示例 ✅:
--prompt "参考@图片 1 的蓝白校服男生和@图片 2 的碎花裙子女生,两人在阳光明媚的校园里并肩散步,镜头缓慢跟随" --image-urls "boy.jpg,girl.jpg"
适用模型:
neo-video-2-0, neo-video-2-0-fast, kling-video-o1, kling-v3-omni
generate_video.py 完整参数表
| 参数 | 说明 | 默认值 |
|---|---|---|
| 视频描述 | 必填 |
| 模型 ID | |
| / / / | |
| 首帧图片 URL(I2V 必填) | - |
| 尾帧图片 URL(可选,需模型支持) | - |
| 参考图 URL 逗号分隔(R2V 必填;U2V 可选,→ ) | - |
| 参考视频 URL 逗号分隔(U2V 可选,→ ) | - |
| 参考音频 URL 逗号分隔(U2V 可选,→ ) | - |
| //////(T2V/R2V 有效;I2V 无效) | |
| /////(各模型范围不同) | |
| 时长如 //(各模型范围不同) | |
| 帧率 | |
| 随机种子 | 随机 |
| 生成音频(flag) | false |
| 增强提示词(flag) | false |
| 负向提示词 | - |
| 保存目录 | |
各模型支持范围(Cascading)
| 模型 ID | 类型 | 分辨率 | 时长 | 音频 | 首尾帧 |
|---|---|---|---|---|---|
| T2V/I2V | 480p, 720p, 1080p | 4–12s | ✅ | ✅ |
| T2V/I2V | 720p, 1080p | 2–10s | ❌ | ✅ |
| T2V/I2V | 720p, 1080p | 3–10s | ❌ | ❌ |
| T2V/I2V | 720p, 1080p | 3–15s | ✅ | ✅ |
| T2V/I2V | 1080p | 5s, 10s | ✅ | ✅ |
| T2V/I2V | 720p, 1080p | 5s, 10s | ❌ | ✅ |
| I2V 仅 | 720p, 1080p | 5s, 10s | ❌ | ✅ |
| T2V/I2V | 720p, 1080p, 2k¹ | 5–16s | ✅ | ✅ |
| I2V 仅 | 720p, 1080p | 5s, 8s | ❌ | ✅ |
| T2V/I2V | 720p, 1080p | 5s, 10s, 15s | ✅ | ❌ |
| I2V 仅 | 720p, 1080p | 5s, 10s, 15s | ✅ | ❌ |
| T2V/I2V | 768p, 1080p | 6s, 10s | ❌ | ❌ |
| T2V/I2V | 768p, 1080p | 6s, 10s | ❌ | ❌ |
| T2V/I2V | 768p, 1080p | 6s, 10s | ❌ | ✅ |
| T2V/I2V/R2V | 720p, 1080p, 4K | 4s, 6s, 8s | ✅ | ✅ |
| T2V/I2V/R2V | 720p, 1080p, 4K | 4s, 6s, 8s | ✅ | ✅ |
¹ Vidu Q3 Pro 的 2k 仅在 I2V 模式下支持。 T2V 宽高比:Doubao 支持
;Kling/Vidu/Wan 支持16:9/9:16/1:1/4:3/3:4/21:9/9:21;Hailuo 仅16:9/9:16/1:1;Veo 支持16:9。16:9/9:16
各模型支持范围(Universal,--generation-type UNIVERSAL_TO_VIDEO)
| 模型 ID | 分辨率 | 时长 | 音频 | 首尾帧 | 最大参考数 |
|---|---|---|---|---|---|
| 480p, 720p | 4–15s | ✅ | ✅ | 图×9, 视频×3, 音频×3 |
| 480p, 720p | 4–12s | ✅ | ✅ | 图×9, 视频×3, 音频×3 |
| 720p, 1080p | 3–10s | ❌ | ❌ | 图×12, 视频×1 |
| 720p, 1080p | 3–15s | ✅ | ❌ | 图×12, 视频×1 |
motion_control.py(动作迁移)
将参考视频的人物动作迁移到参考图片上:
python3 {baseDir}/scripts/motion_control.py \ --image "https://example.com/ref_image.jpg" \ --video "https://example.com/ref_video.mp4" \ --prompt "Make the character dance" \ --mode "pro" \ --duration 5000 \ --token $NEODOMAIN_ACCESS_TOKEN
| 参数 | 说明 | 默认值 |
|---|---|---|
| 参考图片 URL | 必填 |
| 参考动作视频 URL | 必填 |
| 附加文字控制 | - |
| (标准)/ (专业) | |
| 角色朝向来源: / | |
| 保留原视频声音: / | |
| 时长(毫秒) | |
| 保存目录 | |
batch_video.py(批量分镜生视频)
需要
(用于上传本地图片到 OSS)。默认使用pip install oss2,IMAGE_TO_VIDEO,720p/5s。doubao-seedance-1-5-pro-251215
python3 {baseDir}/scripts/batch_video.py \ --storyboard-dir ./storyboards \ --output-dir ./output/videos \ --start 1 \ --end 17 \ --token $NEODOMAIN_ACCESS_TOKEN
| 参数 | 说明 | 默认值 |
|---|---|---|
| 分镜图片目录(命名格式:) | 必填 |
| 视频输出目录 | 必填 |
| 起始镜头编号 | |
| 结束镜头编号 | |
Output
所有脚本完成后自动下载到输出目录:
- 图片:
/image_1.jpg
/.png.webp - 视频:
+video.mp4thumbnail.jpg - 批量视频:
,video_01.mp4
, ...video_02.mp4
:任务 ID、参数、文件 URL 等详情metadata.json