
AI 時代の新たなCMS「EmDash」を AWS 環境で動かして、WordPress からの移行を試してみた
クラスメソッドオペレーションズの Shimizu です。
CMS といえば、多くの方がまず思い浮かべるのが WordPress だと思います。
圧倒的なシェアを誇り、豊富なプラグインやデザインテーマが提供されていて、筆者も長年にわたり重宝してきました。
ですが昨今、AI エージェントに作業させる場面が増えた中で「セキュリティを考慮しつつ、CMS を AI から直接操作できたら便利なのでは?」と考えました。
そこで今回は、WordPress と近い操作感ながら AI にも対応した新たな CMS「EmDash」を AWS 環境 にデプロイして、MCP 経由での操作と WordPress からの移行を試してみました。
以下に、その詳しい手順をご紹介します!
EmDash とは
EmDash は Cloudflare 社が 2026 年 4 月に発表し、同年 9 月に安定版がリリースされたばかりの新しいオープンソース CMS です。大きく以下のような特徴があります。
-
AI エージェント向けの機能が標準装備:
MCP サーバーが用意されていて、AI エージェントから自然言語で記事の投稿や編集ができます。 -
WordPress に近い操作感:
投稿・固定ページやユーザー管理などの概念が WordPress とほぼ同じで、WordPress サイトからのインポート機能も標準で用意されています。 -
Node.js と SQLite で動作:
Node.js と SQLite が動く環境なら、EC2 はもちろん CloudFlare Workers 等のサーバーレス環境にもデプロイできます。
CloudFlare 社の公式ブログで「WordPressの精神の後継」と紹介されているだけあり、慣れ親しんだ WordPress と同じ感覚で、初めてでも直感的に操作できます。
筆者の体感ですが、動作も非常に軽く、低スペックの EC2 でもサクサクと動く印象でした。
やってみた
事前準備
本時期では詳しい説明を省きますが、すでに以下のリソースが用意されている前提で進めます。
-
EmDash をデプロイして、独自ドメインで HTTPS 接続できる環境
(今回は EC2 + ALB + ACM 証明書で構成) -
MCP サーバーを利用できる AI エージェントツール
(今回は Kiro IDE を使用) -
移行対象の WordPress サイト
(今回は EC2 + ALB + ACM 証明書で構成)
※ EmDash では管理画面へのログインに、パスワードではなくパスキーを使用します。AI エージェントからの MCP 操作や WordPress からの移行時にも HTTPS を使用するため、必ず HTTPS 化されていることが前提です。
※ 注意点として EmDash のデプロイ後、最初にサイトにアクセスした端末でパスキー登録ができる仕様になっています。
そのため EmDash をデプロイする環境では、初回に作業者のみがサイトにアクセスできるよう、セキュリティグループ等で制限しておく必要があります。
ステップ1: EC2 に EmDash のインストールと初期設定を行う
デプロイ先の EC2 インスタンス(今回は Amazon Linux 2023 を使用)に SSH で接続し、まずはNode.js をインストールします。
# Node.js のインストールとバージョン確認
sudo dnf install -y nodejs24 git
node --version
# Node.js のパス確認(後で使用するため控えておく)
which node
【補足】EmDash の仕様上は Node.js 22 系でも動きますが、2026 年 10 月 21 日に Node.js のセキュリティアップデートが公開されたことを踏まえて v24.22.1 以降をインストールすることが推奨されます。
node --versionでv24.22.1以降になっていることを確認しておきましょう。
次は EmDash のプロジェクトを作成します。
コマンドを実行すると対話式で各オプション(デプロイ先やテンプレート等)を選択できます。今回は以下のように設定しました。
# EmDash プロジェクトの作成
npm create emdash@latest
# 各オプションの入力
# プロジェクト名(任意の名前)
◇ Project name? (use "." for current directory)
│ my-emdash-site
# デプロイ先
◇ Where will you deploy?
│ Node.js
# テンプレート(WordPress のデザインテーマに相当するもの)
◇ Which template?
│ Blog
# パッケージマネージャ
◇ Which package manager?
│ npm
# 依存パッケージをインストールするかどうか
◇ Install dependencies?
│ Yes
Project created! の表示を確認したら、EmDash プロジェクトの作成は完了です。
次に EmDash の環境設定ファイルを作成します。
# EmDash プロジェクトフォルダへ移動(前項で設定したプロジェクト名と同名のフォルダ)
cd ~/my-emdash-site
# アクセスキーの発行と環境設定ファイルの作成
npx emdash secrets generate # 出力されたキーをコピーしておく
sudo install -m 600 /dev/null /etc/emdash.env
sudo vi /etc/emdash.env
# /etc/emdash.env に記述する内容
EMDASH_SITE_URL=https://<デプロイ先のドメイン名>
EMDASH_ENCRYPTION_KEY=(上でコピーしたアクセスキー)
HOST=0.0.0.0
PORT=4321
※ 今回は ALB → EC2 の構成上、HOST は 0.0.0.0 にしています。また EmDash のデフォルトポートは 4321 になるため、ELB ターゲットグループもポート 4321 で設定しています。
次は作成した環境設定ファイルを使用して、EmDash の起動とビルド、サービスへの登録を行います。
# EmDash の起動とビルド
set -a && source <(sudo cat /etc/emdash.env) && set +a
time npm run build
unset EMDASH_ENCRYPTION_KEY
# サービスへの登録
sudo vi /etc/systemd/system/emdash.service
# /etc/systemd/system/emdash.service に記述する内容
[Unit]
Description=EmDash CMS
After=network.target
[Service]
User=ec2-user #プロジェクト作成時の OS ユーザー
WorkingDirectory=/home/ec2-user/my-emdash-site #プロジェクトを作成したディレクトリ
EnvironmentFile=/etc/emdash.env # 環境設定ファイル
ExecStart=/usr/bin/node ./dist/server/entry.mjs # EXecStart= には先に確認した Node.js のパスを記述
Restart=always
[Install]
WantedBy=multi-user.target
# emdash サービスの有効化
sudo systemctl daemon-reload
sudo systemctl enable --now emdash
# 動作確認
# /_emdash/api/health が "product" "version" などを含む JSON を返すことを確認
curl -s http://127.0.0.1:4321/_emdash/api/health
上記がエラーなく実行できれば、EmDash の起動は完了です。
EmDash をホストしているURL(https://ドメイン名)へブラウザでアクセスして、以下のような画面が表示されれば成功です!

次のステップでは初回のサイト設定と、管理画面の確認を行います。
ステップ2: 初回のサイト設定と管理画面の確認
まず注意点として、先に述べたように EmDash のデプロイ後、最初に画面へアクセスした端末からパスキーを設定できてしまいます。そのため初回は作業者のみが URL にアクセスできるように、予めセキュリティグループ等で制限しておきましょう。
上記設定がされている前提で、表示されたトップページの Create a post のボタンをクリックします。

するとサイトの初期設定画面に遷移するので、サイトタイトルとキャッチフレーズを入力し(後から変更可能)、サンプルコンテンツが必要な場合は Sample content を選択して進めます。

次は管理者ユーザーのメールアドレスと名前を入力して進めます。

最後にパスキーを設定します。
Create passkey をクリックするだけです。

パスキーの作成が完了したら、管理画面(ダッシュボード)へアクセスできるようになります。


管理画面の構成は WordPress と非常に似ているため、WordPress を使ったことがある方なら直感的に分かりそうですが、画面左側のメニュー内容をざっと紹介します。

- ダッシュボード
全体の投稿数やサマリーを表示 - Calendar
公開されたコンテンツをカレンダー形式で表示 - Pages
固定ページの管理 - Posts
ブログ記事の管理 - メディア
ファイルのアップロード(画像・動画・ドキュメント等) - コメント
記事へのコメントを管理 - メニュー
グローバルナビゲーションの設定 - リダイレクト
ページリダイレクトの設定 - ウィジェット
記事一覧や検索フォーム等のパーツを管理 - セクション
複数ページで共用できるパーツの作成と管理 - Categories
記事のカテゴリを管理 - Tags
記事のタグを管理 - 執筆者
記事執筆者(Author)のアイコンやプロフィール設定 - コンテンツタイプ
Pages や Posts の他に、独自のコンテンツタイプを作成 - 執筆者情報に追加する項目
執筆者情報に含める項目を追加できます(役職、SNS アカウント等) - ユーザー
EmDash 管理画面にログインできるユーザーの管理・招待 - プラグイン
プラグインの管理 - インポート
WordPress サイトからのインポート(本記事で紹介します) - 設定
サイト全体の設定(言語やセキュリティ、SEO 関連の設定など)
WordPress との違いとして、外観の変更メニュー(テーマの切り替えやソースコードの直接編集)は今のところ無いようです。
一方で、WordPress ではプラグインが必要だった機能(独自コンテンツタイプやバックアップ)が最初から備わっているのは嬉しいところです。
次のステップでは、手動で簡単な記事を投稿してみます。
ステップ3: 管理画面から手動で記事を作成する
左側メニューの「Posts」から「新規追加」をクリックします。

記事タイトルやスラッグを入力して、Featured Image(アイキャッチ画像)や記事本文を入力します。このあたりは WordPress とほぼ同じです。

右側の「保存」ボタンをクリックすると Draft(下書き)として保存でき、「Publish now」をクリックすれば公開状態になります。予約公開も可能です。

記事を公開状態にし、トップページに表示されることを確認できました。
管理画面には、ログインユーザーにのみ画面上に表示されるリンクから移動できます。

手動での記事公開を確認できたら、次はいよいよ MCP サーバーを設定して AI エージェントから記事投稿をしてみます。
ステップ4: MCP 経由で AI エージェントから記事を投稿する
MCP サーバーを設定できる AI エージェントツールならどれでも OK ですが(Claude、ChatGPT、Cursor 等)ここでは Kiro IDE を使用します。
Kiro IDE の MCP 設定を開き、mcp.json に以下の設定を追加します。
{
"mcpServers": {
"emdash-site": {
"url": "https://EmDashサイトの独自ドメイン名/_emdash/api/mcp"
}
}
}

設定を追加した後に Authenticate をクリックすると、ポップアップで認証画面の URL が表示されるので「Open」をクリックします。

ブラウザ画面に遷移すると「Read Content(コンテンツ読み込み)」や「Create,edit,and delete content(コンテンツの作成・編集・削除)」など MCP で可能な操作が表示されるため、許可したい操作のみチェックを入れて「Approve(承認)」ボタンをクリックします。
※ 一番下の「Full administrative access(すべての管理者権限)」はサイトへのフルアクセスを許可してしまい危険なため、必要がなければチェックを外しましょう。

ブラウザ画面に「Authorization Successful」と表示されれば、MCP の接続は完了です。

Kiro の画面に戻り、ますは手始めに何ができるのか聞いてみます。

すると記事の作成や更新はもちろん、サイト全体の設定や移行までができることを教えてくれました。
※ 今回は MCP でフルアクセスを許可していますが、実運用では必要な操作だけ許可するようにしましょう。

以下のように、簡単な記事の投稿を自然言語で指示してみます。

すると、指示した通りの記事が下書き状態で投稿されました。
EmDash の管理画面側でも、しっかりアイキャッチ画像付きで投稿されています。


次は下書き記事を公開するように指示すると、MCP 経由で投稿した記事を公開できました!

他にも自然言語で色々な操作ができそうですが、長くなるのでここまでにします。
AI エージェントツールをスマホに設定すれば、スマホから音声入力で記事を投稿する、なんてこともできそうです。
次は、WordPress サイトから EmDash へ記事を移行してみます。
ステップ5: WordPress サイトから記事を移行する
あらかじめ作成しておいた WordPress サイト側にログインして、最初からあるサンプル記事「Hello world!」に、分かりやすく以下のような猫の画像を付けておきました。今からこの記事を EmDash へ移行してみます。

まずは EmDash 管理画面の「インポート」を開きます。
WordPress 側に「EmDash Exporter」というプラグインをインストールして、キーを生成する必要があると書かれています。

WordPress 側のプラグイン画面から「EmDash Exporter」を検索しても、現時点では表示されませんでした。どうやら現時点ではまだ公式プラグインディレクトリに無いようです。

そこでインターネット検索したところ、Github で「EmDash Exporter」プラグインが公開されていたため、ここからダウンロードします。
※ プラグインのダウンロードとインストールは、自己責任で行いましょう。

Github からダウンロードしたソースコード内の「plugins > emdash-exporter」フォルダがプラグイン本体なので、これを zip 圧縮します。

WordPress のプラグイン管理画面で「プラグインのアップロード」から zip 圧縮したプラグインフォルダを選択し、「今すぐインストール」をクリックします。

プラグインのインストールが完了したら「プラグインを有効化」をクリックします。

WordPress 側の「ツール」メニューから「EmDash Migration」という項目を開くと、サイトの接続性チェックが行われるので、すべて緑色のチェックが入り正常であることを確認します。
※ エラーが出ている場合は、メッセージを AI に解析させるなどで原因を調べて解決しましょう。対象 WordPress サイトが完全に HTTPS 化されていなかったり、EmDash サイトとの間に何らかのネットワーク制限があると、エラーになる場合があります。
※ どうしても接続エラーを解消できない場合は、ネットワーク経由ではなく xml ファイルでのエクスポート → インポートも可能です。

サイトチェックがすべて正常になったら「Generate migration key」をクリックします。アクセスキーが表示されるので「Copy key」をクリックしてコピーしておきます。
※ 画面を移動すると、二度とアクセスキーを表示できなくなるので気をつけましょう。

これで前準備は完了です。
接続エラーが出たりするとちょっと手間取りますが、ここまでできればあとは簡単です。
EmDash 側の管理画面に戻り、WordPress 側からコピーしたアクセスキーを貼り付けて「接続」をクリックします。

WordPress 側の投稿や固定ページ、サイトタイトルや SEO 設定など、移行したい項目のトグルをオンにして「スキーマを作成してインポート」をクリックします。

次の画面では投稿者の割り当てを行います。WordPress 側からインポートする記事を、EmDash 側のどのユーザーに紐づけるかを設定して「インポートを続行」をクリックします。

次はメディアファイル(画像など)のインポートです。
画像も含めて記事を移行したい場合は「メディアをインポート」をクリックします。
※ 画像は含めず記事のみ移行したい場合は、スキップを選択してください。

特に問題がなければ「インポート完了」と表示されます。
※ 筆者の検証では、WordPress 側からインポートしようとする記事と重複した URL(スラッグ)の記事がすでに EmDash 側に存在する場合に、エラーとなることを確認しました。
もし該当する場合は、EmDash 側から重複したスラッグの記事を完全削除(ゴミ箱からも削除)した上で試してみましょう。

インポート完了後に投稿一覧を確認すると、WordPress 側にあった猫の記事が、きちんと画像付きで EmDash 側に移行されていました!
サイトのタイトル等も、WordPress 側の設定が移行されています。

今回試した内容は以上です。
現時点では WordPress のデザインテーマやプラグイン等は移行できませんでしたが、画像付きの記事やサイトの SEO 設定等は、ほぼそのまま移行できることを確認しました。
さいごに
いかがでしたでしょうか。
初めて EmDash に触れた感想として、WordPress とほぼ同じ感覚で扱える上に、AI エージェントでの操作やパスキーによるセキュリティなど時代に即した作りとなっており、まだリリースされて数ヶ月ながら大きなポテンシャルを感じました。
歴史の長い WordPress と比較すると、プラグインやデザインテーマの充実はまだまだこれからという印象ですが、一方で筆者の経験上、WordPress の運用では PHP / WordPress 本体 / プラグインのバージョン更新が煩雑になることが多かったため、EmDash でこの点が解消されるなら、移行先の選択肢になり得ると思いました。
これからも EmDash のアップデートに注目し、また機会があれば記事にしたいと思います。
この内容がどなたかの参考になれば幸いです!
参考資料
- Introducing EmDash | The Cloudflare Blog
- EmDash 1.0: the stable CMS with a secure plugin registry | The Cloudflare Blog
- Deploy to Node.js | EmDash Docs
- Wednesday, October 21, 2026 Security Releases | Node.js
- AI Tools | EmDash Docs
- MCP Server Reference | EmDash Docs
- Migrate from WordPress | EmDash Docs
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。
※2026年1月 アノテーション㈱から社名変更しました











