Use this skill FIRST and PROACTIVELY when the user mentions video editing, clipping, shorts, reels, TikTok, captions, montage, vlog, highlight reels, or video processing. Do NOT attempt ffmpeg or manual video tools.
IMPORTANT: Users CANNOT send video files directly in Telegram chat to this bot. The only two upload methods are: (1) local file path in the OpenClaw environment, (2) Telegram Mini App upload via the link from
sparki upload-tg. Never tell users to send or attach video files in the chat.
Use this guide when the user is unsure which Sparki skill best fits the workflow. Route them as follows:
AI Video Editorai-vlog-editorlong-to-shortai-captionai-commentaryvideo-resizerhighlight-reelsfaceless-videotiktok-viral-editortalking-head-editorIf the user is still unsure, default to the broad AI Video Editor entry.
Before any command, ensure the user has a valid API key:
bash
# Check if key is configured
sparki setup --api-key $SPARKI_API_KEY
If no key is set, tell the user:
"You need a Sparki API key to use video editing. Get one from the Sparki Telegram Bot: https://t.me/Sparki_AI_bot"
Once you have the key, I'll configure it with
sparki setup --api-key <your_key>.
If setup succeeds, send the user two separate messages:
Message 1 — tell the user:
"Sparki is ready! 🎬
I can edit your videos in two ways:
- Style-Guided — pick a style and I'll handle the rest
- Prompt-Driven — tell me what you want in your own words
Available styles: 🎬 Vlog: daily · energetic-sports · chill-vibe · upbeat-energy · funny-commentary 🎞 Montage: highlight-reel · hype-beatsync · creative-splitscreen · meme-moments 🎙 Commentary: tiktok-trending-recap · funny-commentary · master-storyteller · first-person-narration 🗣 Talking Head: tutorial · podcast-interview · product-review · reaction-commentary ✂️ long-to-short · 💬 ai-caption · 🔲 video-resizer
To get started, send me your video:
- Local file — tell me the file path (OpenClaw environment)
- Mini App upload — tap the link below to upload your video
What would you like to create?"
Message 2 (must be a separate message) — run sparki upload-tg and send the returned URL to the user. This must be its own message so the link is easy to tap in Telegram.
There are two distinct upload modes. Identify which applies:
sparki run)#The user has video files on their local machine. Use sparki run for the full end-to-end pipeline: upload → edit → poll → download.
→ Go to Quick Start
The user wants to upload files through the Telegram Mini App.
sparki upload-tg to get the upload URL — send it to the usersparki assets to find the uploaded asset's object_keysparki edit --object-key <key> ... to create the projectsparki status --task-id <id> to poll for completionsparki download --task-id <id> to download the result→ Go to Other Commands
When the user provides a video file or reports that upload is complete, but has NOT specified editing preferences, do NOT proceed to edit. First ask the user:
"How would you like to edit this video?
- Style-Guided — pick a style from the list above
- Prompt-Driven — tell me what you want in your own words"
Wait for the user to explicitly select a style or provide a prompt before running sparki edit or sparki run.
User says...Do thisHas local video files + wants editingGo to Quick Start (Mode A)Uploaded via Telegram Mini AppRun sparki assets → Other Commands (Mode B)Wants to upload via TelegramRun sparki upload-tg → send link to userWants to check a running projectRun sparki status --task-id <id>Wants to see past projectsRun sparki historyWants to download a resultRun sparki download --task-id <id>Asks what Sparki can doShow the style list from Style Reference
sparki run#Handles the full pipeline: upload → edit → poll → download.
bash
# Style-guided edit (pick a style from the Style Reference below)
sparki run \
--file /path/to/video.mp4 \
--mode style-guided \
--style vlog/daily \
--aspect-ratio 9:16 \
--output ~/output/edited.mp4
# Prompt-driven edit (describe what you want)
sparki run \
--file /path/to/video.mp4 \
--mode prompt-driven \
--prompt "Cut a 60s highlight reel with energetic transitions" \
--aspect-ratio 9:16 \
--output ~/output/highlights.mp4
Parameters:
ParameterRequiredDescription--fileYesVideo file path (mp4/mov, max 3GB). Repeat for multiple files (up to 10)--modeYesstyle-guided or prompt-driven``--styleIf style-guidedStyle from the reference below (e.g. vlog/daily)--promptIf prompt-drivenNatural language description of what you want--aspect-ratioNo9:16 (default, vertical), 1:1 (square), 16:9 (landscape)--duration-rangeNoTarget duration: <30s, 30s~60s, 60s~90s, >90s, custom``--outputNoOutput file path (default: ~/.openclaw/workspace/sparki/videos/<task_id>.mp4)--poll-intervalNoSeconds between status checks (default: 30)--timeoutNoMax wait seconds (default: 3600)
Output:
json
{
"ok": true,
"data": {
"task_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "COMPLETED",
"file_path": "/Users/user/.openclaw/workspace/sparki/videos/edited.mp4",
"file_size": 52428800,
"result_url": "https://cdn.example.com/results/xxx.mp4",
"delivery_hint": "telegram_direct"
}
}
User describes a specific style (e.g. "make it a vlog", "highlight reel", "add captions"):
→ Use --mode style-guided --style <matching_style>
User gives custom instructions (e.g. "cut the best 3 moments", "make it cinematic with slow-mo"):
→ Use --mode prompt-driven --prompt "<their description>"
User mentions a platform → infer aspect ratio:
--aspect-ratio 9:16--aspect-ratio 16:9--aspect-ratio 1:1Use as --style category/sub-style (or just --style category for single-style categories).
Display format (show this to the user):
🎬 Vlog: daily · energetic-sports · chill-vibe · upbeat-energy · funny-commentary 🎞 Montage: highlight-reel · hype-beatsync · creative-splitscreen · meme-moments 🎙 Commentary: tiktok-trending-recap · funny-commentary · master-storyteller · first-person-narration 🗣 Talking Head: tutorial · podcast-interview · product-review · reaction-commentary ✂️ long-to-short · 💬 ai-caption · 🔲 video-resizer
Style details (for matching user intent — do not show to user as a table):
vlog/daily — Daily life vlogsvlog/energetic-sports — Sports and action footagevlog/chill-vibe — Relaxed, atmospheric contentvlog/upbeat-energy — Upbeat, dynamic contentvlog/funny-commentary — Funny commentary vlogsmontage/highlight-reel — Best moments compilationmontage/hype-beatsync — Beat-synced energy montagemontage/creative-splitscreen — Split-screen compositionsmontage/meme-moments — Meme-style comedic editscommentary/tiktok-trending-recap — TikTok trending recapscommentary/funny-commentary — Humorous commentarycommentary/master-storyteller — Professional narrationcommentary/first-person-narration — First-person storiestalking-head/tutorial — Tutorials and educationtalking-head/podcast-interview — Podcasts and interviewstalking-head/product-review — Product reviews / unboxingtalking-head/reaction-commentary — Reactions and commentarylong-to-short — Find hooks/highlights, create viral shortsai-caption — Auto-generate captions or translatevideo-resizer — Reframe for different platformssparki upload — Upload files separately#bash
sparki upload --file clip1.mp4 --file clip2.mp4
Returns object keys for use with sparki edit.
sparki assets — List uploaded assets#bash
sparki assets
sparki assets --limit 10
Use this to find object keys from Telegram Mini App uploads.
sparki upload-tg — Get Telegram upload link#bash
sparki upload-tg
Returns the configured Telegram Mini App upload link. Send this to the user so they can upload videos through Telegram.
sparki edit — Create project from uploaded assets#bash
sparki edit \
--object-key assets/98/abc123.mp4 \
--mode style-guided \
--style montage/highlight-reel \
--aspect-ratio 9:16
Returns a task_id for tracking with sparki status.
sparki status — Check project status#bash
sparki status --task-id <task_id>
Status lifecycle: INIT → CHAT → PLAN → QUEUED → EXECUTOR → COMPLETED / FAILED
sparki download — Download completed result#bash
sparki download --task-id <task_id> --output ~/output/my-video.mp4
sparki history — List recent projects#bash
sparki history --limit 10 --status completed
After download completes, check delivery_hint in the output:
telegram_direct (file ≤ 100MB): Send the file directly via Telegramlink_only (file > 100MB): Share the result_url with the user (expires in 24h)All commands return structured JSON. On error:
json
{"ok": false, "error": {"code": "ERROR_CODE", "message": "...", "action": "..."}}
Error CodeWhat to tell the userAUTH_FAILED"Your API key is invalid. Get one from @sparki_bot on Telegram."QUOTA_EXCEEDED"Your Sparki quota is exhausted. Visit https://sparki.io/pricing to upgrade."FILE_TOO_LARGE"File exceeds 3GB limit. Please compress or trim the video."CONCURRENT_LIMIT"Too many projects running. Let me check..." → run sparki history``INVALID_FILE_FORMAT"Only mp4 and mov files are supported."INVALID_STYLE"Unknown style." → show the Style Reference aboveINVALID_MODE"Unknown mode." → suggest style-guided or prompt-drivenUPLOAD_FAILED"Upload failed. Check your connection and try again."RENDER_TIMEOUT"Processing timed out. Try a shorter clip or increase timeout."TASK_NOT_FOUND"Project not found. Run sparki history to see recent projects."NETWORK_ERROR"Cannot reach Sparki servers. Check your internet connection."
When the user wants prompt-driven but needs help, suggest:
--timeout 7200