毎回同じデザインの画像をCanvaで手動作成していませんか。
ランキング動画のサムネイルやSNS投稿、ブログ用のアイキャッチ画像など、構成が決まっている画像はPythonとCanva APIを組み合わせることで自動一括生成できます。
この記事では、Canva APIの概要からPythonでの自動化コード例、API連携の具体的手順までをわかりやすく解説します。
手作業で10枚の画像を作っていた作業を、わずか数秒で完了させる仕組みを作っていきましょう。
Canva APIは、デザインプラットフォーム「Canva(キャンバ)」が提供する開発者向けの機能で、テンプレートや画像生成を外部アプリやスクリプトから操作できる仕組みです。
これまでCanvaはGUI中心でしたが、APIの公開により、プログラムで以下のような操作が可能になりました。
特に、同じ構成の画像を大量に作るケースで力を発揮します。
例えば、
手作業で作っていた繰り返し画像を、Pythonスクリプト一発で生成できるようになります。
Canva APIを利用するためには、いくつかの事前準備が必要です。以下の手順で進めましょう。
まず、Canva for Developersにアクセスし、Canvaアカウントでログインします。
「Create an app」から新しいアプリを作成し、APIキー(Access Token)を取得します。
APIキーを使ってアクセスできる範囲は、プランや設定によって異なります。
基本的には以下の操作が可能です。
次に、Pythonをインストールし、HTTPリクエストを送るためのライブラリを準備します。
主に使用するのは以下のパッケージです。
pip install requests python-dotenv
python-dotenvを使うことで、APIキーを環境変数に安全に保存できます。
Canva側で「ベースとなるテンプレート」を作ることが最初のステップです。
画像のサイズ(例:480×1080px)を指定し、デザインの枠を作ります。
例:
Canvaでは「変数差し込み」が可能です。
APIで動的に差し替えるために、テキストボックスや画像の名前を以下のように設定します。
| 要素 | 名前(例) |
|---|---|
| タイトル | {{title}} |
| 画像 | {{image}} |
| 県名 | {{pref}} |
| コメント | {{comment}} |
これにより、Python側から"title": "都道府県面積ランキング10位"などの値を渡すだけで自動置換できます。
テンプレートを保存後、URLの末尾にあるIDを控えます。
例:
https://www.canva.com/design/DAFxyz12345/edit
→ DAFxyz12345 がテンプレートIDです。
準備ができたら、いよいよPythonスクリプトで自動生成します。
import os
import requests
from dotenv import load_dotenv
# 環境変数の読み込み
load_dotenv()
ACCESS_TOKEN = os.getenv("CANVA_API_TOKEN")
# APIエンドポイント
API_URL = "https://api.canva.com/v1/designs"
# 共通ヘッダー
headers = {
"Authorization": f"Bearer {ACCESS_TOKEN}",
"Content-Type": "application/json"
}
# テンプレートID
TEMPLATE_ID = "DAFxyz12345"
# 入力データ例(都道府県ランキング)
data_list = [
{"title": "都道府県面積ランキング10位", "pref": "秋田県", "comment": "自然豊かな日本海側の広大な県"},
{"title": "都道府県面積ランキング9位", "pref": "岩手県", "comment": "県土の約8割が山地"},
# ...以下略
]
# 画像生成ループ
for i, data in enumerate(data_list, start=1):
payload = {
"template_id": TEMPLATE_ID,
"design_data": {
"title": data["title"],
"pref": data["pref"],
"comment": data["comment"]
},
"export": {
"format": "png"
}
}
res = requests.post(API_URL, headers=headers, json=payload)
if res.status_code == 200:
with open(f"output_{i}.png", "wb") as f:
f.write(res.content)
print(f"output_{i}.png を保存しました。")
else:
print("エラー:", res.status_code, res.text)
このスクリプトを実行すると、指定したテンプレートをもとに、内容の異なる画像を順次生成します。
タイトル・県名・コメントが差し替わり、Canva上と同じデザインでPNGが出力されます。
より多くの画像を作成する場合、Pythonスクリプトに直接データを書かずにCSVファイルから読み込む方法が便利です。
import csv
with open("ranking.csv", encoding="utf-8") as f:
reader = csv.DictReader(f)
for row in reader:
# CSVの各行をdataとして利用
print(row["title"], row["pref"], row["comment"])
これにより、Canva側のテンプレートを一度作るだけで、CSVを差し替えるだけで毎回異なる画像を量産できます。
特に、YouTubeランキング動画のサムネやブログ記事のアイキャッチなどの定型構成で威力を発揮します。
Python+Canva APIの連携は、次のような用途に応用できます。
これらの活用により、Canvaをデザインツールから自動画像生成プラットフォームへ進化させることができます。
Canva APIはまだ発展途中のため、以下の点に注意が必要です。
特に動画制作用などで大量生成する場合は、数秒間隔でリクエストを送るスリープ処理を入れるのがおすすめです。
PythonとCanva APIを使えば、これまで手作業だったデザイン作業を一瞬で自動化できます。
一度テンプレートを作れば、テキストや画像を差し替えるだけで100枚単位の画像生成も可能です。
ポイントをまとめると以下の通りです。
これらを組み合わせることで、動画編集やブログ運営の制作時間を90%以上短縮できます。
今後、Canva APIの機能拡張が進めば、テキストアニメーションや動画生成の自動化も現実的になるでしょう。