mcpField
V
varg-ai

varg-ai

github.com/varghq创意与媒体2174 次安装今天更新
代码仓库

关于 varg-ai

指导 Agent 使用 varg.ai 生成图像、视频、语音和音乐,内容包括认证、渲染、模型选择及成本控制迭代,面向制作媒体素材或合成视频项目的用户。

主要功能

  1. 01API 密钥设置与认证流程
  2. 02云端和本地渲染指引
  3. 03图像、视频和语音生成模式
  4. 04模型与时长限制检查
  5. 05价格估算与缓存迭代
  6. 06使用 JSX 合成视频

适用场景

  1. 01通过 API 生成单张图像
  2. 02渲染合成视频项目
  3. 03按时长限制选择模型
  4. 04迭代媒体内容并跟踪成本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/varghq/skills --skill varg-ai

安装后在 Claude Code 中输入/varg-ai确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
byok.md
cloud-render.md
common-errors.md
components.md
gateway-api.md
local-render.md
models.md
prompting.md
recipes.md
templates.md
scripts/
setup.sh
setup.ts

详细介绍

版本检查(每个会话运行一次)

此技能的版本为 2.0.4。每个会话首次使用前,请检查是否有更新:

curl -sf https://raw.githubusercontent.com/vargHQ/skills/main/varg-ai/SKILL.md | grep 'version:' | head -1

如果远程版本高于 2.0.4,请更新并重新阅读此文件:

npx -y skills update

设置(首次使用前必须完成)

生成任何内容前,请检查身份验证并确定渲染模式。 请勿运行交互式 CLI 工具(例如 bunx vargai init)——它们需要标准输入,而 Agent 无法提供。请改用下面基于 curl 的流程。

1. 检查 API 密钥
echo "${VARG_API_KEY:-}" && cat ~/.varg/credentials 2>/dev/null

如果已设置 VARG_API_KEY(通过环境变量或凭据文件),请跳到步骤 2。

如果两者都不存在,请对用户进行身份验证。先尝试选项 A,失败后再尝试选项 B。

选项 A:用户已有 API 密钥

询问用户是否有 VARG_API_KEY。如果有,告诉他们在终端中导出:

export VARG_API_KEY=<their_key>

**重要:**请勿要求用户将原始密钥粘贴给你。请他们自行运行 export 命令。然后跳到下面的“保存凭据”。

选项 B:通过电子邮件注册 / 登录(OTP)

  1. 询问用户的电子邮件地址。
  2. 向其电子邮箱发送一次性验证码:
curl -s -X POST https://app.varg.ai/api/auth/cli/send-otp \
  -H "Content-Type: application/json" \
  -d '{"email":"USER_EMAIL"}'
  1. 告诉用户:“请查收收件箱,获取来自 varg.ai 的 6 位验证码”
  2. 询问用户验证码,然后一步完成验证并捕获响应:
VARG_AUTH=$(curl -s -X POST https://app.varg.ai/api/auth/cli/verify-otp \
  -H "Content-Type: application/json" \
  -d '{"email":"USER_EMAIL","code":"THE_6_DIGIT_CODE"}')
export VARG_API_KEY=$(echo "$VARG_AUTH" | grep -o '"api_key":"[^"]*"' | cut -d'"' -f4)
echo "Authenticated. Balance: $(echo "$VARG_AUTH" | grep -o '"balance_cents":[0-9]*' | cut -d: -f2) credits"

响应包含 {"api_key":"varg_xxx","email":"...","balance_cents":0,"access_token":"..."}。 密钥现已存入 $VARG_API_KEY——切勿直接引用原始值。

保存凭据

设置好 VARG_API_KEY(通过任一选项)后,请将其全局保存并验证。始终引用 $VARG_API_KEY——切勿引用原始值:

mkdir -p ~/.varg && echo "{\"api_key\":\"$VARG_API_KEY\",\"email\":\"USER_EMAIL\",\"created_at\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}" > ~/.varg/credentials && chmod 600 ~/.varg/credentials

验证密钥是否有效:

curl -s -H "Authorization: Bearer $VARG_API_KEY" https://api.varg.ai/v2/billing/balance

你应会收到 {"available": ..., "total_balance": ..., ...}(数值以积分 / 美分为单位)。如果收到 401,说明密钥无效——请用户仔细检查。

如果项目中存在 .env 文件,也请将密钥添加进去:

echo "VARG_API_KEY=$VARG_API_KEY" >> .env

检查余额并充值

检查 verify-otp 响应中的 balance_cents,或上面余额查询中的 available。如果余额为 0(或不足以完成用户的任务),用户需要先充值才能生成内容。1 积分 = 1 美分。普通视频的费用约为 $2-5(200-500 积分)。

可用套餐:

套餐 ID积分价格
credits-20002,000$20
credits-50005,000$50
credits-1000010,000(推荐)$100
credits-2000020,000$200
credits-5000050,000$500
credits-100000100,000$1,000

询问用户想购买哪个套餐,然后:

  • 如果你有 access_token(来自选项 B 的电子邮件 OTP),请捕获该令牌并创建 Stripe 结账会话:
VARG_ACCESS_TOKEN=$(echo "$VARG_AUTH" | grep -o '"access_token":"[^"]*"' | cut -d'"' -f4)
curl -s -X POST https://app.varg.ai/api/billing/checkout \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $VARG_ACCESS_TOKEN" \
  -H "Origin: https://app.varg.ai" \
  -d '{"packageId":"PACKAGE_ID"}'

响应:{"url":"https://checkout.stripe.com/..."}

告诉用户在浏览器中打开该 URL 完成付款。付款后会立即添加积分。

2. 确定渲染模式
bunffmpeg模式
否否云端渲染 —— 阅读 cloud-render.md
是否云端渲染 —— 阅读 cloud-render.md
是是本地渲染(推荐)—— 阅读 local-render.md

关键规则

你所了解的 varg 很可能已经过时。编写代码前,请务必先对照此技能及其参考资料进行核实。

  1. 切勿猜测模型 ID——请查阅 models.md,了解当前模型、定价和限制。
  2. 媒体使用函数调用,组合使用 JSX——Image({...}) 用于创建媒体,<Clip> 用于组合时间线。切勿编写 <Image prompt="..." />。
  3. 缓存至关重要——相同的提示词和参数 = 立即命中缓存,费用为 $0。迭代时,保持不变的提示词完全一致。切勿清除缓存。
  4. 每个 Video 只能有一张图像——Video({ prompt: { images: [img] } }) 只能接收一张图像。多张图像会导致错误。
  5. 不同模型的时长限制不同——kling_v3:3-15 秒(仅限整数)。kling_v2_5:仅限 5 或 10 秒。请查阅 models.md。
  6. 网关命名空间——通过网关(两种模式均适用)时,请使用 providerOptions: { varg: {...} },不要使用 fal。
  7. 渲染需要付费——1 个积分 = 1 美分。一个典型的 3 个片段视频需要 $2-5。迭代时,请使用预览模式(本地)或低成本模型。
  8. API 密钥安全——切勿将原始 API 密钥值写入 bash 命令。获取密钥后(从用户处或 OTP 响应中),立即执行 export VARG_API_KEY=...,并在之后的所有命令中使用 $VARG_API_KEY。这样可以防止密钥泄露到对话上下文和终端历史记录中。

快速开始

云端渲染(无需 bun/ffmpeg)
# Submit TSX code to the render service — returns a job: {"id": "job_xxx", "status": "queued", ...}
curl -s -X POST https://api.varg.ai/v2/render \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code": "const img = Image({ model: varg.imageModel(\"nano_banana_pro\"), prompt: \"a cabin in mountains at sunset\", aspectRatio: \"16:9\" });\nexport default (<Render width={1920} height={1080}><Clip duration={3}>{img}</Clip></Render>);"}'

# Poll for result (repeat until "completed" or "failed"; video at output.outputs[0].url)
curl -s https://api.varg.ai/v2/jobs/JOB_ID \
  -H "Authorization: Bearer $VARG_API_KEY"

详情请见:cloud-render.md

本地渲染(bun + ffmpeg)
/** @jsxImportSource vargai */
import { Render, Clip, Image } from "vargai/react"
import { createVarg } from "vargai/ai"

const varg = createVarg({ apiKey: process.env.VARG_API_KEY! })

const img = Image({
  model: varg.imageModel("nano_banana_pro"),
  prompt: "a cabin in mountains at sunset",
  aspectRatio: "16:9"
})

export default (
  <Render width={1920} height={1080}>
    <Clip duration={3}>{img}</Clip>
  </Render>
)
bunx vargai render video.tsx --preview   # free preview
bunx vargai render video.tsx --verbose   # full render (costs credits)

详情请见:local-render.md

单个素材(无需视频合成)

如果只需生成单张图像、视频、语音或音乐,而不构建多片段模板:

curl -X POST https://api.varg.ai/v2/image \
  -H "Authorization: Bearer $VARG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "nano_banana_pro", "prompt": "a sunset over mountains"}'

完整 API 参考:gateway-api.md

如何编写视频代码

视频代码分为两层:媒体生成(函数调用)和合成(JSX)。

// 1. GENERATE media via function calls
const img = Image({ model: ..., prompt: "..." })
const vid = Video({ model: ..., prompt: { text: "...", images: [img] }, duration: 5 })
const voice = Speech({ model: ..., voice: "rachel", children: "Hello!" })

// 2. COMPOSE via JSX tree
export default (
  <Render width={1080} height={1920}>
    <Music model={...} prompt="upbeat electronic" duration={10} volume={0.3} />
    <Clip duration={5}>
      {vid}
      <Title position="bottom">Welcome</Title>
    </Clip>
    <Captions src={voice} style="tiktok" withAudio />
  </Render>
)
组件概要
组件类型用途
Image()函数调用生成静态图像
Video()函数调用生成视频(文本转视频或图像转视频)
Speech()函数调用文本转语音音频
<Render>JSX根容器——设置宽度、高度和 fps
<Clip>JSX时间线片段——设置时长和转场
<Music>JSX背景音频(务必设置 duration!)
<Captions>JSX根据 Speech 生成字幕轨道
<Title>JSX文字叠加层
<Overlay>JSX定位图层
<Split> / <Grid>JSX布局辅助组件

完整属性列表:components.md

提供方差异(云端与本地)

两种模式的所有模型都使用 varg.*。唯一的区别是导入方式:

云端渲染本地渲染
无需导入(全局变量会自动注入)import { ... } from "vargai/react" + import { createVarg } from "vargai/ai"
varg.imageModel("nano_banana_pro")varg.imageModel("nano_banana_pro")
varg.videoModel("kling_v3")varg.videoModel("kling_v3")
varg.speechModel("eleven_v3")varg.speechModel("eleven_v3")

始终使用 varg.*Model() 和 VARG_API_KEY。它负责处理路由、缓存和计费,只需一个密钥即可使用。v2 不支持通过 API 使用 BYOK——请参阅 byok.md,了解可行的方案(仅限 local-render 中的直接提供方模块)。

成本与迭代

  • 1 个积分 = 1 美分。 grok_imagine_image = 4 个积分,nano_banana_pro = 126 个积分,kling_v3(5 秒)= 221 个积分,sora_2(5 秒)= 105 个积分,语音 = 约 105 个积分。实时目录:GET https://api.varg.ai/v2/pricing(无需身份验证)。估算任意请求:POST /v2/estimate。
  • 缓存可以节省费用。 迭代期间,保持不变的提示词逐字完全一致。
  • 先进行预览(仅限本地模式):--preview 会生成免费的占位内容,用于验证结构。
  • 完整定价:models.md

参考资料

根据需要按需加载:

需求参考资料加载时机
通过 API 渲染cloud-render.md没有 bun/ffmpeg,或用户想要云端渲染
本地渲染local-render.md已安装 bun + ffmpeg
模式与工作流recipes.md口播视频、角色一致性、幻灯片、口型同步
模型选择models.md选择模型、查询价格、了解时长限制
组件属性components.md需要了解任何组件的详细属性
优化提示词prompting.md用户想要电影感或高质量效果
REST APIgateway-api.md生成单个素材或了解 Render API 详情
调试common-errors.md操作失败或产生意外结果
完整示例templates.md需要可直接复制粘贴的完整模板
BYOK 密钥byok.md使用自己的服务提供商 API 密钥,实现 $0 计费

评论

支持 Markdown