
MCPを繋いだエージェントに、CMS移行を丸投げする ― 「このブログを全部Tesseraに移して」で何が起きるか
平原 典彦 — Tesseraを開発しているエンジニア。ヘッドレスCMSとAI連携に関心があります。
前回の「CMS移行の手順ガイド」は、CSVを自分で作って取り込む手順でした。今回はその一段先で、MCPを繋いだAIエージェントに移行そのものを頼むやり方です。Claude CodeにTesseraのMCPを接続した状態で、こう頼みます。
https://example.com/blog の記事を、全部Tesseraに移行して。著者とカテゴリも一緒に。画像はそのままURLで渡していい。
この一文で何が起きるか、どこで人間の手が要るか、どこで詰まるかを、実際の動きに沿って書きます。先に結論を言うと、人間が止めるのは公開の1か所だけです。
前提
- Claude Code(またはCursorなどMCP対応のエージェント)に、Tesseraのread_writeのAPIキーでMCPを接続している(設定はMCPサーバーのドキュメント。JSONを1つ貼るだけです)
- 移行元は自分のサイト。他社サイトの取り込みは規約の問題になるので対象外です
- 移行元のページをエージェントが読める(公開ページなら、そのまま取得して読みます)
エージェントが踏む手順
エージェントは自分で段取りを組みますが、Tessera側のツールで見るとだいたい次の順になります。
1. 移行元を読む
一覧ページをたどって各記事のHTMLを取得し、タイトル・本文・日付・著者・カテゴリを抜き出します。本文のHTMLはこの時点でMarkdownに変換します。ここはTesseraではなくエージェントの仕事です。
2. 移行先の構造を確認して、無ければ作る
list_content_types で移行先にどんな種類があるかを見ます。「記事」「著者」が無ければ、propose_content_type_change で作ります。新しい種類の追加は、既存の構造やコンテンツに影響しないので承認を挟みません。 バリデーションを通ればその場で作成され、エージェントはそのまま次へ進みます。承認が要るのは、既存の種類を変える・消す提案だけです。移行先にすでに「記事」があって項目を足したい、という場合はここで承認待ちになります。

エージェントとのやり取り。人間が止めるのは公開だけ。
3. 参照される側から作る
種類ができたら、エージェントは create_entry で著者 → 記事の順に作ります。記事の著者欄には、先に作った著者のIDが入ります。1件試してから全件に進みたいときは、preview_entry_write(書き込まずに検証だけする)を使うよう頼めます。
画像はURLのままで構いません。 create_entry のメディア項目に旧サイトの画像URLを書くと、Tesseraがその場で取得して自分のワークスペースのアセットにし、IDに置き換えます。エージェントが画像をダウンロードしてアップロードし直す必要はなく、画像の中身がエージェントのコンテキストを通ることもありません。
4. 本文中の画像を差し替える
本文(Markdown)に埋め込まれた画像は、この時点ではまだ旧サイトのURLを指しています。import_asset_from_url で1枚ずつ取り込み、返ってきたURLに本文側を置換します。これもエージェントに「本文中の画像もTesseraに取り込んで差し替えて」と頼めば、記事ごとにやってくれます。
5. 確認して、まとめて公開する
作られた記事はすべて下書きで入ります。ここが人間の止め所です。一覧の「下書き」タブで中身を見て、問題なければチェックボックスで選んで「公開する」。数十件でも数回の操作で終わります。エージェントに update_entry で公開させることもできますが、公開だけは目で見てからの方が安心です。

下書きを選んで「公開する」。公開予約が残っていても、この操作が優先される。
人間が止めるのは「公開」だけ、の意味
Tesseraは「エージェントに任せても、確定させるのは人間」という設計で作っています。移行でも、**外に出る瞬間(公開)**は必ず人間を通ります。一方で、新しい種類の追加は既存に影響しないので承認を省き、エージェントが止まらずに進めるようにしました。既存の種類を変える提案だけは、これまでどおり承認が要ります。それ以外(読み取り・変換・作成・画像の取り込み)は全部任せて構いません。
うまくいかないところ
正直に書いておきます。
- 本文の変換品質: HTML→Markdownの変換はエージェント任せなので、表・埋め込み・独自の装飾は崩れることがあります。数件をまず変換させて、崩れ方を見てから指示を足すのが早いです
- 件数: MCPの書き込みには回数の上限があります(料金・上限)。数百件を超えるなら、エージェントにはCSVを作らせる方に切り替えてください。「Tesseraのインポートに合うCSVにして」と頼めば、
get_csv_import_specで仕様を読んで変換します。CSVならTessera側で行ごとにエラーが出て、重複も防げます(CSVインポート仕様) - 再現性: エージェントの変換は毎回少しずつ違います。移行を途中でやり直すときは、作られた下書きをまとめて非公開にしてから再実行すると混ざりません
まとめ
- MCPを繋いだエージェントに「このサイトのブログを全部移行して」と頼める。読み取り・変換・作成・画像の取り込みまで任せられる
- 画像はURLのまま渡せば、Tesseraが取得してアセットにする。本文中の画像は
import_asset_from_urlで差し替え - 人間が止めるのは公開だけ。新しい種類の追加は承認なし、既存の種類を変える提案だけ承認
- 件数が多いときや変換の品質を揃えたいときは、CSVを作らせて取り込む