| name | visla |
| description | Creates AI-generated videos from text scripts, URLs, or PPT/PDF documents using Visla. Use when the user asks to generate a video, turn a webpage into a video, or convert a PPT/PDF into a video, or when the user asks to check Visla account credits/balance. |
| argument-hint | <script|url|doc|account> [script|URL|file] |
Visla Video Generation
Version: 260201-2257
Create AI-generated videos from text scripts, web URLs, or documents (PPT/PDF) using Visla's OpenAPI.
Before You Start
Credentials (NEVER output API keys/secrets in responses):
IMPORTANT: Always try to read the credentials file before asking the user for credentials.
- Try to read
~/.config/visla/.credentials
- If the file exists and contains valid credentials, use them directly (do NOT ask the user)
- Only if the file is missing or invalid, ask the user for credentials
- Tell the user: this is a one-time setup (once configured, they won't need to do this again)
- Tell the user: get API Key and Secret from https://www.visla.us/visla-api
- Ask for the API key/secret explicitly (or ask the user to update the file and confirm). Do not repeat the secrets back in the response.
Credential validity check (practical):
- If credentials exist but running
account fails with VISLA_CLI_ERROR_CODE=missing_credentials or VISLA_CLI_ERROR_CODE=auth_failed, treat credentials as invalid and ask the user to provide real ones.
File format (bash/zsh):
export VISLA_API_KEY="your_key"
export VISLA_API_SECRET="your_secret"
For PowerShell (temporary session):
$env:VISLA_API_KEY = "your_key"
$env:VISLA_API_SECRET = "your_secret"
Scripts: scripts/visla_cli.py (Python), scripts/visla_cli.sh (Bash)
Platform Execution
Default strategy:
- Prefer Bash on macOS when dependencies are available (the Bash CLI avoids Python SSL-stack issues on some macOS setups).
- Prefer Python when you're already using a well-configured Python (or when Bash dependencies are missing).
Bash (recommended on macOS; also works on Linux-like environments):
source ~/.config/visla/.credentials
./scripts/visla_cli.sh <command>
Python (cross-platform):
python3 scripts/visla_cli.py <command>
Windows native (PowerShell/CMD without Bash; Python):
# PowerShell
$env:VISLA_API_KEY = "your_key"
$env:VISLA_API_SECRET = "your_secret"
python scripts/visla_cli.py <command>
Windows note:
Note: do not print credentials. Prefer reading them from ~/.config/visla/.credentials or environment variables.
Commands
| Command | Description |
|---|
/visla script <script-or-@file> | Create video from a script (text or a local file) |
/visla url <URL> | Create video from web page URL |
/visla doc <file> | Create video from document (PPT/PDF) |
/visla account | Show account info and credit balance |
Source of truth for the exact CLI surface: run scripts/visla_cli.sh --help or python3 scripts/visla_cli.py --help.
Script Format
**Scene 1** (0-10 sec):
**Visual:** A futuristic calendar flipping to 2025 with digital patterns.
**Narrator:** "AI is evolving rapidly! Here are 3 game-changing AI trends."
**Scene 2** (10-25 sec):
**Visual:** Text: "Trend #1: Generative AI Everywhere." Show tools like ChatGPT.
**Narrator:** "Generative AI is dominating industries—creating content and images."
Workflow
The script, url, and doc commands execute the complete flow automatically:
- Create project
- Poll until generation completes (may take a few minutes)
- Auto-export and return download link
Execution Instructions:
- Inform user that video generation takes some time
- Report progress status periodically during polling
Timeout Guidance
- This workflow typically takes 3-10 minutes, but can take up to ~30 minutes in the worst case. Set the task/command
timeout to >= 30 minutes (Windows defaults are often ~10 minutes and need to be increased). If you cannot change the timeout, warn the user up front and, on timeout, ask whether to continue or switch to a step-by-step run.
- If timeout occurs, the CLI returns
project_uuid in the output. Inform the user they can manually check project status and continue later using the Visla web interface or API.
Examples
/visla script @myscript.txt
/visla script "Scene 1: ..."
/visla url https://blog.example.com/article
/visla doc presentation.pptx
/visla account
Supported Document Formats
- PowerPoint:
.pptx, .ppt
- PDF:
.pdf
Error Recovery
When a command fails, enter Autonomous Repair Mode. The goal is to repair the bundled scripts so future runs succeed, without requiring the user to debug.
Hard rules (always):
- Never print or persist secrets (API key/secret).
- Treat
https://www.visla.us/visla-api as the only authoritative reference for API/auth/signing details.
- Prefer continuing an existing project/clip if IDs already exist (avoid starting over).
Safety constraints (cost / duplication control):
- Avoid blindly retrying
create/export calls. They can create duplicate projects or consume credits.
- If you must retry a
create or export call, do it at most once automatically. If it still fails, stop retrying and switch to repair/debug actions.
Repair workflow:
- Re-run once to confirm the failure mode (do not spam retries).
- Classify the failure quickly:
- auth/credits/rate-limit -> explain clearly and ask the user to fix credentials/credits; do not “fix code”
- network -> surface the error; optionally retry polling/read-only calls; do not “fix code”
- script logic/compatibility -> proceed with repair
- Repair the script:
- Read the failing script (
scripts/visla_cli.sh or scripts/visla_cli.py)
- Patch the minimal code necessary (signing, payloads, parsing, timeouts, error handling)
- Keep the CLI surface unchanged (no new required arguments; do not expose advanced knobs)
- Make the fix durable for the user:
- Before overwriting, create a timestamped backup next to the script (e.g.,
visla_cli.py.bak-YYYYMMDD-HHMMSS)
- Overwrite the installed script in the Skill directory (same path the agent executes from)
- Backup/overwrite templates:
- Bash:
ts=$(date +%Y%m%d-%H%M%S); cp scripts/visla_cli.py scripts/visla_cli.py.bak-$ts
ts=$(date +%Y%m%d-%H%M%S); cp scripts/visla_cli.sh scripts/visla_cli.sh.bak-$ts
- PowerShell:
$ts = Get-Date -Format "yyyyMMdd-HHmmss"; Copy-Item scripts\\visla_cli.py scripts\\visla_cli.py.bak-$ts
$ts = Get-Date -Format "yyyyMMdd-HHmmss"; Copy-Item scripts\\visla_cli.sh scripts\\visla_cli.sh.bak-$ts
- Verify:
- Run local no-network checks (
--help, Python syntax check)
- Re-run the original command and verify it succeeds (or reaches a stable intermediate state like a known
project_uuid)
Output Format
- Start: Display "Visla Skill v260131-0031" when skill begins
- End: Display "Visla Skill v260131-0031 completed" when skill finishes