🐦

【Gatsby + Netlify】Twitterでツイートした記事のサムネイル画像をカテゴリー毎に変化させる方法

解決したいこと

change-the-ogp01 記事をTwitterでツイートした所、↑のようにサムネイル画像が無しになってしまったため、なんかいい感じにできないかな〜ということで各カテゴリーに合わせたサムネイル画像に変化させてみたのでその方法をメモります。

change-the-ogp02 ↑結果的にこうなります。 カテゴリーに合わせて画像(OGP画像)を設定しています。

主な流れ

  1. 各カテゴリーのOGP画像をつくる
  2. つくった画像をmetaタグに設定する
  3. metaタグにしっかり反映されているか確認して本番に反映
  4. Twitter Card validatorで確認する

こんな感じです。

1. 各カテゴリーのOGP画像をつくる

1-1. OGP画像をつくろう

ここは自分でオリジナル画像をつくっても全然OKです。

change-the-ogp03 私の場合は、ローカル環境で適当な絵文字を記事に設定して、それをスクショして、切り抜くという恐ろしい手抜き技で各カテゴリーのOGP画像を作成しました。 画像名はカテゴリ名_ogp.pngという風に自身のカテゴリ名に変更しておきましょう。

OGP画像とは

OGPとは、「Open Graph Protcol」の略でFacebookやTwitterなどSNSでツイートした際に、指定したイメージ画像を表示するように指示するmetaタグ要素です。

1-2. OGP画像を置くべき所に置いてあげる

作成したOGP画像を置きたい階層に置いてあげましょう。

change-the-ogp04 ru-blog/static/images

私の場合はこういう階層です。 dev_ogp.png self_ogp.pngが作ったOGP画像です。(Develop、Selfカテゴリー用のOGP画像)

2. つくった画像をmetaタグに設定する

metaタグにOGP画像URLを設定する必要があるのでトライしていきましょう。

2-1. まずはカテゴリーの値が必要なのでpost.jsをいじる

記事のカテゴリー情報が必要なので、post.jsからseo.jsにカテゴリーの値を渡せるようにしましょう。

post.js
<SEO title={title} description={description || post.excerpt} category={category} />

category={category}を加えましょう。

2-2. そしてseo.jsで値を受け取ってmetaタグに反映させよう

seo.js
SEO.propTypes = {
  description: PropTypes.string,
  lang: PropTypes.string,
  meta: PropTypes.array,
  keywords: PropTypes.arrayOf(PropTypes.string),
  title: PropTypes.string.isRequired,
  category: PropTypes.string
};

category: PropTypes.string を加えましょう。

seo.js
const SEO = ({ description, lang, meta, title, category }) => {

category を加えましょう。

seo.js
const ogp = `${category}_ogp.png` || "ogp.png";

次にカテゴリー情報を受けとって、ogpに画像ファイル名が入るようにしましょう。 ここを設定することで各記事ごとに適切なOGP画像名が取得できるようになります。

seo.js
property: `og:image`,
content: `${data.site.siteMetadata.siteUrl}/images/${ogp}`

contentという部分に${ogp}を加え表示させたい画像パスになるように設定すればOKです。

3. metaタグにしっかり反映されているか確認して本番に反映

change-the-ogp05 Chromeの要素検証でog:imageを検索し、ちゃんとOGP画像が指定されているか確認しましょう。 確認できたら本番に反映させましょう。

4. Twitter Card validatorで確認する

本番に反映されたら上記Twitterのサイトで記事のURLを入力して確認してみましょう。

change-the-ogp06

こちらで確認するとすでにTwitterでツイートした記事のサムネイル画像も変化するはずなのでツイートを確認してみましょう。

change-the-ogp02

こんな感じになっていれば成功です! これで各カテゴリ毎に自動でサムネイル画像が変化するようになりました。

Good Job!

😺質問などあればお気軽にどうぞ

不明点などあればTwitterでDMかリプどうぞです

零細CEO兼プログラマー投資家ピアニスト。老後は曾孫達の前でグランドピアノをエレガントに弾きこなしドヤって逝くのを夢みるフルータリアンな人。とっても冷え性。Next.js+microCMS, React Native+Expo, Firebase, TailwindCSS #XRP

© 2021, Ru- All rights reserved.