SKILL.md 7.3 KB


name: skill-video

description: 触发词:生成视频、做视频、AI视频、文生视频、图生视频、Veo、Sora。用 Veo 3.1 生成视频,含费用预估与省钱策略(按官方2倍计价)。

skill-video · Veo 3.1 视频生成

一、先看这段(必读)

网关 api.fmode.cn/v1/video/generations 目前不可用。 new-api 的 Google Veo 插件(plugins/tasks/google/plugin.js 第 44 行)用 GET 查任务,而 Google 要求 POST :fetchPredictOperation,所以永远返回 upstream task not found (HTTP 404)。

本技能绕过网关,直连上游 closeai。 通道已验证可出片(H.264 / 1280×720 / 8s)。

  • 上游 base:https://api.openai-proxy.org/google
  • 凭据:/opt/data/.fmode/secrets/closeai.key(渠道 3 的 key,勿外传)
  • 模型:veo-3.1-generate-001(标准)、veo-3.1-fast-generate-001(快速)

二、完整调用流程(三步)

第 1 步:提交生成

KEY=$(cat /opt/data/.fmode/secrets/closeai.key)
curl -s -X POST "https://api.openai-proxy.org/google/v1beta/models/veo-3.1-generate-001:predictLongRunning" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"instances":[{"prompt":"你的提示词"}],"parameters":{"aspectRatio":"16:9","durationSeconds":8}}'

返回:

{"name":"projects/wv-s-gemini0910/locations/global/publishers/google/models/veo-3.1-generate-001/operations/xxxx"}

第 2 步:轮询(★ 关键,别用 GET)

OP="刚才返回的完整 name"
curl -s -X POST "https://api.openai-proxy.org/google/v1beta/models/veo-3.1-generate-001:fetchPredictOperation" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d "{\"operationName\":\"$OP\"}"

必须是 POST + :fetchPredictOperation。 GET 查会 404。

判断:

  • "done": false 或字段不存在 → 继续等(间隔 15-20 秒)
  • "done": true → 完成了,取视频

第 3 步:取视频

{"done":true,"response":{"raiMediaFilteredCount":0,"videos":[{"bytesBase64Encoded":"...","mimeType":"video/mp4"}]}}

base64 解码写 mp4。注意 curl 要设 --max-time 300,视频有 2-3MB,默认超时会截断 JSON。

安全过滤

  • raiMediaFilteredCount > 0 → 有内容被安全策略拦了,看 raiMediaFilteredReasons
  • 视频为空 = 触发了内容审核,不扣费但也没结果

三、参数详解

instances(必填)

参数 类型 说明
prompt string 文本提示词,英文效果更稳
image object 图生视频:{"bytesBase64Encoded":"...","mimeType":"image/png"}

parameters(影响费用,重点看)

参数 可选值 默认 对费用影响
aspectRatio 16:9 / 9:16 16:9 不影响
durationSeconds 4 / 6 / 8 8 ★ 核心变量,按秒计费
resolution 720p / 1080p 720p 1080p 更贵
sampleCount 1-4 1 ★ 成倍增加费用
generateAudio true/false — 可能额外计费
negativePrompt string — 不影响
personGeneration allow_adult / dont_allow — 含人物时注意合规

四、费用计算(★ 技能必须自动算给用户看)

计价基准

模型 官方基础价 我方倍率 实际扣费
veo-3.1-generate-001 $1.38 / 次(8s, 720p) 2.0× $2.76
veo-3.1-fast-generate-001 $0.35 / 次(8s, 720p) 2.0× $0.70

倍率说明:new-api 渠道当前 group_ratio=2.5,用户要求按 官方 2 倍 计。技能按 2.0 报预算,实际扣费以网关为准。

估算公式

单条费用 ≈ 基础价 × (durationSeconds / 8) × (1080p ? 1.8 : 1.0) × sampleCount × 倍率

常用组合预算表(美元,已含 2 倍)

组合 标准版 快速版
8s · 720p · 1条 $2.76 $0.70
8s · 720p · 4条 $11.04 $2.80
4s · 720p · 1条 $1.38 $0.35
8s · 1080p · 1条 $4.97 $1.26
6s · 720p · 1条 $2.07 $0.53

★ 省钱四原则(技能要主动建议)

  1. 先 fast 试稿,定稿再用标准版 —— 省 75%。提示词没调好前,fast 足够看效果
  2. 时长按需缩短 —— 4s 比 8s 便宜一半。叙事能压到 4s 就压
  3. 一次多备选不如先出 1 条 —— 确认方向对了再加 sampleCount
  4. 1080p 留到最后 —— 720p 定稿再出高清,差 1.8 倍

技能必须做的费用前置动作

任何一次生成前,先报预估费用和替代方案:

本次预估:8s · 720p · 标准版 · 1条 = $2.76(约 ¥20)
省钱替代:先用 fast 试稿 $0.70,确认后再用标准版 = 合计 $3.46(比直接出 2 条标准版省 37%)
是否继续?

五、常见错误

报错 原因 解决
upstream task not found (HTTP 404) 用 GET 查了 改 POST :fetchPredictOperation
Invalid task protocol request 走了网关 /v1/videos 直连上游,用 /v1beta/models/{m}:predictLongRunning
json.decoder.JSONDecodeError curl 超时截断 --max-time 300
raiMediaFilteredCount > 0 触发安全审核 改提示词,避开人物/暴力/违禁
401 key 不对 重取 /opt/data/.fmode/secrets/closeai.key

六、提示词写法

Veo 对英文更敏感。结构:

[主体] + [动作] + [环境] + [镜头] + [光线] + [风格]

例:

A golden retriever running on the beach at sunset, tracking shot,
warm golden hour light, cinematic, shallow depth of field, 4k

中文提示词也能用,但英文出片质量更稳。 技能默认把中文需求翻成英文再提交。


七、脚本

scripts/gen.mjs —— 一条命令完成 提交→轮询→下载:

node scripts/gen.mjs --prompt "..." --duration 8 --ratio 16:9 --model fast --out /path/to.mp4

参数:

  • --prompt 必填
  • --duration 4/6/8(默认 8)
  • --ratio 16:9 / 9:16
  • --model standard / fast(默认 fast,省钱)
  • --resolution 720p / 1080p
  • --count 1-4(默认 1)
  • --estimate-only 只算钱不生成 ---

八、网关支持情况的实测结论(2026-11-05 验证)

网关 api.fmode.cn 的视频模型只有 2 个,且当前都不可用:

模型 状态
veo-3.1-generate-001 ❌ 任务查询 404(插件 bug)
veo-3.1-fast-generate-001 ❌ 同上

以下模型网关均未接入(全部返回 503,不是名字写错,是通道不存在):

jimeng-3.0 / jimeng-video / seedance-1.0 / seedance-pro / doubao-seedance-1-0-pro / doubao-seedance-1-0-lite / kling-v2 / minimax-hailuo-02 / wan-2.5

有人会说「即梦的 Seedance」,注意区分: Seedream(doubao-seedream-4-0)是图像模型,网关支持且正常(走 /v1/images/generations)。 Seedance 是视频模型,网关没有。

结论:视频生成只能用 Veo 3.1,且必须直连上游 closeai,不能走网关。

图像走网关,视频走上游

如果任务需要「图片 + 视频」混合:

类型 走哪里 端点
图像 网关(走计费) POST https://api.fmode.cn/v1/images/generations,模型 doubao-seedream-4-0-250828
视频 上游直连(不走计费) 本文档第二节流程