リッチエディタ内の画像に対して、画像APIを適用する方法は?

→ リッチエディタのHTMLを書き換える方法と、繰り返しフィールドを利用する方法があります。

リッチエディタ内の画像に対して、画像APIを適用する場合、以下の2つの方法が考えられます。
  1. リッチエディタのHTMLを書き換えて適用する
  2. 繰り返しフィールドを利用し、画像を画像フィールドに切り出して、適用する

1. リッチエディタのHTMLを書き換えて適用する

リッチエディタのHTML内のimg要素を書き換えて、パラメータを付与する方法が考えられます。

cheerio」のようなライブラリを利用すると、APIから返却されたHTML形式のテキストデータをパースし、DOM要素の操作が可能になります。
実装例(Next.jsのApp Router)
import cheerio from 'cheerio'

const getData = async () => {
  const data = await client.get({
    endpoint: 'blogs',
   contentId: 'xxxxxxx' // コンテンツIDを指定
  })
  return data
}

export default async function Article() {

  //microCMSからコンテンツのデータを取得
  const data = await getData()

  //リッチエディタのデータをcheerioでパース
const $ = cheerio.load(data.richEditor)

  // すべてのimg要素を探してループ
  $('img').each((_, element) => {
    const src = $(element).attr('src')
    if (src) {
      // 画像のURLを解析してURLオブジェクトに変換
      const newSrc = new URL(src)

      /* 
      URLに画像APIのパラメータを追加 
      指定可能なパラメータは以下のドキュメントを参照
      https://document.microcms.io/image-api/introduction
      */
      newSrc.searchParams.append('w', '1200')
      newSrc.searchParams.append('h', '900')
      newSrc.searchParams.append('fm', 'webp')

      // 変更されたURLをimg要素に反映
      $(element).attr('src', newSrc.toString())
    }
  })
  return (
  <div dangerouslySetInnerHTML={ {__html: `${$.html()}`} }/>
  )
}

2. 繰り返しフィールドを利用し、画像を画像フィールドに切り出して、適用する

繰り返しフィールドを利用することで、リッチエディタと画像フィールドを組み合わせて、入稿することが可能になります。

▼ 繰り返しフィールドの設定例
https://document.microcms.io/manual/repeat-field#h3f22752190

画像に関するデータを別フィールドに切り出して管理するようにすると、画像URLがHTMLから分離されるため、フロントエンド側でパラメータの付与が行いやすくなります。
(適用方法については、ドキュメントをご参照ください。)
 

wパラメータとhパラメータに限り、リッチエディタの設定画面より、画像ごとに個別に設定することが可能です。