mcpField
C
canva

canva

github.com/abgohelデザイン・UI342 回インストール39 週間前に更新
リポジトリ

canva について

Canva Connect APIを使ってデザインを作成、書き出し、管理するスキルです。テンプレートへのデータ入力、アセットのアップロード、デザイン一覧の取得、複数形式での書き出しに対応します。

主な機能

  1. 01デザインとブランドテンプレートの一覧取得
  2. 02テンプレートからデザインを作成
  3. 03Canvaへのアセットアップロード
  4. 04複数形式でのデザイン書き出し
  5. 05OAuthトークンの自動更新

活用シーン

  1. 01ブランドテンプレートでInstagram投稿を作成
  2. 02指定された要点からカルーセルを作成
  3. 03デザインをPNGまたはPDFで書き出し
  4. 04画像をCanvaにアップロード

インストール

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

$npx skills add https://github.com/abgohel/canva-skill --skill canva

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

同梱ファイル

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

.gitignore
README.md
package.json
scripts/
canva-auth.sh
canva.sh

詳細

Canva スキル

Connect API を使用して、Canva のデザインを作成、エクスポート、管理します。

使用する場面

  • 「[topic]についてのInstagram投稿を作成して」
  • 「CanvaのデザインをPNGとしてエクスポートして」
  • 「最近のデザインを一覧表示して」
  • 「これらのポイントを使ってカルーセルを作成して」
  • 「この画像をCanvaにアップロードして」

前提条件

  1. Canva インテグレーションを作成します:

  2. 環境変数を設定します:

    export CANVA_CLIENT_ID="your_client_id"
    export CANVA_CLIENT_SECRET="your_client_secret"
    
  3. 認証します(初回のみ): 認証フローを実行してアクセストークンを取得します(~/.canva/tokens.json に保存されます)

API のベース URL

https://api.canva.com/rest/v1

認証

Canva は OAuth 2.0 を使用します。このスキルがトークンを自動的に更新します。

# Get access token (stored in ~/.canva/tokens.json)
ACCESS_TOKEN=$(cat ~/.canva/tokens.json | jq -r '.access_token')

主な操作

デザインを一覧表示
curl -s "https://api.canva.com/rest/v1/designs" \
  -H "Authorization: Bearer $ACCESS_TOKEN" | jq .
デザインの詳細を取得
curl -s "https://api.canva.com/rest/v1/designs/{designId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN" | jq .
テンプレートからデザインを作成
curl -X POST "https://api.canva.com/rest/v1/autofills" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_template_id": "TEMPLATE_ID",
    "data": {
      "title": {"type": "text", "text": "Your Title"},
      "body": {"type": "text", "text": "Your body text"}
    }
  }'
デザインをエクスポート
# Start export job
curl -X POST "https://api.canva.com/rest/v1/exports" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "design_id": "DESIGN_ID",
    "format": {"type": "png", "width": 1080, "height": 1080}
  }'

# Check export status
curl -s "https://api.canva.com/rest/v1/exports/{jobId}" \
  -H "Authorization: Bearer $ACCESS_TOKEN" | jq .
アセットをアップロード
curl -X POST "https://api.canva.com/rest/v1/asset-uploads" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/octet-stream" \
  -H 'Asset-Upload-Metadata: {"name": "my-image.png"}' \
  --data-binary @image.png
ブランドテンプレートを一覧表示
curl -s "https://api.canva.com/rest/v1/brand-templates" \
  -H "Authorization: Bearer $ACCESS_TOKEN" | jq .

エクスポート形式

形式オプション
PNGwidth, height, lossless
JPGwidth, height, quality (1-100)
PDFstandard, print
MP4(動画デザイン向け)
GIF(アニメーションデザイン向け)

一般的なワークフロー

Instagram 投稿を作成
  1. ブランドテンプレートを一覧表示:GET /brand-templates
  2. Instagram 投稿用のテンプレートを探します
  3. コンテンツを使って自動入力します:POST /autofills
  4. 1080x1080 の PNG としてエクスポートします:POST /exports
  5. エクスポートしたファイルをダウンロードします
カルーセルを作成
  1. 自動入力を使って複数のデザインを作成します
  2. それぞれを PNG としてエクスポートします
  3. 投稿用に結合します
一括エクスポート
  1. デザインを一覧表示します:GET /designs
  2. 各デザインを順にエクスポートします
  3. すべてのファイルをダウンロードします

レート制限

  • ほとんどのエンドポイント:100 リクエスト/分
  • アップロード/エクスポート:30 リクエスト/分

エラー処理

一般的なエラー:

  • 401 - トークンの有効期限切れです。更新が必要です
  • 403 - 必要なスコープがありません
  • 429 - レート制限を超過しました
  • 404 - デザインまたはテンプレートが見つかりません

必要なスコープ

  • design:content:read - デザインを読み取る
  • design:content:write - デザインを作成/変更する
  • asset:read - アセットを読み取る
  • asset:write - アセットをアップロードする
  • brandtemplate:content:read - ブランドテンプレートを読み取る

ヒント

  1. ブランドテンプレートを使う - 事前にデザインされたテンプレートを使うと、最初から作成するよりも早く仕上がります
  2. 一括操作 - レート制限を回避するため、エクスポートをまとめて行います
  3. テンプレート ID をキャッシュする - よく使うテンプレート ID をローカルに保存します
  4. ジョブのステータスを確認する - エクスポートは非同期です。完了するまでポーリングします

リソース


Moltbook コミュニティ 🦞 のために Meow 😼 が作成

コメント