• pc/social_cards_on_dokuwiki.txt
  • 最終更新: 2020/09/15 13:39
  • by fk0724

today : 1 / yesterday : 0 / total : 93

URL 付きのツイートをした際に、アイキャッチ画像と概要を表示させる方法をまとめてみました。サイトを DokuWiki で構築している人向けの情報です。twitter card なにそれ?って人にも解るように導入から始めますので、手っ取り早く設定したい方は読み飛ばしてプラグインの導入と設定にジャンプしてください。

DokuWiki を twitter card に対応させる

URL 付きのツイートをしたとき(または、されたとき)に、該当ページの概要やアイキャッチ画像を表示させるものです。設定すると、右図のようなものがツイートに自動挿入されます。

この機能を、twitter 社は「 Card 」「カード」などと表現しているようです。「 twitter card 」「 twitter カード」などでウェブ検索すると、数多くの情報を目にすることができます(以下、「カード」と表記します)。

カードを埋め込めるようになると、単にリンク先の URL が青文字で挿入されるよりもはるかに目を引きますし、クリックする前に概要が把握できるので目にする人に対して親切でもあります。特に、twitter は短縮 URL がらみで、URL を見ただけではいったいどんなサイトに飛ばされるのかさっぱり判らないことがあります。短縮 URL のクリックをためらった経験をお持ちの方もいらっしゃるのではないでしょうか。カードを使うと、そのような不信感がずいぶん解消されるのではないかと思います。

では、このカードの仕組みはいったいどうなっているのでしょうか?

URL 付きのツイートがなされたとき、twitter 社のクローラは実際に該当ページをチェックし、<head> ~ </head> 内に以下のようなメタタグが設定されているかどうかを調べます。

<meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:site" content="@otama_2006"/>
<meta name="twitter:creator" content="@otama_2006"/>
<meta name="twitter:title" content="DokuWiki を twitter card に対応させる"/>
<meta name="twitter:description" content="URL 付きのツイートをした際に、アイキャッチ画像と概要を表示させる方法をまとめてみました。サイトを DokuWiki で構築している人向けの情報です。twitter card なにそれ?って人にも解るように詳しい説明から入りますので、手っ取り早く設定したい方は読み飛ばして"/>
<meta name="twitter:image" content="http://fk0724.com/_media/pc/socialcard-eyecatch.png"/>

各プロパティの説明

プロパティ 概要 必須項目
twitter:card カードの種類
twitter:site ウェブサイト所有者の twitter アカウント
twitter:creator ページ著者の twitter アカウント
twitter:title ページのタイトル
twitter:description ページの概要
twitter:image アイキャッチ画像

これらの情報が正しく記載されていればカードが掲載され、記載されていなければ単に URL が挿入されるだけになります。

ツイートする際に裏コマンド的なものがあるわけではなく、サイト側で対応しておく必要があるわけですね。

https://cards-dev.twitter.com/validator にアクセスし、自分のサイトの URL を入力してみましょう。Preview card ボタンを押した結果はどうでしょうか? 次のようにカードのプレビューが表示されたら大丈夫。表示されない場合は、正しく設定をする必要があります。

こうなれば OK

表示されないときは?

このまま読み進めて、プラグインを導入してください。

DokuWiki を twitter のカードや他の SNS に対応させるプラグインは、SocialCards Plugin です。DokuWiki の「拡張機能管理」を使ってインストールできます。インストール後は、「サイト設定」の「プラグイン」のところに設定項目が現れます。

このうち、twitter のカードに関係ある項目は以下の3つです。

カードに関する設定項目

サイト所有者

twitter:site に対応します。@アカウント名の形で入力します。

コンテンツ著者

twitter:creator に対応します。同様、@アカウント名の形で入力します。多くの場合、この2つのアカウントは同一であると思います。どちらか片方だけの入力でも問題ないようですし、そもそも必須項目ではないので両方空欄でも良いのかもしれません。

代替画像

このプラグインは、各ページの最初の画像を twitter:image の項目に割り当てるようです。代替画像は、ページ内にひとつも画像がない場合に割り当てる画像のことです。「Now Printing」的なものか、サイト全体に関係しそうなロゴ画像を設定すると良いかもしれません。

DokuWiki 標準形式で指定するか、http://~ と直接 URL を指定するいずれの方法にも対応しているようです。

現時点( 2018-07-06 版)では、「サイト設定」にて twitter:card の種類を変更できないようです。以下は自己責任ですが、コード自体に手を加えることで設定を変更することは可能です。該当コードは lib/plugins/socialcards/action.php で、67~68行目 を以下のように書き換えます。

デフォルト
$event->data['meta'][] = array('name' => 'twitter:card',
        'content' => "summary",);

書き換え後
$event->data['meta'][] = array('name' => 'twitter:card',
        'content' => "summary_large_image",);

設定が完了した後は、サイトのアクセスアップに向けて次の項目を見直してみてはいかがでしょうか?

せっかくカードに対応させたのに、アイキャッチ画像が変にトリミングされてしまってはだいなしですよね。トリミングの影響を受けないためには、画像を以下のサイズで作るのが良いようです。

summary の場合の例

summary_large_image の場合の例

これはあくまでも例で、これ以外のサイズでもアスペクト比を正しく保つとトリミングはされません。

twitter:cardsummary にした場合は正方形で表示されますので、「正方形である」ことさえ守れば他のサイズでも大丈夫です。問題はsummary_large_image で、こちらはアスペクトが 300 : 157 でないと不必要にトリミングされてしまいます。上記のサイズは数ピクセルの誤差がありますが、キリが良い数字で覚えやすく、またページ最上段にタイトル代わりに表示するにも十分な大きさで実用的だと思います。

DokuWiki の仕様上、ページの概要( twitter:description )の項目は wiki 本文の頭から 250 ~ 500 文字が切り取られ自動生成されます。そのため、「 <h1> タグなどでページタイトルを指定した後で本文を記入する」という通常のスタイルでは、カードの概要欄にページタイトルが重複して記載されてしまいます。また、「各ページのはじめの方に必ずしも概要が書かれているとは限らない」という問題もあります。

カードの概要が死んだ情報であっては効果が薄れてしまいます。こうならないためには、記事の書き方を工夫する必要があるでしょう。次の例は、実際に当サイトで実践しているものです。

例:fk0724.com の場合

  • ページのはじめにアイキャッチ画像を配置
  • 続いて、ページの概要を記載
  • その下に <h1> タグでページタイトルを指定

これが正解というわけではありませんが、うまく工夫してみてください。

ツイート後にカードが表示されるようになるまで若干のタイムラグがあるようです。ツイートしたタイミングで即座にカードを表示させたい場合は、次の手順で twitter クローラにあらかじめカードの存在を知らせておくと良いようです。

  1. ツイート前にあらかじめ Card Validator でテストする
  2. その数分後に URL 付きでツイートする

また、ページの内容を更新したり、アイキャッチ画像を変更したい場合も、変更後に Card Validator を使うとツイート済みのカードが更新されるようです。

いかがでしたか? 無事に、カードが表示されましたでしょうか?

間違いの指摘・ご質問などは @otama_2006 までお願いします。

  • pc/social_cards_on_dokuwiki.txt
  • 最終更新: 2020/09/15 22:39
  • by fk0724