HomeBrowseUpload
← Back to registry
// Skill profile

Neodomain AI Content Generator

name: neodomain-ai

by bandwhite · published 2026-04-01

图像生成数据处理
Total installs
0
Stars
★ 0
Last updated
2026-04
// Install command
$ claw add gh:bandwhite/bandwhite-neo-ai
View on GitHub
// Full documentation

---

name: neodomain-ai

description: 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.

metadata:

{

"openclaw":

{

"emoji": "🎨",

"requires": { "bins": ["python3"], "env": ["NEODOMAIN_ACCESS_TOKEN"] },

"primaryEnv": "NEODOMAIN_ACCESS_TOKEN",

},

}

---

# Neodomain AI Content Generator

核心行为规范

  • **Token 检查**:每次执行前确认 `NEODOMAIN_ACCESS_TOKEN` 已设置。若未设置或遇到 token 过期错误(errCode 2001),立即走 [认证流程](#authentication),动态询问用户手机号/邮箱,不要硬编码保存。
  • **模型选择**:根据用户需求按 [模型选择逻辑](#model-selection-logic) 自主选择,无需询问用户(除非用户明确指定)。
  • **提示词规范**:必须遵循各模式的提示词公式,尤其是 UNIVERSAL_TO_VIDEO 必须用 `@图片 1`/`@视频 1` 等明确引用素材。
  • **输出目录**:默认使用 `./output`,若用户未指定则不需询问。
  • **`--generate-audio`** 是布尔 flag,写 `--generate-audio` 即可,不要写 `--generate-audio true`。
  • ---

    ⚠️ 常见问题与解决方案 (FAQ)

    1. Token has been revoked (errCode 2001)

    **现象**:视频生成 API 返回 `Token has been revoked`,但图片 API 可能正常。

    **原因**:

  • 企业版 token 的视频服务权限被撤销
  • Token 已过期
  • 服务端认证系统临时故障
  • **解决方案**:

    1. 先用图片 API 测试 token 是否有效:`curl -H "accessToken: $TOKEN" https://story.neodomain.cn/agent/ai-image-generation/models`

    2. 如果图片 API 正常但视频 API 失败 → 联系管理员确认视频服务权限

    3. 如果全部失败 → 重新登录获取新 token(走认证流程)

    2. 模型不支持某 generationType

    **现象**:`❌ Failed: 模型 xxx 不支持 YYY 类型`

    **原因**:不是所有模型都支持所有生成类型。

    **解决方案**:

  • `neo-video-2-0` / `neo-video-2-0-fast` → 仅支持 `UNIVERSAL_TO_VIDEO`
  • `kling-video-o1` / `kling-v3-omni` → 仅支持 `UNIVERSAL_TO_VIDEO`
  • `veo-3.1-*` → 支持 `REFERENCE_TO_VIDEO`(多图参考)
  • 其他模型 → 通常支持 `TEXT_TO_VIDEO` 和 `IMAGE_TO_VIDEO`
  • **正确选择**:

  • 多张角色图 → 用 `neo-video-2-0` + `UNIVERSAL_TO_VIDEO`
  • 单张首帧 → 用 `doubao-seedance-1-5-pro` + `IMAGE_TO_VIDEO`
  • 纯文字 → 用 `doubao-seedance-1-5-pro` + `TEXT_TO_VIDEO`
  • 3. UNIVERSAL_TO_VIDEO 提示词写法错误

    **错误示例**:`--prompt "蓝白校服的男生和穿碎花裙子的女生在校园里散步"`

    **正确示例**:`--prompt "参考@图片 1 的男生和@图片 2 的女生,两人在阳光明媚的校园里并肩散步,镜头缓慢跟随"`

    **规则**:

  • `--image-urls` 中第 1 个 URL → 用 `@图片 1` 引用
  • `--image-urls` 中第 2 个 URL → 用 `@图片 2` 引用
  • `--video-urls` 中第 1 个 URL → 用 `@视频 1` 引用
  • `--audio-urls` 中第 1 个 URL → 用 `@音频 1` 引用
  • **必须**在 prompt 中明确引用每个素材,不要用"那张图"等模糊表达
  • 4. 认证服务不可用

    **现象**:`Authentication service unavailable, please try again`

    **原因**:Neodomain 服务端认证系统临时故障(可能在重启)

    **解决方案**:等待 5-10 分钟后重试

    ---

    意图识别与路径选择

    根据用户意图选择正确路径:

    | 用户意图 | 路径 |

    |---------|------|

    | 生成图片(无参考图) | `generate_image.py` → TEXT_TO_IMAGE |

    | 生成图片(有参考图/角色一致性) | `generate_image_ref.py` |

    | 生成视频(纯文字描述) | `generate_video.py` → `TEXT_TO_VIDEO` |

    | 生成视频(有参考图/首帧) | `generate_video.py` → `IMAGE_TO_VIDEO` |

    | 生成视频(多张参考图保持一致性) | `generate_video.py` → `REFERENCE_TO_VIDEO`(仅 Veo 3.1) |

    | 生成视频(多模态:图 + 视频 + 音频组合) | `generate_video.py` → `UNIVERSAL_TO_VIDEO`(Universal 模型) |

    | 动作迁移(把参考视频动作转移到图片人物上) | `motion_control.py` |

    | 故事板/分镜批量生视频 | `batch_video.py` |

    ---

    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`;明确要求超清用 `4K`(仅 Veo 3.1 支持)
  • **duration**:用户未指定时默认 `8s`;需注意各模型上限(见下表),不要超出范围
  • **aspect-ratio**:根据用途自主判断——竖屏内容用 `9:16`,横屏用 `16:9`,方形用 `1:1`;IMAGE_TO_VIDEO 模式下此参数无效,无需传入
  • **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

    | 参数 | 说明 | 默认值 |

    |------|------|--------|

    | `--prompt` | 图片描述 | 必填 |

    | `--model` | 模型 ID | `gemini-3.1-flash-image-preview` |

    | `--aspect-ratio` | `1:1`, `16:9`, `9:16`, `4:3`, `3:4` | `1:1` |

    | `--num-images` | `1` 或 `4` | `1` |

    | `--size` | `1K`, `2K`, `4K` | `2K` |

    | `--negative-prompt` | 负向提示词 | - |

    | `--guidance-scale` | 提示词遵循度 (1.0-20.0) | `7.5` |

    | `--seed` | 随机种子 | 随机 |

    | `--output-format` | `jpeg`, `png`, `webp` | `jpeg` |

    | `--output-dir` | 保存目录 | `./output` |

    **可用模型:**

    | 模型 ID | 费用 | 支持尺寸 | 特点 |

    |--------|------|----------|------|

    | `gemini-2.5-flash-image` | 30 pts | 1K | 快速低价 |

    | `gemini-3.1-flash-image-preview` | 90 pts | 1K, 2K, 4K | 均衡 |

    | `gemini-3-pro-image-preview` | 100 pts | 2K, 4K | 最高质量 |

    | `doubao-seedream-5-0-260128` | 25 pts | 2K, 3K | 最高性价比,推荐参考图用 |

    | `doubao-seedream-4-5-251128` | 30 pts | 2K, 4K | - |

    | `doubao-seedream-4-0-250828` | 25 pts | 2K, 4K | - |

    | `gpt-image-1.5` | 100 pts | 1K | GPT 风格 |

    | `Midjourney-niji 7` | 30 pts | 1K | 二次元/动漫 |

    | `Midjourney-v 7` | 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 提示词公式:** `@素材引用 + 主体描述 + 动作/场景 + 镜头语言 + 风格美学`

    **@素材引用规则(重要!)**:

  • `--image-urls` 中第 1 个 URL → 用 `@图片 1` 引用
  • `--image-urls` 中第 2 个 URL → 用 `@图片 2` 引用
  • `--video-urls` 中第 1 个 URL → 用 `@视频 1` 引用
  • `--audio-urls` 中第 1 个 URL → 用 `@音频 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 完整参数表

    | 参数 | 说明 | 默认值 |

    |------|------|--------|

    | `--prompt` | 视频描述 | 必填 |

    | `--model` | 模型 ID | `doubao-seedance-1-5-pro-251215` |

    | `--generation-type` | `TEXT_TO_VIDEO` / `IMAGE_TO_VIDEO` / `REFERENCE_TO_VIDEO` / `UNIVERSAL_TO_VIDEO` | `TEXT_TO_VIDEO` |

    | `--first-frame` | 首帧图片 URL(I2V 必填) | - |

    | `--last-frame` | 尾帧图片 URL(可选,需模型支持) | - |

    | `--image-urls` | 参考图 URL 逗号分隔(R2V 必填;U2V 可选,→ `imageUrls`) | - |

    | `--video-urls` | 参考视频 URL 逗号分隔(U2V 可选,→ `referenceVideoUrls`) | - |

    | `--audio-urls` | 参考音频 URL 逗号分隔(U2V 可选,→ `audioUrl`) | - |

    | `--aspect-ratio` | `16:9`/`9:16`/`1:1`/`4:3`/`3:4`/`21:9`/`9:21`(T2V/R2V 有效;I2V 无效) | `16:9` |

    | `--resolution` | `480p`/`720p`/`768p`/`1080p`/`2k`/`4K`(各模型范围不同) | `720p` |

    | `--duration` | 时长如 `5s`/`8s`/`10s`(各模型范围不同) | `8s` |

    | `--fps` | 帧率 | `24` |

    | `--seed` | 随机种子 | 随机 |

    | `--generate-audio` | 生成音频(flag) | false |

    | `--enhance-prompt` | 增强提示词(flag) | false |

    | `--negative-prompt` | 负向提示词 | - |

    | `--output-dir` | 保存目录 | `./output` |

    #### 各模型支持范围(Cascading)

    | 模型 ID | 类型 | 分辨率 | 时长 | 音频 | 首尾帧 |

    |--------|------|--------|------|------|--------|

    | `doubao-seedance-1-5-pro-251215` | T2V/I2V | 480p, 720p, 1080p | 4–12s | ✅ | ✅ |

    | `doubao-seedance-1-0-pro-250528` | T2V/I2V | 720p, 1080p | 2–10s | ❌ | ✅ |

    | `doubao-seedance-1-0-pro-fast-251015` | T2V/I2V | 720p, 1080p | 3–10s | ❌ | ❌ |

    | `kling-v3` | T2V/I2V | 720p, 1080p | 3–15s | ✅ | ✅ |

    | `kling-v2-6` | T2V/I2V | 1080p | 5s, 10s | ✅ | ✅ |

    | `kling-v2-5-turbo` | T2V/I2V | 720p, 1080p | 5s, 10s | ❌ | ✅ |

    | `kling-v2-1` | **I2V 仅** | 720p, 1080p | 5s, 10s | ❌ | ✅ |

    | `vidu-q3-pro` | T2V/I2V | 720p, 1080p, 2k¹ | 5–16s | ✅ | ✅ |

    | `vidu-q2-pro` | **I2V 仅** | 720p, 1080p | 5s, 8s | ❌ | ✅ |

    | `wan2.6` | T2V/I2V | 720p, 1080p | 5s, 10s, 15s | ✅ | ❌ |

    | `wan2.6-i2v-flash` | **I2V 仅** | 720p, 1080p | 5s, 10s, 15s | ✅ | ❌ |

    | `MiniMax-Hailuo-2.3` | T2V/I2V | 768p, 1080p | 6s, 10s | ❌ | ❌ |

    | `MiniMax-Hailuo-2.3-Fast` | T2V/I2V | 768p, 1080p | 6s, 10s | ❌ | ❌ |

    | `MiniMax-Hailuo-02` | T2V/I2V | 768p, 1080p | 6s, 10s | ❌ | ✅ |

    | `veo-3.1-generate-preview` | T2V/I2V/**R2V** | 720p, 1080p, 4K | 4s, 6s, 8s | ✅ | ✅ |

    | `veo-3.1-fast-generate-preview` | T2V/I2V/**R2V** | 720p, 1080p, 4K | 4s, 6s, 8s | ✅ | ✅ |

    > ¹ Vidu Q3 Pro 的 2k 仅在 I2V 模式下支持。

    > T2V 宽高比:Doubao 支持 `16:9/9:16/1:1/4:3/3:4/21:9/9:21`;Kling/Vidu/Wan 支持 `16:9/9:16/1:1`;Hailuo 仅 `16:9`;Veo 支持 `16:9/9:16`。

    #### 各模型支持范围(Universal,--generation-type UNIVERSAL_TO_VIDEO)

    | 模型 ID | 分辨率 | 时长 | 音频 | 首尾帧 | 最大参考数 |

    |--------|--------|------|------|--------|-----------|

    | `neo-video-2-0` | 480p, 720p | 4–15s | ✅ | ✅ | 图×9, 视频×3, 音频×3 |

    | `neo-video-2-0-fast` | 480p, 720p | 4–12s | ✅ | ✅ | 图×9, 视频×3, 音频×3 |

    | `kling-video-o1` | 720p, 1080p | 3–10s | ❌ | ❌ | 图×12, 视频×1 |

    | `kling-v3-omni` | 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

    | 参数 | 说明 | 默认值 |

    |------|------|--------|

    | `--image` | 参考图片 URL | 必填 |

    | `--video` | 参考动作视频 URL | 必填 |

    | `--prompt` | 附加文字控制 | - |

    | `--mode` | `std`(标准)/ `pro`(专业) | `std` |

    | `--orientation` | 角色朝向来源:`image` / `video` | `image` |

    | `--keep-original-sound` | 保留原视频声音:`yes` / `no` | `yes` |

    | `--duration` | 时长(毫秒) | `5000` |

    | `--output-dir` | 保存目录 | `./output` |

    batch_video.py(批量分镜生视频)

    > 需要 `pip install oss2`(用于上传本地图片到 OSS)。默认使用 `doubao-seedance-1-5-pro-251215`,IMAGE_TO_VIDEO,720p/5s。

    python3 {baseDir}/scripts/batch_video.py \
      --storyboard-dir ./storyboards \
      --output-dir ./output/videos \
      --start 1 \
      --end 17 \
      --token $NEODOMAIN_ACCESS_TOKEN

    | 参数 | 说明 | 默认值 |

    |------|------|--------|

    | `--storyboard-dir` | 分镜图片目录(命名格式:`shot_01_*.jpeg`) | 必填 |

    | `--output-dir` | 视频输出目录 | 必填 |

    | `--start` | 起始镜头编号 | `1` |

    | `--end` | 结束镜头编号 | `17` |

    ---

    Output

    所有脚本完成后自动下载到输出目录:

  • 图片:`image_1.jpg` / `.png` / `.webp`
  • 视频:`video.mp4` + `thumbnail.jpg`
  • 批量视频:`video_01.mp4`, `video_02.mp4`, ...
  • `metadata.json`:任务 ID、参数、文件 URL 等详情
  • // Comments
    Sign in with GitHub to leave a comment.
    // Related skills

    More tools from the same signal band