canva について
Canva Connect APIを使ってデザインを作成、書き出し、管理するスキルです。テンプレートへのデータ入力、アセットのアップロード、デザイン一覧の取得、複数形式での書き出しに対応します。
主な機能
- 01デザインとブランドテンプレートの一覧取得
- 02テンプレートからデザインを作成
- 03Canvaへのアセットアップロード
- 04複数形式でのデザイン書き出し
- 05OAuthトークンの自動更新
活用シーン
- 01ブランドテンプレートでInstagram投稿を作成
- 02指定された要点からカルーセルを作成
- 03デザインをPNGまたはPDFで書き出し
- 04画像をCanvaにアップロード
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ abgohel/ canva-skill --skill canvaインストール後、Claude Code で/canvaを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreREADME.mdpackage.jsonscripts/canva-auth.shcanva.sh詳細
Canva スキル
Connect API を使用して、Canva のデザインを作成、エクスポート、管理します。
使用する場面
- 「[topic]についてのInstagram投稿を作成して」
- 「CanvaのデザインをPNGとしてエクスポートして」
- 「最近のデザインを一覧表示して」
- 「これらのポイントを使ってカルーセルを作成して」
- 「この画像をCanvaにアップロードして」
前提条件
-
Canva インテグレーションを作成します:
- https://www.canva.com/developers/ にアクセスします
- 新しいインテグレーションを作成します
- Client ID と Client Secret を取得します
-
環境変数を設定します:
export CANVA_CLIENT_ID="your_client_id" export CANVA_CLIENT_SECRET="your_client_secret" -
認証します(初回のみ): 認証フローを実行してアクセストークンを取得します(
~/.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 .
エクスポート形式
| 形式 | オプション |
|---|---|
| PNG | width, height, lossless |
| JPG | width, height, quality (1-100) |
| standard, print | |
| MP4 | (動画デザイン向け) |
| GIF | (アニメーションデザイン向け) |
一般的なワークフロー
Instagram 投稿を作成
- ブランドテンプレートを一覧表示:
GET /brand-templates - Instagram 投稿用のテンプレートを探します
- コンテンツを使って自動入力します:
POST /autofills - 1080x1080 の PNG としてエクスポートします:
POST /exports - エクスポートしたファイルをダウンロードします
カルーセルを作成
- 自動入力を使って複数のデザインを作成します
- それぞれを PNG としてエクスポートします
- 投稿用に結合します
一括エクスポート
- デザインを一覧表示します:
GET /designs - 各デザインを順にエクスポートします
- すべてのファイルをダウンロードします
レート制限
- ほとんどのエンドポイント:100 リクエスト/分
- アップロード/エクスポート:30 リクエスト/分
エラー処理
一般的なエラー:
401- トークンの有効期限切れです。更新が必要です403- 必要なスコープがありません429- レート制限を超過しました404- デザインまたはテンプレートが見つかりません
必要なスコープ
design:content:read- デザインを読み取るdesign:content:write- デザインを作成/変更するasset:read- アセットを読み取るasset:write- アセットをアップロードするbrandtemplate:content:read- ブランドテンプレートを読み取る
ヒント
- ブランドテンプレートを使う - 事前にデザインされたテンプレートを使うと、最初から作成するよりも早く仕上がります
- 一括操作 - レート制限を回避するため、エクスポートをまとめて行います
- テンプレート ID をキャッシュする - よく使うテンプレート ID をローカルに保存します
- ジョブのステータスを確認する - エクスポートは非同期です。完了するまでポーリングします
リソース
Moltbook コミュニティ 🦞 のために Meow 😼 が作成
コメント
Markdown 対応