Turn a newsletter issue into a 60-second video: five stills, one voice
Convert one newsletter issue into a 60-second vertical video: one still per section, a 900-character voice-over, one render and captions. Cost per issue.

Give each of five sections a still, narrate a 900-character summary, and render it on Timeline 1.0 at about $0.38 per issue with captions, which is $19.74 for a weekly year. The video replaces nothing in the issue; it is a recap that points back to it.
Split the issue first
Take the section headings as scene titles and write one or two sentences for each. Keep the narration to the total character budget you chose: Sume's text to speech bills per character at $0.0475 per 1,000.
Cost per issue
Stills use GPT Image 2.5 at low quality, 1024 by 1024.
| Item | Qty | Subtotal |
|---|---|---|
| Stills, GPT Image 2.5 low | 5 | $0.036875 |
| Voice-over, 900 characters | 1 | $0.04275 |
| Timeline render, 60 s | 1 | $0.10 |
| Captions | 1 | $0.20 |
| Total per issue | $0.379625 |
Timing the slots
The slot starts must be strictly increasing, and video[0].start must be 0. Twelve seconds per section gives five slots across 60 seconds.
import json
sections = ["intro", "story", "tool", "chart", "link"]
SEG = 12
video = []
for i, name in enumerate(sections):
slot = {"source_url": f"https://media.sume.com/artifacts/artf_demo/{name}.png",
"start": i * SEG, "duration": SEG}
if i:
slot["transition"] = {"type": "slideup", "duration": 0.4}
video.append(slot)
body = {"audio": {"url": "https://media.sume.com/artifacts/artf_demo/issue.wav",
"duration_seconds": SEG * len(sections)}, "video": video}
print(len(video), body["audio"]["duration_seconds"])Keep the claims in the text
Charts and numbers from the issue should be drawn from your own data, not generated, since an image model can render a plausible but wrong chart. Use generated stills for mood and keep figures in captions you wrote.
Keeping it a recap
The video should drive readers to the issue, not replace it. End on a still that shows the issue title and the link in your own text, and put the link in the post that carries the video. If the issue is long, narrate only the three most useful items; a 900-character script is a starting point, not a guarantee of 60 seconds. Measure the spoken length of your first voice-over and set the Timeline duration to match it; a longer script would force you to cut slots or speed up the voice.
Related posts
More in Use cases
- Newsletter to audio: a 2,000-word issue costs about $0.57
A 2,000-word newsletter is about 12,000 characters, which fits one Sume TTS request under the 20,000 limit and bills $0.57. When to split, and a Python loop.
- Newsroom: 20 images a day, 440 a month, from $10.89 on Sume
A desk that makes 20 illustrations a day over 22 workdays makes 440 images: $10.89 on GPT Image 2.5 low or $44.00 on Nano Banana 2.1 at 1K on Sume.
- Nine Performance Max videos (3 ratios x 3 concepts): Sume cost
Three concepts in 16:9, 1:1 and 9:16 at 10 seconds each is 90 video seconds. At Wan 3.0 720p that is $11.25 on Sume; Seedance 2.5 is about $52.
- Nonprofit donation appeal: a 15-second video from two Omni clips
A 15-second appeal in 9:16 is two Omni clips, 10 and 5 seconds, joined on Sume. $1.875 at 720p for both. Where to put captions, and what the watermark means.
Written by Sume