Cloudflare Browser RenderingでHTMLを画像に変換する

要約
HTMLを画像にしたい。OGP画像の自動生成、SNS用のスライド作成、レポートのPDF化など、用途はいろいろ。
意見はこのエリアに表示されます
アイキャッチ画像

Cloudflare Browser RenderingでHTMLを画像に変換する

はじめに

HTMLを画像にしたい。OGP画像の自動生成、SNS用のスライド作成、レポートのPDF化など、用途はいろいろ。

最初は workers-og(Satori)を試したのですが、CPU時間制限に引っかかって複数画像を一気に生成できなかった。そこで出会ったのが Cloudflare Browser Rendering

Browser Renderingとは

Cloudflare Workers上でPuppeteer(ヘッドレスブラウザ)を動かせるサービス。

つまり、HTMLを書けばそのまま画像にできる。CSSも完全対応。

料金

  • 無料枠: 有料プラン($5/月〜)で10時間/月
  • 従量課金: $0.09/ブラウザ時間

1回のスライド生成(7枚)をする場合は約30秒なので、1日10回生成しても月5時間程度。無料枠で十分。

実装

1. wrangler.toml

ポイントは [browser] セクション。これでPuppeteerが使えるようになる。

2. Worker本体

3. HTMLテンプレート

背景画像の取得

Unsplash APIで取得し、フォールバックとしてPicsumを使用。

ハマったポイント

1. 背景画像が表示されない

最初はCSSの background-image を使っていたが、外部URLだと読み込みが不安定だった。

解決策: <img> タグ + object-fit: cover に変更

2. 画像の読み込み待ち

networkidle0 だけでは不十分なケースがあった。

解決策: 明示的に画像の読み込みを待つ

3. Node.jsモジュールエラー

node:buffer が見つからないエラー。

解決策: compatibility_flags を追加

Cronとの連携

Cron TriggerやCloudflare Queuesと組み合わせれば、定期的な画像生成も可能。

PCを開いていなくても、サーバーサイドで全て完結する。

まとめ

項目workers-og (Satori)Browser Rendering
日本語フォント要設定Google Fonts使用可
CSS対応一部制限ありフル対応
画像埋め込み制限あり制限なし
CPU時間厳しい余裕あり
料金無料有料プランで無料枠

複雑なレイアウトや背景画像を使いたいなら、Browser Renderingがおすすめ。

HTMLとCSSの知識がそのまま使えるので、デザインの自由度が格段に上がる。

参考リンク

Explore More
関連記事はありません。