Awesome-openclaw-skills venice-ai-media
Generate, edit, and upscale images; create videos from images or other videos via Venice AI. Supports text-to-image, image-to-video (Sora, WAN), video-to-video (Runway Gen4), upscaling, and AI editing.
git clone https://github.com/sundial-org/awesome-openclaw-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/venice-ai-media" ~/.claude/skills/sundial-org-awesome-openclaw-skills-venice-ai-media && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/venice-ai-media" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-venice-ai-media && rm -rf "$T"
skills/venice-ai-media/SKILL.mdVenice AI Media
Generate images and videos using Venice AI APIs. Venice is an uncensored AI platform with competitive pricing.
Prerequisites
- Python 3.10+ (
or system Python)brew install python - Venice API key (free tier available)
- requests library (auto-installed by scripts if missing)
Setup
1. Get Your API Key
- Create account at venice.ai
- Go to venice.ai/settings/api
- Click "Create API Key"
- Copy the key (starts with
)vn_...
2. Configure the Key
Option A: Environment variable
export VENICE_API_KEY="vn_your_key_here"
Option B: Clawdbot config (recommended - persists across sessions)
Add to
~/.clawdbot/clawdbot.json:
{ skills: { entries: { "venice-ai-media": { env: { VENICE_API_KEY: "vn_your_key_here", }, }, }, }, }
3. Verify Setup
python3 {baseDir}/scripts/venice-image.py --list-models
If you see a list of models, you're ready!
Pricing Overview
| Feature | Cost |
|---|---|
| Image generation | ~$0.01-0.03 per image |
| Image upscale | ~$0.02-0.04 |
| Image edit | $0.04 |
| Video (WAN) | ~$0.10-0.50 depending on duration |
| Video (Sora) | ~$0.50-2.00 depending on duration |
| Video (Runway) | ~$0.20-1.00 |
Use
--quote with video commands to check pricing before generation.
Quick Start
# Generate an image python3 {baseDir}/scripts/venice-image.py --prompt "a serene canal in Venice at sunset" # Upscale an image python3 {baseDir}/scripts/venice-upscale.py photo.jpg --scale 2 # Edit an image with AI python3 {baseDir}/scripts/venice-edit.py photo.jpg --prompt "add sunglasses" # Create a video from an image python3 {baseDir}/scripts/venice-video.py --image photo.jpg --prompt "gentle camera pan" --duration 5s
Image Generation
python3 {baseDir}/scripts/venice-image.py --prompt "a serene canal in Venice at sunset" python3 {baseDir}/scripts/venice-image.py --prompt "cyberpunk city" --count 4 python3 {baseDir}/scripts/venice-image.py --prompt "portrait" --width 768 --height 1024 python3 {baseDir}/scripts/venice-image.py --prompt "abstract art" --out-dir /tmp/venice python3 {baseDir}/scripts/venice-image.py --list-models python3 {baseDir}/scripts/venice-image.py --list-styles python3 {baseDir}/scripts/venice-image.py --prompt "fantasy" --model flux-2-pro --no-validate python3 {baseDir}/scripts/venice-image.py --prompt "photo" --style-preset "Cinematic" --embed-exif
Key flags:
--prompt, --model (default: flux-2-max), --count (uses efficient batch API for same prompt), --width, --height, --format (webp/png/jpeg), --resolution (1K/2K/4K), --aspect-ratio, --negative-prompt, --style-preset (use --list-styles to see options), --cfg-scale (prompt adherence 0-20, default 7.5), --seed (for reproducible results), --safe-mode (disabled by default for uncensored output), --hide-watermark (only use if explicitly requested - watermark supports Venice), --embed-exif (embed prompt in image metadata), --lora-strength (0-100 for applicable models), --steps (inference steps, model-dependent), --enable-web-search, --no-validate (skip model check for new/beta models)
Image Upscale
python3 {baseDir}/scripts/venice-upscale.py photo.jpg --scale 2 python3 {baseDir}/scripts/venice-upscale.py photo.jpg --scale 4 --enhance python3 {baseDir}/scripts/venice-upscale.py photo.jpg --enhance --enhance-prompt "sharpen details" python3 {baseDir}/scripts/venice-upscale.py --url "https://example.com/image.jpg" --scale 2
Key flags:
--scale (1-4, default: 2), --enhance (AI enhancement), --enhance-prompt, --enhance-creativity (0.0-1.0), --replication (0.0-1.0, preserves lines/noise, default: 0.35), --url (use URL instead of local file), --output, --out-dir
Image Edit
python3 {baseDir}/scripts/venice-edit.py photo.jpg --prompt "add sunglasses" python3 {baseDir}/scripts/venice-edit.py photo.jpg --prompt "change the sky to sunset" python3 {baseDir}/scripts/venice-edit.py photo.jpg --prompt "remove the person in background" python3 {baseDir}/scripts/venice-edit.py --url "https://example.com/image.jpg" --prompt "colorize"
Key flags:
--prompt (required - AI interprets what to modify), --url (use URL instead of local file), --output, --out-dir
Note: The edit endpoint uses the Qwen-Image model which has some content restrictions (unlike other Venice endpoints).
Video Generation
# Get price quote first (no generation) python3 {baseDir}/scripts/venice-video.py --quote --model wan-2.6-image-to-video --duration 10s --resolution 720p # Image-to-video (WAN 2.6 - default) python3 {baseDir}/scripts/venice-video.py --image photo.jpg --prompt "camera pans slowly" --duration 10s # Image-to-video (Sora) python3 {baseDir}/scripts/venice-video.py --image photo.jpg --prompt "cinematic" \ --model sora-2-image-to-video --duration 8s --aspect-ratio 16:9 --skip-audio-param # Video-to-video (Runway Gen4) python3 {baseDir}/scripts/venice-video.py --video input.mp4 --prompt "anime style" \ --model runway-gen4-turbo-v2v # List models (shows available durations per model) python3 {baseDir}/scripts/venice-video.py --list-models # Clean up a video downloaded with --no-delete python3 {baseDir}/scripts/venice-video.py --complete <queue_id> --model <model>
Key flags:
--image or --video (required for generation), --prompt (required for generation), --model (default: wan-2.6-image-to-video), --duration (model-dependent, see --list-models), --resolution (480p/720p/1080p), --aspect-ratio, --audio/--no-audio, --skip-audio-param, --quote (price estimate), --timeout, --poll-interval, --no-delete (keep server media), --complete (cleanup previously downloaded video), --no-validate (skip model check)
Progress: During generation, the script shows estimated progress based on Venice's average execution time.
Model Notes
Use
--list-models to see current availability and status. Models change frequently.
Image: Default is
flux-2-max. Common options include flux, gpt-image, and nano-banana variants.
Video:
- WAN models: Image-to-video, configurable audio, various durations (5s-21s)
- Sora models: Requires
, use--aspect-ratio--skip-audio-param - Runway models: Video-to-video transformation
Tips:
- Use
for new or beta models not yet in the model list--no-validate - Use
for video to check pricing before generation--quote - Safe mode is disabled by default (Venice is an uncensored API)
Output
Scripts print a
MEDIA: /path/to/file line for Clawdbot auto-attach.
Tip: Use
--out-dir /tmp/venice-$(date +%s) when generating media to send via iMessage (ensures accessibility across user accounts).
Troubleshooting
"VENICE_API_KEY not set"
- Check your config in
~/.clawdbot/clawdbot.json - Or export the env var:
export VENICE_API_KEY="vn_..."
"Invalid API key"
- Verify your key at venice.ai/settings/api
- Keys start with
vn_
"Model not found"
- Run
to see available models--list-models - Use
for new/beta models--no-validate
Video stuck/timeout
- Videos can take 1-5 minutes depending on model and duration
- Use
for longer videos--timeout 600 - Check Venice status at venice.ai
"requests" module not found
- Install it:
pip3 install requests