使用指南
Kling Transformation 视频风格重绘 API:为每条短视频统一视觉风格
使用 kling-3.0-omni/transformation,将现有素材重塑为统一的短视频风格——两段互不相关的源视频,同一组提示词预设,均以真实输出形式嵌入本文。
如果你发布短视频,你最大的敌人不是创意——而是视觉一致性。你在不同时间、不同光线、不同来源下拍摄或生成片段,结果你的信息流看起来像是五个不同创作者的作品。通常的解决办法是在剪辑软件里花上几个小时手动调色和匹配滤镜。
kling-3.0-omni/transformation 提供了另一条路径:给它一段现有视频和一段提示词,它就会把整个画面重绘——场景、色调、质感、主体——同时完整保留原始的镜头运动和时序。最后这一点才是关键。它不是重新生成你的视频,而是给你的视频换一层皮。这意味着你可以拿一堆互不相关的片段,让它们全部跑过同一段提示词,从而强制形成单一、统一的视觉风格。
本文是我们的transformation API 使用指南的短视频制作配套文章。那篇操作指南讲的是原始的 create → poll → download 流程;本文则聚焦于对创作者真正重要的工作流:把一系列片段统一到同一视觉风格下,并用一个脚本批量重绘整个批次。下方每个视频都是真实的 /v1/tasks 输出,附带其确切提示词和费用。
关键技巧:可复用的“视觉预设”
下面是一段被重绘成手绘水彩绘本风格的视频。源素材是一只纸船在城市排水沟里的平淡、阴郁夜景——下方版本是模型返回的结果:
整个重绘完全由提示词驱动——这个端点没有 strength 或 fidelity 滑块。输出偏离源素材的程度,取决于你的文字推动的力度。这是特性,不是限制:这意味着你的提示词就是预设。写一次,保存确切的字符串,然后在每个你想匹配的片段上逐字复用。
下面就是生成上述视频的提示词,可直接复制粘贴:
Restyle this video as a hand-painted watercolor storybook illustration:
soft visible brushstroke textures, a warm golden-amber and muted teal
palette, gentle paper grain, softly glowing highlights, and a cozy
picture-book mood. Keep the exact camera motion, framing, timing, and
subject movement from the source clip completely unchanged — change only
the visual style, never the action.
注意这两半部分。前半部分是视觉风格:色调、质感、氛围——你会写进品牌风格指南的那部分。后半部分是保留运动和时序的硬性指令。去掉后半部分,你就会滑向重新生成;保留它,你就能得到忠实的换皮效果。对于短视频系列来说,这种拆分正是你想要的:视觉风格在片段之间传递,运动则保持每个镜头原生。
证据:一个预设,两段互不相关的片段
一个风格预设只有在应用于它从未设计过的素材时依然有效,才算有用。所以这里有两段完全不同的源片段,使用上述完全相同的提示词字符串重绘——除了输入视频外,两次运行之间没有任何改动。
片段 A——重绘前:一只纸船在夜晚霓虹灯照亮的城市排水沟里漂流。
片段 B——重绘前:黎明时分,薄雾笼罩的港口停泊着木制渔船。不同的主体、不同的时段、不同的色调、不同的镜头节奏。
现在看片段 B 应用同一预设后的重绘结果:
把两个重绘输出并排放在一起,它们读起来像是一套匹配的作品——同样的琥珀色与青绿色调、同样的纸纹边缘、同样的绘本柔和感——尽管一个源自寒冷的城市夜晚,另一个源自雾蒙蒙的海边清晨。这就是风格统一:互不相关的素材,一个可辨识的视觉风格。而且在两个输出中,原始运动都完好无损——纸船依然沿同样的路径漂流,港口镜头依然以同样的方式平移。
重绘整个素材库:异步批处理
任何真正有量的短视频都意味着几十上百个片段,而不是两个。你不会想用一次一个阻塞调用的方式来重绘它们。任务 API 是异步的,所以正确的模式是:先一次性提交所有片段,然后在它们完成时收集结果。
schema 很小——input 里只有三个字段:prompt、video_urls(恰好一个公开源 URL)和 resolution(720p、1080p 或 4k)。下面是一个紧凑的批量运行器,将同一个预设应用到一组片段上:
import os, time, json, requests
API = "https://api.hiapi.ai/v1/tasks"
TOKEN = os.environ["HIAPI_API_KEY"]
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
PRESET = (
"Restyle this video as a hand-painted watercolor storybook illustration: "
"soft visible brushstroke textures, a warm golden-amber and muted teal palette, "
"gentle paper grain, softly glowing highlights, and a cozy picture-book mood. "
"Keep the exact camera motion, framing, timing, and subject movement from the "
"source clip completely unchanged — change only the visual style, never the action."
)
# Your clip library — the SAME preset is applied to every one of them.
SOURCE_CLIPS = [
"https://example.com/clips/hook-01.mp4",
"https://example.com/clips/hook-02.mp4",
# ...dozens more
]
def submit(video_url: str) -> str:
body = {
"model": "kling-3.0-omni/transformation",
"input": {"prompt": PRESET, "video_urls": [video_url], "resolution": "720p"},
}
r = requests.post(API, headers=HEADERS, json=body, timeout=60)
return r.json()["data"]["taskId"]
# 1) Fire off every task first — they run in parallel on the platform.
tasks = {submit(url): url for url in SOURCE_CLIPS}
print(f"submitted {len(tasks)} restyle tasks")
# 2) Poll until each one reaches a terminal state, then grab the output URL.
pending = set(tasks)
outputs = {}
while pending:
for task_id in list(pending):
r = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=40)
data = r.json().get("data", {})
status = data.get("status")
if status == "success":
outputs[task_id] = data["output"][0]["url"]
pending.discard(task_id)
elif status == "fail":
print(f"{task_id} failed: {data.get('error')}")
pending.discard(task_id)
if pending:
time.sleep(8)
# 3) Download immediately — output URLs are short-lived signed links.
for task_id, url in outputs.items():
dest = f"restyled-{task_id}.mp4"
with open(dest, "wb") as f:
f.write(requests.get(url, timeout=120).content)
print("saved", dest)
有两点值得特别指出,操作指南中对这两点都有深入讲解:立即下载输出(返回的 URL 会过期),对于大批量任务,优先使用 callback 而不是频繁轮询,这样你就不会反复冲击详情端点。异步任务文档中有请求/响应的结构说明。
短视频实用建议
- 保持源片段简短。费用按秒计算,所以短的钩子既更便宜也更快。上面两段 3 秒片段在 720p 下每段约 $0.43(定价见下文)。
- 根据平台选择分辨率,而不是你的虚荣心。截至 2026 年 10 月,
kling-3.0-omni/transformation的价格为 720p 每秒 $0.143、1080p 每秒 $0.193、4K 每秒 $0.479。对于反正会被重新压缩的竖屏信息流,720p–1080p 通常是甜点区间;4K 用于主打作品。请始终在定价页面确认当前数字。 - 锁定预设,然后不要碰它。一旦你针对每个片段微调措辞,你就失去了当初做重绘所要的一致性。像对待代码一样给你的预设字符串做版本管理。
- 运动是继承来的,不是创作出来的。输出时长和运动跟随源片段。如果你需要模型根据提示词或静态图创建运动,那是另一种工具——参见文生视频或图生视频。
常见问题
我能控制重绘的强度吗? 不能通过参数控制——没有 strength 或 fidelity 字段。通过措辞来控制。对于轻微的调色,描述一个轻微的色彩/质感变化,并强调“其余保持原始外观”;对于像水彩示例那样的完全重绘,堆叠风格词汇。重绘强度完全存在于你的提示词中。
它会保留我的原始运动,还是重新动画化场景? 它会保留源运动和时序——这是 transformation 端点的定义性行为。提示词中明确的“保持确切的镜头运动和时序”条款会强化这一点。输出时长与输入片段匹配。
这与图生视频或参考生视频有何不同? 图生视频将静态图动画化为运动;参考生视频从参考媒体中借用元素到新生成的片段中。Transformation 从成品视频出发,只改变其风格,保留你已经拥有的运动。关于其他模式,参见参考生视频提示词配方。
对于短视频,什么源分辨率和长度效果最好? 输入干净、光线充足的源素材——模型会重绘它能看见的内容,所以模糊的源素材会得到模糊的重绘结果。钩子和 B-roll 保持几秒钟;批量处理许多短片段,而不是一个长片段,这既是为了成本,也是为了上面展示的逐片段并行性。
我可以在整个系列中使用一个预设吗?
可以——这正是重点。对每个片段复用完全相同的提示词字符串,它们就会共享同一视觉风格。上面的批处理脚本正是这样做的:一个 PRESET 常量,应用于列表中的每个源素材。
给你的信息流一个统一的视觉风格
如果你的短视频看起来像是来自不同账号,kling-3.0-omni/transformation 是把它们拉到一起的最快方式:写一个视觉预设,应用到所有内容,保留每个片段的原生运动。拿一段样片,复制上面的水彩预设(或写你自己的),然后在 kling-3.0-omni/transformation 模型页面上运行它。当你准备好编写批处理脚本时,操作指南有完整的客户端。