Wan Image Gen
通过阿里云百炼 Wan 文生图接口创建异步任务,并自动轮询、下载生成结果。
详细接口与限制见 references/api.md。
Setup
- 1. 配置 API Key:
CODEBLOCK0
也可以在 skill 目录下创建 config.json:
可先参考 config.example.json 再复制为 config.json。
CODEBLOCK1
- 2. 运行环境要求 INLINECODE4
配置优先级:
- - CLI 参数
- 环境变量
- INLINECODE5
- 脚本默认值
默认模型
- - 默认档位为
final,对应 INLINECODE7 - 推荐优先使用
--tier,只有明确要指定模型时再传 INLINECODE9
目标驱动选型
- -
cheap -> draft + 默认 INLINECODE12 - INLINECODE13 -> INLINECODE14
- INLINECODE15 ->
final + 默认 INLINECODE17
推荐把这组映射维护在 config.json 的 goals 里;goal 表示用户意图,tier 表示具体模型档位。
档位驱动选型
- -
draft -> INLINECODE23 - INLINECODE24 -> INLINECODE25
- INLINECODE26 -> INLINECODE27
推荐把这组映射维护在 config.json 的 tiers 里,而不是改主脚本。
CLI
主要脚本: INLINECODE30
低成本草稿
CODEBLOCK2
最终出图
CODEBLOCK3
提交任务但不等待
CODEBLOCK4
继续轮询已有任务
CODEBLOCK5
仅做预检,不实际提交
CODEBLOCK6
参数约定
- -
--prompt:正向提示词。提交新任务时必填 - INLINECODE32 :反向提示词
- INLINECODE33 :按用户目标选择更合适的默认模型和尺寸策略
- INLINECODE34 :按成本/质量档位自动选模型
- INLINECODE35 :模型名,默认 INLINECODE36
- 优先级:
model > tier > goal > 默认
-
config.json 中可通过
defaultGoal/defaultTier 与
goals/tiers 维护映射
-
1:1=1280*1280
-
3:4=1104*1472
-
4:3=1472*1104
-
9:16=960*1696
-
16:9=1696*960
-
draft=1280*1280
-
final=1440*1440
-
square=1280*1280
-
portrait=1104*1472
-
landscape=1472*1104
-
story=960*1696
-
widescreen=1696*960
- -
--size:输出尺寸,如 INLINECODE56
- 优先级:
size > ratio > preset
- -
--n:生成张数,建议测试时设为 INLINECODE59 - INLINECODE60 :随机种子
- INLINECODE61 :是否启用提示词智能改写,默认 INLINECODE62
- INLINECODE63 :是否添加水印,默认 INLINECODE64
- INLINECODE65 :查询已有任务,不再提交新任务
- INLINECODE66 :只提交任务,返回 task_id
- INLINECODE67 :轮询间隔秒数,默认 INLINECODE68
- INLINECODE69 :总等待超时秒数,默认 INLINECODE70
- INLINECODE71 :图片下载目录,默认 INLINECODE72
- INLINECODE73 :输出文件名前缀
- INLINECODE74 :只打印最终请求体和配置预检,不实际调用 API
推荐工作流
- 1. 先用
--goal=cheap 做低成本验证。 - Prompt 稳定后,切到
--goal=balanced 或 --goal=quality。 - 再根据画面需求选择更贴近目标比例的
--ratio=3:4、4:3、9:16 或 16:9。 - 如果需要更高细节,再切到
--preset=final 或显式自定义 --size。 - 需要多轮迭代时,用
--name 给同一主题打上稳定前缀。 - 下载后的文件名会自动带时间戳、task_id 和 prompt 摘要,便于回溯。
覆盖优先级
- - 模型选择: INLINECODE85
- 画幅选择: INLINECODE86
- INLINECODE87 用于表达用户意图,
tier 用于表达具体模型档位;显式 --tier 会覆盖 INLINECODE90 - INLINECODE91 和
goal 都只负责给出默认模型或默认尺寸策略,不会锁死 INLINECODE93
提示词建议
- - 先写清主体,再写场景、风格、光线、镜头或构图
- 如果只想改一个变量,prompt 里明确写“其余保持不变”
- 反复试 prompt 时,先保持 INLINECODE94
- 如果要稳定复现,显式传 INLINECODE95
工作流
- 1. 用户要生图时,提交异步任务。
- 提交前脚本会显示一次成本提醒,按中国内地价格表估算总费用。
- 返回
task_id 后轮询 GET /api/v1/tasks/{task_id}。 - 成功后立即下载图片到本地目录。
- 如果只想拿
task_id,使用 --no-wait。
成本提醒
- - 脚本会在
preflight 和 --dry-run 中输出预计费用 - 当前内置的是你提供的中国内地单价表
- 图像费用按
单价(元/张) × n 估算 - 这不是实时计费查询;如果官方价格调整,需要同步更新脚本
失败时优先检查
- -
DASHSCOPE_API_KEY 或 config.json 是否配置正确 - INLINECODE105 和 API Key 是否属于同一地域
- prompt 是否过短或描述过于模糊
- 是否该先用
--preset=draft 而不是直接大尺寸反复试 - 尺寸是否符合所选模型限制
- 宽高比是否在
[1:4, 4:1] 范围内 - 自定义尺寸如果被服务端拒绝,优先改用官方推荐尺寸预设
- INLINECODE108 是否过大导致费用或限流问题
- INLINECODE109 是否已超过 24 小时
Wan Image Gen
通过阿里云百炼Wan文生图接口创建异步任务,并自动轮询、下载生成结果。
详细接口与限制见 references/api.md。
设置
- 1. 配置API密钥:
bash
export DASHSCOPEAPIKEY=sk-xxx
也可以在技能目录下创建 config.json:
可先参考 config.example.json 再复制为 config.json。
json
{
apiKey: sk-xxx,
baseUrl: https://dashscope.aliyuncs.com,
defaultGoal: balanced,
goals: {
cheap: {
tier: draft,
preset: draft
},
balanced: {
tier: standard
},
quality: {
tier: final,
preset: final
}
},
defaultTier: standard,
tiers: {
draft: {
model: wanx2.0-t2i-turbo
},
standard: {
model: wan2.2-t2i-flash
},
final: {
model: wan2.6-t2i
}
},
outputDir: ./outputs
}
- 2. 运行环境要求 Node.js >= 18
配置优先级:
- - CLI参数
- 环境变量
- config.json
- 脚本默认值
默认模型
- - 默认档位为 final,对应 wan2.6-t2i
- 推荐优先使用 --tier,只有明确要指定模型时再传 --model
目标驱动选型
- - cheap -> draft + 默认 preset=draft
- balanced -> standard
- quality -> final + 默认 preset=final
推荐把这组映射维护在 config.json 的 goals 里;goal 表示用户意图,tier 表示具体模型档位。
档位驱动选型
- - draft -> wanx2.0-t2i-turbo
- standard -> wan2.2-t2i-flash
- final -> wan2.6-t2i
推荐把这组映射维护在 config.json 的 tiers 里,而不是改主脚本。
CLI
主要脚本:node scripts/wan-image-gen.js
低成本草稿
bash
node scripts/wan-image-gen.js \
--prompt=一间有着精致窗户的花店,漂亮的木质门,摆放着花朵 \
--goal=cheap \
--ratio=1:1 \
--n=1
最终出图
bash
node scripts/wan-image-gen.js \
--prompt=一个赛博朋克风格的雨夜街道,电影感灯光,雨水反光,细节丰富 \
--goal=quality \
--ratio=16:9 \
--name=cyberpunk-night
提交任务但不等待
bash
node scripts/wan-image-gen.js \
--prompt=一个赛博朋克风格的雨夜街道 \
--no-wait
继续轮询已有任务
bash
node scripts/wan-image-gen.js \
--task-id=你的task_id
仅做预检,不实际提交
bash
node scripts/wan-image-gen.js \
--prompt=一张产品海报,主体是一瓶绿色玻璃香水 \
--ratio=3:4 \
--dry-run
参数约定
- - --prompt:正向提示词。提交新任务时必填
- --negative-prompt:反向提示词
- --goal=cheap|balanced|quality:按用户目标选择更合适的默认模型和尺寸策略
- --tier=draft|standard|final:按成本/质量档位自动选模型
- --model:模型名,默认 wan2.6-t2i
- 优先级:model > tier > goal > 默认
- config.json 中可通过 defaultGoal/defaultTier 与 goals/tiers 维护映射
- 1:1=1280*1280
- 3:4=1104*1472
- 4:3=1472*1104
- 9:16=960*1696
- 16:9=1696*960
- draft=1280*1280
- final=1440*1440
- square=1280*1280
- portrait=1104*1472
- landscape=1472*1104
- story=960*1696
- widescreen=1696*960
- - --size:输出尺寸,如 1280*1280
- 优先级:size > ratio > preset
- - --n:生成张数,建议测试时设为 1
- --seed:随机种子
- --prompt-extend=true|false:是否启用提示词智能改写,默认 true
- --watermark=true|false:是否添加水印,默认 false
- --task-id:查询已有任务,不再提交新任务
- --no-wait:只提交任务,返回task_id
- --poll-interval:轮询间隔秒数,默认 10
- --timeout:总等待超时秒数,默认 600
- --output-dir:图片下载目录,默认 outputs/
- --name:输出文件名前缀
- --dry-run:只打印最终请求体和配置预检,不实际调用API
推荐工作流
- 1. 先用 --goal=cheap 做低成本验证。
- Prompt稳定后,切到 --goal=balanced 或 --goal=quality。
- 再根据画面需求选择更贴近目标比例的 --ratio=3:4、4:3、9:16 或 16:9。
- 如果需要更高细节,再切到 --preset=final 或显式自定义 --size。
- 需要多轮迭代时,用 --name 给同一主题打上稳定前缀。
- 下载后的文件名会自动带时间戳、task_id和prompt摘要,便于回溯。
覆盖优先级
- - 模型选择:CLI --model > CLI --tier > CLI --goal > config.defaultGoal/config.goal > config.defaultTier/config.tier > config.model > 内置默认
- 画幅选择:CLI --size > CLI --ratio > CLI --preset > goal 默认 ratio/preset > config.ratio > config.preset > 脚本默认
- goal 用于表达用户意图,tier 用于表达具体模型档位;显式 --tier 会覆盖 goal
- tier 和 goal 都只负责给出默认模型或默认尺寸策略,不会锁死 size/ratio/preset
提示词建议
- - 先写清主体,再写场景、风格、光线、镜头或构图
- 如果只想改一个变量,prompt里明确写其余保持不变
- 反复试prompt时,先保持 n=1
- 如果要稳定复现,显式传 --seed
工作流
- 1. 用户要生图时,提交异步任务。
- 提交前脚本会显示一次成本提醒,按中国内地价格表估算总费用。
- 返回 taskid 后轮询 GET /api/v1/tasks/{taskid}。
- 成功后立即下载图片到本地目录。
- 如果只想拿 task_id,使用 --no-wait。
成本提醒
- - 脚本会在 preflight 和 --dry-run 中输出预计费用
- 当前内置的是你提供的中国内地单价表
- 图像费用按 单价(元/张) × n 估算
- 这不是实时计费查询;如果官方价格调整,需要同步更新脚本
失败时优先检查
- - DASHSCOPEAPIKEY 或 config.json 是否配置正确
- baseUrl 和API密钥是否属于同一地域
- prompt是否过短或描述过于模糊
- 是否该先用 --preset=draft 而不是直接大尺寸反复试
- 尺寸是否符合所选模型限制
- 宽高比是否在 [1:4, 4:1]