tokenlab-product-ad-video
Make a short product ad or promo clip from a product photo or a written brief with TokenLab video models. Use when the user says "make an ad video for this product", "turn my product photo into a vide
Files3
View on GitHubSKILL.mdskills/tokenlab-product-ad-video/SKILL.md
GitHubProduct Ad Video
Turn a product into a short ad clip that keeps the product exact. Start from a good still, move the camera around it, and add sound. One call makes one shot; cut shots together in an editor.
Inputs to collect
- Product image: a public
httpsURL or a TokenLab result URL. If the user has no clean shot, make one first withtokenlab-product-photography. Several angles help reference-to-video models. - Brief: the one thing the viewer should notice (texture, size, the lid opening, steam, a pour).
- Format: aspect ratio per channel (9:16 Reels/Shorts/TikTok, 1:1 or 4:5 feed, 16:9 web) and length per shot.
- Sound: none, ambient sound and effects, or a short spoken line.
- Hard rules: product shape, color, logo, and on-pack text must not change. Add no claims, prices, or badges the user did not supply.
Models
<!-- tokenlab:models:start --> <!-- Generated from the live catalog by scripts/sync_models.py. Do not edit; change preferredModels in catalog.json. -->| Operation | Model | Pick | Use |
|---|---|---|---|
image-to-video |
veo3.1-fast |
default | Animate one product still |
image-to-video |
veo3.1 |
alternative | Higher tier (not live-tested) |
image-to-video |
kling-v3.0 |
alternative | Alternative; sound on or off (not live-tested) |
image-to-video |
grok-imagine-video |
alternative | Low-cost draft |
reference-to-video |
seedance-2.0 |
default | Keep the product from several photos |
reference-to-video |
veo3.1-fast |
alternative | References, alternative (not live-tested) |
reference-to-video |
grok-imagine-video |
alternative | Low-cost references |
text-to-video |
veo3.1-fast |
default | Brief only, no photo |
text-to-video |
seedance-2.0 |
alternative | Brief only, alternative (not live-tested) |
text-to-video |
grok-imagine-video |
alternative | Low-cost draft |
This list refreshes daily from the live catalog. Preferred models come first; otherwise models are ranked by their 24-hour success rate. Before a call, confirm the model with GET /v1/models/{model} and read its price from GET /v1/models/{model}/pricing.
How to choose
Exact fields and values come from each model's contract.
- One product still (
image-to-video): Veo 3.1 Fast is the default, with sound, 4, 6, or 8 s at 720p or 1080p. Veo 3.1 is the higher tier. Kling 3.0 is an alternative with sound on or off. Grok Imagine video makes a low-cost draft. - Several product photos (
reference-to-video): Seedance 2.0 keeps the product from several photos. Veo 3.1 Fast is an alternative; it takes 8 s only for this operation. Grok Imagine video makes low-cost reference drafts (1-10 s). - Brief only, no photo (
text-to-video): Veo 3.1 Fast, then Seedance 2.0 as an alternative. Grok Imagine video makes a low-cost draft. - Sound: Veo always adds audio. For silent shots, pick a model whose contract lists
output_audio.
All video calls use POST /v1/videos/generations with an explicit operation. Send output_audio only when the operation lists it.
Workflow
Run each call with tokenlab-run (contract → estimate → call → poll → result). Commands below use its helper, ../tokenlab-run/scripts/tokenlab_run.py, a path relative to this skill's folder. If you installed this skill without tokenlab-run, send the same requests with curl. --wait stops after 100 s; a longer task keeps running, so continue with the resume command it prints.
Get a clean still. Use the user's photo if it is sharp and well lit. Otherwise run
tokenlab-product-photographyfirst and keep its result URL as the anchor.Read the contract:
python ../tokenlab-run/scripts/tokenlab_run.py contract MODEL --operation image-to-video(orreference-to-video,text-to-video). Use only listed fields and values.Estimate the cost:
python ../tokenlab-run/scripts/tokenlab_run.py price MODEL, then per-second price ×durationfor each shot. Some models charge more with audio on or at a higher resolution. Use the Official price as the upper bound. Tell the user the total for all shots before you start.Build one body per shot:
{"model": "MODEL_ID", "operation": "image-to-video", "image_url": "https://...", "prompt": "Slow push-in on the white ceramic mug on a walnut table. Soft morning light moves across the glaze. Coffee steam rises. Quiet room tone, a soft clink. The mug shape, color, and logo stay exactly the same.", "duration": 6, "resolution": "720p", "aspect_ratio": "9:16"}Take
MODEL_IDfrom the Models list above for the shot's operation. Setdurationandresolutionto values its contract lists.Call and wait:
python ../tokenlab-run/scripts/tokenlab_run.py run /v1/videos/generations --json @shot1.json --wait. Save each task ID. Poll every 5-10 s.If a wait times out, resume with
python ../tokenlab-run/scripts/tokenlab_run.py poll TASK_ID. Never create a duplicate task.Check each shot against the Quality bar. Re-run only the weak shot, after you tell the user the cost.
Return each video URL with its model, task ID, aspect ratio, and estimate.
Technique
- Restage, then animate. Fix the product still first. A video model copies the flaws of its first frame.
- Slow, simple camera moves sell products. Use one move per shot: slow push-in, slow orbit, low-angle tilt up, top-down reveal. Fast moves blur labels.
- Light is the motion. "A light sweep moves across the glass", "sunlight shifts across the table" add life without changing the product.
- Protect the product in words. End the prompt with what must stay: "the bottle shape, label, and cap stay exactly as in the image."
- One action per shot. Pour, open, rotate, or steam. Make a second shot for the next action.
- No generated text. Do not ask the model to write slogans or prices on screen. Add text, logo cards, and prices in an editor.
- Sound. Veo models always add audio. Describe it: "soft clink of the cup, quiet morning room tone". Put a spoken line in quotes. For silent shots, pick a model that lists
output_audioand sendfalse. - Multi-angle consistency. For a hero product shown from several angles, use
reference-to-videowith 2-4 clean product photos instead of separate image-to-video calls. - One aspect ratio per call. Make 9:16 and 16:9 as separate calls. For image-to-video, crop the still to the target shape first, because some models follow the input image shape.
Quality bar
- The product matches the input: shape, proportions, color, logo, and label.
- No warped text, extra parts, or floating products. Shadows follow the light.
- Each shot has one clear action and a steady camera.
- Aspect ratio and length match each channel. No invented claims, prices, or badges.
- The user saw the total estimate before the jobs, and the answer lists every shot's model and task ID.
Related skills
tokenlab-run: the call, poll, and result mechanics.tokenlab-product-photography: make the clean product still first.tokenlab-animate-image: generic image-to-video with no product rules.tokenlab-cinematic-video: camera language for brand mood shots.tokenlab-talking-avatar: a presenter who talks about the product.tokenlab-voiceover: a separate voice track for the edit.