【実践】WordPressからmicroCMSへ!簡単な記事移行スクリプトと注意点

WordPressからNext.jsとヘッドレスCMS(microCMS)へ移行する際、最も重要な工程の一つが既存記事の移行です。
この記事では、最もシンプルかつ確実にデータを移行するためのNode.jsスクリプトと、その手順について解説します。
本記事で紹介する方法では、元の公開日やタグは維持されません。
これらは移行後に手動で設定することを前提とした、最低限のデータ移行を目指します。
移行の事前準備
スクリプトを実行する前に、3つの準備が必要です。
1. WordPressからのデータエクスポート
WordPressの標準機能である「WP REST API」を使い、記事データをJSON形式で取得します。ブラウザで以下のURLにアクセスしてください。
https://あなたのWordPressサイトURL/wp-json/wp/v2/posts?per_page=100
(記事が100件を超える場合は、末尾に&page=2
などを付けて複数回アクセスします)
表示されたテキストデータを全てコピーし、プロジェクトのルートにwordpress_posts.json
という名前で保存します。
2. microCMSのAPI設定【重要】
移行時のエラーを回避するための、最も重要なステップです。
- microCMSの管理画面で、ブログ記事用のAPIを開きます。
- 「API設定」タブに移動します。
tags
(タグ)やdescription
(概要)など、必須項目になっているフィールドの「必須」チェックを一時的に全て外します。
これにより、「description
フィールドが必須です」といったエラーを防ぐことができ、スクリプトがシンプルになります。移行が完了した後に、忘れずに必須設定に戻しましょう。
3. カテゴリの準備とID対応表の作成
移行スクリプトがWordPressのカテゴリを正しく認識できるよう、先にmicroCMS側でカテゴリを作成し、IDの対応表を用意しておきます。
- microCMSで、WordPressで使っていたカテゴリをすべて作成します。
- それぞれの「コンテンツID」をメモします。
- 後のスクリプト内で、WordPressのID(数字)とmicroCMSのコンテンツID(文字列)を紐付ける対応表を作成します。
移行スクリプトの実装
準備が整ったら、データ移行を実行するNode.jsスクリプトを作成します。
ライブラリのインストール
まず、ターミナルで以下のコマンドを実行し、microCMSのSDKをインストールします。
Bash
npm install microcms-js-sdk
migration.js
の作成
プロジェクトのルートにmigration.js
というファイル名で、以下のスクリプトを記述します。
JavaScript
const { createClient } = require('microcms-js-sdk');
const fs = require('fs');
// ▼▼▼【設定箇所】▼▼▼
// --- 1. microCMS接続情報 ---
const client = createClient({
serviceDomain: 'YOUR_SERVICE_DOMAIN', // あなたのサービスドメイン
apiKey: 'YOUR_API_KEY', // あなたのAPIキー
});
// --- 2. カテゴリID対応表(例) ---
const categoryMap = new Map([
// [WordPressのカテゴリID, 'microCMSのカテゴリID'],
[3, 'aws'],
[6, 'certification'],
[4, 'investing'],
]);
// ▲▲▲【設定ここまで】▲▲▲
async function runMigration() {
console.log('移行処理を開始します...');
const posts = JSON.parse(fs.readFileSync('./wordpress_posts.json', 'utf8'));
for (const post of posts) {
const wpCategoryId = post.categories[0];
const microCMSCategoryId = categoryMap.get(wpCategoryId);
// 移行するデータをタイトル、本文、カテゴリに限定
const content = {
title: post.title.rendered,
content: post.content.rendered,
category: microCMSCategoryId || null,
};
try {
// 公開状態でコンテンツを新規作成(公開日は自動で登録時の日時になる)
await client.create({
endpoint: 'blog',
content: content,
status: 'published',
});
console.log(`✅ 成功: 「${content.title}」を移行しました。`);
} catch (error) {
console.error(`❌ 失敗: 「${content.title}」の移行に失敗しました。`);
console.error('エラー詳細:', error.message);
}
// API制限を避けるため1秒待機
await new Promise(resolve => setTimeout(resolve, 1000));
}
console.log('🎉 すべての記事の移行が完了しました!');
}
runMigration();
スクリプトの実行
設定項目を書き換えたら、ターミナルで以下のコマンドを実行します。
Bash
node migration.js
移行後の作業
スクリプトの実行が完了したら、microCMSの管理画面でデータが正しく登録されているか確認してください。
この時点では、公開日はすべて実行時の日時になり、タグや概要は空のはずです。
ここから、以下の手作業を行います。
- microCMSのAPI設定で、必須項目のチェックを元に戻す。
- 各記事の編集画面を開き、正しいタグや概要、公開日、アイキャッチ画像を設定し直す。
まとめ
今回、Node.jsを活用したWordPressからmicroCMSへの移行について紹介しました。
ただ今回の方法だけでは、自分でアイキャッチ画像やタグの設定を行う必要があるため、より良い方法があれば追記します。
これからもNext.jsを使ったサイト運営についても発信していくので、ぜひこのサイトをブックマークしてくれると嬉しいです。