メインコンテンツへスキップ
← 記事一覧に戻る
·開発·8 min read

Canva MCPで日本語タイトルが「天久百厳浸」になった — AI生成の限界と代替手順の記録

Claude CodeMCP個人開発AI設計失敗ログ
Canva MCPで日本語タイトルが「天久百厳浸」になった — AI生成の限界と代替手順の記録

Claude Code から Canva MCP を呼んで日本語ヒーロー画像を生成させたら、タイトルが「天久百厳浸」になった。

4案生成、4案全滅。出力されたのは「米岡済本」「天久百厳浸」など、私が指定した日本語タイトルとは無関係のランダムな漢字だった。Canva の AI は英語特化であり、日本語の意味的整合性を保てない——そのことを、試して初めて実感した記録です。


結論

Canva AI(MCP 経由の generate-design)は日本語テキストを意味として扱えない。 英語タイトルなら問題ないが、日本語ブログのヒーロー画像を AI 生成に任せるのは現状では無理だ。

代替は 2 つ:

  1. Canva テンプレートをコピーして、テキストだけ手動で書き換える(AI 生成は使わない)
  2. Pillow + プロジェクトに同梱した TTF フォントで画像をスクリプト生成する(採用した方法)

この記事の前提

  • 状況: masatoman.net のヒーロー画像を Claude Code ルーティーンで自動生成したかった
  • スタック: Next.js + Vercel、記事は MDX 管理、OGP 画像は /public/images/articles/ に PNG で配置
  • 試したこと: Canva MCP(generate-design ツール)で日本語タイトルを指定して 4 案生成
  • 日付: 2026-05-28

読者のよくある詰まり

「MCP ツールが動いた → じゃあ日本語コンテンツにも使える」と思ってしまう。

私もそうだった。Claude Code から MCP 経由でツールが呼び出せる、API が返ってくる、エラーも出ない——ここまで確認して「動いた」と判断した。しかし生成物を見て気づいた。ツールとしての呼び出しは成功していたが、コンテンツとしては完全に失敗していた。


実際に起きたこと

Canva MCP generate-design の失敗記録(2026-05-28)

  • 生成案数: 4 案
  • 成功案数: 0 案
  • 出力例: タイトル指定「Claude Code Skills — 最初の 1 スキルを動かすまでの実装ログ」に対し、実際の出力テキストは「天久百厳浸」「米岡済本」など意味不明な漢字の列
  • エラー: なし(API 呼び出し自体は成功として返ってくる)

原因分析

Canva AI の画像生成エンジンは英語コーパスで訓練されており、日本語テキストのセマンティクス(意味)を保持したまま画像にレンダリングする能力を持っていない。

具体的には:

操作日本語の扱い
generate-design(AI 生成)ランダムな漢字が出力される
テンプレートコピー + テキスト編集日本語テキストをそのまま配置できる(OK)

つまり「AI に任せる」と「テンプレートを使う」で、日本語対応の可否が真逆になる。


判断基準:MCP ツールを日本語コンテンツで使えるか

以下の問いで判断できる:

「そのツールは英語コーパスで訓練されているか?」

  • YES(Canva AI、多くの画像生成 AI)→ 日本語テキストの意味的整合性は期待しない
  • NO またはローカル処理(Pillow、Cairo、ImageMagick)→ 指定した文字をそのまま描画するため問題なし

「生成後にテキストを人間が確認できるか?」

  • できない(自動パイプライン)→ AI 生成テキストを日本語コンテンツに使わない
  • できる(手動レビューあり)→ 使えるが、毎回直しが必要なコストを許容できるか考える

採用した代替構成

最終的に 3 案を比較して Pillow を選んだ:

方法評価理由
Canva 基本テンプレ×デザインが画一的でブランドを作れない
Canva AI 生成×日本語が崩壊する(今回の失敗)
動的 OG(Next.js)デザイン自由度が低い、Vercel の制約がある
Pillow + 同梱 TTF再現可能、フォントを repo に同梱できる

採用した構成:

from PIL import ImageFont, ImageDraw, Image

# public/fonts/ に TTF を同梱してシステムフォント依存を排除
title_font = ImageFont.truetype("public/fonts/NotoSansJP-Bold.ttf", size=48)
sub_font   = ImageFont.truetype("public/fonts/NotoSansJP-Regular.ttf", size=24)

scripts/generate-hero-image.py で MDX ファイルを自動読み込みし、frontmatter の titledescription からヒーロー画像を生成する構成にした。9 カテゴリ別のカラーテーマを持ち、グラデーション背景 + タグチップ + カテゴリバッジを描画する。

補足: フォントをシステムに依存させると、クラウド実行環境によって IPAGothic 等の日本語フォントが存在しない場合がある。過去に 6 枚連続で □ 文字化けが発生した。フォントは必ず repo に同梱する。


で、どう稼ぐ?

この失敗から「AI ツール費の回収」に直結する判断が 1 つある。

ヒーロー画像の質は SNS での CTR に直結する。 ランダム漢字のサムネイルを X でシェアしても誰もクリックしない。Claude Code や MCP にお金を払っているなら、その恩恵が「読まれる記事のサムネイル」という形で回収できないと意味がない。

今回の結果として、ヒーロー画像生成を Pillow スクリプト化してルーティーンに組み込んだ。新規記事を push するたびにスクリプトが走り、ブランドに沿った PNG が自動生成される。一度設計すれば、以降は Claude Code が自動で動かす。

AI に任せる設計を間違えると、AI にお金を払っても品質は下がる。 今回はその典型例だった。


今日やること(3 つ以内)

  1. Canva MCP を使っている場合、日本語テキストが含まれる生成物を全部確認する
  2. ヒーロー画像の生成に AI を使っているなら、「ツール呼び出しが成功 = コンテンツが正しい」になっていないか確認する
  3. フォントがシステム依存になっているなら、TTF を repo に同梱して絶対パスで指定する

masatoman のメルマガ — 毎週月曜の朝に手紙を 1 通

masatoman.net の今週の記事 1 本を、読者目線で深掘りした手紙が毎週月曜 9:00 に届きます。「これ自分のことだ」が見つかる予告編。登録特典に「個人開発の収益化チェックリスト 15 項目」。

masatoman のメルマガ — 毎週月曜の朝に 1 通

masatoman.net で今週公開した記事の中から 1 本を、読者目線で深掘りした手紙が届きます。「自分も同じことやってる」「ここで詰まってた」が見つかる予告編。

Next Step

次に読むならこの導線です

すべての記事を見る
有料で次へ進む¥1,000

【第12回】夜寝てる間に Claude Code が記事を書き上げる構成 — 月 ¥5K で動く全コード

Claude Codeラボ全12話の集大成。Skills/MCP/サブエージェント/Hooks/リモート運用を統合した「自走する Claude 自動化」を、月 ¥5K の実コストで動かす全構成を公開。寝てる間に競合調査・記事下書き・PR まで自動化する 6 層アーキテクチャの完成版。

記事が役に立ったら気軽にどうぞ。

この記事が役に立ったらシェア