
YouTubeサムネイルはCTRを左右する最重要要素だ。しかし毎回手でデザインするのは時間がかかる。ClaudeCodeとCanva APIを組み合わせることで、動画タイトルを入力するだけでサムネイルを自動生成するパイプラインが構築できる。
サムネイル自動生成の全体フロー
動画タイトル / キーワード(入力)
↓
Claude API(コピー・テキストレイアウト生成)
↓
Canva API(テンプレートにテキスト差し込み)
↓
画像ファイル生成(1280×720px JPG)
↓
YouTube Data API(サムネイルとしてアップロード)
あなたの「作りたい」を叶えるAdobeの動画ツール
初心者からプロまで。目的に合わせて最適な制作方法が見つかります
1まずは無料で始めるなら Adobe Express
豊富なテンプレートとAI機能で、誰でも簡単に見栄えの良い動画が作れます。SNS投稿やショート動画の作成に最適。ブラウザやスマホアプリですぐに始められます。
2プロ品質を求めるなら テンプレート活用
「こんな動画が作りたい」というイメージに合うテンプレートを選ぶだけ。テキストや映像を差し替えるだけで、プロが作ったような動画が驚くほど手軽に完成します。
3本格的な編集に挑戦するなら Creative Cloud
テンプレートのカスタマイズや、ゼロからオリジナリティを追求するならプロ用ツールが最適。2つの代表的なアプリで、表現の幅は無限大に広がります。
- Premiere Pro: カット編集、テロップ、色調整など、動画編集の全てをこなす万能ツール。
- After Effects: VFXやモーショングラフィックスなど、映像をリッチに彩る特殊効果ツール。
これらを含む20以上のアプリが全て使えるコンプリートプランがおすすめです。
あなたの「作りたい」を叶えるAdobeの動画ツール
Canva APIのセットアップ
Canva Connect APIは2024年にリリースされた。デザインテンプレートを操作したり、テキスト・画像を動的に差し込んだりできる。
# 必要なパッケージ
pip install requests python-dotenv
# .env
CANVA_API_TOKEN=your-canva-api-token
ANTHROPIC_API_KEY=your-anthropic-key
Step 1:Claudeでサムネイルコピーを生成
import anthropic
def generate_thumbnail_copy(video_title: str) -> dict:
client = anthropic.Anthropic()
msg = client.messages.create(
model="claude-opus-4-6",
max_tokens=500,
messages=[{
"role": "user",
"content": f"""以下のYouTube動画タイトルから、サムネイル用のコピーを生成してください。
動画タイトル:{video_title}
出力形式(JSON):
{{
"headline": "メインの大きいテキスト(最大12文字)",
"subtext": "補足テキスト(最大20文字)",
"accent_word": "強調する単語1つ",
"color_theme": "blue/red/green/yellow/dark から1つ選択"
}}
コピーのルール:
- 数字を含める(「5分で」「3倍」など)
- 感情を刺激する言葉を使う
- 禁止:「やばい」「えぐい」などの過度な表現"""
}]
)
import json, re
text = msg.content[0].text
json_match = re.search(r'{.*}', text, re.DOTALL)
return json.loads(json_match.group()) if json_match else {}
Step 2:Canva APIでテンプレートにテキストを差し込む
import requests
CANVA_API_BASE = "https://api.canva.com/rest/v1"
def create_thumbnail_from_template(copy: dict, template_id: str) -> str:
"""Canvaテンプレートにコピーを差し込んで画像URLを返す"""
headers = {
"Authorization": f"Bearer {CANVA_API_TOKEN}",
"Content-Type": "application/json"
}
# デザインをコピーして編集可能にする
design_resp = requests.post(
f"{CANVA_API_BASE}/designs",
headers=headers,
json={"design_type": {"name": "youtube-thumbnail"}}
)
design_id = design_resp.json()["design"]["id"]
# オートフィルでテキストを差し込む
autofill_resp = requests.post(
f"{CANVA_API_BASE}/autofills",
headers=headers,
json={
"brand_template_id": template_id,
"title": f"thumbnail-{design_id[:8]}",
"data": {
"headline": {"type": "text", "text": copy["headline"]},
"subtext": {"type": "text", "text": copy["subtext"]},
}
}
)
job_id = autofill_resp.json()["job"]["id"]
# 完了をポーリング
import time
while True:
status = requests.get(
f"{CANVA_API_BASE}/autofills/{job_id}",
headers=headers
).json()
if status["job"]["status"] == "success":
return status["job"]["result"]["design"]["id"]
time.sleep(2)
def export_thumbnail(design_id: str) -> bytes:
"""デザインをJPGとしてエクスポート"""
headers = {"Authorization": f"Bearer {CANVA_API_TOKEN}"}
export_resp = requests.post(
f"{CANVA_API_BASE}/exports",
headers=headers,
json={
"design_id": design_id,
"format": {"type": "jpg", "quality": 95, "width": 1280}
}
)
job_id = export_resp.json()["job"]["id"]
import time
while True:
status = requests.get(
f"{CANVA_API_BASE}/exports/{job_id}",
headers={"Authorization": f"Bearer {CANVA_API_TOKEN}"}
).json()
if status["job"]["status"] == "success":
img_url = status["job"]["urls"][0]
return requests.get(img_url).content
time.sleep(2)
Step 3:YouTubeにサムネイルをアップロード
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseUpload
import io
def upload_thumbnail(youtube_client, video_id: str, image_bytes: bytes):
media = MediaIoBaseUpload(
io.BytesIO(image_bytes),
mimetype="image/jpeg"
)
youtube_client.thumbnails().set(
videoId=video_id,
media_body=media
).execute()
print(f"サムネイルをアップロードしました: {video_id}")
全体をまとめた実行スクリプト
def auto_generate_thumbnail(video_id: str, video_title: str):
# 1. コピー生成
copy = generate_thumbnail_copy(video_title)
print(f"生成されたコピー: {copy}")
# 2. Canvaでサムネイル生成
TEMPLATE_ID = "your-canva-brand-template-id"
design_id = create_thumbnail_from_template(copy, TEMPLATE_ID)
image_bytes = export_thumbnail(design_id)
# 3. ローカルに保存
with open(f"thumbnail_{video_id}.jpg", "wb") as f:
f.write(image_bytes)
# 4. YouTubeにアップロード
youtube = build("youtube", "v3", credentials=get_credentials())
upload_thumbnail(youtube, video_id, image_bytes)
print("完了!")
# 実行例
auto_generate_thumbnail("dQw4w9WgXcQ", "AfterEffectsで5分でできるプロ品質オープニングの作り方")
AfterEffectsテンプレートとの組み合わせ
Canva APIの代わりにAfterEffectsのJSXスクリプトを使う方法もある。AEでサムネイルテンプレートを作り、ClaudeCodeが生成したコピーをJSX経由で差し込んでPNG書き出しする。
// AE JSXでサムネイルを自動生成するスクリプト例
(function(title, subtext) {
var comp = app.project.item(1);
comp.layer("メインテキスト").sourceText.setValue(title);
comp.layer("サブテキスト").sourceText.setValue(subtext);
var outputModule = app.project.renderQueue.items.add(comp);
outputModule.outputModule(1).file = new File("/output/thumbnail.png");
app.project.renderQueue.render();
})("5分でできるAEオープニング", "初心者でも即使える完全版");
まとめ
ClaudeCode×Canva APIでのサムネイル自動生成は、量産体制を作るクリエイターにとって非常に有効だ。特に同じブランドデザインで複数動画のサムネイルを効率的に作りたい場合に強力だ。まずCanva APIのテンプレートを1つ作り込むことから始めてほしい。
あなたの「作りたい」を叶えるAdobeの動画ツール
初心者からプロまで。目的に合わせて最適な制作方法が見つかります
1まずは無料で始めるなら Adobe Express
豊富なテンプレートとAI機能で、誰でも簡単に見栄えの良い動画が作れます。SNS投稿やショート動画の作成に最適。ブラウザやスマホアプリですぐに始められます。
2プロ品質を求めるなら テンプレート活用
「こんな動画が作りたい」というイメージに合うテンプレートを選ぶだけ。テキストや映像を差し替えるだけで、プロが作ったような動画が驚くほど手軽に完成します。
3本格的な編集に挑戦するなら Creative Cloud
テンプレートのカスタマイズや、ゼロからオリジナリティを追求するならプロ用ツールが最適。2つの代表的なアプリで、表現の幅は無限大に広がります。
- Premiere Pro: カット編集、テロップ、色調整など、動画編集の全てをこなす万能ツール。
- After Effects: VFXやモーショングラフィックスなど、映像をリッチに彩る特殊効果ツール。
これらを含む20以上のアプリが全て使えるコンプリートプランがおすすめです。



