「OGP」とは(Open Graph Protcol)の略で、SNSでページがシェアされる際に、シェアしたコンテンツの視認性を向上させるものです。例えばネットで検索した記事をSNSでシェアしようとすると、画像と説明付きのリンクとなって投稿画面下部に出てきますよね?アレです。ではそのアレをNext.jsプロジェクトで設定してみましょう。
OGP設定を施すには<head>タグ内に<meta>タグを作成し記述していきますが、Next.jsにおいては<Head>コンポーネントを使用します。通常の<head>タグでは静的な値しか扱えない一方で、<Head>コンポーネントを使うことで動的に値を設定可能なためページ別に設定する情報(URL、ページタイトル)を変更することができます。この<Head>コンポーネントですが、より再利用しやすい形にするために、Next.jsプロジェクト内のcomponentsディレクトリで設定していきましょう。今回はcomponentsディレクトリ内でSEO.jsというファイルを作成し、ここに<Head>コンポーネントを記述していきます。
<Head>コンポーネントはNext.jsで標準で提供されているものですので、(l.1) の通りインポートしておきます。<SEO>コンポーネントを呼び出した先でurl, title, descriptionというプロパティを受け取れるようにします。<Head>コンポーネントで全体を囲います。この中で (l.6) 以降で<meta>タグを設定していきます。<meta>タグはWebページにおけるメタ情報を記載するもので、Webページ上には表示されませんがChromeでは「検証ツール」から確認できます。<meta>タグの中でもpropertyを持つものを設定していきます。propertyはFacebookやLINE等のソーシャルメディア共通で使用できるOGP情報です。※ただし、X(旧:Twitter)は通常nameで設定されます。
og:site_name:Webサイトの名前を設定。og:url:WebサイトのURLを設定。og:image:Webサイトの画像を設定。<meta>タグの中でもnameを持つものを設定していきます。nameは(X(旧:Twitter)情報を除いて)通常はページ間で共通の情報が設定されます。ここではX(旧:Twitter)向けの設定をしていきましょう。
twitter:title:X(旧:Twitter)表示用のタイトルを設定。twitter:site:X(旧:Twitter)表示用のアカウント名を設定。twitter:card:X(旧:Twitter)表示用のカードの種類を設定。※ここではX(旧:Twitter)で投稿される際の画像掲載形式を選択できます。通常summaryもしくはsummary_large_imageを使用します。twitter:description:X(旧:Twitter)表示用の説明文を設定。これで<Head>コンポーネントの基本設定が完了しました。しかしこれを作っただけではシェアされる時に表示されないので、実際のページ側で呼び出してあげる必要があります。
前述の<Head>コンポーネントをページ側で呼び出しましょう。
<Head>コンポーネントがあるので、最初に呼び出します。nというpropsを持つSampleというページコンポーネントを作ります。nにはtitle, url, descriptionがあるものとします。SEOという名の<Head>コンポーネントを呼び出します。<Head>コンポーネントではtitle, url, descriptionの3つのプロパティを動的に受け取れるようにしているため、{n.~}の形式でそれぞれ値を取得して、各プロパティに入れていきます。これで、設定は完了です。
ここまで完了したら実際に設定できているか確認してみましょう。ここでは2つの方法を紹介します。
Chromeを使っている場合、「検証ツール」を開いてみましょう。上の画像のようにElementsを覗いてみると、<head>タグがあることが分かると思います。この中に、上で設定したようにタグがあることが分かると思いますが、問題なく実装できていれば、動的に変化する3つのプロパティであるtitle, url, descriptionに、ページ固有の値が入っているはずです。
今回はX(旧:Twitter)についても設定しました。実際にX(旧:Twitter)に何かURLを貼り付け投稿してみても良いですが、もし本番環境にホスティングできている場合は公式のCard Validatorがあるのでこちらを使っても良いと思います。またFacebookで確認したい場合はシェアデバッガーというツールも同様に利用できます。いずれも作成したページのURLを貼り付けるだけで、OGPのプレビューが表示されるはずです。
今回はOGPについて設定しました。Next.jsであれば<Head>コンポーネントを使うと簡単に実装できるので、SEO対策のためにも試してみると良いかもですね。
よろしければこちらの記事も参考にしてみてください。
Loading...