Veevid AI Video Generator

AI video generator — text to video, image to video, and reference-to-video via Veevid API. Supports Kling 3.0, Sora 2, Veo 3.1, LTX 2.3, Seedance, Wan 2.6, a...

MIT-0 · Free to use, modify, and redistribute. No attribution required.
0 · 30 · 0 current installs · 0 all-time installs
byVeevid AI@meigesir
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (Veevid text/image/reference-to-video) align with the declared behavior: it expects a Veevid API key stored at ~/.config/veevid/api_key and calls veevid.ai endpoints. The only minor metadata mismatch: registry metadata shows 'Required config paths: [object Object]' which looks like a formatting error, but the SKILL.md clearly documents the API key path.
Instruction Scope
Runtime instructions are narrowly scoped to: (1) read a local API key file, (2) call veevid.ai endpoints (quote/generate/status/credits/storage), and (3) optionally read recent chat messages to find image attachments when the user requested image-to-video. Reading recent messages and posting quoted previews is justified for the I2V flow, but it is a privacy-sensitive action — the agent will access channel history and post previews back to the channel. The skill does not instruct reading other local files or sending data to third-party endpoints beyond veevid.ai.
Install Mechanism
Instruction-only skill with no install spec and no code to write to disk beyond the expected config directory (~/.config/veevid). This is low-risk from an installation perspective.
Credentials
The skill requests a single local config path (~/.config/veevid/api_key) for the Veevid API key and uses that key in Authorization headers. No unrelated environment variables, credentials, or broad system access are requested.
Persistence & Privilege
No 'always' privilege is requested; the skill runs only when invoked. It stores/reads its own config file under the user's home config directory, which is expected for an external API integration. It doesn't modify other skills or global agent settings.
Assessment
This skill appears to do exactly what it says: it uses a Veevid API key you store at ~/.config/veevid/api_key and calls veevid.ai endpoints to quote and generate videos. Before installing, consider: (1) the agent will read recent channel messages to locate images for image-to-video requests and will post quoted previews back to the channel — ensure you're comfortable with that privacy behavior in group chats; (2) keep your Veevid API key private (the skill reads it from a local file and uses it in requests); (3) there is no installer, so only the config file is created; and (4) the registry metadata contains a minor formatting error for the config path (harmless but worth noting). If you plan to use this skill in sensitive channels, limit where it can be invoked or remove agent permissions to read channel history.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.2.2
Download zip
Plugin bundle (nix)
Skill pack · CLI binary · Config
SKILL.mdCLIConfig
Config requirements
State dirs~/.config/veevid
aivk97f2arje3t27a1d9g4n85zg71839qmzgenerationvk97f2arje3t27a1d9g4n85zg71839qmzlatestvk97f2arje3t27a1d9g4n85zg71839qmzvideovk97f2arje3t27a1d9g4n85zg71839qmz

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

Config[object Object]

SKILL.md

Veevid — AI Video Generator

All-in-one AI video generator: text to video, image to video, and reference-to-video via Veevid AI. One API, 10+ state-of-the-art video generation models including Kling 3.0, Sora 2, Veo 3.1, LTX 2.3, Seedance 1.5 Pro, and Wan 2.6.

Setup

  1. Get your API Key at veevid.ai/settings/api-keys
  2. Save the key locally:
mkdir -p ~/.config/veevid
echo "YOUR_API_KEY" > ~/.config/veevid/api_key

What You Can Say

These phrases trigger this skill:

  • "Generate a video of a sunset over the ocean"
  • "Turn this image into a video"
  • "Make a 10-second product ad with Kling 3.0"
  • "Create a vertical video for TikTok"
  • "How much does it cost to generate a video?"
  • "What AI video models are available?"
  • "Check my credit balance"

Image Retrieval from Chat (Discord / Group Chats)

When the user requests image-to-video but no image URL is provided in the message:

  1. Use message read (channel=discord, limit=10) to scan recent messages in the current channel.
  2. Filter attachments by the sender's user id to avoid picking up someone else's image.
  3. Collect all recent image attachments (content_type starts with image/) from the sender, ordered newest first.
  4. Preview by quoting: Use message send with replyTo set to the message id of the image message. This quotes the original message with its image preview inline, so the user can visually confirm. Add text like "Is this the right image?" Don't just show the filename — filenames like IMG_20260203_xyz.jpg are meaningless.
  5. Single image needed (standard I2V): quote the most recent image message and ask the user to confirm.
  6. Multiple images needed (Kling 3.0 start+end frames, Veo 3.1 reference-to-video with 1-3 refs): quote each image message with a number label and ask the user which ones to use and in what order.
  7. If not enough images are found, ask the user to send the missing ones or provide URLs.

This ensures image-to-video works seamlessly even when Discord doesn't forward attachments directly to the agent. Applies to all models, not just a specific one.

Important: Always Confirm Before Generating

Before calling the generate API, ALWAYS:

  1. Call POST /api/quote with the billing-relevant params for your planned generation (see Step 1 below) — it returns the precise credit cost and current balance.
  2. Tell the user which model you'll use and the exact cost from the quote response.
  3. For image-to-video: also confirm the image is correct (show filename/URL).
  4. Wait for the user to confirm before proceeding.

If the generate API returns 402, report the exact required and balance values from the response body to the user.

If balance is insufficient, suggest a cheaper model or link to veevid.ai/pricing.

Step 1 — Quote (get exact cost before generating)

/api/quote only needs the billing-relevant params: mode, generation_type, duration, video_quality, aspect_ratio, and model-specific options (e.g. model_version, generate_audio). It does not require prompt, image, or other content fields — those don't affect credit cost.

curl -X POST https://veevid.ai/api/quote \
  -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "veo3",
    "generation_type": "text-to-video",
    "video_quality": "standard"
  }'

Returns: {"required_credits": 20, "current_balance": 451, "sufficient": true}

If sufficient is false, suggest a cheaper model before asking the user to confirm.

Step 2 — Generate Video (Text to Video)

curl -X POST https://veevid.ai/api/generate-video \
  -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A golden retriever running through sunflowers, cinematic lighting",
    "mode": "veo3",
    "aspect_ratio": "16:9",
    "video_quality": "standard"
  }'

Returns either:

  • Async case: {"generation_id": "vg_xxx", "status": "processing", "video_url": null, "image_url": null}
  • Sync case: {"generation_id": "vg_xxx", "status": "completed", "video_url": "https://..."}

If status is already completed and a video_url is present, return it to the user immediately instead of polling.

Generate Video — Image to Video

If the user provides an online image URL, pass it directly:

curl -X POST https://veevid.ai/api/generate-video \
  -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Gently animate this scene with camera movement",
    "mode": "veo3",
    "aspect_ratio": "16:9",
    "video_quality": "standard",
    "image": "https://example.com/photo.jpg",
    "generation_type": "image-to-video"
  }'

If the user provides a local file, the image URL isn't known yet — but credit cost doesn't depend on it, so quote first with billing params, then upload:

# Step 1: Quote (image URL not needed for pricing)
curl -X POST https://veevid.ai/api/quote \
  -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  -H "Content-Type: application/json" \
  -d '{"mode": "veo3", "generation_type": "image-to-video", "video_quality": "standard"}'

# Step 2: Upload (only after user confirms)
curl -X POST https://veevid.ai/api/storage/upload \
  -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  -F "file=@/path/to/image.jpg"

# Returns: {"url": "https://cdn.veevid.ai/uploads/xxx.jpg", "key": "uploads/xxx.jpg"}

# Step 3: Generate with uploaded URL
curl -X POST https://veevid.ai/api/generate-video \
  -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Animate this scene",
    "mode": "veo3",
    "video_quality": "standard",
    "image": "https://cdn.veevid.ai/uploads/xxx.jpg",
    "generation_type": "image-to-video"
  }'

Step 3 — Poll Status

If the generate response is still processing, poll until status is completed:

curl -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  https://veevid.ai/api/video-generation/{generation_id}/status

Status values: processingcompleted or failed. Typical time: 60-180 seconds.

Check Credit Balance

curl -H "Authorization: Bearer $(cat ~/.config/veevid/api_key)" \
  https://veevid.ai/api/credits

Returns: {"success": true, "credits": 451, "balance": 451}

Available Models

Choose model based on the user's needs. Credit ranges depend on duration, resolution, and quality — use /api/quote for the exact cost before confirming with the user.

ModelmodeStrengthsCredit Range
Veo 3.1veo3Native audio, budget-friendly, fixed 8s20 / 140 credits
Grok Imaginegrok-imagineNative audio, fastest generation10–60 credits
Veevid 1.0 Proveevid-1.0-proAudio, wide aspect ratios12–288 credits
Seedance 1.5 Proseedance-1.5-proAudio, wide aspect ratios12–288 credits
Kling 3.0kling-3Audio, multi-shot, 3-15s48–495 credits
LTX 2.3ltx-2-3Audio, open-source, up to 4K (2160p)48–960 credits
Kling 2.6kling-2-6Audio, cinematic, multi-shot70–280 credits
Sora 2 Stablesora2-stableNative audio, best prompt accuracy, 4-20s80–2000 credits
Sora 2sora2Native audio, 10-25s, storyboard/multi-scene20–315 credits
Wan 2.6wan-2-6Audio, multi-shot, video-to-video100–450 credits

Quick Model Picker

User wants...Use this
Cheapest optiongrok-imagine (10 cr at 480p/6s) or veo3 standard (20 cr)
Fastest resultgrok-imagine or ltx-2-3 fast
Best qualitysora2-stable pro or kling-3
Longer clips (>15s)sora2 (up to 25s)
Vertical/TikTokltx-2-3 (native portrait)
Product adskling-3 (multi-shot + text rendering)
YouTube contentveo3

Model Parameters

Each model has specific allowed values. See references/api-reference.md for the complete per-model parameter table.

Common parameters:

ParameterDescription
promptScene description (max 5000 chars)
modeModel selector (see table above)
durationVideo length in seconds (varies by model)
aspect_ratio"16:9" | "9:16" | "1:1" (varies by model)
video_qualityQuality tier (varies by model — see api-reference.md)
generation_type"text-to-video" | "image-to-video" | "reference-to-video" (Veo 3.1)
imageImage URL (required for image-to-video)
model_versionSub-variant for some models (e.g. "kling-3-pro", "ltx-2.3-fast")

Error Codes

CodeMeaningWhat to do
400Invalid parameterCheck allowed values in api-reference.md
401Invalid API KeyVerify key at veevid.ai/settings/api-keys
402Insufficient creditsShow user the required vs balance from response, suggest cheaper model or veevid.ai/pricing
403Account suspended / forbiddenTell the user their account cannot access the API and they need support
404Generation record not foundCheck the generation_id and whether it belongs to this account
500Server errorWait a few seconds and retry

Example Conversations

Simple text-to-video:

User: "Make a 4-second video of a cat sleeping on a couch"
Agent: [calls /api/quote with mode=veo3, video_quality=standard]
Agent: "Note: Veo 3.1 always generates 8-second videos (duration is fixed). Cost: 20 credits. You have 311 credits. Proceed?"
User: "Yes"
Agent: [generates] "Done! Here's your 8-second video: [URL]."

Image-to-video:

User: "Turn this product photo into a short video" [attaches image]
Agent: [calls /api/quote with mode=veo3, generation_type=image-to-video]
Agent: "I'll upload your image and animate it with Veo 3.1. Cost: 20 credits. You have 200 credits. Proceed?"
User: "Go ahead"
Agent: [uploads image, generates] "Done! Here's your animated product video: [URL]"

Budget-conscious:

User: "Generate a video but keep it cheap"
Agent: [calls /api/quote with mode=grok-imagine, duration=6, video_quality=480p]
Agent: "The cheapest option is Grok Imagine at 10 credits for a 6-second 480p video. You have 50 credits. Want me to use that?"

Links

Files

3 total
Select a file
Select a file to preview.

Comments

Loading comments…