Gift guide by budget: three short Timeline renders beat one long one
Split a holiday gift guide into under-$25, $50 and $100 brackets, one short Timeline render each, and plan all three free first. Each is $0.10 a started minute.

Make one short render per budget bracket (under $25, under $50, under $100) instead of one long guide. Each bracket is a separate Timeline 1.0 job at $0.10 per started output minute, and the free plan endpoint tells you the segment count and billable minutes of all three before you spend anything.
Why brackets, not one long guide
A shopper with a $25 limit does not want to sit through $100 products. A bracket clip answers the query they typed ("gifts under $25") in the first frame. It also gives each clip its own landing page, caption and posting time. The one-long-guide approach, which the blog already covers in the 20-stills guide, is better when you want a single hero asset. Brackets are better for search-led and paid placements.
Plan all three first
POST /v1/timeline-1.0/plan runs the schema and URL checks and the compiler, and returns duration_seconds, segment_count, billable_minutes and estimated_cost_usd_micros. It creates no job, reserves no credits and downloads no media. It cannot predict short-source pad or loop warnings.
The script builds one plan per bracket. Each slot shows a still for 3 seconds with a quarter-second fade. Stills are static holds, so do not expect motion from them. Every URL must be a media.sume.com artifact or asset in your workspace, so import product images first.
import json, os, urllib.request
BRACKETS = {"under-25": ["mug", "socks", "candle"], "under-50": ["scarf", "gloves"],
"under-100": ["bag", "watch", "speaker"]}
def plan(names):
video = [{"source_url": f"https://media.sume.com/artifacts/artf_demo/{n}.png",
"start": i * 3, "duration": 3,
**({"transition": {"type": "fade", "duration": 0.25}} if i else {})}
for i, n in enumerate(names)]
body = {"audio": {"mode": "silence", "duration_seconds": 3 * len(names)}, "video": video}
req = urllib.request.Request(
"https://api.sume.com/v1/timeline-1.0/plan", json.dumps(body).encode(),
{"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json"})
return json.load(urllib.request.urlopen(req))
for name, items in BRACKETS.items():
p = plan(items)
print(name, p["duration_seconds"], p["segment_count"], p["billable_minutes"])Rules the plan will enforce
Check these before you scale a bracket past a handful of products.
| Limit | Value |
|---|---|
| Video slots per render | 1 to 200 |
| Output length | 1 to 1800 seconds |
| Transition length | At most 1 s and at most 50% of the shorter neighbour |
| Chained fades | More than 8 adjacent fades is refused (too_many_chained_transitions); insert a hard cut |
| Default output | 1080x1920 MP4 |
Price cards per bracket
Burn the price after the render, not inside it: one caption job per bracket clip ($0.20 for a clip up to 60 seconds) with cues such as the product name and price. A price change then re-runs only a caption job.
Limits
A bracket promise ("everything under $25") must hold for every product in the clip at the price shown. If a price moves over the line, take it out and re-render, rather than leaving it in the clip. Three renders also mean three reviews. If you do not have the time, one clip is better than three unreviewed ones. Review each bracket on a phone: the price in the first frame must be readable, the order of products should rise in price or in appeal, and no product should appear in two brackets with two different prices. Name the files with the bracket and the date, so the version in the ad account is obvious.
Sources
Related posts
More in Use cases
- GitHub README banner with light and dark versions from Sume
Generate two 3:1 banners with a 1536x512 custom size, commit them to the repo, and switch them with a picture element and prefers-color-scheme in the README.
- Godot: import a Sume image as a texture, WebP or PNG
Godot imports PNG, JPEG and WebP. Drop a Sume image into res://, pick Lossless or VRAM Compressed, and use 1024x1024 where power-of-two sizes help.
- Google Ads AI label: on-ad overlays only for EU, India and New York
Google's AI label always lands in the My Ad Center panel, but on-ad overlays follow campaign location. Which Sume assets to flag and how to log it.
- Google video enhancements add English-only voiceover: opt out or ship
Google video enhancements can flip, shorten and add English-only AI voiceover to your clip. Opt out per campaign, or ship a finished cut.
Written by Sume