⏱️canva-presentation-time-fitting
- プラグイン
- canva
- ソース
- GitHub で見る ↗
説明
発表者ノートのみを生成または書き直すことで、Canvaのプレゼンテーションを目標の発表時間に合わせます(スライド上の表示テキストは編集されません)。 次のような場合に使用: - 「このプレゼンを10分にしたい」 - 「各スライドに均等に時間を割り振って」 - 「15分のトーク用にスピーカーノートを生成して」 - 「デッキを〔指定時間〕に合わせて」 - 「20分の枠で1スライドあたり何分になる?」
原文を表示
Fit a Canva presentation to a target speaking duration by generating or rewriting presenter notes only (visible slide text is not edited). Use when users say "make this a 10-minute presentation", "split time evenly across slides", "generate speaker notes for a 15-minute talk", "fit my deck to [duration]", or "how long per slide for a 20-minute slot".
ユースケース
- ✓プレゼンを目標時間に合わせたい
- ✓スライドごとに時間を均等配分したい
- ✓発表者ノートを生成したい
- ✓指定時間での1スライド当たりの時間を知りたい
本文(日本語訳)
プレゼンテーション時間調整スキル
既存のCanvaプレゼンテーションを対象として、発表者ノートのみを操作することで、指定された発表時間に合わせて調整します。スライド上の可視テキストは文脈把握と時間計算のために読み取りますが、このスキルでは変更してはなりません。処理の流れは次のとおりです: デザインと総発表時間を確認(クローン作成前)→ スライドテキストを読み取る → スライドごとに時間を配分 → 各スライドの時間枠に合わせて発表者ノートを追加・置換・削減 → Canva編集ツールを通じてノートのみを書き戻す。
主要ワークフロー(時間バランスの取れた発表者ノート)
ステップ1: デザインと発表時間を収集する(他のCanvaツール呼び出しより前に実施)
Canva:resize-design、Canva:get-design-content、その他の編集・コンテンツ系ツールを呼び出す前に、必要な情報をすべて収集します:- デザイン: リンク(
canva.link)、CanvaのフルURL、デザインID、またはデザイン名(それぞれがどのようにdesign_idに対応するかはステップ2を参照) - スライドを通して発表するための総発話時間(例:
"15分"、"45 min"、"1時間")。総秒数(または小数の分)に変換します。ユーザーの指定が曖昧な場合は、スライドを通じて話したい合計分数を確認します(Q&Aをその合計に含めるかどうかはユーザーの指示がある場合のみ)
- デザイン: リンク(
- デザインまたは発表時間のいずれかが不明な場合は、確認してから次に進む
ステップ2: デザインを解決する
- ユーザーが短縮リンク(
canva.link)を提供した場合は、Canva:resolve-shortlinkを呼び出してデザインURLを取得する - ユーザーがCanvaのフルURLを提供した場合は、デザインIDを抽出する(
https://www.canva.com/design/{design_id}/...) - ユーザーがデザインIDを直接提供した場合(通常
Dで始まる。例:DABcd1234ef)、それをdesign_idとして使用する。生のIDに対してCanva:search-designsは使用しない - ユーザーがデザイン名(IDではない)を提供した場合は、
Canva:search-designsを使用する。複数候補が見つかった場合は明確化を求める - それでもデザインを解決できない場合は、デザインIDまたはリンクを要求する
ステップ3: コピーで作業する(必須)
Canva:resize-designをソースと同じサイズで使用してプレゼンテーションをクローンする。元のデザインは変更しない
ステップ4: スライドコンテンツを読み取る
- コピーに対して**
Canva:get-design-content**を呼び出し、スライド・ページごとの可視テキスト(見出し、箇条書き、本文)を抽出する - スライドごとのサマリーを構築する: スライドのインデックスまたはタイトル、テキストコンテンツ、ペイロードに含まれている場合は発表者ノートの有無
- スライド枚数 = このレスポンスから得られるコンテンツを含むページ数(ステップ5の計算に使用)
ステップ5: スライドごとの時間を計算する
- スライドあたりの目標発話時間 =
総時間 ÷ スライド枚数(ユーザーがタイトルスライドや締めくくりスライドの重み付けを変えるよう求めない限り均等分割とし、その場合は仮定を明示する) - 目安として1分あたり約150語を用いてスライドあたりの語数予算を算出する:
目標語数 ≈ (スライドあたりの目標分数) × 150(適切に切り捨て・丸めを行う。あくまで目安であり上限ではない) - ユーザーに小さな表を提示する: スライド枚数、総発表時間、スライドあたりの秒数(またはmm:ss)、スライドあたりのおおよその語数予算
ステップ6: 発表者ノートを生成する(このセッション内で)
- このレスポンス内でノートを直接生成する。外部APIの呼び出しは不要です。各スライドに対して、ステップ4で取得したそのスライドのテキストと、ステップ5で算出したスライドあたりの時間・語数予算を用いて、発表者ノートを作成します(タイミング調整のために作成・編集できるのはこのコンテンツのみです):
- 声に出して読んだときに、割り当てられた時間をおおよそ埋められるよう調整する
- テキストが少ないスライドは、ノートに文脈・トランジション・デリバリーのヒントを追加して補う。予算が少ない場合はノートを短くする(スライド上のテキストは短くしない)
- スライドの可視メッセージに忠実に従い、事実を捏造しない
- ビジュアル中心でテキストが少ないスライドの場合は、割り当て時間内にビジュアルについて何を話すべきかを説明するノートを書く
ステップ7: ノートをCanvaに書き戻す
- コピーに対して**
Canva:get-design-pagesを呼び出し、ノートが必要な各スライドのpage_id**(または相当するもの)を取得する - コピーに対して、まだアクティブでなければ**
Canva:start-editing-transaction**を呼び出す。返されたtransaction_idを編集に使用する - オプションの順序付け: コピーのデザインIDを取得したらすぐ(例: ステップ4直後または
get-design-pages直後)に編集トランザクションを開始しておくと、チャット内でノート生成に長時間かかっても「編集準備完了」から「トランザクション開始」の間に時間が空かない。一部の環境ではトランザクション開始を先延ばしにしないほうがタイムアウトが発生しにくい。コネクターがフロー全体で1つの長期トランザクションを許可している場合は、1回だけ開いてステップ7の編集でtransaction_idを再利用することが望ましい Canva:perform-editing-operationsを呼び出す際は、Canva MCPが発表者・スピーカーノート用に公開しているオペレーションタイプのみを使用する(名称はコネクターによって異なる場合があるため、ページごとにノートを更新するスキーマを参照すること)。replace_text、find_and_replace_text、またはスライド上の可視テキストを変更するオペレーションは呼び出さない。すべてのノート更新を、許可される範囲でできる限り少ない呼び出しにまとめて適用する- **
Canva:commit-editing-transaction**を呼び出して保存する
ステップ8: 引き渡し
- デザインのコピーへのリンクと、一行の要約を共有する: 総目標時間とスライドあたりの時間配分
- 話す速度(約150 wpm)は発表者によって異なること、および均等分割はデフォルトであり、フォローアップで別の重み付けを依頼できることをユーザーに伝える
スコープ: ノートのみ
- 対象範囲: **
get-design-content**を使ってスライド上のテキストを読み取る。MCPのページごとのノートオペレーションを使用して、発表者・スピーカーノートのみを作成・更新・延長・短縮する。 - 対象外: スライドの可視コンテンツ(
replace_text、find_and_replace_text、書式設定、メディア、レイアウト、タイトルなど)は変更しない。ユーザーがスライド自体のカット・パディングを依頼した場合は、このスキルが調整できるのはノートのみである旨を伝え、スライドはCanva上で直接編集するか別のスキル・ワークフローを使用するよう案内する。 - スライド枚数: APIではページの追加・削除はできない。時間目標がスライド上のコンテンツ量に対して非現実的な場合(例: 密度の高いスライド2枚で60分の話し合い)は、その旨を伝え、エディターでスライドを分割・整理するか、目標時間を見直すよう提案する。スライドテキストを変更せずに、スライドがタイトとなっていることをノートで示す(例: 「Xを優先し、Yは簡潔に」)ことは可能。
start-editing-transactionが失敗またはタイムアウトした場合
原因(通常はスキルのテキストの問題ではない): デザインが大きい(ページ数・アセット数が多い)場合、ネットワークが遅い場合、またはサーバーが高負荷の場合に、CanvaまたはMCPゲートウェイが*「タイムアウトにより処理が中断されました」*でabortすることがあります。これはインフラ・製品上の制限であり、SKILL.mdを編集しても解決できるものではありません。
セッション内での対処法:
- 少し待ってから(例: 15〜30秒後)
Canva:start-editing-transactionを1回リトライする。一時的な障害は2回目の試行で成功することが多い。 - フロー内で早めにトランザクションを開く(ステップ7の補足を参照)。チャット内での長いノート生成フェーズが「編集準備完了」から「トランザクション開始」の間に挟まらないようにする。
- それでも失敗する場合: これはCanva/MCPのタイムアウトであり、スキルのロジックエラーではないことをユーザーに明確に伝える。後で再試行する、組織のポリシーに従って安定したネットワーク・VPNを使用する、またはパイプラインが正常に機能するか確認するためにページ数を減らしたコピーでテストするよう提案する。
- フォールバック: 自動化が繰り返しタイムアウトする場合は、生成した発表者ノートをスライドごとにまとめてチャットに貼り付ける(スライド1: …、スライド2: …)。ユーザーはCanvaの発表者ノートに手動で入力できる。
ルール
- 編集前には必ず
Canva:resize-design(同じサイズ)でクローンを作成する Canva:get-design-contentで読み取りを行い、ノートを書き込む前に**Canva:get-design-pagesでページIDを解決**する- 主要フロー: 早い段階で発表時間を確認 → スライドごとの予算を算出 → ノートを生成 → ノートのみの**
perform-editing-operations** → コミット - このスキルではスライド上の可視テキストは絶対に編集しない。発表者・スピーカーノートのみ(スコープ: ノートのみを参照)
start-editing-transactionがタイムアウトした場合: 1回リトライし、それでも失敗する場合は状況を説明して手動ノートフォールバックを提示する(start-editing-transactionが失敗またはタイムアウトした場合を参照)- 可能な限り編集オペレーションをまとめて実行する
原文(English)を表示
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
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。