microCMS

microCMSに大量コンテンツを登録する方法まとめ

下津曲 浩

こんにちは、カスタマーエンジニアの下津曲です。

私たちが日々カスタマーサポートや商談の対応をするなかでよく話題に上がるのが、コンテンツの移行方法についてです。

とりわけ、その他のCMSで管理されている大量のコンテンツをどのようにmicroCMSに登録するか?ということが、CMSの移行においてハードルとなっており、頭を悩ませる種となっているケースが少なくありません。

microCMSではコンテンツの登録方法として、コンテンツ編集画面から入稿する以外にも大きく2つの方法があります。
今回は、それらの方法の特徴を比較しながらまとめてみたいと思います。

※本記事は「リスト形式」のAPIを対象としています。「オブジェクト形式」のAPIについては、以下の方法はご利用いただけませんのでご注意ください。

microCMSに大量コンテンツを登録する方法

1. CSVインポート

CSVファイルを元に、コンテンツを一括で登録する方法です。
管理画面に直接CSVファイルをアップロードし、ワンクリックでお手軽にインポートができるのが最大の特徴です。

機能の詳細については、microCMS公式ドキュメント「コンテンツのCSVインポート」をご覧ください。

必要なもの

  • 元となるCSVファイル


以下は、実際にmicroCMSの管理画面からダウンロードできるCSVファイルのフォーマットです。

その他の特徴

  • スクリプト等なしで、CSVファイルのみで登録ができる(実行時は非エンジニアでも対応可能)
  • コンテンツ数が0件の場合でないと利用できない(※1)
  • 一度に登録できるコンテンツ数に上限がある(※2)
  • コンテンツの公開状態を選べない(※3)
  • 対応していないフィールドがある(※4)
備考

(※1)APIに既存コンテンツがある場合もCSVインポートが利用できるよう、機能の改修を予定しています。ロードマップはこちら
(※2)ご利用プランによって上限値は異なります。
(※3)すべて公開状態となります。
(※4)詳細は、下部の表「CSVインポート vs WRITE API」を参照ください。

2. WRITE API(POST / PUT)

WRITE API(POST / PUT)リクエストを送信し、コンテンツを登録する方法です。
プログラマブルにコンテンツを登録できるので、他のシステムとの連携や、自動的なワークフローへの組み込みが可能な点が特徴となります。

機能の詳細については、以下のmicroCMS公式ドキュメントをご覧ください。


両者の主な違いとしては、PUTリクエストではコンテンツIDを指定して登録が可能、という点が挙げられます。

必要なもの

  • リクエストのためのスクリプト


以下は、JavaScriptでPOSTリクエストを送る場合のスクリプトのサンプルです。そのままローカルのNode.js実行環境で実行できるものをイメージしています。

※POSTリクエストが送信できるものであれば、どんな言語でもご利用いただけます。

const axios = require('axios')

const endpoint = 'https://some-service.microcms.io/api/v1/sample'
const apiKey = 'xxxxxxxx'

// 別途JSONファイルなどを読み込むなどして用意してもOK
const data = [{ title: 'テキスト1' }, { title: 'テキスト2' }]

// 1秒あたりの最大リクエスト数
const requestsPerSecond = 5
const delayBetweenRequests = 1000 / requestsPerSecond

function delay(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms))
}

async function postData(content) {
  try {
    const response = await axios.post(endpoint, content, {
      headers: {
        'Content-Type': 'application/json; charset=utf-8',
        'X-MICROCMS-API-KEY': apiKey,
      },
    })

    console.log('Successfully posted:', response.data)
  } catch (error) {
    console.error('Error posting data:', error.message)
  }
}

async function postAllData() {
  for (const item of data) {
    await postData(item)
    await delay(delayBetweenRequests)
  }
}

postAllData()


その他の特徴

  • スクリプトが必要なため、エンジニアの対応工数がかかる
  • 既存のコンテンツ数に限らずコンテンツが登録できる
  • 全てのフィールドに対応している
  • 一度に登録できるコンテンツ数に上限がない(※1)
  • クエリを付与することで公開状態を選べる(※2)
備考

(※1)秒間5回までの呼び出し回数制限がございます。詳細は「制限事項/注意事項」をご覧ください。
(※2)ご利用できるのはTeamプラン以上となります。

共通の注意事項

  • サービスに登録できるコンテンツ数を超えて登録は不可能です。


CSVインポート vs WRITE API

上記のそれぞれの登録方法の特徴を以下の表にまとめました。

使い分けのヒント

本記事執筆時(2023年10月)の仕様では、CSVインポートはコンテンツ数が0件の場合のみご利用いただける制約がありますので、まずはその制約にあたるかあたらないか、という観点で使い分けをご検討いただくことになるかと思います。

今後の改修予定として、コンテンツが存在する場合においてもCSVインポートが利用できるようにする機能追加を予定しておりますので、そうした機能の追加後はCSVインポートの活用の幅は大きく広がりそうです。

一方で、以下の場合はコンテンツが0件の場合であってもWRITE APIをご利用いただくことになるでしょう。

  • カスタムフィールド繰り返しフィールドをAPIに含んでいる場合
  • コンテンツを「下書き」のステータスで登録したい場合


2024/03/01 追記

2024年2月26日のリリースで、画像、複数画像、ファイルフィールドにAPI経由でコンテンツを入稿できるようになりました。

リリースブログ:
画像、複数画像、ファイルフィールドにAPI経由でコンテンツを入稿できるようになりました | microCMSブログ

これにより、WRITE API(POST / PUT)を利用する方法では全てのフィールドに対してコンテンツを入稿できるようになっています(フィールドの種類ごとに入力フォーマット等の制限はございます)。

なおこの変更に伴い、本ブログ内の一部の記述、図版を修正しています。

さいごに

microCMSに大量コンテンツを登録する方法として、CSVインポートとWRITE APIのそれぞれについてまとめてみました。

既存コンテンツがあるかどうかといった制約や利用可能なフィールドの制約などがございますので、用途に応じて使い分けしていただければと思います。

まずは、無料で試してみましょう。

APIベースの日本製ヘッドレスCMS「microCMS」を使えば、 ものの数分でAPIの作成ができます。

microCMSを無料で始める

microCMSについてお問い合わせ

初期費用無料・14日間の無料トライアル付き。ご不明な点はお気軽にお問い合わせください。

お問い合わせ

microCMS公式アカウント

microCMSは各公式アカウントで最新情報をお届けしています。
フォローよろしくお願いします。

  • X
  • Discord
  • github

ABOUT ME

下津曲 浩
Web編集者、フロントエンドエンジニアを経て、現在はmicroCMSでカスタマーエンジニアを担当しています。趣味は格闘技観戦とアメフト観戦。