ブログの重複コンテンツ、気にしていますか?巷で噂されていることに反し、Googleのジョン・ミューラー氏は、重複コンテンツがあってもペナルティが課せられることはないと明言しています。でも重複コンテンツがあると記事の評価が分散する(カニバる)ため狙った記事の評価が上がりにくくなります。この振る舞いはGoogleの公式文書からも読み取れます。ペナルティは受けないけど、SEO的には良くない、ということです。
記事を定期的に増やしていく形態のブログだと、記事数の増加にともなって重複コンテンツができるのは普通にあります。その場合に取れる対策はいくつかありますが、この記事で取り上げるのはcanonicalタグです。
重複記事のカニバリ
カニバリとは「カニバリゼーション」の略で「共食い」を意味します。SEOでは重複記事がGoogleの評価を共食いした結果、どのページの評価も満足に上がらない現象を指します。
似たような内容でちょっとだけ異なる重複記事があると、検索エンジンは評価を分散させてしまい、どのページも期待した評価が得られないとされています。不注意または怠慢により重複記事ができた場合は低評価を受けてもしょうがないですが、重複記事の発生が避けられない場面は普通にあり、事実この問題は長年サイト管理者の悩みの種だったようです。
重複記事があって削除できないし、その存在は読者にとっても重要だ、でも検索エンジンに評価して欲しいのはこの記事で、他の重複していると見なされる記事は無視して欲しい、この要望に応える形で検索エンジン開発企業が協働して導入したのが、canonicalタグです。カニバリ対策の救世主です。
canonicalタグ
canonicalタグの誕生
びっくりするかも知れませんが、canonicalタグが誕生したのは2009年です。
複数のURLで同一、もしくは同一に近いコンテンツを管理されていて、重複するコンテンツ関連の問題を抱えるウェブマスターの方々に朗報です。検索結果に優先的に表示させたいバージョンのURLを、検索エンジンに通知する書式がサポートされるようになりました。
つまり、重複コンテンツに関する苦悩はそれより前からあり、Googleをはじめとする検索エンジン開発企業が協働してcanonicalタグを誕生させたのです。
おそらく当時、カニバリ問題に悩まされていたサイト管理者はこの朗報に狂喜乱舞したことでしょう。
canonicalタグの役割
canonicalタグはURLの正規化に使われます。何のことか分からないって方にはGoogleの公式記事「重複しているページの適切な正規URLをGoogleが選択できるようにする」がおすすめです。ブログで記事が増えた結果似たようなコンテンツのものが複数でき、それらがいわゆる重複コンテンツに該当する場合、canonicalタグで「正規のコンテンツはこれだよ」と検索エンジンに教えるのです。
たとえば似たような内容について、月数をおいて書かれた記事が4本あったとします。同じ記事を更新し続けるのもひとつの方法ですが、それが適さなくて記事が増えるというケースは普通にあります。たとえば、古い記事はアーカイブとして閲覧可能にしておきたいけど、Googleの評価対象は常に最新記事にしたい、という状況です。
- 4本の記事は90%以上が同一で、違うのは10%以下でしかない。重複記事と見なされカニバってしまう。
- 検索エンジンに評価して欲しいのは最新記事のみ。
- 古い記事3本は存在するし最新記事からリンクで辿れるけど、検索エンジンには無視して欲しい。
これをcanonicalタグが可能にします。
canonical指定の例
前記例の続きです。古い記事3本はそれぞれ、最新記事にcanonicalします。canonicalタグで最新記事のURLを指定するのです。すると古い記事3本は普通に閲覧可能ですが、検索エンジンには本物は最新記事だと教えることができます。
なお、該当する記事を古い順にA、B、C、Dとした時、
- AからBへcanonical
- BからCへcanonical
- CからDへcanonical
としない方がいいです。canonical先がcanonicalする、canonicalチェインは避けるべきとされています。そうではなくて、次のようにします。
- AからDへcanonical
- BからDへcanonical
- CからDへcanonical
そして最新の重複記事Eを追加したら、
- AからEへcanonical
- BからEへcanonical
- CからEへcanonical
- DからEへcanonical
としなければなりません。これでは作業量が増えるので、最新記事のURLをXに固定して、Xの重複記事を追加する際は記事Xを複製してURLを変更するようにしています。
canonicalタグは検索エンジンへのヒント
Googleも明言していますが、canonicalタグは検索エンジンにとってヒントであって、ページのリダイレクトのようなものではありません。Googleの検索エンジンはcanonicalタグをヒントとして理解し、利用しますが、サイト管理者の希望通りの振る舞いにならないこともあります。
実際、canonicalタグで最新記事を指定しているのに、検索結果に古い記事が出てきたこともあります。
それでも、canonicalタグで正規のページはこっちだよと教えることは、めんどくさがらずにやるべきです。
使用上の注意点
- canonical指定するURLには絶対パス、相対パスのどちらも使えますが、Googleのジョン・ミューラー氏は絶対パスの使用を推奨しています。
- canonical指定が複数あるとまるごと無視されます。ページの<head>に複数のcanonicalタグを挿入できる方法を使っている場合は注意が必要です。
- 指定するURLは正規化したものにします。これは内部リンクのURLには正規化したものを使うべき、と同じ理由です。
WordPressでcanonical指定する方法
使用しているWordPressのテーマによって異なります。僕が使っているテーマ(Affinger5)では、記事編集画面にある「リダイレクトURL」にターゲットとなる(評価して欲しい記事の)URLを入力し、「canonicalに変更」にチェックを入れます。
これだけです。すると記事の<head>セクションに次の1行が挿入されます。
<link rel="canonical" href="https://secrets2mysuccess.net/summary-latest/" />
簡単ですね。
canonical指定の実施例
僕が運用しているブログ「河童のインデックス投資」では毎月運用成績を公開しています。2017年10月に始めたので、運用成績を公開する記事が60本以上あります。過去の記事はアーカイブとして残しておき、興味があれば閲覧したいので最新記事だけにはできません。
そのためcanonical指定しないと間違いなくカニバってしまいます。
運用成績を公開する最新記事はこれです。
最新記事のURLは固定してあります。そして過去記事はみな最新記事に(その固定したURLに)canonicalしています。次はその状態を可視化したものです。
記事数が多いので圧倒されます。次は中心部だけを切り出したものです。
中心にあるのが、この記事を書いている時点の最新記事です。最新記事から丸の付いた線がたくさん出ていますが、これは過去記事からcanonical指定でリンクされていることを表しています。
- 2022年9月の記事が最新で、そこから右下の2022年8月の記事に矢印が出ています。これは過去記事閲覧用の内部リンクです。
- 8月の記事は7月の記事に内部リンクしています。
次は7月の記事にフォーカスした図です。
このパターンが延々と続きます。この構造だと毎月初に新記事を追加した際に必要な作業は次の3つだけです。
- 前月の記事のURLを最新記事のもの(固定)からその年月を示すものに変更する。
- 最新記事(固定)のURLで最新記事を追加する。前月の記事へのリンクを設ける。
- (ついさっきまで最新記事だった)前月の記事から最新記事にcanonicalする。
canonical指定を含む内部リンク構造を可視化するには
canonical指定の実施例に、内部リンク構造を可視化した図が出てきました。あの図は自動生成されたものです。あの規模の図を手作業で作るのは無理です。
Windowsアプリケーション「Link Map Viewer」は、内部リンク構造の可視化を現実的な方法で行います。そしてcanonical指定にも対応しています。
次のデモ動画ではcanonicalタグの問題を視覚的に認識し、WordPressで修正後、表示を更新して修正されたことを確認する様子を実演しています。