SuperAPI AI 工具集

openrouter-video-generate

设计与创作

查看项目

更新于 10-16 07:05

技能介绍

OpenRouter Video Generation

该技能用于提交异步 OpenRouter 视频任务、轮询到终态,并保存已完成的视频文件。

默认工作流

优先使用当前环境中的 OpenRouter API 密钥。如果缺失,则依赖自带脚本自动查找最近包含 OPENROUTER_API_KEY 的项目 .env 文件,除非用户明确提供其他环境变量名或 env 文件路径。

从用户请求中选择模型。如果未指定模型,使用 bytedance/seedance-2.0,并说明用户可以覆盖该默认值。在假设支持特殊分辨率、宽高比、音频、图像或提供商选项之前,先进行模型发现。

使用 scripts/openrouter_video_generate.py,而不是手动构造请求和轮询循环。

将生成的视频保存到用户可见的输出目录;如果用户未指定,则默认为当前工作目录。

不要打印 API 密钥,也不要将它们直接放在命令行上,因为 shell 历史记录可能会捕获它们。

自带脚本

用一条命令提交、等待并下载:

python scripts/openrouter_video_generate.py generate
--prompt "a slow cinematic push-in on a neon cafe sign in the rain"
--model "bytedance/seedance-2.0"
--duration 5
--resolution 1080p
--aspect-ratio 16:9
--output-dir ./outputs

该脚本首先从当前环境读取 OPENROUTER_API_KEY。如果未设置,它会从当前工作目录向上搜索最近的 .env。使用 --api-key-env MY_OPENROUTER_KEY 指定其他变量名,或使用 --env-file ./path/to/.env 强制指定某个文件。

生成是异步的。该命令会立即打印任务 ID,默认每 30 秒轮询一次,并在完成后下载所有返回的输出。使用 --submit-only 可在提交后返回,之后用 status 或 download 恢复。

常用生成选项

只传递用户请求的、或所选模型支持的选项:

--prompt TEXT 为必填。

--model MODEL_ID 默认为 bytedance/seedance-2.0。

--duration SECONDS 设置片段时长。

--resolution 480p|720p|768p|1080p|1K|2K|4K 设置归一化分辨率。

--aspect-ratio 16:9|9:16|1:1|4:3|3:4|3:2|2:3|21:9|9:21 设置输出比例。

--size WIDTHxHEIGHT 可与分辨率加宽高比互换;不要将它们组合使用。

--first-frame PATH_OR_URL 和 --last-frame PATH_OR_URL 为图生视频提供精确的边界帧。

--reference PATH_OR_URL 可重复使用,用于风格或内容引导。本地图像会转换为 data URL。

--generate-audio 或 --no-generate-audio 在模型支持时显式控制音频。两者都省略则使用 API/模型默认值。

--seed INTEGER 在支持时请求确定性生成。

--callback-url HTTPS_URL 设置每个请求的 webhook。当另一个服务处理完成时,将其与 --submit-only 搭配使用。

--provider-options-json '{"google-vertex":{"parameters":{"negativePrompt":"blurry"}}}' 在 provider.options 下传递提供商特定选项。

--provider-options-file options.json 对较大的提供商选项更安全。

--raw-json payload.json 将额外的 OpenRouter 兼容请求字段合并到负载中。

--poll-interval 30 控制轮询频率,--timeout 1800 限制总等待时间。超时不会取消远程任务。

--dry-run 打印请求负载而不发起网络调用。

frame_images 在 OpenRouter 中优先于 input_references。每个请求最好只用一种模式,以免用户的参考被静默忽略。

模型发现与任务恢复

列出视频模型及其支持的分辨率、宽高比、尺寸、透传字段和定价:

python scripts/openrouter_video_generate.py models

检查或恢复已提交的任务:

python scripts/openrouter_video_generate.py status --job-id JOB_ID --json python scripts/openrouter_video_generate.py download --job-id JOB_ID --output-dir ./outputs

使用 download --index 0 可从多输出任务中获取一个输出。download 会先检查任务是否完成,然后使用返回的内容 URL,并在需要时对同源 OpenRouter 端点进行身份验证。在任何跨源重定向之前会移除身份验证。

输出与元数据

单个输出保存为 <output-prefix>.<ext>;多个输出保存为 <output-prefix>_001.<ext>、<output-prefix>_002.<ext>,依此类推。扩展名根据响应内容类型推断,默认为 .mp4。

脚本默认写入 <output-prefix>_metadata.json。它记录请求(省略 base64 图像主体)、最新任务响应和已下载文件路径。使用 --metadata-file PATH 选择其他路径,或使用 --no-metadata 跳过。

如果本地等待被中断或超时,请保留打印出的任务 ID 并使用 status 或 download;OpenRouter 任务会独立继续。

安全、成本与保留

视频生成可能会对用户的 OpenRouter 账户计费,时长或分辨率越高通常费用越高。在提交真实任务之前,确保模型、时长、分辨率、音频选择和输出模式符合用户意图。不确定时使用 models 或 --dry-run。

OpenRouter 视频生成不符合零数据保留(Zero Data Retention),因为异步结果必须暂时保留以便检索。如果在账户级别或通过请求字段启用了 ZDR 强制,则请求不会被路由。当这与用户的隐私要求冲突时,请告知用户。

对于 webhook 接收方,使用 HMAC-SHA256 针对完全原始的请求体验证 X-OpenRouter-Signature,拒绝过期时间戳,并使用 X-OpenRouter-Idempotency-Key 对投递去重。

故障排除

长时间处于 pending 或 in_progress 状态可能是正常的;视频生成可能需要几分钟。继续以合理的间隔轮询。

在 failed、cancelled 或 expired 时,报告返回的错误并保留任务元数据,而不是反复重新提交。

对于模型或参数错误,运行 models --json 并核实模型 ID 和所宣称的能力。

如果图像引导生成失败,请验证 URL 可访问或本地文件存在,并使用支持的图像格式。

本地轮询超时不意味着生成失败。请通过任务 ID 恢复,而不是创建重复的计费任务。