Site cover image
Notion Blogで記事ごとに設定したOG Imageを使う
ℹ️
この記事では非公式APIを使った方法を紹介しています。公式APIを使った方法は Notion Blog 公式APIでOG Imageに対応する で紹介しています。

Notion Blogで記事ごとにOG Imageを設定して使いたいということがあります。

少しカスタマイズが必要ですが、Notion Blogならもちろん可能です。

このエントリでは、記事テーブルにOG Image用の列を追加し、アップロードした画像をOG Imageとして使う方法を説明します。

まず最初にブログの記事テーブルにOG Image用の列を OGImage という名前で Files & media として追加します。

列を追加したら、動作確認のために適当な画像をアップロードしておきましょう。

記事テーブルは下記のようになりました。

Image in a image block
OGImage列を追加して画像をアップロードした

Notion BlogはデフォルトではOG Imageは固定になっています。

記事ごとに設定したOG Imageで変更できるようにしたいので、引数を設定し、受け取った引数によってOG Imageを変更できるようにします。

下記のコミットは同時に description も受け取れるようにしていますが、ぜひ参考にしてみてください。

次に Header に対してOG Imageを渡します。

これで完成と思いきや、そうではありません。

Notionにアップロードした画像は公開されていないのでそのままでは画像切れてしまいます。

アップロードした画像をNotion Blogで表示するにはAPIを使って公開用のURLを取得する必要があるのです。

下記のコミットを参考にして ogImageUrl を修正します。

少し踏み込んだ話をしますと、画像URLを取得するAPIは /api/asset?assetUrl={encodedImageUrl}&blockId={blockId} という形式になっていて、画像のURL ( post.OGImage で得られるもの) の他に blockId が必要になります。

Notion では全てのコンテンツがブロックという単位で管理されていて、記事の本文に含まれる画像であれば「画像ブロック」という扱いで簡単に blockId を取得することができますが、今回のように記事テーブルに画像がある場合は blockId の取得は少し厄介になります。

記事テーブルに画像をアップロードした場合は、どうやらテーブル(データベース)の行ブロックが該当の blockId になるということがわかりました。

ですので↑のコミットでは同時にテーブルの行ブロックのIDを頑張って取得しています。

これで記事ごとに個別のOG Imageが設定できました。OG Imageの確認にはTwitterのCard Validatorが便利なので使ってみてください。

Image in a image block
Card validatorでOG Imageなどが確認できる

以上です。このエントリでは、記事テーブルにOG Image用の列を追加し、アップロードした画像をOG Imageとして使う方法を説明しました。

Thank you!
Thank you!
URLをコピーしました

コメントを送る

コメントはブログオーナーのみ閲覧できます