WordPressの記事をEmDashに移す手順|無料プランで止まった時の対処
連載「WordPressからEmDashへ移行する」の第3回です。今回は、WordPressの記事・固定ページ・画像をEmDashに取り込み、件数が合っていることを確かめるところまで進めます。
この回のいちばんの山場は、Cloudflareの無料プランでは取り込みが途中で止まったことです。原因を突き止めて有料プランに切り替え、さらに設定を1行足して出し直して、やっと完了しました。
画面の操作は筆者が行い、件数の確認、ログの調査、設定の変更はClaude Code(パソコンの中でコマンドを打ってくれるAI)に頼みました。
✅ この記事で解決できること
- WordPressの記事・固定ページ・画像を、公式の移行プラグインでEmDashに取り込める
- 取り込みが「No result received from media import」で止まったときの原因と対処がわかる
- 取り込んだあとに、件数が合っているかを確かめられる
- 所要時間:約1時間半(止まった原因の調査と有料プランへの切り替え込み。止まらなければ10分程度)
🎯 こんな人に最適です
- 第2回までで、EmDashを仮アドレスに立ち上げた人
- 記事と画像が多めのWordPressサイトを移したい人
- EmDashは無料と聞いて、Cloudflareの無料プランのまま進めようとしている人
🔧 必要な環境・前提
- WordPress 5.6以上、PHP 7.4以上(移行プラグインの動作条件)。筆者はロリポップ、テーマはAstra+Elementor
- 移行プラグイン EmDash Exporter 1.2.0
- EmDash 1.4.0(第2回で仮アドレスに立ち上げたもの)
- Cloudflare Workers(無料プラン → 途中で有料プランのWorkers Paidに切り替え)
- 移したもの:投稿35件、固定ページ4件、画像208件、カテゴリー4・タグ90
- 検証日:2026年10月30日
⚠️ 先に第2回までを済ませてください
バックアップがまだの人は 第1回「【図解】WordPressからEmDashへ移行する手順(準備編)」、EmDashの立ち上げがまだの人は 第2回「EmDashをCloudflareに立ち上げる手順」 を先に済ませてください。また、取り込みが終わるまでWordPressは消さず、止めないでください。EmDashは画像をWordPressから直接ダウンロードします。
📋 作業全体の流れ
- 手順1:WordPressに移行プラグインを入れる
- 手順2:WordPressで移行キーを作る
- 手順3:EmDashで取り込む(接続 → 確認 → 投稿者 → メディア)
- 手順4:止まったら、有料プランとCPUの上限を設定する
- 手順5:件数と表示を確かめる
この記事で出てくる言葉
| 言葉 | 意味 |
|---|---|
| EmDash Exporter | WordPressに入れる公式の移行プラグイン。EmDashがWordPressから記事を取り出せるようにする |
| 移行キー | EmDash Exporterが作る接続用の合言葉。サイトのアドレスと、取り消せるアクセス用パスワードがひとまとめになっている ※他人に見せない |
| インポート | 取り込み |
| コンテンツタイプ | 記事の種類(投稿=posts、固定ページ=pages など) |
| メディア | 画像などのファイル。EmDashではCloudflareのファイル置き場(R2)に入る |
| CPU時間 | プログラムが計算に使った時間。Cloudflare Workersは1回の処理ごとに上限がある |
| Workers Paid | Cloudflare Workersの有料プラン(月5ドル〜) |
| デプロイ | 作ったサイトをCloudflareに出すこと。設定を変えたら出し直す |
手順1:WordPressに移行プラグインを入れる
公式の移行プラグイン「EmDash Exporter」を入れます。
- GitHubの emdash-cms/wp-emdash のリリースページを開きます。
emdash-exporter.zipをダウンロードします。筆者のときの最新版は v1.2.0(2026年10月12日)でした。- WordPressの「プラグイン」画面から、zipファイルをアップロードします。
- 有効化します。
手順2:WordPressで移行キーを作る
手順2-1:サイトチェックを確かめる
- WordPressの「ツール」→「EmDash Migration」を開きます(英語表示)。
- 「Migrate to EmDash in 3 simple steps」という画面が開きます。① Site check、② Create your migration key、③ Connect from EmDash の3ステップです。
- ① Site checkの5項目に、すべて ✓ が付いていることを確かめます。右上に「All checks passed」と出ます。
5項目は、Pretty permalinks(パーマリンク)、Application Passwords(アプリケーションパスワード)、REST API reachable、Authorization header、Publicly reachable(外から見えるか)です。ロリポップでは、特別な設定なしで全項目に ✓ が付きました。

手順2-2:移行キーを作ってコピーする
- ② の「Generate migration key」を押します。
- 表示された移行キーをコピーします。
em1で始まる長い文字列です。
⚠️ 移行キーは貼らない・写さない
移行キーには、WordPressに入るためのパスワードが入っています。チャットやブログ、スクショに載せないでください。
手順3:EmDashで取り込む
手順3-1:移行キーで接続する
- EmDashの管理画面で「インポート」を開きます。「WordPressからインポート」の画面(日本語表示)になります。
- 接続方法は「移行キーを貼り付け」「WordPressサイトのURLを入力」「エクスポートファイルをアップロード」の3つです。いちばん上の欄に、移行キーを貼ります。
- 「接続」を押します。

左のメニューには「リダイレクト」(古いURLを新しいURLへ転送する機能)もあります。URLが変わったときに使えます(第4回で使います)。
手順3-2:取り込む内容を確認する
接続すると「確認」の画面になります。上のステップが「接続 → 確認 → インポート → メディア」の4つに増えます。
筆者の画面では、次の3種類が見つかりました。
- post:35件 → posts(投稿)
- page:4件 → pages(固定ページ)
- elementor_library:1件 → 新しいコンテンツタイプ
postとpageの件数は、第1回でWordPressから書き出したファイルの件数(投稿 公開32+下書き3、ページ 公開3+下書き1)と同じでした。

elementor_libraryは、ページビルダーのElementorが使うデザイン部品の保管庫です。EmDashでは使えないので、オフにしました。
- elementor_libraryのスイッチをオフにします。
- 「インポート時の動作」が「既存のコンテンツタイプ2件にフィールドを追加します」「39件がインポートされます」に変わったことを確かめます。
- 設定の「サイトタイトルとキャッチフレーズ」「ロゴとファビコン」「SEO設定(Yoast)」は、オンのままにします。
- 「スキーマを作成してインポート」を押します。

手順3-3:投稿者を割り当てる
「スキーマを作成してインポート」の次に、「投稿者を割り当て」の画面が出ます。
筆者の場合、WordPressの投稿者(32件の投稿)が、EmDashのユーザーに自動でつながっていました。「1人中1人の投稿者をメールアドレスで照合」「1件中1件を割り当て済み」と表示されます。
- 割り当てを確かめます。
- 「インポートを続行」を押します。

手順3-4:メディア(画像)を取り込む
記事の取り込みは数秒で終わり、「インポート」に ✓ が付いて「メディア」の画面になります。「WordPressのエクスポートには208件のメディアファイルが含まれています」と表示されました。
メディアの取り込みでは、次の3つが自動で行われます。
- WordPressから画像をダウンロードする
- EmDashのファイル置き場にアップロードする
- 記事の中の画像のアドレスを、新しいものに書き換える
- 「メディアをインポート」を押します。

「メディアインポートをスキップ」もできます。その場合、画像はWordPressのアドレスのまま残ります。WordPressを止めると画像が出なくなるので、移行ではスキップしないでください。
手順4:止まったら、有料プランとCPUの上限を設定する
手順4-1:エラーが出て、取り込みが途中で止まる
「メディアをインポート」を押すと、赤い文字でエラーが出ました。
No result received from media import
Claude Codeにデータベースの件数を数えてもらうと、取り込めていたのは一部だけでした。
- 投稿:35件中21件(日付の新しい公開14件と下書き2件が入っていない)
- 固定ページ:4件すべて
- 画像:208枚中9枚
記事の「インポート」には ✓ が付いていたのに、実際は途中で止まっていました。
手順4-2:原因を調べる
Claude Codeに、Cloudflareのログ(サイトで何が起きたかの記録)を手元の画面に流してもらいました。使うのは npx wrangler tail です。その状態で、もう一度「メディアをインポート」を押しました。
ログには、画像の取り込みの処理が3回成功したあと、次のメッセージで3回打ち切られた記録が残っていました。
Worker exceeded CPU time limit.- 原因は、Cloudflare Workersの無料プランの上限です。1回の処理で使えるCPU時間(計算に使える時間)は、10ミリ秒(0.01秒)が基本です。
- 成功した回でも、0.6〜1.2秒使っていました。画像のダウンロード、保存、同じ画像かどうかの計算が重いためです。
- 記事の取り込みが途中で止まったのも、同じ原因の可能性が高いです。
もう一度押すと少しずつ進みます(画像 9枚 → 15枚)。同じ画像が二重に入ることはありません。それでも、最後まで終わりませんでした。
⚠️ 「完全無料」とは限らない
参考にした動画では「完全無料」と紹介されていました。EmDash本体は無料です。ただ、実際のサイト(記事35件・画像208枚)を移すと、Cloudflareの無料プランでは取り込みが打ち切られました。記事と画像が多いサイトでは、有料プラン(月5ドル〜)が現実的です。
手順4-3:Workers Paid(有料プラン)に切り替える
- Cloudflareのダッシュボード(管理画面)で「Compute」→「Workers plans」を開きます。
- Workers Paid(月5ドル〜)を申し込みます。支払い情報は自分で入力します。
- 「Upgrade to Workers Paid」の画面に「Purchase complete」と出れば完了です。

有料プランでは、CPU時間の上限が標準で30秒になります。
手順4-4:CPUの上限を書いて、出し直す
有料プランに切り替えてから取り込みをやり直すと、また同じエラーで止まりました(今度はCPU 2.1秒で打ち切り)。
ここはClaude Codeが行いました。設定ファイル wrangler.jsonc(Cloudflare向けの設定ファイル)に、次の1行を足します。
"limits": { "cpu_ms": 300000 },1回の処理で、最大5分(300,000ミリ秒)までCPUを使えるようにする設定です。足したら、出し直します(デプロイ)。
npm run deploy手順4-5:もう一度取り込む
- 取り込みを最初から実行し直します。すでに入っている記事は飛ばされます。
- 「インポート完了」と表示されれば成功です。
筆者の画面には、次のように表示されました。
- 14件のコンテンツをインポート・25件をスキップ(既に存在)
- 208件のメディアファイルをインポート
- 81件の分類項目を割り当て
- サイト情報を適用しました(タイトル、タグライン、ロゴ)
- 34件のコンテンツで188件の画像URLを更新しました

公式ドキュメントによると、取り込みはすでにある記事を飛ばすように作られています。同じ記事かどうかは、スラッグ(URLの末尾)で見分けます。画像は、中身が同じなら使い回されます。

手順5:件数と表示を確かめる
手順5-1:件数を照らし合わせる
Claude Codeに、WordPressから書き出したファイルとEmDashのデータベースの件数を比べてもらいました。頼み方は次のとおりです。
WordPressの書き出しファイルと、EmDashのデータベースで、投稿・固定ページ・カテゴリー・タグ・画像の件数を、公開と下書きに分けて比べて
| 種類 | WordPress | EmDash |
|---|---|---|
| 投稿 | 公開32+下書き3=35 | 35 ✓ |
| 固定ページ | 公開3+下書き1=4 | 4 ✓ |
| カテゴリー/タグ | 4/90 | 4/90 ✓ |
| 画像 | 208件 | 保存されたファイルは203 ✓ ※中身がまったく同じ画像は1つにまとめられる仕様。重複5件分が少ない |
下書きは、下書きのまま入りました。ただし、WordPressでスラッグ(URL)が空だった下書きには、タイトルから日本語のスラッグや post-554 のような名前が付きました。
手順5-2:記事の表示を確かめる
取り込んだ記事のページを開きます。画像は、EmDash側のアドレス(/_emdash/api/media/file/…)から出ていました。WordPressのアドレスのままの画像は0件でした。


この時点で、次の課題が見つかりました。どれも第4回で直します。
- URLが変わった(旧
/claude-freee-invoice/→ 新/posts/claude-freee-invoice)。古いURLは「見つかりません」になる - 記事の冒頭の「✅ この記事で解決できること」などのボックスは、文章は残ったが、色と枠が消えた
- 読了時間「1 min read」が、長い記事でも1分と表示される
- お問い合わせページのURLが日本語のまま
- SEO PACKの説明文が移っていない
うまくいかないときは
| 症状 | 原因 | 対処 |
|---|---|---|
| プラグインの検索でEmDash Exporterが出てこない | 公式ディレクトリに無い | GitHub(emdash-cms/wp-emdash)のリリースからzipを取り、アップロードで入れる |
| メニューやロゴが移らない | EmDash Exporterが1.2.0より古い | 1.2.0以上にしてから取り込む |
| 「No result received from media import」 | Workers無料プランのCPU時間の上限で、処理が打ち切られている | Workers Paidに切り替え、wrangler.jsonc に "limits": { "cpu_ms": 300000 } を足して出し直す |
| 有料プランにしたのに、まだ同じエラー | 出してあるWorkerのCPUの上限が上がっていない | 上のlimitsを書いて出し直す ※プランを変えるだけでは足りない |
| 画面は「完了」なのに記事が足りない | 途中で打ち切られていた | 件数を数える。足りなければ、原因を直してから取り込みをやり直す(入っている記事は飛ばされる) |
| 記事ごとのSEOの説明文が移らない | 移せるのはYoastとRank Mathの分だけ | 取り込んだあとに入れ直す(第4回) |
| 画像の数が少し少ない | 中身が同じ画像は1つにまとめられる | 仕様。記事の画像が表示されていれば問題ない |
まとめ
- 移行プラグイン「EmDash Exporter」は、GitHubからzipを取ってきて入れます。版は1.2.0以上にします。
- WordPressの「ツール」→「EmDash Migration」で移行キーを作り、EmDashの「インポート」に貼って取り込みます。
- Cloudflareの無料プランでは、画像の取り込みがCPU時間の上限で打ち切られました。Workers Paid(月5ドル〜)に切り替え、wrangler.jsonc にCPUの上限を書いて出し直すと完了しました。
- 画面の「完了」をうのみにせず、取り込んだら件数を数えます。
この回の終わりの時点で、仮アドレスのEmDashに、記事35件・固定ページ4件・画像208件がそろいました。見た目はまだテンプレートのままで、URLもWordPressと違います。本番のmanual-chang.comは、まだ古いWordPressのままなので、読者からは何も変わって見えません。
次回は、第4回「EmDashでデザイン・フォーム・SEOを作り直す手順|移行後の仕上げ」です。URLを元に戻し、ボックスの見た目とお問い合わせフォームを作り直します。



