1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

あるWebサービスの開発メモ・next.js で SSR を実行して OGP用の meta タグを SNS サイトなどに送出する

Last updated at Posted at 2022-11-09

やりたいこと

ここでやりたいことは、OGP 用の meta タグを送出することで、SNS サイトなどで見栄え良くリンク先として表示してもらいたい、ということです。具体的には以下のイメージになります

スクリーンショット 2022-11-10 14.14.03.png

イメージファイル (sirokuro.png) のデザインは改善の余地ありですが、そこは後回しにします

方式検討

はじめてやることなので、思考錯誤しながらの方式検討です

OGP 用の meta タグを用意する

情報収集

動作確認用にツールとか

  • (twitter) Card validator
  • OGP確認
    大変ありがたいツールですがハマりました。どうしても「設定情報が取得出来ませんでした。URLをご確認ください。」と表示されてしまい、コードを見直したり、ブラウザに返却されたコードを見直したり、サーバサイドに生成された HTML ファイルを見直したりしていたのですが、新しいブラウザタブからアクセスしたら

スクリーンショット 2022-11-10 19.49.28.png

実際にやったこと

nextjs の場合は Head コンポーネントを使って meta タグを出力します。今まで当サイトでは Head コンポーネント の 中には title タグしかなかったので、各 ./pages/hoge.tsx にて

<Head>
  <title>シロクロつける</title>
</Head>

という感じで定義していました。OGP の meta タグは複数定義する必要があるので、以下の Seo コンポーネントを追加しました

./components/Seo.tsx

import { FC } from "react";
import Head from "next/head";

interface MetaData {
  pageTitle?: string;
}

export const Seo: FC<MetaData> = ({ pageTitle }) => {
  return (
    <Head>
      <title>{pageTitle}</title>
      <meta name="description" content={pageTitle} />
      <meta property="og:url" content="https://www.sirokuro.site" />
      <meta property="og:title" content="シロクロサイト" />
      <meta property="og:site_name" content="シロクロサイト" />
      <meta
        property="og:description"
        content="モノ・コトにシロクロつけるサイト"
      />
      <meta property="og:type" content="website" />
      <meta
        property="og:image"
        content="https://www.sirokuro.site/sirokuro.png"
      />
      <meta property="og:image:width" content={String(1600)} />
      <meta property="og:image:height" content={String(220)} />
      <meta name="twitter:card" content="summary_large_image" />
      <meta name="twitter:site" content="@sirokuro_site" />
    </Head>
  );
};

各ページでは以下の感じで Seo コンポーネントを呼び出します

./pages/index.tsx

import { Seo } from "../components/Seo";

(snip)

      {/* <Head>
        <title>sirokuroつける</title>
      </Head> */}
      <Seo pageTitle="sirokuroつける" />

(snip)

SSR

当サイト ではこれまで SSR (サーバサイドレンダリング) を実行していませんでした。ということは Google のクローラにページを読んでもらえず、Google のキーワード検索にはヒットしないものと思っていました

これはどうも間違いだったらしく、現在の Google クローラは最新の Chromium レンダリングエンジンを実行しているので Chromeブラウザに表示可能な JavaScript であれば、これをハイドレーションした結果を読んでくれるそうです

しかしながら、OGP 用の meta タグを SNS サイトなどに読み取ってもらうには、静的な html ページが必須になってしまうようです

やったこと

続きは明日書きます

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?