AI book trailer maker: turn a blurb and cover into video

An AI book trailer turns your blurb and cover into a short video: narration, mood shots that end on the cover, music, and the title on screen.

6 min readSume
All posts

An AI book trailer maker turns what you already have, the book's blurb and its cover, into a short promo video: a narrated hook, a few mood shots that suggest the story, a music bed, and the title on screen. With Sume you build one from documented steps: text to speech for the narration, image-to-video shots that can end on your cover, a generated music track, one Timeline 1.0 render that lays the shots and music under the voice, and a caption job for the title cards.

Facts come from Sume's Video generation, Timeline 1.0, Music Router, and Video captions docs and the Sume API reference, read on 2026-09-27; anything called current behavior is read from Sume's code. The narration, B-roll, and music pipeline is covered in Faceless video API; this post covers what a trailer adds.

What goes into an AI book trailer?

Use only text and art you have the rights to, such as your own blurb and cover. The generated shots are interpretations of your story, not your book's illustrations. Each piece maps to one call:

From Video generation, Music Router, Timeline 1.0, Video captions, and the Sume API reference, read 2026-09-27.
PieceWhat to sendSume call
NarrationA short hook written from the blurb, as transcriptPOST /v1/tts-1.0/generate
Mood shotsOne prompt per shot, describing motion, camera angle, and lightPOST /v1/videos
Cover shotA mood still as first_frame and your cover as last_framePOST /v1/videos
MusicA music brief; optionally the cover as image_urlPOST /v1/music-router/generate
AssemblyShots in order over the narration, music underneathPOST /v1/timeline-1.0/render
Title cardsTitle, tagline, and release line as timed cuesPOST /v1/video-captions

How do I end the trailer on the book cover?

Send the cover in frame_images as the last_frame and describe the move into it. Current code refuses a last_frame without a first_frame, so also send a starting still you have rights to. Both images must be at public HTTPS URLs, and only models whose supported_frame_images on GET /v1/videos/models list last_frame accept it. Everything between the two frames is generated, so check the cover's lettering in the finished clip, and put the exact title on screen as a text card. Image-to-video: first and last frame lists the models.

curl -X POST https://api.sume.com/v1/videos \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: trailer-cover-shot-001" \
  -d '{
    "model": "seedance-2.5",
    "prompt": "Slow push-in through a foggy harbor at night, lantern light, settling on the book cover",
    "frame_images": [
      { "type": "image_url", "image_url": { "url": "https://example.com/harbor.jpg" }, "frame_type": "first_frame" },
      { "type": "image_url", "image_url": { "url": "https://example.com/cover.jpg" }, "frame_type": "last_frame" }
    ],
    "aspect_ratio": "9:16",
    "duration": 6
  }'

How do I make the narration and the music?

Narration and assembly work as in Faceless video API: TTS 1.0 voices the hook, with language set for a book that isn't in English, and one Timeline 1.0 render lays the shots over the narration, with the music as a soundtrack that duck_db dips under the voice. Timeline takes only your workspace's media.sume.com files, so read each shot's URL from GET /v1/jobs/{id}/result.

For the music, send the Music Router a brief with the mood, a tempo, two to four instruments, the length (“A 30-second track”), and “no spoken word”, since it plays under narration. Your cover can go in image_url as visual conditioning. There is no duration field, so check the length of the track you get.

How do I put the title and release date on screen?

Send the finished render's video_url to POST /v1/video-captions with cues: each cue has text, start, and end in seconds, and cues skip speech-to-text, so the words appear exactly as typed. cues, words, segments, and script_text are mutually exclusive, so one job carries either title cards or narration captions. Today a caption job refuses a source longer than 60 seconds, so keep a trailer you caption on Sume to 60 seconds.

curl -X POST https://api.sume.com/v1/video-captions \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: trailer-title-cards-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/trailer.mp4",
    "cues": [
      { "text": "Some doors stay shut for a reason.", "start": 2, "end": 6 },
      { "text": "The Harbor Keeper", "start": 24, "end": 28 },
      { "text": "Out this October", "start": 28, "end": 30 }
    ]
  }'

What does an AI book trailer cost?

Each step is its own job, billed on its own, plus a 5.5% agent fee by default. Narration is $0.0475 per 1,000 characters, music is $0.125 per audio generation, and the render is listed at $0.10 per output minute. Shots are reserved on submit at the provider's list price × 1.25; each model's pricing_skus on GET /v1/videos/models has its rate. A caption job reserves a fixed amount for videos up to 60 seconds; confirm it in GET /v1/catalog. Rates are on API pricing.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume