mcpField
C
canva-creator

canva-creator

github.com/anthropicsマーケティング・グロース33.6k2.0k 回インストール1 日前に更新
リポジトリ

canva-creator について

canva-creatorは、承認済みのブリーフを投稿カレンダー、素材確認、Canvaのソーシャルデザイン、コピー、HubSpotへの登録へと進めるキャンペーン用ワークフロースキルです。メールはテキストのみで扱い、各段階でオーナーの承認を求めます。

主な機能

  1. 01ブリーフから投稿カレンダーを作成
  2. 02ソーシャルデザイン用素材の棚卸し
  3. 03Canva候補デザインの生成と確認
  4. 04テキストのみのメール文案作成
  5. 05承認済み投稿をHubSpotに登録

活用シーン

  1. 01ソーシャルとメールのキャンペーン計画
  2. 02デザイン生成前の画像枠の確認
  3. 03投稿ごとのCanva候補デザインの比較
  4. 04HubSpot登録用ソーシャル投稿の準備

インストール

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

$npx skills add https://github.com/anthropics/knowledge-work-plugins --skill canva-creator

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
canva-api.md
gotchas.md
hubspot-staging.md
reference/examples/
boutique-brief-campaign.md

詳細

Canva Creator

範囲

このスキルでは、オーナーの承認を各段階の条件として、5つの段階を順に進めてキャンペーンを作成します。

brief → calendar → asset inventory → Canva designs → copy → HubSpot staging
経路チャネルこのスキルで作成するもの
Canva(ソーシャル)Instagram、Facebook、X/Twitter、LinkedInCanva のデザイン+キャプション+HubSpot に予約投稿された投稿
テキストのみメール(ニュースレター、マーケティング、ドリップ)件名+プリヘッダー+本文。オーナーが送信できるよう、チャット内に表示

メールの行では、いかなる場合も Canva を使用しません。テンプレート、自動入力、デザインの複製、アセットのアップロード、エクスポートは一切行いません。このスキルではメールの画像を扱いません。メールテンプレートの自動入力では、画像スロットの数が利用可能な写真の数を超えるとプレースホルダー画像が生成され、バリエーションのサムネイルはチャットのプレビューに表示されないためです。オーナーから Canva でメールデザインを作るよう依頼された場合は、リダイレクトの文言について reference/gotchas.md を参照してください。


事前確認

ステージ 1 の前に、次の項目を確認します。

  1. ブリーフ。 ユーザーが承認済みのブリーフを参照または貼り付けていることを確認します。ない場合は、次のように尋ねます。 「キャンペーンを作成するには、コンテンツブリーフが必要です。content-strategy スキルで作成したものはありますか。それとも、今ここで作成しますか?」

  2. Canva のプラン。 Pro/Teams では、ユーザーのライブラリからテンプレートを手動で選択する必要があります(自動入力 API はありません)。Enterprise では、ブランドテンプレートから自動入力できます。

  3. HubSpot のプラン。 ソーシャル投稿の準備には Marketing Hub Professional が必要です。Starter または Free の場合は、ステージ 5 をスキップして CSV をエクスポートします (reference/hubspot-staging.md を参照)。

  4. ブランドアセット。 ストアフロント(Shopify または Square)が接続されている場合(同等のサービスについては ../../shared/connector-neutrality.md を参照)、まず商品リストを読み込みます。ブリーフに記載されたすべての商品について、タイトル、画像 URL、価格を確認します。読み取りのみを行います。Canva へのアップロードはステージ 2 の手順 5 まで行わず、その時点でも承認済みカレンダーの各枠で必要な画像だけをアップロードします。このリストを写真の初期一覧とし、ストアに画像がない商品についてのみ確認します。取得するフィールドや価格に関する主張のルールは、../social-content-engine/reference/shopify-assets.md に記載されています(Shopify 向けに書かれていますが、Square のカタログ画像でもツールの一覧から同じ手順で取得します)。ストアフロントがない場合は、ディスク上の商品写真の場所、または Canva でブランドキットが利用可能かを確認します。

  5. 生成予算。 キャンペーンで使用する Canva のボリュームを見積もり、ステージ 1 の開始前に提示します。デフォルトでは Canva を使用する各行につき候補を 3 件作成します。デザインごとに約 5 回の API 呼び出しが必要です(自動入力+エクスポート+ポーリング)。

    Generation budget for this campaign:
      Canva (social) rows: 8
      Candidates per row:  3   (default — say "single candidate" to use 1)
      Total designs:       24
      API calls (approx):  ~120  (autofill + export + polling)
    
    Canva limit: 100 requests/minute. This will take ~2-3 minutes of
    generation, well within your tier limits. Proceed?
    

    予測されるデザインの合計が 30 件を超える場合は、最初から候補 1 件のモードを推奨します。大規模なキャンペーンでは、すぐに余裕がなくなります。オーナーはステージ 1 の開始前に、各行につき候補を 1 件、2 件、または 3 件に変更できます。選択した値はセッション全体で固定します。


ワークフロー

ステージ 1 — 投稿カレンダー

ブリーフから、コンテンツのテーマ、チャネル、頻度、確定日 (ローンチ、セール、祝日)を抽出します。

各行をCanvaまたはテキストのみの下書きに振り分けるPath列を含む カレンダーテーブルを作成します。

日付チャネルPathテーマアセットの種類キャプション/件名の切り口
Jun 2InstagramフィードCanva (social)リネンのローンチ正方形の投稿「ついに、ワンピースが…」
Jun 5メールText-onlyリネンのローンチメール本文「本当に通気性のよいリネン」

メールチャネルの行はすべて、提示する前にText-onlyとタグ付けします。ブリーフで指定されている場合を除き、期間は最大30日とします。同じ日に同じ商品を扱う投稿が複数ある場合は、最初にスケジュールの競合として明示します。

チェックポイント 1。 カレンダーを提示し、次のように尋ねます。「この内容で計画に合っていますか?日付の変更、チャネルの追加、テーマの入れ替えはありますか?」承認されるまで調整し、次の段階に進む前に、振り分けを口頭で再確認します。「N件はCanva、M件はテキストのみの下書きで進めます」。ここで分類ミスに気づけば修正は簡単ですが、デザイン生成後ではそうはいきません。


ステージ 2 — アセットの一覧(Canvaの行のみ)

メールの行はこの段階を完全にスキップします。各Canva (social)の行について、テンプレートに必要なものと、すでに用意できているものを一覧にします。

  1. すべての画像スロットを名前ごとに列挙します。 正方形のInstagram投稿には通常1〜2個の画像スロットがあります。カルーセルや商品グリッドでは5個以上になることもあります。個別に(Header_Image、Product1_Image、Product2_Image、…)列挙し、「商品画像」のようにまとめてはいけません。

    • Enterprise:ブランドテンプレートのdataset[].labelからフィールド名を読み取ります(GET /v1/brand-templates/{id})。
    • Pro/Teams:テンプレート内の異なる画像用長方形をすべて数えます。
  2. 利用可能なアセットを一覧にします。 ブリーフのテキストコンテンツ(商品名、オファー文、タグライン、価格)、事前確認時に接続済みのストアフロントから読み取った商品画像URL(ステップ5でアップロードし、その時点でギャップテーブルが必要とするスロットに限り、asset.idを記録します)、Canvaにすでにアップロードされている商品写真(GET /v1/assets)またはオーナーのディスクにある写真、ブランドキットの色とフォント(Enterprise)を確認します。キャプションに記載する価格は、ストアフロントから返された値またはブリーフから取得し、記憶に頼ってはいけません。

  3. スロットごとのギャップテーブルを作成します。 デザインごとではなく、デザイン内の各スロットにつき1行とします。

    日付スロット名スロットの種類利用可能なアセット状態
    Jun 2Hero_Image画像bloom_summer.jpg → asset_id 保留中アップロード
    Jun 2Headlineテキスト「ついに、夏のリネン」準備完了
    Jun 9Product1_Image画像—不足
  4. スロットとアセットの不一致はオーナーと解決します。 テンプレートの画像スロット数が、ブリーフで提供された写真の数を上回る場合は、作業を止めて次のように尋ねます。

    The "Summer Carousel" template has 5 image slots. The brief gave me 1
    photo (bloom_summer.jpg). How should I fill the other 4?
    
      1. Reuse the same photo across all 5 slots
      2. You send me 4 more photos (file paths)
      3. Pick a simpler template with fewer slots
    

    オーナーが選択するまで、生成APIは呼び出しません。空のスロットを含めて生成すると、Canvaのデフォルトの風景プレースホルダーだらけのデザインになります。

  5. 不足している写真をアップロードし、確認済みのアセットIDを記録します。 POST /v1/asset-uploadsでアップロードし、status == "success"になるまでGET /v1/asset-uploads/{job_id}をポーリングします。レスポンスからasset.idを記録します。自動入力の画像フィールドで機能するのはこの値だけです。空文字列、URL、ファイルパス、古いIDを渡すと、写真の代わりにCanvaの風景ストック画像が黙って描画されます。

  6. マニフェストを確認します。 すべてのスロットが解決済みで、すべての画像のasset.idが確認済みである、完成したスロットごとのテーブルをオーナーに見せます。ここがCanva APIの呼び出し前の最終確認地点です。


ステージ 3 — Canva デザインの生成

Canva API を呼び出す前に、カレンダーを再度読み込み、Path が Canva (social) ではない行をすべて除外します。メールの行はこの ステージを通りません。

デザインはカレンダーの行ごとに 1 つずつ生成し、各行につき候補を 3 件 (または事前確認時に選択した値)作成します。各行で同じループを実行します。 候補を生成 → 検証 → エクスポート → 視覚的に確認 → 失敗したものを再試行 → 提示 → オーナーの選択を待機 → 次の行。行の間は 30 秒間待機します。 これにより、約 30 秒あたりの生成 3 回とエクスポート 3 回に抑えられ、 Canva のレート制限である毎分 100 リクエストを大幅に下回ります。複数の行を 並列処理しないでください。1 行ずつ処理することで、キャンペーンの途中で オーナーがクォータ上限に達するのを防ぎます。

ポーリング間隔。 ジョブのステータスは 3~5 秒ごとにポーリングし、それより 短い間隔では行わないでください。間隔を短くしても完了が早まることはなく、 クォータを消費するだけです。

プレビュー URL — 安全に埋め込めるのは 1 種類のみです。 オートフィルの応答で 返される design.canva.ai のサムネイルは数分で期限切れになります。これを Markdown 画像として埋め込むと、画像が表示されない「画像を表示」プレースホルダーに なります。永続的なエクスポート URL(export-download.canva.com または export-design MCP ツール)は期限切れになりません。ネイティブ Cowork カルーセルは コネクターの認証済みセッションを使ってオートフィル結果を直接表示します。 カルーセルに表示させ、再度埋め込まないでください。

行ループ
  1. テンプレートを解決します。(セッションごとに1回。カレンダーで異なる種類のアセットが混在していない限り、全行で同じテンプレートを使用します。)

    • Enterprise:アセットの種類で絞り込んだ GET /v1/brand-templates。
    • Pro/Teams:GET /v1/designs?ownership=any&query={template name} を実行し、上位3件をオーナーに提示して、生成前に1件を確認します。
  2. 行の候補を並行して生成します。 行の候補3件(または事前チェックで決めたN件)を同時に実行します。

    • Enterprise:候補ごとに、テンプレートIDとフィールド値を指定して POST /v1/autofills を実行します。すべてのジョブを並行してポーリングします。
    • Pro/Teams:POST /v1/designs を実行してコピーを作成します。オーナーがCanvaで適用するテキストと画像の編集内容を説明し、デザインIDを受け取ります。
  3. ジョブのステータスを確認します。 各候補について、GET /autofills/{job_id} の戻り値が status == "success" であり、result.design.id が存在することを確認します。エラーにはデザインごとに対処します。

    • JOB_FAILED → job.error.message を確認し、フィールド値またはアセットIDを修正して1回だけ再試行します。

    • RATE_LIMIT_EXCEEDED(このセッションで1回目)→ 60秒待って、その候補を1回だけ再試行します。一時的な急増に対処できます。

    • RATE_LIMIT_EXCEEDED(このセッションで2回目)、または quota_exceeded/日次上限エラーが発生した場合 → 直ちに生成を停止します。再試行しないでください。進捗を提示し、次のように尋ねます。

      Canvaがキャンペーンのレートを制限しています。現在の状況:
        ✓ 生成済み:投稿1~4(デザイン12件)
        ⏸ 残り:投稿5~8(未生成のデザイン12件)
      
      どのように進めますか?
        1. 残りの行は1候補ずつに切り替える(デザイン合計4件)— 今すぐ完了
        2. キャンペーンを一時停止する — クォータが回復する60分後に再開
        3. 生成を停止する — 現在の成果を使用して、キャプションに進む
      

      オーナーの選択を待ちます。再試行を繰り返さないでください。

  4. 成功した各候補を永続的なPNGにエクスポートします。 行のエクスポートを並行して実行します。

    • REST:format.type: "png" を指定して POST /v1/exports を実行し、成功するまで GET /v1/exports/{job_id} をポーリングして、urls[0] を取得します。
    • Canva MCP:デザインIDを指定して export-design を実行します。

    これらの永続URLを後でプレビューに埋め込み、HubSpotの投稿に添付します。オートフィルのレスポンスに含まれるサムネイルは、後続の処理では使用しません。

  5. 各エクスポートを目視で確認します。 画像を確認し、次のいずれかがあれば却下します。いずれも、未入力のスロットまたは誤ったアセットを示しています。

    • 雲と緑の丘が描かれた汎用的な風景(Canvaのデフォルトのプレースホルダー)
    • 写真があるべき場所に表示された無地の灰色の長方形
    • Lorem Ipsumのテキスト、またはテンプレートのデフォルトテキスト
    • ブリーフに一致しない被写体(製品またはブランドが違う)

    候補が確認に失敗した場合:該当するスロットについてマニフェストを再確認し、asset.id を修正して、その候補だけを再生成、再エクスポートし、再確認します。

  6. 一部失敗した場合は候補ごとに再試行します。 行のN件の候補のうち1件がステップ3または5で失敗した場合は、その1件だけを再生成します。行全体をやり直したり、壊れたカルーセルを一部だけ提示したりしないでください。2回目の試行も失敗した場合:

    The third candidate for the Jun 9 post keeps failing — Canva returned
    [error / rendered placeholder]. How should I proceed?
    
      1. Skip it — present the other 2 and move on
      2. Swap to a simpler template for just this candidate
      3. Try once more with a different photo
    
  7. 行の候補を提示します。 ネイティブのCoworkカルーセルでオートフィルツールの結果をレンダリングします。その下に、次のテキストプロンプトを追加します。

    Jun 9 candidates are ready — scroll through the carousel above.
    Which one should I use for the Jun 9 post?
    

    カルーセルがレンダリングされない場合、または表示位置が壊れている場合は、代わりにステップ4で取得した永続的なエクスポートPNGのURLを埋め込みます。最後の手段として、デザインのCanva編集URL(https://www.canva.com/d/{design_id})にリンクします。design.canva.ai のURLを再度埋め込んではいけません。

  8. 30秒待ってから、次の行に進みます。

チェックポイント2。 オーナーがカレンダーの各行につき1つのデザインを選んだ時点で完了です。再生成を希望された場合は、その候補だけを再生成します。


ステージ 4 — コピーの作成

カレンダーの各行について、コピーを作成します。ソーシャルの行にはキャプション、メールの行にはメール全文を作成します。

ソーシャルキャプション — Instagram、Facebook、X、LinkedIn:

  • 長さ:チャネルに適した長さ(Instagram は 2,200 文字以内、Facebook は 500 文字以内を推奨、X は 280 文字以内)。
  • 構成:フック → 製品のメリットを 1 つ → CTA → ハッシュタグ 3〜5 個(30 個ではありません)。
  • トーン:ブリーフのトーンに関する指示に合わせます。ブリーフに「カジュアルで親しみやすく」とあれば、企業向けのコピーにはしません。
  • 無駄な文言は入れません。「うれしいお知らせです!」や「発表できることを大変うれしく思います。」は使いません。価値を伝えるところから始めます。

メールの内容 — メール全体を Claude が作成します。Canva は使いません。

  • 件名:50 文字以内。具体的で、釣り文句は使いません。「春のプロジェクトの予約が埋まり始めています」は「お見逃しなく!」よりも適切です。
  • プリヘッダー:90 文字以内。件名を繰り返さず、内容を補足します。
  • 本文:平易な文章で 100〜250 語。続きを読む価値のある冒頭文 → 内容を伝える段落を 1〜2 つ → 明確な CTA を 1 つ → 結びの言葉。
  • トーン:ソーシャルと同じトーンに関する指示に従います。オーナーは、テンプレートのニュースレターではなく、自分らしい文面のメールを求めています。
  • 画像への言及はしません。「上の画像をご覧ください」とは書きません。ビジュアルを使いたい場合は、オーナーがメールツールに追加します。
  • メールごとに CTA は 1 つです。最も重要なアクションを選び、先に伝えます。

ソーシャルの各行の下にキャプションをインラインで表示します。メールの各行の下にメール全文をインラインで表示します。

Subject: <subject line>
Preheader: <preheader text>

<body text>

作成例については、 reference/examples/boutique-brief-campaign.mdを参照してください。

チェックポイント 3. 「書き直したいキャプションやメールはありますか?日付と変更内容をお知らせください。」承認されるまで修正を繰り返します。


ステージ 5 — HubSpot への登録とメールの引き渡し

ソーシャル投稿を HubSpot に登録します。メールの内容は登録せず、オーナーがメールツールにコピーできるようインラインで表示します。API のフィールドリファレンスについては、 reference/hubspot-staging.mdを参照してください。

  1. キャンペーンを作成します。 カレンダーのキャンペーン名と開始日/終了日を指定して、POST /marketing/v3/campaigns を実行します。

  2. 各ソーシャル投稿を登録します。 Canva (social) の各行について、HubSpot Social API に POST します。

    • channel:カレンダーのチャネルを HubSpot のアカウント ID に対応付けます
    • scheduledAt:ISO 8601 形式の日時です。呼び出す前に、日時が未来であることを確認します
    • content.body:承認済みのキャプション
    • attachments:ステージ 3 でエクスポートした、永続的な Canva PNG の URL
    • status:SCHEDULED(PUBLISHEDにはしません)
  3. キューを確認します。 GET /marketing/v3/social/posts?status=SCHEDULED を呼び出して一覧を表示し、HubSpot のキャンペーン画面への直接リンクを提示します。

  4. 引き渡し用にメールの内容を表示します。 メールの各行について、承認済みの件名、プリヘッダー、本文を送信日ごとにまとめてインラインで表示します。オーナーはこれらをメールツール(HubSpot Marketing Email、Mailchimp、Gmail、または M365)にコピーします。

最終チェックポイント。

Your social posts are scheduled in HubSpot: [link]
They'll go out as scheduled — you can cancel or edit any post in HubSpot.

Email content is drafted below — copy each into your email tool when
you're ready to send:

  Jun 5 — "Spring projects are booking up"
  Jul 15 — "Summer maintenance windows are filling"

Anything to change before we're done?

この要約と併せて、要約の代わりにすることなく、ハウススタイル(../../shared/artifact-style.md)に従ってキャンペーンを HTML アーティファクトとして表示します。投稿カレンダーを表で示し、各行にチャネルごとのステータスピル(scheduled / drafted / handoff)を付け、各行に承認済みのキャプションまたはメール本文とエクスポート済み PNG へのリンクを含む登録済み投稿パネルを表示します。

締めくくりの提案。 キャンペーンに含まれる内容を 1 行で伝え、最も関連性の高い次のステップを、そのトリガーフレーズとともに 1 つ提示します。通常は、投稿の配信が始まった後に「マーケティングはうまくいっていますか?」(growth-pulse)を案内します。ほかに最大 2 つまで案内できます。「コンテンツを作成する」(social-content-engine)は定期的なカレンダー向け、「広告」(ad-manager)は広告向けです。提案は最大 3 つまでとし、このセッション中にオーナーが断ったものは再提案しません。

承認ゲート

  • メールの行ではCanvaを呼び出しません。 APIを呼び出す前に、必ずPath列を再確認します。
  • 公開しません。 HubSpotの投稿はすべてSCHEDULEDとしてステージングされ、公開のタイミングはオーナーが管理します。
  • 事前確認で生成予算を必ず提示します。 オーナーにデザインの合計数を提示し、ステージ1を開始する前に承認を得ます。
  • ステージ3では一度に1行ずつ処理します。 1行内の候補は並列処理しますが、行は30秒間隔で順次処理します。これはクォータを保護するためです。
  • クォータエラーが2回目に発生したら、一時停止して確認を求めます。 再試行を繰り返してはいけません。
  • 提示する前に、必ず永続的なPNGとしてエクスポートします。 ジョブが成功しても、デザインが正しくレンダリングされたとは限りません。
  • メッセージにdesign.canva.aiのURLを埋め込んではいけません。 URLは期限切れになります。
  • 1つの候補が失敗したとき、行全体を再生成してはいけません。 再試行は候補ごとに行います。
  • Pro/Teamsユーザー向けのテンプレートを自動選択してはいけません。 必ず確認を取ります。
  • スロットごとの棚卸しを省略してはいけません。 複数スロットのテンプレートは、いずれかのスロットが空だとプレースホルダーの風景画像をレンダリングします。
  • チェックポイント1を省略してはいけません。 カレンダーの承認前に生成すると、このスキルでは最も多くの作業が無駄になります。

リファレンス

記載されていないツールの使用

このスキルで名前を挙げているコネクターは、テスト済みの手段であり、利用可能な手段を限定するものではありません。オーナーが、接続されていない、または記載されていないツールをこのフローで使用したい場合は、build-connectorを提案してください。まずコネクターディレクトリを確認し、該当するコネクターがなければZapier経由で接続します。生のAPIに対して手作業で構築することはありません。接続が確立された後、そのツールは他の任意のコネクターと同様に、このスキルの承認ゲートに従って利用できます。

コメント