canva-bulk-create について
canva-bulk-createは、表形式のデータとブランドテンプレートを使い、各行からCanvaデザインを1件ずつ作成します。編集可能なブランドデザインをまとめて作るユーザー向けに、項目の対応付けから結果報告までの手順を備えています。
主な機能
- 01ファイル、テキスト、URLから表データを解析
- 02ブランドテンプレートの検索と項目確認
- 03列とテンプレート項目の対応付け
- 04行ごとのデザイン作成と結果記録
- 05画像アセットの処理と失敗理由の報告
活用シーン
- 01商品表からブランドデザインを生成
- 02画像URLをCanvaアセットとしてテンプレートに入力
- 03一括作成前に項目の対応付けを確認
- 04作成後に成功行と失敗行を確認
MCP 対応
Canvaのツールを使ってテンプレートを検索し、項目を調べ、アセットをアップロードしてデザインに自動入力します。各行を順番に処理し、結果を報告します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ canva-sdks/ canva-skills --skill canva-bulk-createインストール後、Claude Code で/canva-bulk-createを入力して読み込まれたか確認します。
詳細
Canva 一括デザイン作成
データタグを使ってブランドテンプレートにデータを自動入力し、データの各行につき Canva デザインを1つ作成します。
ワークフロー
ステップ 1:データを取得する
ユーザーが提供した形式を問わずデータを受け取り、名前付きの列を持つ行のリストを抽出します。
- アップロードされたファイル:ファイルを読み込み、ヘッダーと行を抽出します
- 貼り付けられたデータ:チャットから Markdown テーブル、タブ区切り値、JSON 配列を直接解析します
- URL:リソースを取得し、応答を表形式のデータとして解析します
データが提供されていない場合は、都合のよい形式で共有するようユーザーに依頼します。
解析後、ユーザーに次の内容を表示します。
- 見つかった列ヘッダー
- 行数(=作成されるデザイン数)
- 最初の数行のプレビュー
ステップ 2:ブランドテンプレートを選択する
ユーザーがテンプレートを指定していない場合は、自動入力に対応したテンプレートを検索します。
Canva:search-brand-templates dataset=non_empty
検索結果を表示し、どれを使うかユーザーに選んでもらいます。すでにテンプレート名を指定しているか、説明している場合は、そのクエリで検索します。
ステップ 3:テンプレートのスキーマを確認する
Canva:get-brand-template-dataset template_id=<selected_id>
テンプレートが想定するフィールド名と型(テキスト、画像、グラフ)が返されます。
ステップ 4:CSV 列をテンプレートフィールドに対応付ける
対応付けテーブルをユーザーに提示します。
| テンプレートフィールド | 型 | 対応する CSV 列 | 備考 |
|---|---|---|---|
product_name | テキスト | Product Name | 自動で対応付け済み |
price | テキスト | Price | 自動で対応付け済み |
hero_image | 画像 | (なし) | 対応なし — 画像フィールドにはアセット ID が必要です |
対応付けのルール:
- CSV ヘッダーとテンプレートフィールド名を、大文字と小文字を区別せず、あいまい一致で照合します
- テキストフィールドには、CSV の文字列値を直接入力できます
- 画像フィールドには Canva アセット ID が必要です。以下の画像フィールドの処理を参照してください
- グラフフィールドには構造化データが必要です。高度な項目として扱い、ユーザーに詳細を確認します
特に対応付けできないフィールドや曖昧な一致がある場合は、続行する前にユーザーに対応付けを確認します。
画像フィールドの処理
CSV から画像型テンプレートフィールドに画像を渡す方法は2つあります。
パターン A — CSV に Canva アセット ID 列がある場合(例:image_asset_id):
autofill-design 呼び出しでアセット ID の値を直接使用します。
{ "image": { "type": "image", "asset_id": "<value from CSV column>" } }
パターン B — CSV に画像 URL 列がある場合(例:image_url):
URL を autofill-design に直接渡すことはできません。まず Canva:upload-asset-from-url を使って各 URL を Canva にアップロードし、返されたアセット ID を取得してから、自動入力の呼び出しで使用します。失敗の影響範囲を限定できるよう、その行のデザインを作成する直前にアップロードします。
パターン C — CSV に画像列がない場合:
画像フィールドをスキップする(テンプレートのデフォルト画像をそのまま使う)か、中止するかをユーザーに確認します。スキップしても安全です。data ペイロードから画像キーを完全に省略するだけです。
ステップ 5:一括作成 — 行ごとにデザインを1つ作成する
すべての CSV 行を順番に処理し、それぞれについて Canva:autofill-design を呼び出します。一度にまとめてではなく、順次呼び出してください。API にレート制限がある場合があり、順次呼び出すほうがデバッグも容易です。
各行について:
- 行に画像 URL 列がある場合(パターン B)、まず
Canva:upload-asset-from-urlを呼び出して Canva アセット ID を取得します。 - 確認済みのフィールド対応付けから
dataペイロードを作成します。
{
"text_field_name": { "type": "text", "text": "<value from CSV>" },
"image_field_name": { "type": "image", "asset_id": "<asset ID>" }
}
- テンプレート ID、data ペイロード、および行番号や意味のある列の値を使った説明的なタイトル(例:
"Bulk Design - Row 3 - <identifier>")を指定して、Canva:autofill-designを呼び出します。
処理しながら結果を記録します。
Row 1 / 50: Created — <design_url>
Row 2 / 50: Created — <design_url>
Row 3 / 50: Failed — <error>
ステップ 6:結果を報告する
すべての行の処理後、次の内容を要約します。
- 試行した行の合計数
- 成功件数(リンク付き)
- 失敗件数(行番号と理由を記載)
列が row、status、design_url、error の要約 CSV を保存するか、ユーザーに確認します。
注意事項
- 自動入力には Canva Enterprise プランが必要です。
- 大きな CSV(50 行以上)の場合は、最初に N 回の API 呼び出しが発生し、時間がかかる可能性があることをユーザーに伝えてください。全件処理に進む前に、最初の 3 行でテスト実行することを提案してください。
- 一部の行で失敗しても、全体を中止せず、残りの行の処理を続けてください。
- マッピングされたすべてのフィールドが空の行はスキップし、そのことをユーザーに伝えてください。
- 必須のテンプレートフィールドに一致する CSV の列がない場合は、どの列を使用するか、またはそのフィールドをスキップするかをユーザーに確認してください。
- テンプレートフィールド名は API で大文字と小文字が区別されるため、
get-brand-template-datasetの正確なキーを使用してください。 - 一括作成を取り消す機能はありません。大規模な処理を開始する前に、ユーザーに伝えてください。
- この方法で作成されたデザインは、ユーザーがアカウントでさらに編集できる通常の Canva デザインです。