mcpField
C
canva-presentation-time-fitting

canva-presentation-time-fitting

github.com/canva-sdksドキュメント13839 回インストール5 日前に更新
リポジトリ

canva-presentation-time-fitting について

既存のCanvaプレゼンテーションを、発表者ノートだけで目標時間に合わせるワークフロースキルです。スライドのテキストを読み、ページごとの時間を配分し、表示内容は変更しません。

主な機能

  1. 01編集前にプレゼンテーションを複製
  2. 02各スライドの表示テキストを取得
  3. 03発表時間と語数の目安を配分
  4. 04発表者ノートのみを作成・更新
  5. 05Canvaの編集ツールでノートを書き戻し

活用シーン

  1. 01指定時間に合わせた発表資料の準備
  2. 02スライド間の説明時間の調整
  3. 03スライド内容を保ったノートの更新

MCP 対応

Canvaの編集ツールでプレゼンテーションの内容を読み取り、複製上の発表者ノートを書き換えます。表示中のスライド内容は変更しません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/canva-sdks/canva-skills --skill canva-presentation-time-fitting

インストール後、Claude Code で/canva-presentation-time-fittingを入力して読み込まれたか確認します。

詳細

プレゼンテーションの所要時間調整

既存の Canva プレゼンテーションを、発表者ノートのみを使って目標の発表時間に合わせます。文脈と所要時間を把握するためにスライド上のテキストは読みますが、このスキルでは変更してはいけません。手順は次のとおりです。複製する前にデザインと全体の所要時間を確認し、スライドのテキストを読み、各スライドに時間を割り当て、各スライドの時間枠に合うようにスピーカーノートを追加、置換、または短縮し、Canva の編集ツールを使ってノートのみを書き戻します。

主なワークフロー(発表者ノートの時間配分)

ステップ 1:デザインと所要時間を確認する(他の Canva ツールを呼び出す前に)
  • Canva:resize-design、Canva:get-design-content、またはその他の編集・コンテンツ関連ツールを呼び出す前に、必要な情報をすべて集めます。
    • デザイン:リンク(canva.link)、Canva の完全な URL、デザイン ID、またはデザイン名(それぞれがどのように design_id に対応するかはステップ 2 を参照)
    • プレゼンテーション全体の発表時間(例:"15 minutes"、"45 min"、"1 hour")。合計秒数(または小数の分数)に換算します。ユーザーの指定が曖昧な場合は、スライド発表に必要な**合計時間(分)**を確認します。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:スライドごとの時間を計算する
  • スライドごとの目標発表時間 = total_duration ÷ number_of_slides(タイトルスライドやクロージングの時間を変えるようユーザーが希望した場合を除き、均等に配分します。その場合は調整内容と前提を伝えます)。
  • 1 分あたり約 150 語を目安に、スライドごとの語数の目安を算出します:target_words ≈ (target_minutes_per_slide) × 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 つの 長時間有効なトランザクションを許可する場合は、最初に一度だけ開始し、ステップ 7 の編集で transaction_id を再利用してください
  • Canva:perform-editing-operations は、Canva MCP が発表者/スピーカーノート用に公開している 操作タイプのみ を使って呼び出してください(名前はコネクタによって異なる場合があります。ページごとのメモ更新用スキーマを使用してください)。replace_text、find_and_replace_text、または スライド上に表示されるテキスト を変更する操作は呼び出さないでください。すべてのメモ更新を、許可される限り できるだけ少ない 回数にまとめて適用します
  • 保存するには Canva:commit-editing-transaction を呼び出します
ステップ 8:引き継ぐ
  • デザインのコピーへのリンクと、1 行の概要(目標時間の合計とスライドごとの時間配分)を共有します
  • ペース(約 150 wpm)は話者によって異なり、均等配分は初期設定であることをユーザーに伝えます。フォローアップで別の配分を依頼できます

対象範囲:メモのみ

  • 対象範囲内:get-design-content でスライド上のテキストを読み取ります。MCP のページごとのメモ操作を使用して、発表者/スピーカーノートのみを作成、更新、追加、または短縮します。
  • 対象範囲外:スライド上に表示されるコンテンツ(replace_text、find_and_replace_text、書式設定、メディア、レイアウト、タイトルなど)は変更しないでください。ユーザーがスライド自体の削除や内容追加を依頼した場合、このスキルはメモのみを調整するものであると伝えてください。スライドは Canva で編集するか、別のスキル/ワークフローを使用できます。
  • スライド数:API ではページを追加または削除できません。目標時間がスライド上の素材量に対して非現実的な場合(たとえば、情報量の多い 2 枚のスライドで 60 分話す場合)は、その旨を伝え、エディターでスライドを分割または簡素化するか、目標時間を見直すよう提案してください。スライドのテキストは変更せず、(「X を優先し、Y は簡潔に扱う」のように)時間が厳しいことを踏まえたメモを書くことはできます。

start-editing-transaction が失敗またはタイムアウトする場合

原因(通常、スキルのテキストが原因ではありません): デザインのサイズが大きい(ページ/アセットが多い)、ネットワークが遅い、またはサーバーに負荷がかかっている場合、Canva または MCP ゲートウェイが “The operation was aborted due to timeout” というメッセージを返して処理を中断することがあります。これはインフラストラクチャ/製品上の制限であり、SKILL.md を編集しても解決しません。

セッション中に行うこと:

  1. 短時間(たとえば 15~30 秒)待ってから、一度だけ Canva:start-editing-transaction を再試行します。一時的な障害は、2 回目の試行で成功することがよくあります。
  2. フローの早い段階でトランザクションを開始します(ステップ 7 の箇条書きを参照)。そうすれば、チャットでメモを長時間生成している間に、「編集の準備完了」から「トランザクション開始」までの間が空かずに済みます。
  3. それでも失敗する場合は、これはスキルのロジックエラーではなく、明確にCanva/MCP のタイムアウトであるとユーザーに伝えます。後でもう一度試す、組織のポリシーに従って安定したネットワーク/VPNを使用する、またはパイプラインが動作することを確認するために小さなコピー(ページ数が少ないデッキ)でテストするよう提案します。
  4. 代替手段: 自動処理がタイムアウトし続ける場合は、生成したスピーカーノートをチャットにスライドごとにまとめて貼り付けます(スライド 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 が失敗またはタイムアウトした場合」を参照)
  • 可能な場合は編集操作をまとめて実行します

コメント