Skip to main content
本页提供一个开箱即用的 Agent 技能(Skill):一个零依赖脚本同时覆盖 Wan2.7HappyHorse 两个系列——它们走同一个端点、同一套请求结构、同一个 Wan&HappyHorse 令牌分组,用 --model 一键切换。脚本会按你传入的素材自动选择模型(文生 / 图生 / 参考图生 / 视频编辑),并封装好「提交 → 轮询 → 下载成片」的完整异步流程,整套东西就两个文件。

这个技能能做什么

一个合并技能,脚本根据传入的素材类型自动判断生成模式、选对模型 ID:

文生视频

只给提示词 → 生成全新视频,默认开启提示词智能扩写,短提示词也有好效果。

图生视频

传入首帧图让静态图动起来——本地图片直接传,脚本自动上传。

参考图生视频

传参考图(Wan 还可传参考视频)→ 保持角色、物品或风格出新画面,prompt 里用「图1 / 视频1」指代。

视频编辑

传一段视频 + 参考图 → 替换 / 改造视频里的元素,输出时长跟随源视频。

两个系列怎么选

两个系列调用方式完全一致,区别在价格、画质取向和参考素材能力。脚本已按 --model 自动处理差异:
简单记:日常与走量用默认 wan对画面质感要求高--model happyhorse。两家共用 Wan&HappyHorse 分组(0.14x 倍率,约为官网人民币价的 98%,叠加充值加赠后更低),一把令牌通吃,没有特价分组。按秒计费、失败任务不扣费。价格明细见 Wan 概览HappyHorse 概览

能用在哪些 Agent

一个 Skill 本质上就是一个文件夹:一份写给 Agent 看的说明(SKILL.md)+ 一个干活的脚本。所以凡是能读取本地文件、执行命令行的编码 Agent 都能用上——比如 Codex、OpenClaw、hermes-agent、Claude Code 等。唯一要求:跑 Agent 的那台机器(你的电脑或服务器)装了 Python 3 并且能联网(脚本要直连 api.apiyi.com)。脚本只用 Python 标准库,无需 pip install 任何东西

三步装好

① 建目录、贴文件

新建一个技能文件夹,放入下面两个文件(完整内容见后两节):

② 同目录写 Key

wan/.env 里写上你的 API易 API Key(在 api.apiyi.com 控制台创建,令牌须勾选 Wan&HappyHorse 分组、计费模式选按量——按次计费令牌无法路由):
脚本会自动从这个 .env 读取 Key,无需任何额外配置或环境变量
.env 里是你的密钥。如果这个技能要随项目仓库共享,务必把 .env 加进 .gitignore,不要提交到 git

③ 交给 Agent

  • 支持技能自动发现的 Agent(如 Claude Code):把整个 wan/ 目录放进它的技能目录——个人级 ~/.claude/skills/,或项目级 .claude/skills/(随仓库共享)。
  • 其他 Agent:按它各自的技能/插件约定放置;或者最简单——直接让 Agent「读一下这个文件夹里的 SKILL.md,并照着执行」 即可。
装好后就能用了,跳到 怎么用 看示例。

SKILL.md

新建 wan/SKILL.md,完整内容如下(description 写清「做什么 + 何时用」,Agent 会据此自动触发):
name 必须是小写字母 + 连字符。在支持斜杠命令的 Agent 里,目录名就是命令名——叫 wan/wan${CLAUDE_SKILL_DIR} 是 Claude Code 提供的技能目录变量;其他 Agent 直接用脚本的实际路径即可。

scripts/wan_video.py

新建 wan/scripts/wan_video.py,纯 Python 标准库实现,与本站各 API 参考页的请求代码一致、已实测可跑:

怎么切换系列

切换系列只需改 --model,两种值任选,模型 ID 由脚本按「系列 × 素材类型」自动推导:
模型 ID 自动推导表(不用记这些名字,脚本按素材自动选):

素材输入:本地图直接传(实测)

官方文档口径是「media 须为公网可访问的 https URL」,但我们实测两个系列都接受 base64 data URI——所以脚本对本地图片做了自动转换,-i photo.jpg--ref-image role.png 直接传本地路径即可,无需先上传图床。视频素材(--ref-video / --video)仍建议用公网 URL,大文件转 base64 体积膨胀约三分之一,容易超请求限制。

出片要等 2-5 分钟(重要)

视频生成是异步任务
  • 脚本已封装完整流程:提交(X-DashScope-Async 异步头)→ 每 8 秒轮询 → 完成后自动下载 mp4。720P/5s 实测全程约 45–155 秒,1080P 或长时长可能 5 分钟以上。
  • 轮询打印的 progress 长时间停在 30% 是正常现象(上游只上报 0/10/30/100 几档),不代表卡住。
  • Agent 执行时要给命令设长超时(600 秒以上)或放到后台跑——很多 Agent 的命令默认 2 分钟超时,会在出片前把脚本掐断。SKILL.md 里已写明这条。
  • 万一轮询超时(20 分钟),任务仍在服务端,脚本会打印 task_id 和查询命令。失败任务不计费;但重复提交会重复计费,脚本不做自动重试。

为什么一句话就能出视频

很多人好奇:我又没敲命令,怎么说句”生成一段视频”它就出片了? 原理是这样:Agent 启动时会先读取每个技能 SKILL.md 里的 description(一段很短的元数据,说明「这个技能做什么、什么时候该用」)。当你说出的需求匹配上这段描述的场景(比如”生成/做一段视频""把这张图做成动图""改一下这段视频”),Agent 就自动决定调用这个技能,去读完整的 SKILL.md 并运行脚本——整个过程你不用记任何命令。 不想靠 Agent 猜、想要百分百可控时,用下面的显性调用

怎么用

自然语言(隐式触发)

装好后直接对 Agent 说话即可:

显性调用(更可控)

  • 支持斜杠命令的 Agent(如 Claude Code):
  • 任意 Agent / 直接命令它跑脚本(最通用):

生成的视频在哪里

  • -o 只传文件名(如 -o cat.mp4)时,视频统一存到项目根目录下的 wan-output/ 文件夹(脚本自动创建),两个系列共用这个目录。
  • 「项目根目录」= 脚本从自身位置向上找到的第一个含 .git.claude 的目录——不管 Agent 在哪个目录运行,视频都落在项目里,不会跑进临时目录害你找不到。
  • 脚本完成后会打印一行完整绝对路径,附带文件大小和耗时,例如 视频已保存至 /Users/you/project/wan-output/tokyo.mp4(4.9 MB,耗时 153s,模型 wan2.7-t2v)
  • 实测出片自带音轨(AAC 双声道)。
  • 结果直链 24 小时过期,所以脚本一律先下载到本地——本地 mp4 才是交付物,不要把直链存起来当结果。
  • 带目录的路径(如 -o videos/cat.mp4 或绝对路径)时,按你给的路径存,不进 wan-output/

相关文档