OGP画像を表示できるようにGatsbyを弄った。
2022/02/03
概要
TwitterやSlackなどで記事をシェアした際にOGP画像がないため、見た目がショボショボで辛かったので、急遽デフォルトで表示されるOGP画像を作成してGatsby側でも表示できるようにしてみました。
諸々の表示確認は下記のサイトで行いました。
OGP画像の作成
Figmaで適当にデザインを作成しました。
デザインのポイントとしては、下記を意識しました。
- サイトのロゴを入れる
- サイトのカラーを使う
- シンプルに
Gatsbyでの設定
gatsby-config.js に下記を追加しました。
module.exports = {
siteMetadata: {
title: "< カグラボ />",
siteUrl: "https://kglabo.com/",
image: "/ogp.png", // 追加
},
}
そして、src/components/seo.js を修正しました。
const Seo = ({ description, lang, meta, title }) => {
const { site } = useStaticQuery(
graphql`
query {
site {
siteMetadata {
title
description
siteUrl
social {
twitter
}
image
}
}
}
`
)
const metaDescription = description || site.siteMetadata.description
const defaultTitle = site.siteMetadata?.title
const ogImageUrl = `${site.siteMetadata.siteUrl}${site.siteMetadata.image}`
return (
<Helmet
htmlAttributes={{
lang,
}}
title={title}
titleTemplate={defaultTitle ? `%s | ${defaultTitle}` : null}
meta={[
{
name: `description`,
content: metaDescription,
},
{
property: `og:title`,
content: title,
},
{
property: `og:description`,
content: metaDescription,
},
{
property: `og:type`,
content: `website`,
},
{
property: `og:image`,
content: ogImageUrl,
},
{
name: `twitter:card`,
content: `summary_large_image`,
},
{
name: `twitter:creator`,
content: site.siteMetadata?.social?.twitter || ``,
},
{
name: `twitter:title`,
content: title,
},
{
name: `twitter:description`,
content: metaDescription,
},
].concat(meta)}
/>
)
}
まとめ
これでTwitterやSlackでシェアした際にOGP画像が表示されるようになりました。
今後は記事ごとにOGP画像を自動生成できるようにしたいですね。