canva-presentation-time-fitting
Presentation Time-Fitting
Take an existing Canva presentation and align it with a target speaking duration using presenter notes only. Visible on-slide text is read for context and timing, but must not be changed by this skill. The flow is: confirm design + total duration (before cloning), read slide text, divide time across slides, add, replace, or trim speaker notes per slide to match each slot, write notes only back via Canva editing tools.
Primary workflow (time-balanced presenter notes)
Step 1: Collect design and duration (before other Canva tool calls)
- Gather everything you need before calling
Canva:resize-design,Canva:get-design-contentor other editing/content tools:- Design: link (
canva.link), full Canva URL, design ID, or design name (see Step 2 for how each maps todesign_id) - Total speaking time for delivering the deck (e.g.
"15 minutes","45 min","1 hour"). Parse to total seconds (or minutes as a decimal). If the user is vague, confirm the total minutes they want for speaking through the slides (include Q&A in that total only if they say so)
- Design: link (
- If either design or duration is missing, ask and wait before proceeding
Step 2: Resolve the design
- If the user provides a short link (
canva.link), callCanva:resolve-shortlinkto get the design URL - If the user provides a full Canva URL, extract the design ID (
https://www.canva.com/design/{design_id}/...) - If the user provides a design ID directly (typically starts with
D, e.g.DABcd1234ef), use it asdesign_id; do not useCanva:search-designsfor a raw ID - If the user provides a design name (not an ID), use
Canva:search-designs; if multiple matches, ask for clarification - If you still cannot resolve a design, ask for the design ID or link
Step 3: Work on a copy (required)
- Use
Canva:resize-designwith the same dimensions as the source to clone the presentation; do not modify the original
Step 4: Read slide content
- Call
Canva:get-design-contenton the copy to extract visible text per slide/page (headings, bullets, body) - Build a per-slide summary: slide index or title, text content, and whether speaker notes already exist if the payload includes them
- Slide count = number of content-bearing pages from this response (use for the division in Step 5)
Step 5: Calculate time per slide
- Target speaking time per slide =
total_duration ÷ number_of_slides(equal split unless the user asks to weight title/closing differently; then adjust and state the assumption) - Derive a word budget per slide using ~150 words/minute as a guide:
target_words ≈ (target_minutes_per_slide) × 150(floor/round sensibly; treat as guidance, not a hard cap) - Show the user a small table: slide count, total duration, seconds (or mm:ss) per slide, approximate word budget per slide
Step 6: Generate speaker notes (in this session)
- Generate the notes directly in this response; no external API call is required. For each slide, using that slide’s text from Step 4 plus the per-slide time/word budget from Step 5, compose presenter notes (this is the only content you may author or edit for timing):
- Aim to fill roughly the allocated time when spoken aloud
- Expand thin slides with context, transitions, and delivery cues in the notes; shorten notes if the budget is small (do not shorten on-slide text)
- Stay faithful to the slide’s visible messages; do not invent facts
- If a slide is visual-heavy with little text, write notes that describe what to say about the visual in the allotted time
Step 7: Write notes back to Canva
- Call
Canva:get-design-pageson the copy to obtainpage_id(or equivalent) for each slide that needs notes - Call
Canva:start-editing-transactionon the copy if not already active; use the returnedtransaction_idfor edits - Optional ordering: start the editing transaction soon after you have the copy’s design ID (e.g. right after Step 4 or right after
get-design-pages) so the session is open before you spend a long time composing notes in chat; some environments time out less often when the transaction is not deferred. If the connector allows one long-lived transaction for the whole flow, prefer opening it once and reusingtransaction_idfor Step 7 edits - Call
Canva:perform-editing-operationsusing only the operation type the Canva MCP exposes for presenter/speaker notes (name may vary by connector; use the schema for updating notes per page). Do not callreplace_text,find_and_replace_text, or any operation that changes visible on-slide text. Apply all note updates, batched in as few calls as allowed - Call
Canva:commit-editing-transactionto save
Step 8: Hand off
- Share the link to the copy of the design and a one-line recap: total target time and per-slide time allocation
- Remind the user that pace (~150 wpm) varies by speaker and that equal split is a default; they can ask for a different weighting in a follow-up
Scope: notes only
- In scope: Read on-slide text via
get-design-content. Create, update, lengthen, or shorten presenter/speaker notes only, using the MCP’s note operation per page. - Out of scope: Do not change visible slide content (
replace_text,find_and_replace_text, formatting, media, layout, title, etc.). If the user asks to cut or pad the slides themselves, say this skill only adjusts notes; they can edit slides in Canva or use another skill/workflow. - Slide count: The API cannot add or remove pages. If the time target is unrealistic for the amount of on-slide material (e.g. 60 minutes of talking from two dense slides), say so and suggest splitting or simplifying slides in the editor, or revising the target duration. You may still write notes that acknowledge the squeeze (e.g. “prioritise X, skim Y”) without changing slide text.
When start-editing-transaction fails or times out
Cause (usually not the skill text): Canva or the MCP gateway can abort with “The operation was aborted due to timeout” when the design is large (many pages/assets), the network is slow, or servers are under load. That is an infrastructure / product limit, not something fixed by editing SKILL.md.
What to do in the session:
- Retry once
Canva:start-editing-transactionafter a short pause (e.g. 15–30 seconds). Transient failures often succeed on a second attempt. - Open the transaction earlier in the flow (see Step 7 bullet) so a long note-generation stretch in chat does not sit between “ready to edit” and “start transaction.”
- If it still fails: tell the user clearly this is a Canva/MCP timeout, not a logic error in the skill. Suggest they try again later, use a stable network / VPN per org policy, or test on a smaller copy of the deck (fewer pages) to confirm the pipeline works.
- Fallback: paste the generated speaker notes into the chat grouped by slide (Slide 1: …, Slide 2: …) so the user can enter them manually in Canva’s presenter notes if automation keeps timing out.
Rules
- Always clone with
Canva:resize-design(same dimensions) before edits - Read with
Canva:get-design-content; resolve page IDs withCanva:get-design-pagesbefore writing notes - Primary path: confirm duration early → per-slide budget → generate notes → note-only
perform-editing-operations→ commit - Never edit on-slide text in this skill; only presenter/speaker notes (see Scope: notes only)
- On
start-editing-transactiontimeout: retry once, then explain and offer the manual notes fallback (see Whenstart-editing-transactionfails or times out) - Batch editing operations where possible
More from canva-sdks/canva-claude-skills
canva-branded-presentation
Create on-brand Canva presentations from an outline or brief. Use when the user asks to create a branded presentation, make an on-brand deck, turn an outline into slides, or generate a presentation from a brief. Input can be text directly in the message, a Canva design ID, a reference to a Canva doc by name, or a Canva design link (e.g., https://www.canva.com/design/...).
173canva-translate-design
Translate all text in a Canva design to another language, creating a translated copy. Faster than manually copying and editing each text box in Canva's editor. Use when users say "translate my design to [language]", "make a Spanish/French/etc version", or "localize my Canva design".
50canva-resize-for-social-media
Resize a Canva design into multiple social media formats (Facebook post, Facebook story, Instagram post, Instagram story, LinkedIn post) and export all versions as PNGs. Use this skill when users want to resize Canva designs specifically for multiple social media platforms in one operation, rather than resizing to a single format manually.
40canva-bulk-create
Bulk-create Canva designs from tabular data using a brand template with autofill fields, producing one design per row. Use when users say "bulk create designs from this CSV", "generate one design per row", "create a design for each product", "batch generate from a template", or "autofill a template from a spreadsheet". Accepts any tabular data source — uploaded files, pasted tables, JSON, or URLs.
30canva-implement-feedback
Implement reviewer feedback on a Canva design. Reads all comment threads, synthesises what reviewers want, makes the clear-cut changes directly, and flags anything that needs a human decision. Use when the user asks to "implement feedback on my deck", "address comments on a design", "apply review feedback", "fix the comments on my presentation", or "implement the feedback".
28canva-classroom-helper
Turn a lesson plan into a teaching slide deck in Canva. Use when the user asks to build classroom slides from a lesson plan, convert a lesson plan into a presentation, make a teaching deck, create school slides from an outline, or generate a lesson deck for students. Input can be a lesson plan pasted in the message, a Canva design ID, a Canva doc or design by name, or a Canva design link (e.g., https://www.canva.com/design/...).
19