How do I make a Black Friday video ad with no product photos?
Three 5-second Wan 3.0 text-to-video clips, a music bed, one render and burned-in deal text: $2.315 on Sume at 720p, no photo shoot needed.

You can make a Black Friday ad without a product photo by describing the scene in a text prompt, generating three 5-second clips with wan-3.0 on POST /v1/videos, laying them on a music bed in one Timeline 1.0 render, and burning the deal text in afterwards with caption cues. On Sume that is $0.63 per 720p clip, $1.89 for three, plus $0.125 for the music, $0.10 for the render and $0.20 for the captions: $2.315 for a 15-second vertical ad, at the rates read on 2026-10-07.
Black Friday 2026 is Friday, November 27, the day after Thanksgiving on November 26, and Cyber Monday follows on November 30. That leaves 51 days from today, which is enough time for a text-only campaign and one round of retakes.
What a text-only ad can and cannot carry
A text-to-video model draws a scene from words. It does not know your product. So write the prompt about the situation your buyer is in (a cold hallway, a gift being wrapped, a delivery box on a doorstep) and let the product category appear as a generic object. Do not ask for your logo, your price or your brand name in the prompt. Models are poor at exact text, and a wrong price in a sale ad is the one mistake you cannot afford.
Put every fact that must be exact into caption cues instead. The caption job takes cues with text, start and end, burns them into the video, and does not use speech-to-text, so a silent or music-only clip works. That keeps the deal, the dates and the code in your hands as plain strings.
Generate the three clips
wan-3.0 accepts 2 to 30 seconds at 480p, 720p and 1080p, and does text-to-video. Ask for 9:16 for a vertical feed. Send generate_audio: false if you want the music bed alone to carry the sound. Each submit returns a job with a polling_url; poll it until completed and read the first entry of unsigned_urls.
const beats = [
'Cold gray street at dusk, a hand pulls a warm glowing gift box from a shelf, shallow depth of field',
'Close shot of ribbon being tied around a box on a wooden table, soft lamp light',
'A wrapped gift handed across a doorway to a smiling person, snow beginning to fall'
];
for (const [i, prompt] of beats.entries()) {
const res = await fetch('https://api.sume.com/v1/videos', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SUME_API_KEY}`,
'Content-Type': 'application/json',
'Idempotency-Key': `bf-textonly-${i}`
},
body: JSON.stringify({
model: 'wan-3.0', prompt, duration: 5,
resolution: '720p', aspect_ratio: '9:16', generate_audio: false
})
});
const job = await res.json();
console.log(i, job.id, job.polling_url);
}Bed, render, and the deal text
Generate the bed with Music Router at a fixed $0.125 per track. Music jobs take no duration field, so write 'a 15-second track' and the tempo in the prompt, then end with 'Instrumental, no vocals.' Import the three clips and the music into the workspace, then render with Timeline 1.0: the music is audio.url with duration_seconds: 15, and video[] has three slots starting at 0, 5 and 10 seconds. The render is $0.10 per started output minute.
Finish with one caption job on the rendered file. A standalone caption job is $0.20 for a video up to 60 seconds. Use three cues: the offer ('Black Friday: 30% off sitewide') from 0 to 5 seconds, the dates from 5 to 10, and the code or URL from 10 to 15. Check the rendered file on a phone before you schedule it.
Check the ad before it goes out
Play the finished file on a phone, with sound on and with sound off. With sound off the captions have to carry the offer on their own, and with sound on the music must not fight the on-screen text. If the second clip drifts from the first (a different coat colour, a different table), reroll only that beat, since each clip is a separate job and a separate price.
Read the dates out loud against the calendar. Black Friday is November 27 and Cyber Monday is November 30 in 2026; if your offer ends on a different day, change the cue text, not the prompt, and re-run the $0.20 caption job. Because the cues are plain strings in your own code, you can keep them in a spreadsheet and review them like any other price list.
Last, keep the three prompts with the job ids. If the ad works, the same three beats at 9:16 are your template for the Cyber Monday cut: change the setting words, keep the structure, and you pay the same per-clip price again.
Cost of the whole ad
- Retake one beat: $0.63, then re-render for $0.10 and re-caption for $0.20.
- The same ad at 1080p: three clips at $1.25 each, which adds $1.86 in total.
- Draft at 480p first: $0.32 per clip, $0.96 for three, then spend on the 720p finals only for the beats you keep.
| Step | Unit | Price | This ad |
|---|---|---|---|
| wan-3.0, 720p, 5 s | per clip (0.125/s) | $0.125/s | $0.63 x 3 = $1.89 |
| Music Router bed | per track | $0.125 | $0.125 |
| Timeline 1.0 render | per started minute | $0.10 | $0.10 |
| Caption cues | per job up to 60 s | $0.20 | $0.20 |
| Total | $2.315 |
Sources
Related posts
More in Use cases
- Change prices on a chalkboard menu photo with Ideogram 4.5
Update dish prices on a chalkboard menu photo with ideogram/ideogram-v4.5: list old and new text, one change set per call, check each digit. $0.075 at medium.
- Change the background behind a person in a video with AI (Omni edit)
Swap the backdrop behind a person in an existing clip with Gemini Omni Flash 1.1 edit on Sume: a keep-the-subject prompt, limits, and a 10-second price table.
- Change the print on a t-shirt in a model photo with a design reference
Swap the graphic on a shirt in a model photo: photo first, new design as a second reference to ideogram/ideogram-v4.5. $0.075 per photo at medium on Sume.
- Customer onboarding email series with an avatar: 5 clips, cost by tier
Five 20-second onboarding clips from one Sume avatar cost $18.40 on standard, $24.50 on plus and $55.00 on max. How to plan the series and when to re-render.
Written by Sume