AstroでOGP画像を作成する際の参考情報
Astroのブログで、Integrationsを使ってOGP画像を作成するようにした。
全て解説する記事を書こうと思ったが、他にやりたいことがたくさんあるので断念。参考にしたURLのメモだけと差分だけ残しておく。
作成したOGP画像
差分
メモ
公式ドキュメント
- Server Endpoints (API Routes)
- 今回は、ブログ記事のURLの後ろに/opg.pngを付けるとOGP画像を返すようにした。
- Astro Integration API
- integrationを自作する場合は、
astro:build:generated
を使うと良さそう。 - 途中までこちらを使って実装するつもりだったが、src/contents配下のMarkdownファイルで設定した変数(画像パス)がどうしても取得できなかったので諦めた。
- integrationを自作する場合は、
satori
satori はHTML/CSSをSVGに変換するライブラリ。
OGP画像作成で検索するとかなりの確率で利用されている。今回も使ってみた。
sharp
sharp は画像処理ライブラリ。
今回はWebP→PNG使用した。
satoriがWebPをサポートしておらず、WebPのまま表示しようとすると Unsupported image type: unknown
のエラーになってしまうため。
https://github.com/vercel/satori/blob/c47e1a91b80887de22c01a5e0fac350b4978aa1d/src/handler/image.ts#L136
resvg-js
resvg-js はSVGをPNGに変換するライブラリ。
フォント
Noto Sans Japanese - Google Fonts
satoriではフォントを指定する必要がある。上記フォントはOFL1.1でライセンスされているので、利用しやすい。
参考記事
- ブログ各記事の OG 画像を作った
- VitePressだったのでそのままは使えなかったが、画像作成部分はほとんど同じ流れを採用させてもらった
- HTML/CSS を SVG に変換する Vercel 製のパッケージ「satori」を試してみる
- satoriを使ってJSXからOGP画像を作成してみる
- サイトのOGP画像を自動生成する
- canvasを利用する例。今回は見送った。
- Astroで理想のサイトマップを自作する
- AstroのIntegrationsを使っている例。
- Astroでsatoriを使ったOG画像の自動生成を実装する
- 最終的に、画像作成の流れで一番参考にした記事。