テクニカルSEO

OGPとTwitter Cardの設定ガイド

この記事の対象読者

  • X(旧Twitter)やFacebookでサイトをシェアした時の表示を改善したい人
  • OGPタグの設定方法を知りたい人
  • Twitter Cardが正しく表示されない問題を解決したい人

OGP とは

OGP(Open Graph Protocol)は、Webページが SNS でシェアされた時に タイトル、説明文、画像 をリッチに表示するための仕組みです。Facebook が策定し、現在は X(旧Twitter)、LINE、Discord など多くのプラットフォームが対応しています。

OGP を設定しないと、SNS でシェアした際にタイトルや画像が正しく表示されず、クリック率が大幅に低下します。

OGP 設定シェア時の表示クリック率
未設定URLのみ、または不適切な画像低い
設定済みタイトル・説明・画像がリッチ表示高い

基本的な OGP タグ

OGP タグは HTML の <head> 内に <meta> タグとして記述します。

HTML - head内
<!-- OGP 基本タグ -->
<meta property="og:type" content="article" />
<meta property="og:title" content="記事のタイトル" />
<meta property="og:description" content="記事の説明文(120文字以内推奨)" />
<meta property="og:url" content="https://example.com/article/slug/" />
<meta property="og:image" content="https://example.com/images/ogp.png" />
<meta property="og:site_name" content="サイト名" />
<meta property="og:locale" content="ja_JP" />

各タグの役割

タグ必須説明
og:type必須ページの種類(website: トップ、article: 記事)
og:title必須ページのタイトル
og:description推奨ページの説明(120文字以内)
og:url必須ページの正規URL
og:image推奨シェア時に表示される画像のURL
og:site_name推奨サイト名
og:locale任意言語と地域(日本語: ja_JP

Twitter Card の設定

X(旧Twitter)でのシェア表示には、OGP に加えて Twitter Card 専用のメタタグ が必要です。

HTML - head内
<!-- Twitter Card -->
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@your_account" />
<meta name="twitter:title" content="記事のタイトル" />
<meta name="twitter:description" content="記事の説明文" />
<meta name="twitter:image" content="https://example.com/images/ogp.png" />

Twitter Card の種類

種類表示
Summarysummary小さな画像 + タイトル + 説明文
Summary Large Imagesummary_large_image大きな画像 + タイトル + 説明文
おすすめ

技術ブログでは summary が一般的です。アイキャッチ画像が魅力的な場合は summary_large_image を使うとクリック率が上がります。

Django での実装例

Django のテンプレート継承を活用すると、ベーステンプレートにデフォルトの OGP を設定し、各ページで上書きできます。

ベーステンプレート

templates/base.html
<head>
    <!-- OGP -->
    <meta property="og:type" content="{% block og_type %}website{% endblock %}">
    <meta property="og:title" content="{% block og_title %}{{ SITE_NAME }}{% endblock %}">
    <meta property="og:description" content="{% block og_description %}サイトの説明{% endblock %}">
    <meta property="og:url" content="https://{{ request.get_host }}{{ request.path }}">
    <meta property="og:site_name" content="{{ SITE_NAME }}">
    <meta property="og:locale" content="ja_JP">
    {% block og_image %}
    <meta property="og:image" content="https://{{ request.get_host }}{% static 'image/og-default.png' %}">
    {% endblock %}

    <!-- Twitter Card -->
    <meta name="twitter:card" content="summary">
    <meta name="twitter:site" content="@your_account">
</head>

記事詳細テンプレート

templates/blog/article_detail.html
{% block og_type %}article{% endblock %}
{% block og_title %}{{ article.title }}{% endblock %}
{% block og_description %}{{ article.excerpt }}{% endblock %}
{% block og_image %}
{% if article.thumbnail %}
<meta property="og:image" content="https://{{ request.get_host }}{{ article.thumbnail.url }}">
{% endif %}
{% endblock %}
ポイント

{% block %} タグを使うことで、トップページではサイト全体の情報を、記事ページでは記事固有の情報を OGP に設定できます。

OGP 画像の最適なサイズ

プラットフォーム推奨サイズアスペクト比
X(Twitter Card summary)240 x 240 px 以上1:1
X(summary_large_image)1200 x 628 px1.91:1
Facebook1200 x 630 px1.91:1
LINE1200 x 628 px1.91:1
注意
  • 画像は 絶対URLhttps:// から始まる完全なURL)で指定する
  • 画像サイズは 5MB 以下 にする
  • JPEG、PNG、GIF、WebP 形式に対応

表示の確認とデバッグ

OGP が正しく設定されているかを確認するツールを活用しましょう。

確認ツール一覧

ツール用途URL
Twitter Card ValidatorX でのカード表示を確認cards-dev.twitter.com
Facebook シェアデバッガーFacebook での表示を確認・キャッシュクリアdevelopers.facebook.com
ラッコツールズ OGP確認各 SNS での OGP 表示を一括確認rakko.tools

curl でメタタグを確認

ターミナル
# OGP タグを確認
curl -s https://example.com/ | grep -i "og:"

# Twitter Card タグを確認
curl -s https://example.com/ | grep -i "twitter:"

よくある間違いと対処法

問題原因対処法
画像が表示されない相対URLで指定しているhttps:// からの絶対URLに変更
古い情報が表示されるSNS側のキャッシュ各デバッガーツールでキャッシュをクリア
タイトルが途切れる文字数が多すぎるog:title は 40文字以内を推奨
説明文が表示されないog:description が未設定120文字以内で設定
Twitter Card が表示されないtwitter:card が未設定summary または summary_large_image を指定
SNS キャッシュについて

OGP を修正しても、SNS 側のキャッシュにより古い情報が表示されることがあります。Facebook シェアデバッガーで「スクレイピングし直す」を実行すると即座に更新されます。X は時間経過で自動的に更新されます。