Skip to content
cccskills
FreePublished on GitHub

varg-ai

Create AI images, videos, voiceovers, music, captions, and multi-scene MP4 renders through the varg API using one key. The skill covers cloud rendering with curl and local rendering with bun and ffmpeg, for projects from product clips to talking avatars.

OriginalShow the original description

Generate AI videos, images, voiceovers and music with one varg API key. Text- and image-to-video on Seedance 2.5, Kling 4, Veo 3.1 and Wan 3; images and edits on Nano Banana 2.1, GPT Image 2.5 and Flux 3; lip sync and talking avatars; ElevenLabs v4 voices; Lyria and Mureka music; captions and multi-scene renders to MP4. Use when someone asks to make or render a video, animate a photo, generate an image, create a UGC ad, product video, slideshow or talking head, add voiceover (text to speech), music, lip sync or captions, or mentions varg. Cloud mode needs only curl; local mode runs on bun + ffmpeg.

hashgraph-online/awesome-codex-plugins1,440 stars(GitHub 1,440 + cccskills 0)
Works withElevenLabs

Run score Not tested

See how to install

Good for

  • Generate a video or animate a photo
  • Create product clips, UGC ads, or slideshows
  • Add voiceover, music, lip sync, or captions

Files included (13)

  • SKILL.md14.6 KB
  • references/byok.md3.0 KB
  • references/cloud-render.md5.4 KB
  • references/common-errors.md11.5 KB
  • references/components.md15.0 KB
  • references/gateway-api.md10.9 KB
  • references/local-render.md4.8 KB
  • references/models.md19.8 KB
  • references/prompting.md12.8 KB
  • references/recipes.md12.7 KB
  • references/templates.md14.6 KB
  • scripts/setup.sh7.0 KB
  • scripts/setup.ts8.0 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Version Check (run once per session)

This skill is version 2.1.1. Before first use each session, check for updates:

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

If the remote version is newer than 2.1.1, update and re-read this file:

npx -y skills update

Setup (REQUIRED before first use)

Before generating anything, find an API key and determine rendering mode. Do NOT run interactive CLI tools (like bunx vargai init or bunx vargai login) -- they require stdin which agents cannot provide. CLI email (OTP) login is also disabled server-side: /api/auth/cli/send-otp returns 403, so don't call it.

1. Find an API key (before asking the user anything)

Most users already have a key somewhere. Look for it yourself first -- this checks the environment, then ~/.varg/credentials, then the project's .env / .env.local, and loads the first key it finds into $VARG_API_KEY without printing it:

[ -n "${VARG_API_KEY:-}" ] || VARG_API_KEY=$(grep -o '"api_key"[^,}]*' ~/.varg/credentials 2>/dev/null | head -1 | cut -d'"' -f4)
[ -n "${VARG_API_KEY:-}" ] || VARG_API_KEY=$(grep -hE '^(export )?VARG_API_KEY=' .env .env.local 2>/dev/null | head -1 | cut -d= -f2- | tr -d "\"' \r")
export VARG_API_KEY
if [ -n "$VARG_API_KEY" ]; then
  curl -s -o /dev/null -w "key found -- HTTP %{http_code} (200 = valid, 401 = invalid)\n" -H "Authorization: Bearer $VARG_API_KEY" https://api.varg.ai/v2/billing/balance
else
  echo "no key found"
fi
  • 200 -- the key works. Save it (step 1b) and continue to the balance check.
  • 401 -- the key was revoked or mistyped. Tell the user, then do step 1a.
  • no key found -- do step 1a.

Some agent shells don't keep variables between commands. If $VARG_API_KEY is empty in a later command, start that command with:

[ -n "${VARG_API_KEY:-}" ] || export VARG_API_KEY=$(grep -o '"api_key"[^,}]*' ~/.varg/credentials 2>/dev/null | head -1 | cut -d'"' -f4)

1a. No key: one message to the user

Ask once, with everything in a single message -- don't first ask whether they have a key, the steps are the same either way. Send them:

To generate with varg I need an API key:

  1. Open https://varg.ai/dashboard/api and sign in (or create an account).
  2. Generate an API key and copy it.
  3. Run this in your terminal and paste the key when prompted -- it stays out of this chat and your shell history:
    mkdir -p ~/.varg && printf 'varg API key: ' && read -rs K && echo && (umask 077 && printf '{"api_key":"%s"}\n' "$K" > ~/.varg/credentials) && unset K
    

Tell me when it's done.

When they reply, re-run the step 1 block. Do NOT ask the user to paste the raw key into the chat, and don't ask them to export it -- an export in their terminal doesn't reach your already-running shell, but the credentials file does.

1b. Save the key for next time

If the key came from the environment or .env, save it to ~/.varg/credentials so future sessions find it (skipped if the file already exists). Always reference $VARG_API_KEY -- never the raw value:

[ -f ~/.varg/credentials ] || (mkdir -p ~/.varg && umask 077 && printf '{"api_key":"%s"}\n' "$VARG_API_KEY" > ~/.varg/credentials)

For local render (bun auto-loads .env), also add it to the project .env -- only if that file exists, is gitignored, and has no key yet:

[ -f .env ] && git check-ignore -q .env 2>/dev/null && ! grep -q '^VARG_API_KEY=' .env && echo "VARG_API_KEY=$VARG_API_KEY" >> .env

Check balance and add credits

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

You should get {"available": ..., "total_balance": ..., ...} (values in credits). If available is 0 (or too low for the user's task), the user needs credits before generating anything. A typical short video costs 200-500 credits.

Available packages:

Package IDCredits
credits-20002,000
credits-50005,000
credits-1000010,000 (recommended)
credits-2000020,000
credits-5000050,000
credits-100000100,000

Direct the user to https://varg.ai/devs/billing to buy credits, then re-check the balance. Quote amounts in credits only: what a credit costs depends on the user's plan, so never convert credits to money.

2. Determine rendering mode

bunffmpegMode
NoNoCloud Render -- read cloud-render.md
YesNoCloud Render -- read cloud-render.md
YesYesLocal Render (recommended) -- read local-render.md

Critical Rules

Everything you know about varg is likely outdated. Always verify against this skill and its references before writing code.

  1. Never guess model IDs -- consult models.md for current models, pricing, and constraints. If the user names a model that is not there, read https://varg.ai/models/llms.txt, then that model's spec at https://varg.ai/models/<id>.md. sora_2* is discontinued.
  2. Function calls for media, JSX for composition -- Image({...}) creates media, <Clip> composes timeline. Never write <Image prompt="..." />.
  3. Cache is sacred -- identical prompt + params = instant cache hit that costs 0 credits. When iterating, keep unchanged prompts EXACTLY the same. Never clear cache.
  4. Images in Video -- ONE image in Video({ prompt: { images: [img] } }) is the first frame (image-to-video). Several images are references, and only models that take references accept them (seedance_2_5, wan_3, kling_v4, omni_flash_1_1, grok_imagine_1_5, minimax_h3_max). Other models fail.
  5. Duration constraints differ by model -- seedance_2_5: integer 4-30s. wan_3: 2-30s. kling_v4: 3-30s. veo_3_1: only 4, 6 or 8. kling_v2_5: ONLY 5 or 10. Check models.md.
  6. Native audio = audio: "native" on Video(). Provider options must be namespaced by provider: providerOptions: { varg: { fal: { ... } } }. A flat providerOptions: { varg: { generate_audio: true } } is silently dropped by the API, and you get a silent video.
  7. Renders cost credits -- a typical 3-clip video costs ~300-800 credits depending on the video model (wan_3 vs seedance_2_5). Iterate with --preview (local), cheap draft models (minimax_h3_max_turbo, grok_imagine_1_5_lite) and 720p. Render 1080p only for the final.
  8. API key hygiene -- Never write a raw API key value into a bash command. Load keys into $VARG_API_KEY with the setup snippets (from env, ~/.varg/credentials, or .env) and use $VARG_API_KEY in all subsequent commands -- never echo or cat the key itself. This prevents keys from leaking into conversation context and terminal history.

Default Models (October 2026)

Ranks are from the Artificial Analysis arenas. Details and alternatives: models.md.

NeedUse~Credits
Video, hero shots (T2V/I2V, refs, 4-30s, native audio)seedance_2_5210 per 5s 720p
Video, best value (#1 T2V, 2-30s)wan_353 per 5s 720p
Video, long multi-shot (up to 30s)kling_v482 per 5s 720p
Video draftsminimax_h3_max_turbo42 per 5s
Image, generation and editing / character consistencynano_banana_2_18
Image, top quality / dense textgpt_image_2_511-23
Speecheleven_v4 (or eleven_v4_turbo, #1 and half price)84 / 42
Background music (instrumental)mureka_9_525
Song with vocalslyria_3_511
Talking head (image + audio)veed_fabric_1_0160-470

Quick Start

Cloud Render (no bun/ffmpeg needed)

# 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_2_1\"), 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"

Full details: cloud-render.md

Local Render (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_2_1"),
  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@alpha render video.tsx --preview   # free preview
bunx vargai@alpha render video.tsx --verbose   # full render (costs credits)

Full details: local-render.md

Single Asset (no video composition)

For one-off images, videos, speech, or music without building a multi-clip template:

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

Full API reference: gateway-api.md

How to Write Video Code

Video code has two layers: media generation (function calls) and composition (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>
)

Component Summary

ComponentTypePurpose
Image()Function callGenerate still image
Video()Function callGenerate video (text-to-video or image-to-video)
Speech()Function callText-to-speech audio
<Render>JSXRoot container -- sets width, height, fps
<Clip>JSXTimeline segment -- duration, transitions
<Music>JSXBackground audio (always set duration!)
<Captions>JSXSubtitle track from Speech
<Title>JSXText overlay
<Overlay>JSXPositioned layer
<Split> / <Grid>JSXLayout helpers

Full props: components.md

Provider Differences (Cloud vs Local)

Both modes use varg.* for all models. The only difference is imports:

Cloud RenderLocal Render
No imports needed (globals are auto-injected)import { ... } from "vargai/react" + import { createVarg } from "vargai/ai"
varg.imageModel("nano_banana_2_1")varg.imageModel("nano_banana_2_1")
varg.videoModel("seedance_2_5")varg.videoModel("seedance_2_5")
varg.speechModel("eleven_v4")varg.speechModel("eleven_v4")

Always use varg.*Model() with VARG_API_KEY. It handles routing, caching, billing, and works with a single key. BYOK via the API is not available in v2 — see byok.md for what works (local-render direct provider modules only).

Cost & Iteration

  • Prices are in credits. Typical prices: nano_banana_2_1 image ≈ 8, gpt_image_2_5 (high) ≈ 23, seedance_2_5 5s 720p ≈ 210, wan_3 5s 720p ≈ 53, eleven_v4 line ≈ 84, mureka_9_5 track ≈ 25. Live catalog: GET https://api.varg.ai/v2/pricing (no auth). Every model spec: https://varg.ai/models/llms.txt. Estimate any request: POST /v2/estimate.
  • Cache saves credits. Keep unchanged prompts character-for-character identical across iterations.
  • Preview first (local mode only): --preview generates free placeholders to validate structure.
  • Full pricing: models.md

References

Load these on demand based on what you need:

NeedReferenceWhen to load
Render via APIcloud-render.mdNo bun/ffmpeg, or user wants cloud rendering
Render locallylocal-render.mdbun + ffmpeg available
Patterns & workflowsrecipes.mdTalking head, character consistency, slideshow, lipsync
Model selectionmodels.mdChoosing models, checking prices, duration constraints
Component propscomponents.mdNeed detailed props for any component
Better promptsprompting.mdUser wants cinematic / high-quality results
REST APIgateway-api.mdSingle-asset generation or Render API details
Debuggingcommon-errors.mdSomething failed or produced unexpected results
Full examplestemplates.mdNeed complete copy-paste-ready templates
BYOK keysbyok.mdOwn provider API keys (BYOK): not available in v2

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Plan worthwhile local tasks by checking dependencies, effects, resources, and platform boundaries, then execute the exact approved plan. It can use safe parallel work or suitable Apple-silicon backends when the project exposes them.

  • Speed up independent local build or test steps
  • Plan a task with several dependency-linked operations
  • Choose an Apple-silicon backend for supported numerical or media work
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 27, 2026

Turn a winning TikTok or Meta ad into a structured creative test plan. Identify what made it work, plan distinct concepts, set test budgets and review timing, and use funnel metrics to decide whether to stop, iterate, or scale each ad.

  • Planning how many ad concepts to test and what budget to assign
  • Creating ad variants that differ in buyer, angle, format, or opening frame
  • Diagnosing why variants perform alike or where an ad loses viewers
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 30, 2026

add

FreeSummary

Record deferred engineering decisions and temporary workarounds in a debt registry, with context such as effort, ongoing cost, affected area, and payoff trigger. Entries receive short labels so they can be reviewed or dropped later.

  • Logging a TODO or unfinished implementation
  • Recording a temporary default or bypassed check
  • Tracking a swallowed error or loosened type
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 30, 2026

Generate or compare AI agent code for LangChain, EINO, AutoGen, AgentScope, and CrewAI using framework-specific templates, API mappings, conventions, and project structures. Reference files include verification dates to help identify potentially outdated guidance.

  • Creating an agent project for a chosen framework
  • Comparing APIs across supported agent frameworks
  • Referencing framework-specific tool and memory patterns
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 26, 2026

Investigate a reproducible bug, test failure, or unexpected page behavior, then make a narrowly scoped fix. The workflow calls for a regression test before changing code, verifies the fix, and reports remaining risks and evidence while avoiding unrelated refactoring or feature work.

  • Finding the cause of a failing test
  • Fixing an unexpected page or feature behavior
  • Adding a regression test before a minimal code change
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 30, 2026

Build an AI agent project through six collaborative stages, from requirements and architecture to tools, prompts, code generation, and verification. Start framework-independent, then generate a runnable project for frameworks such as LangChain, EINO, AutoGen, AgentScope, or CrewAI.

  • Designing an AI agent from a business need
  • Generating a runnable agent project
  • Planning tools, prompts, and orchestration
hashgraph-online/awesome-codex-plugins1.4KUpdated Oct 26, 2026

See all skills by hashgraph-online

Report a problem with this skill