sdk
用 JSX 声明式语法统一调用 Kling/Flux/ElevenLabs 等多平台 AI 视频能力的 TypeScript SDK
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
用 JSX 声明式语法统一调用 Kling/Flux/ElevenLabs 等多平台 AI 视频能力的 TypeScript SDK
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
varg 是由独立开发者 varg 创立的 AI 视频生成 SDK,通过 JSX 语法将 AI 视频创作从命令式代码转变为声明式组件化编程。只需编写类似 React 的 TSX 文件,即可调用 Kling v3、Flux、ElevenLabs、Wan 2.5 等多个顶级 AI 提供商的能力,生成包含视频、图像、配音、音乐、字幕的完整短片。自 2025 年 11 月上线以来,该项目已获得 325 颗 GitHub Stars,吸引了大量 AI 创作者和开发者关注。
2025 年下半年,AI 视频生成技术迎来爆发式突破。Kling(快手可灵)发布 v3 版本,OpenAI Sora 正式开放 API,Runway、Flux 持续迭代。然而,开发者面临一个尴尬的现实:每个平台都有独立的 SDK、不同的 API 认证体系、各自的参数命名方式。想同时用 Kling 生成主体、用 ElevenLabs 做配音、用 Flux 做图转视频?意味着要写三套不同的接入代码,理解三个平台各自的异步任务轮询机制,处理三种不同的输出格式。 varg 正是为解决这一痛点而生。它的核心理念是**「一个 API Key,一个入口,所有 AI 视频能力」**。开发者不再需要逐一对接每个平台,varg SDK 作为统一网关屏蔽了底层差异,通过 Vercel AI SDK 的标准化接口暴露所有功能。
varg 的代码结构可分为三层清晰解耦:
第一层:Provider 层(src/providers/)负责对接各 AI 平台。每个 Provider(如 FalProvider、ElevenLabsProvider、ReplicateProvider)封装特定平台的 SDK,将平台特有调用转化为统一的 Provider 接口。Provider 之间相互独立,新增一个 AI 平台只需新增一个 Provider 文件。
第二层:Core 层(src/core/)是整个 SDK 的调度引擎。Registry 负责维护所有模型(Model)、动作(Action)和技能(Skill)的定义,并提供名称解析和搜索能力。Executor 负责路由执行逻辑,根据定义类型调用对应的 Provider;Schema 层通过 Zod 提供完整的输入输出类型校验,保证各 Provider 之间的数据一致性。
第三层:AI-SDK 层(src/ai-sdk/)基于 Vercel AI SDK 封装高层能力,包括图像生成(generateImage)、视频生成(generateVideo)、音乐生成(generateMusic)、文件缓存(withCache)等。Middleware 机制允许在模型调用前后插入逻辑,例如 wrapVideoModel 用于处理视频占位符,musicPlaceholderFallbackMiddleware 用于流式音乐预览。
此外,src/react/ 模块提供了完整的 JSX 运行时和渲染引擎。通过 vargai render 命令,本地即可执行 <Render> → <Clip> → <Video> / <Speech> / <Music> 组件树,最终输出 MP4 文件。渲染过程基于 Remotion(专业视频合成框架),支持 67 种 GL 过渡效果(fade、crossfade、cube 等),以及 9 种字幕样式(tiktok、karaoke、bounce、typewriter)。
图1:vargHQ 项目创始人头像
varg 最具创新性的设计是将 JSX 引入视频创作领域。传统视频生成 API 需要写这样的代码:
// 传统方式:命令式,参数繁多,难以组合
const video = await kling.generateVideo({ prompt: 'cat waving', model: 'kling-v3' });
const audio = await elevenLabs.speak({ text: 'Hello!', voice: 'adam' });
const merged = await ffmpeg.combine(video, audio);
而 varg 的方式完全不同:
// varg 方式:声明式,组件化,可读性强
export default (
<Render width={1080} height={1920}>
<Music prompt='upbeat electronic' model={varg.musicModel()} volume={0.15} />
<Clip duration={5}>
<Video
prompt={{ text: 'cat waves hello', images: [character] }}
model={varg.videoModel('kling-v3')}
/>
</Clip>
<Captions src={voiceover} style='tiktok' color='#ffffff' withAudio />
</Render>
);
这段代码定义了一个 5 秒的竖版(9:16)短视频,包含 AI 生成的角色动画、背景音乐和自动字幕。<Clip> 对应时间轴上的一个片段,可以叠加多层;<Render> 是根容器,指定输出分辨率和帧率;<Music> 和 <Captions> 则分别添加背景音乐和字幕轨道。
更复杂的场景比如虚拟主播 talking head,需要先用 AI 生成角色图像,再通过 Kling 制作口型同步动画。这展示了 varg 组件之间数据流的灵活性:前一个 Video 的输出可以作为下一个 Video 的输入,形成「图→视频→口型同步」的处理流水线。
varg 不仅仅是一个 SDK,它还深度集成了 AI Agent 生态。项目支持安装为 Claude Code、Cursor、Windsurf 等 AI 编程工具的「技能」:
npx -y skills add vargHQ/skills --all --copy -y
export VARG_API_KEY=***
claude 'create a 10-second product video for white sneakers, 9:16'
这意味着用户无需编写任何 TSX 代码,只需用自然语言描述需求,Agent 自动生成 JSX 并渲染出视频。背后的原理是 varg 提供了 Skill Definition 格式,Agent 可以理解视频创作的「意图」,将其转化为符合 varg 语法的声明式组件。
varg 的依赖栈非常「豪华」:
varg 没有提供 Dockerfile 或 docker-compose.yml,不支持 Kubernetes 部署。这是有意为之的设计:视频渲染涉及大量 FFmpeg 进程和 GPU 调用,更适合在本地开发环境或专门的渲染服务器上运行,而非容器化。 不过,varg 提供了极其顺滑的本地开发体验:
bun install vargai ai # 安装 SDK
bunx vargai init # 初始化项目(登录、配置、生成模板)
bunx vargai render hello.tsx # 渲染 TSX 文件
vargai init 会自动完成 API 认证、目录结构创建和 hello.tsx 模板生成,全程无需手动配置。渲染后的视频支持自动上传到 Cloudflare R2 或 AWS S3,并生成公开访问 URL。
varg 代表了一个重要趋势:AI 工具的抽象层正在从「API 封装」向「声明式框架」演进。React 改变了前端开发的生产力,varg 正在尝试用类似的方式改变视频创作——让非专业程序员也能通过自然语言和声明式语法使用顶级 AI 视频能力。 从增长数据看,该项目 325 Stars、23 Forks、59 个 open issues(社区活跃),且 default_branch 保持高频更新(最近一次 push 在 2026-06-08),说明作者在持续维护。但也需要注意几个局限:
分析基于 GitHub 仓库源码(2026-06-29)