satoriでOGP生成するようにした with Astro
今までcloudinaryのストレージに加工した画像をURLで指定してOGPを出すようにしていました。
割りといい感じに調整できるので、良かったのですが、だいぶ前に登場したsatoriが気になっていたので今回移行しました。
satoriは、HTMLとCSSで書いたビューを、SVGに変換するライブラリです。JSXをサポートしているので、Reactコンポーネントのように書けます。
手順はこんな感じでした。
@astrojs/react
と@resvg/resvg-js
そしてsatori
をインストール- OGPで表現したいビューのコンポーネントをReactのコンポーネントで作成
- OGPのエンドポイントになる[slug].png.tsを作成する
- OGの設定を変更
-
satoriで使えるCSSは限られているようでした。(React Nativeと同じFlexboxのレイアウトエンジンであるYogaが使われている)
-
ただ、ほとんど使えるのでogp用途であれば問題ない
-
Tailwindが使えなかったので普通にstyleタグで書きました。(ドキュメント参考)
-
今回Google Fontsを使用してみました。
- IBM Plex Sans JPを使用しました。
- 和文フォントだけど太字がつぶれにくい!
- なんとなくこれにしたけど変えるかもしれません。
-
エンドポイントで実際に記事のタイトルを呼び出すときにエラーが出た。
-
渡しているslugが「2023/07/30」のような値のためにslugの正規表現ではじかれてしまう。。
-
仕方ないので
post.slug.replace(/\//g, '-') }
で対応した。
ローカルホストでOGPの表示確認をするときは、Localhost Open Graph Debuggerで行いました。
参照