EvoLink Gemini Omni Flash Image-to-Video (Official)
Turn one still into a 10-second clip on Google's cheap video tier
- first_frame
- video
- task_id
- status_info
- result_urls
- response_json
You've got a good image - a portrait, a scene, a frame from a storyboard - and you want to see it move. That's the whole job of EvoLink_GeminiOmniI2V: give it one starting frame and a line of description, and Google's Gemini Omni Flash animates it into a clip of up to 10 seconds. It's Google's fast, cheap image-to-video tier, the budget sibling of Veo, and it's the node to reach for when you're iterating on ideas rather than doing a final render.
The inputs that matter
Two of them actually matter:
prompt(required) - describe the motion and the shot. Keep it about what happens and how the camera behaves; this is a short-clip model, not a feature-film director. Chinese prompts work fine.first_frame(required) - the IMAGE input. Load Image → this socket. That's the entire setup; the aspect ratio follows what you set (below).
Then a couple of dials:
duration- 3 to 10 seconds, any integer, default 10.aspect_ratio-16:9,9:16, orauto(default 16:9).autolets the model adapt to the input frame.
The usual api_key (fill once, stored locally, leave blank after) and timeout_seconds (default 1200) round it out.
How it works
The pack uploads your frame through EvoLink's own file channel (files-api.evolink.ai) - no third-party image host, and the file is auto-deleted after 72 hours - then submits to POST /v1/videos/generations and polls the task until it completes, showing a progress bar on the node. The finished clip is downloaded to your machine as a VIDEO object, so you connect the video output to a native Save Video node to write it to disk. Alongside it you get task_id (for the task logs), status_info (model, runtime, credits used), result_urls (raw links, 24h expiry), and response_json.
One caveat that trips people up: because the video is returned in-memory as a VIDEO type, the pack needs a recent ComfyUI that ships comfy_api's VideoFromFile. On an old install you'll get an explicit error about missing VIDEO support - the fix is updating ComfyUI, not reinstalling the pack.
Installing
No GPU, no model weights, no heavy dependencies. The only Python requirement is requests:
cd ComfyUI/custom_nodes
git clone https://github.com/deeplearning-goethe/comfyui-evolink.git
then fully restart ComfyUI. Or search EvoLink in ComfyUI Manager. If the nodes don't appear, you either have a nested-folder problem (the pack's __init__.py must sit directly in custom_nodes/comfyui-evolink/) or you didn't fully restart.
Troubleshooting
401 bad key, 402 out of credits, 429 rate limited. A 403 means your account doesn't have access to this model - worth knowing if you're on a fresh account. If you're behind a VPN, whitelist api.evolink.ai and files-api.evolink.ai for direct connection; the pack's own code flags this as a known failure. And remember the "generated but I don't see anything" trap: you must connect the video output to something that previews or saves it. Rerunning after a fix doesn't double-charge - unchanged params reuse ComfyUI's cache.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | 镜头/画面描述,支持中文。 | |
| first_frame | IMAGE | 首帧图(必接) | |
| durationopt | INT | 103–10 | 视频时长(秒),3~10 任意整数 |
| aspect_ratioopt | COMBO | 16:9 | 画幅比例 |
| api_keyopt | STRING | EvoLink API Key(sk- 开头)。首次填写后自动保存到本机配置,之后可留空。分享工作流前请清空此框。获取:evolink.ai/dashboard/keys | |
| timeout_secondsopt | INT | 120060–3600 | 最长等待时间;生成失败或审核拦截的任务不扣费 |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | 生成结果(已下载落地,可直连保存节点) |
| task_id | STRING | EvoLink 任务 ID,可到 evolink.ai/zh/dashboard/logs 查询 |
| status_info | STRING | 人读状态摘要(模型/用时/消耗 credits) |
| result_urls | STRING | 结果原始链接,每行一个(24 小时过期) |
| response_json | STRING | 平台 GET /v1/tasks/{id} 的完整 JSON 响应(status/usage/results 等),供下游节点解析 |