こんにちはYoshino(@yoiyoicho)です。つよいエンジニアになりたいという想いをこめて、アイコンをシャチのイラストに変更しました。モノクロだから、どんなデザインにもマッチしそうだしね。
さて、今回はブログをSNSにシェアする際に必須の「OGP(Open Graph Protocol)」をJekyllサイトに導入していきます。
OGP(Open Graph Protocol)とは
そのページの概要を明示するHTML要素で、WebページをSNSでシェアしたときなどに使われます。
例えばTwitterでは、このようなカード形式のリンクをよく見かけると思います。
これはTwitterカードと呼ばれるもので、Twitterが<head></head>
内のogプロパティを持つmetaタグを参照して生成しています。
当サイトでは、初めからjekyll-seo-tagのプラグインを導入していたので、og:titleやog:descriptionは自動生成される状態になっていました。
今回は、og:imageの設定を詳しく見ていきます。
Twitterカードはサイズが2種類あります。先ほどの例が小さいサイズで、下の例が大きいサイズです。
大きい方が目立つので、こちらを表示させるように設定したほうがよいでしょう。
Twitter Developer Platformのドキュメントを読むと、<head></head>
内で、<meta name="twitter:card" content="summary_large_image" />
と指定すれば画像が大きく表示されることがわかりました。
さらに、jekyll-seo-tagプラグインのGitHubを確認すると、各ページでog:image要素を設定していれば、<meta name="twitter:card" content="summary_large_image" />
を自動で吐き出すコードになっているとわかります。
og:imageを記事ごとに設定する
続いて、各記事でog:imageを設定していきましょう。
og:imageを指定するには、各記事のmarkdownファイルにimageの項を追加するだけ。
こんな風に。
bundle exec jekyll serve
コマンドを打ち、生成されたHTMLファイルを確認します。
twitter:cardの項はsummary_large_imageになっており、og:image、twitter:imageの項も設定されています。
本番環境にpushして、Twitter Card Validatorでプレビューを確認します。
いい感じですね。
感想
本当は、
- 記事に画像が1枚以上あるときは、一番頭の画像をogpイメージにする
- 記事に画像が1枚もないときは、デフォルトで用意しておいた画像をogpイメージにする
という設定にしたかったのですが、どうしてもyatとjekyll-seo-tagのあいだで衝突が起こってしまい、自力でhead.htmlを書き直すのもいやだったので、あきらめて各ページでogpイメージを設定することにしました。
自分としては65点くらいの仕上がりです。うまい解決方法があったら教えてほしいです。
なお当ブログにはコメント機能がありませんので、ご指摘があればTwitter(@yoiyoicho)のDM宛にいただけると幸いです。