自社の技術共有サイトをSNSでシェアした際、タイトルやサムネイル画像が表示されず、ドメイン名だけが寂しく表示されてしまうことがあります。本記事では、自社の「www.brainchain.jp」 の開発過程で直面したこの問題を解決し、正しくリッチなプレビューを表示させるための手順を解説します。
FacebookなどのSNSは、サイトを読み込む際にHTMLのhead内にある「OGP(Open Graph Protocol)」という特定のメタタグを探します。これがないと、SNS側はどの画像やタイトルを表示すべきか判断できません。
シェアしたいページのheadセクション内に、以下のコードを実装してください。
<head>
<meta property="og:title" content="記事のタイトル(例:最新のAI動向について)" />
<meta property="og:description" content="記事の簡単な説明文をここに記載します。" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://www.brainchain.jp/blog/1778206760998" />
<meta property="og:image" content="https://www.brainchain.jp/path/to/your/thumbnail.jpg" />
<meta property="og:site_name" content="BRAINCHAIN" />
<meta name="twitter:card" content="summary_large_image" />
</head>
タグを追加する際は、以下の2点に注意が必要です。
og:imageに指定するURLは、必ず https:// から始まる絶対パスで記述してください。タグを設定しても改善しない場合は、以下の項目を確認してください。
Google Cloud Runを利用している場合、セキュリティ欄の認証が「公開アクセスを許可する(未認証のアクセスを許可)」になっているか確認してください。制限されているとSNSのクローラーがアクセスできません。
SvelteKitプロジェクトなどの static/robots.txt でクローラーを拒否していないか確認します。以下のように許可されている必要があります。
User-agent: *
Allow: /
設定が反映されているかは、以下の方法でテストできます。
自分のPCからFacebookのクローラーを装ってアクセスし、HTTPステータスを確認します。
curl -A "facebookexternalhit/1.1" -I あなたのシェアしたいURL
ここで HTTP/2 200 が返ってくれば正常です。
Facebook公式のデバッグツールにURLを入力して「デバッグ」を押してください。現在の認識状況が表示されます。画像が出ない場合は「もう一度スクレイピング」を何度か押すとキャッシュが更新され、正しいプレビューが表示されるようになります。