This workflow applies a consistent, frame-by-frame style transfer to any input video using the Flux.2 Klein 4b Distilled image editing model. It decodes your video with LoadVideo and reads resolution/FPS via GetVideoComponents, then uses VHS_SelectEveryNthImage to choose how densely to process frames (every frame, or every Nth for speed). Frames are organized with ImpactImageBatchToImageList so each image can be paired with a per-frame prompt.

Style prompts are generated and aligned with frames using a small prompt pipeline: GeminiNode can draft style-transfer lines following the Author Notes, RegexReplace cleans and normalizes the text (for example, removing numbering and enforcing "the source frame" phrasing), and FL_PromptMulti distributes one prompt per frame in a repeating cycle. Each frame and its corresponding prompt are fed into the Flux.2 Klein 4b editing node (the Flux.2 Klein 4b Distilled image editing model) to produce a stylized image while preserving the source frame’s structure. The processed images are repacked with ImageListToImageBatch, converted to a video using CreateVideo (matching the original FPS from GetVideoComponents), previewed via PreviewAny as needed, and written to disk with SaveVideo.

API

通过代码使用此工作流

每个 Comfy 工作流都是一个 JSON 图。下面的内容就是此工作流的完整数据,ComfyUI 运行时也是如此——你可以从该 URL 获取、放入版本控制,或在 ComfyUI 中加载并逐节点运行。

41f029c74cd4.json
正在获取工作流 JSON…

使用 Comfy SDK 从 TypeScript 或 Python 运行。相同代码可用于 Comfy Cloud 或你自托管的 ComfyUI——只需更改基础 URL。

// Install (beta)
npm i @comfyorg/sdk

// Run this workflow (TypeScript)
import { Comfy } from "@comfyorg/sdk";

const client = new Comfy({ apiKey: "comfyui-..." });
const wf = await client.workflows.fromFile("workflow_api.json");
const job = await client.run(wf);
await job.getOutputs("<output-node-id>")[0].toFile("output.png");

SDK 需要 API 格式的工作流:在 ComfyUI 中打开此工作流,使用 文件 → 导出工作流(API)。

Comfy Cloud API 访问需要包含 API 密钥的套餐。

常见问题

常见问题

查看所有工作流
Showing 30 of 30 templates