Hypernatural

WorkflowBy HypernaturalVersion 2, Oct 29, 2026

recipe-sales-video-from-canva-deck

Make a personalized sales video when the deck lives in Canva: from (a) a finished Canva deck, (b) a Canva deck template plus a client-details doc, or (c) a Canva brand kit or brand guide plus a client-details doc. Fill or build the deck in Canva, export the real slides, then make the avatar walkthrough with recipe-sales-video-from-pitch-deck.

SKILL.md

Personalized sales video from a Canva deck

This recipe covers the Canva side for the three inputs: a finished deck, a template plus a client-details doc, or a brand kit or brand guide plus a client-details doc. Everything else, including what to pull from the details doc, asking who presents and the whole video, follows recipe-sales-video-from-pitch-deck.

Needs

The Canva connector (read-design, copy-design, edit-design, export-design; for C, also list-brand-kits, search-brand-templates, request-outline-review and generate-design-structured). Without it, ask the person to download the deck as a PDF and use the pitch-deck recipe.

A. A finished Canva deck

  1. Call read-design with the design id (11 characters after /design/) and the fields design_metadata, design_content, presenter_notes and thumbnails. Look at every thumbnail.
  2. Drop duplicates. Canva decks often carry an older copy of the deck at the end (in the first run, pages 9–14 repeated 1–8), or a slide that restates another as text. Say which you dropped.
  3. Speaker notes with talking points are the script's first draft.
  4. Go to Export.

B. A Canva template plus a client-details doc

  1. Read the doc and list the missing fields (pitch-deck recipe, Part 1). Ask for anything the deck needs that the doc doesn't say.
  2. Call copy-design on the template. Never edit the master. Keep only the pages this deal needs, using page_numbers.
  3. Call read-design on the copy with open_transaction: true and design_content. Text lives in three places:
    • text elements;
    • text elements inside group children (cards, list rows);
    • textContents on shape elements (pills, tags, badges). Read all three, or fields get missed. A big result is saved to a file: parse it with Python and list every locator_id with its text.
  4. Fill each field with edit-design, one page per call, using replace_text on the full locator id (<page>-<group>-<element> for children) and update_title for the deck's name. Look at each page's returned thumbnail before moving on:
    • Keep each value about as long as the placeholder. A long value wraps or runs into the element beside it (a price beside "/fixed", a heading over two lines). Fix it with a shorter value, or with \n where a heading should break.
    • Swap photos with update_fill on the image element, using assets uploaded with upload-asset-from-url from the client's images.
    • Clear the template's instruction notes with replace_speaker_notes. Put the script's first draft there if you like.
  5. Check for leftover placeholders: search the copy's design_content for [. Then commit the transaction, and show the thumbnails for approval.
  6. Go to Export.

C. A Canva brand kit or brand guide plus a client-details doc

  1. Read the doc and fill the gaps, as in B.
  2. Find the brand. Use list-brand-kits for the person's kit, and search-brand-templates for a presentation template in it. If a brand template exists, use route B on it.
  3. Otherwise generate: write the outline (title "Prepared for ", what we heard, approach, deliverables, timeline, pricing, end card), each slide's description holding the real values from the doc. Call request-outline-review, wait for the person's approval, then call generate-design-structured with the brand_kit_id. If the guide is a PDF or a website, not a Canva kit, upload its logo and set the colours and type by hand afterwards with edit-design.
  4. Check every page against the doc (read-design with thumbnails): generated decks invent filler. Replace any number, quote or claim the doc doesn't support. Commit, then show the deck for approval.
  5. Go to Export.

Export

Call export-design with {type: "png", pages: [kept pages], width: 1920, export_quality: "pro"}. A 4:3 deck comes out 1920×1440. Download the links right away (they expire) into the job folder on the person's computer as source/slideNN.png, from its own shell. Record the design id, title and route (A, B or C) in job-notes.md, then continue at the pitch-deck recipe's Part 2.

When the deck changes later

Export only the changed pages again, to the same names, and re-render only their spans with hn4a-compositor render --frames A:B --into. If what's said about a slide changes too, re-voice that section and redo its lip-sync chunks.

Dead ends

  • Reading only top-level text elements: it missed every field inside cards and pills.
  • Thumbnails from read-design (516 px) as video frames: too small. Always export.

Go make something cool.

Install the app, open your agent, describe the video. That's the whole onboarding.

Sticker HypernaturalSticker BannerSticker TVBoy