AdSenseの「広告ブロックによる損失収益の回復」を試してみた

お断わりします
©いらすとや.

AdSenseに新しく「広告ブロックによる損失収益の回復」機能が追加された。
広告ブロッカー有りのブラウザでページが表示されたときに、広告ブロッカーを検知して「広告ブロックやめてくんない?」ってメッセージを表示するもの。それプラス少し機能があるみたいだけど。
海外のサイトでアーリーバードさんたちがいち早く使っていたのでどんなものかは知っているんだけど正直ビミョーなのよね。今回は、この「がとらぼ」ではなくアクセス皆無な某縦書きサイトに導入してみた。

広告ブロックによる損失収益の回復 1
AdSenseのメニューから「プライバシーとメッセージ」を開く。
「広告ブロックによる損失収益の回復」をクリックする。

広告ブロックによる損失収益の回復 2
「広告ブロックによる損失収益の回復」の概要が表示される。
「続行」をクリックする。

広告ブロックによる損失収益の回復 3
タブが3つ表示される。最初は「メッセージ」タブが開かれている筈。初めて「広告ブロックによる損失収益の回復」を表示した場合、または登録したメッセージを全て削除した場合はこの画像の画面が表示される。
この「広告ブロックによる損失収益の回復」での「メッセージ」というのは広告ブロッカーを使用している閲覧者が広告のあるページを表示しようとしたら表示する「広告ブロックが検知されました云々うんぬん・・・」というもの。
機能をオンにするには最低でも1つはメッセージを作成する必要がある。
「メッセージの作成」をクリックする。

広告ブロックによる損失収益の回復 4
「広告ブロックによる損失収益の回復メッセージを作成する」の画面ではメッセージ表示を行うウェブサイトの選択と言語の選択を行う。
それを済ませないと左下の「設定」が押せない。

広告ブロックによる損失収益の回復 5
メッセージを表示するウェブサイトの選択画面。
ここでは1つだけしか選択できない。行の左端の○をクリックして選択。
左下の「確認」をクリック。

広告ブロックによる損失収益の回復 6
選択したサイトが表示されていること。
「言語の選択」では「日本語(ja)」を選択する。(日本語でないサイトであれば適切な言語を選択)
ユーザー広告ブロック オプションは任意。
サイトの選択と言語の選択が済めば「続行」ボタンを押せるようになるのでクリック。

広告ブロックによる損失収益の回復 7
表示するメッセージ用の編集画面になる。メッセージタイトルやメッセージの編集や色などのデザイン系の変更が可能。なお、この画面ではなぜか表示するロゴの登録や変更はできない。ロゴというのはメッセージの上部に表示する画像だが、ロゴを非表示にするのはこの画面の「ヘッダー」で設定できる。
モバイル用とPC用の表示の確認を行う。
ロゴ以外が完成したと思ったら右上の「公開」をクリックする。一時保存は「下書きを保存」だがHTMLタグをサイトに埋め込むまでは実際には表示されないのだから要らないのでは?

広告ブロックによる損失収益の回復 8
ロゴ表示ありを選択していた場合はにロゴの追加を促すメッセージが表示されるが、実はあまり意味はない。
とりあえずここは素直に「追加」をクリック。

広告ブロックによる損失収益の回復 9
メッセージリストが表示される。初めてメッセージを登録したなら先程登録したメッセージ1つだけが表示される筈。
ロゴを登録するにはここでメッセージの「ロゴ」列の「追加」をクリックする。
ロゴ表示無しにしていたなら2つ下の画像に移動。

広告ブロックによる損失収益の回復 10
画像アップロード画面が表示されるので「アップロード」をクリックして登録したい画像を選択してアップロードする。150kB以下のPNG画像ということなので小さめの画像に限られる。また、アスペクト比は5:1であることが推奨されているが違うアスペクト比の画像であっても画像の縦横比が狂って横長になったり縦長になったりはしない。ただし、表示枠が5:1なので例えば正方形の画像を登録すると非常に小さく表示されることになる。

広告ブロックによる損失収益の回復 11
画像のアップロードが成功するとその画像と画像のファイル名が表示される。このとき、この画像とファイル名の枠をクリックして青枠にならないと右下の「OK」がクリックできない。ちょっと判りにくいUIだと思う。

広告ブロックによる損失収益の回復 12
画像の登録が完了するとロゴ欄にその画像が表示される。カスタムチョイスURLとフッタのURLは今回は使わない。
良さそうであれば「メッセージ」については終わり。
左下の「確認」をクリックする。

広告ブロックによる損失収益の回復 13
下部に登録したメッセージの情報が表示される。ステータスが「公開済み」であることを確認する。
次は、メッセージをウェブサイトに表示するためのHTMLタグを取得する。
サイトに上部のタブで「タグ設定」をクリックする。

広告ブロックによる損失収益の回復 14
「タグ設定」の画面には2つのHTMLタグが表示される。基本的には上側のタグだけを自分のウェブサイトに挿入することになる。(筈)
下側のタグは「広告ブロッカーのせいでメッセージが表示できない場合にエラーメッセージを表示してユーザーに広告表示の許可を求めることができる」云々と書いてあるが、具体的にどのような広告ブロッカーに対して有効なのかが不明。「がとらぼ」の人が試した範囲では下側のHTML+Javascriptタグのコードを使わなくても幾つかの広告ブロッカーは正しく検知できたし、そうでない広告ブロッカーの場合は下側のコードにも反応しなかった。つまり意味無くない?しかも下側のコードって10KB(1万文字)ほどあるの、大きすぎ。

と、いうことで、上側のコードだけコピーして自身のウェブサイト(メッセージ作成時に選択したサイト)に貼る。(次へ)
(ブラウザの画面はまだ使うのでそのままで)

広告ブロックによる損失収益の回復 15
Googleさんの説明によるとHTMLヘッダである <head></head> の間にコードを貼って下さいとのこと。個人的には最後の方の </body> の直前で良くない?とは思うが、一応説明どおりに貼ってみた。 </head> の直前で良いかと思う。

広告ブロックによる損失収益の回復 16
タグを貼り終わったらその時点から広告ブロッカー検知時にメッセージを表示する機能は動くはずだが、追加の設定をしておく。
タブから「設定」をクリックする。
「ユーザーがサイトを許可リストにワンクリックで追加できるようにする」はオンにする。特定の広告ブロッカーでしか効かないものだがオンにして損は無い筈。
「許可広告を有効にしているユーザーについての設定」は、特定の広告でしか効かないだろうからどうでも良いが、「広告ブロックによる損失収益の回復メッセージを表示しない」が無難かしら?
左下の「保存」をクリック。
これで設定は終わり。

広告ブロックによる損失収益の回復 17
ブラウザで広告ブロッカーを有効にしてみた。この画像では赤い八角形に が書かれたロゴマークで有名な「AdBlock」を使ってみた。
広告ブロッカーを検知して、無事に?メッセージが表示された。「広告を許可」をクリックするとこのサイトはブロック対象から除外される。この点は良いかも。反対に、右上の をクリックするとメッセージが消えるだけで何も起きない。

広告ブロックによる損失収益の回復 18
広告ブロッカーのAdawayをインストールしたAndroidスマートフォン。広告ブロッカー検知が機能しなかったのでメッセージが表示されない。つまりこのような広告ブロッカーには意味がないということ。

広告ブロッカーの検知機能が弱すぎなんじゃないかしら?で、今後、何かコードが改良されたとしたら、その度にブログに貼ったコードを書き換えかしら?
ちょっと筋が悪い系じゃないかと思う。

2022年8月1日現在、「広告ブロックによる損失収益の回復」という名前になっているけど広告ブロッカーを検知してメッセージを表示する、ワンクリックでブロッカー機能を停めることもできる、+αの機能があるってだけで、この機能を使うと収益が回復するわけじゃないよね。単に「広告ブロック停止を促す機能」の方がわかりやすくない?

メッセージの作成とタグをサイトに貼るのは必ずセットで。どちらかを行わないと機能しません。

XMLサイトマップのおさらいとWorePress標準のXMLサイトマップ出力機能

何かがリストアップされた書類
©いらすとや.

サイトマップのおさらい

ウェブのサイトマップというのは人間向けと検索エンジン向けに提供する2種類があります。 人間向けというのは例えばカテゴリ別に「このような分類の仕方で分けてページをこのように階層化しています」というような階層をどのように辿れば目的のページを見つけられるかという案内図のようなものです。デパートやスーパーでそれぞれの階で何を扱っているかの案内板とか売り場の地図だとかと似たものとなります。このページでは人間向けのサイトマップは扱いません。

検索エンジン向けのサイトマップは、「マップ」という単語を含むものの実際はマップというよりリストです。「私のサイトにある(全ての)ページの一覧を用意しました。検索エンジンさん、サイトマップを見て私のサイトのページをクロールして検索インデックスに登録して下さい」というものです。検索エンジン向けなので人間が認識できなくても構いません。検索エンジンが理解できるフォーマットで書きましょう。

Googleの サイトマップの作成と送信 の解説。

とはいえ、普通は手書きするものではありません。CMSのようなものを使っているのであればCMSにサイトマップ出力機能があるかもしれませんし、無くてもサイトマップを出力する機能を追加すれば対応できます。WordPressであればv5.5.0からはXMLサイトマップを出力する機能が標準装備になりましたし、それ以前のバージョンでもプラグインでサイトマップ出力機能を追加できました。もちろんv5.5.0以降もプラグインによりサイトマップを出力できます。

検索エンジンが理解できるサイトマップのフォーマットで最も簡単なのはテキスト形式で1行に1つページのURLを書くものです。

プレーンテキスト形式のサイトマップ
http://example.com/content1.html
http://example.com/content2.html
http://example.com/content3.html
http://example.com/content4.html

単純明快ですが、これだとURL情報しか送信できません。それはちょっと不都合です。ウェブサイト内のページが全部で数ページ程度でそれぞれのページが設置後に更新されないということであればこれでも構わないでしょうが、その程度の規模であればそもそもサイトマップは必要ありません。

RSSフィードやAtomフィードもGoogleはサイトマップとして扱うようです。しかし、RSSフィードやAtomフィードはサイトの全ページ一覧を扱うのではなく「最近の記事」の一覧です。(普通は10記事以内程度)。なのでウェブサイトオーナーがサイトマップを「私のサイトの全てのページの一覧」という認識をしているのであれば不適でしょう。
ただし、最近新しく公開したページをGoogleなどの検索エンジンに知らせるという意味ではフィードURLを(サイトマップの1つとして)検索エンジンに登録するのは有用です。(Search Consoleでサイトマップの1つとしてフィードURLを登録するのはオススメです。)フィードだけだと最近の記事である数個〜10数個程度のURLしか含まれないため(全URLが含まれる)XMLサイトマップも合わせて登録するべきです。

現在、検索エンジン向けサイトマップの主流はXML形式です。

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://example.com/content1.html</loc>
    <lastmod>2022-07-24</lastmod>
  </url>
 <url>
    <loc>http://example.com/content2.html</loc>
    <lastmod>2022-07-27</lastmod>
  </url>
</urlset>

この例ではページのURLとページの更新日時だけを通知していますが、ページの更新頻度や優先度のような情報を追加することができます。
参照: https://www.sitemaps.org/ja/protocol.html

また、サイトマップを小分けにすることができます。中規模以上のウェブサイトだと数千〜数十万のURLがあるでしょうがそれら全てを1つのサイトマップに載せるのは効率が悪いです。CMSなどを使っていればおそらくサイトマップ出力も動的に行われますが全てのURLを出力しようとして処理が重く表示されるまで待たされるのはよくありません。サイトマップの分け方は任意ですが、記事のカテゴリや月別で分けるのが一般的でしょう。

サイトマップを小分けする場合はその子サイトマッブのリストを記載するサイトマップインデックスファイルを作成してそれを親サイトマップということにします。

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://example.com/child-sitemap-2022-07.xml</loc>
    <lastmod>2022-07-31T23:59:59+00:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/child-sitemap-2022-06.xml</loc>
    <lastmod>2022-06-30T23:59:59+00:00</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/child-sitemap-2022-05.xml</loc>
    <lastmod>2022-05-31T23:59:59+00:00</lastmod>
  </sitemap>
</sitemapindex>

上の例は月別でサイトマップを分けています。sitempindex内にsitemapタグがありその下のlocタグで子サイトマップの在り処を示しています。
子サイトマップの名前は任意です。子サイトマップは普通のサイトマップの書き方です。

仮に月別でサイトマップを分けたとしてその中のURLの数が100以下程度であればリクエストからサイトマップ出力までほぼ瞬時なので検索エンジンのクローラーがサイトマップを取得失敗するということは無い筈です。

なお、Googleさんによりますとサイトマップの容量の上限は50MB(非圧縮時)とのことです。50MBだと仮に英数字だけで構成するなら単純に50,000,000(5千万)文字です。新聞の朝刊の文字数が(全角かな/漢字も単純に1文字として)15万文字程度であるとすれば333日分(約11ヶ月分)となります。このことから中規模/大規模サイトであったとしてもサイトマップ1つでも賄えるかもしれませんが、その場合はサイトマップは動的出力+キャッシュまたは静的出力が好ましいでしょう。(毎日夜中に出力するなど)

WordPress標準のXMLサイトマップ出力機能

前述のとおり、WordPressはv5.5から標準でXMLサイトマップを出力できる。
テーマ内でサイトマップ出力機能を意図的に無効化しなければXMLサイトマップが出力される。別途XMLサイトマップ出力用のプラグインなどを使用するとそちらが使われる。(もしくはWordPress標準のサイトマップとプラグインのサイトマップの両方が機能します。)

WordPress標準機能のXML Sitemap 1
WordPressのウェブサイトのURLが https://example.com であれば XMLサイトマップのURLは https://example.com/wp-sitemap.xml となる。これはサイトマップでよく使われるURLとは違うが。設定によってはhttps://example.com/sitemap.xml にもできる。
そして、生意気にも子サイトマップ対応。しかし、その子サイトマップの分け方が残念。
WordPressの標準では1つのサイトマップに2000URLまで書き込まれるようになっている。 つまり、「投稿」用の子サイトマップ wp-sitemap-posts-post-1.xmlに2000 URLまで溜まるみたい。「投稿」の数が2000を超えるとwp-sitemap-posts-post-2.xmlが作成されてそこにまた2000URLまで入る。(これの繰り返し)
これだと子サイトマップ1つあたりに多く入りすぎ。
「固定記事」を大量に作成するという使い方はWordPressではあまりないとは思われるが、wp-sitemap-posts-page-1.xmlも2000 URLまで溜まり、超えるとwp-sitemap-posts-page-2.xmlに入るという感じ?

WordPress標準機能のXML Sitemap 2
投稿記事用の子サイトマップ wp-sitemap-posts-post-1.xml を表示してみた。
画像のように、投稿記事のURLが並ぶだけ。これが非常に残念なポイントで、どうして標準状態で更新日時を出力してくれないのか?

WordPress標準のサイトマップ出力機能に更新日時を追加するコード
(v5.5リリース時に出たドキュメントから)
使用中のWordPressテーマディレクトリのfuctions.phpに1行追加。
/WORDPRESS-PATH/wp-content/themes/使用中テーマ/functions.php
function bny_sitemap_lastmod( $entry, $post ) {
    $entry['lastmod'] = $post->post_modified_gmt;
    return $entry;
}
add_filter( 'wp_sitemaps_posts_entry', 'bny_sitemap_lastmod', 10, 2 );

(↑)これでも問題ない筈だがが、Googleさんは気に入らないらしくSearch Consoleでは日付形式のエラーが報告されることになる。
直さなくても問題はないがエラーなのが気に入らなければ次。

function bny_sitemap_lastmod( $entry, $post ) {
    $entry['lastmod'] = get_the_modified_time('c', $post);
    return $entry;
}
add_filter( 'wp_sitemaps_posts_entry', 'bny_sitemap_lastmod', 10, 2 );

WordPress標準機能のXML Sitemap 3
タイムゾーンは無いが記事の更新日時が追加されるようになった。

WordPress標準の子サイトマップ1つあたりのURL数の上限を変更するコード
使用中のWordPressテーマディレクトリのfuctions.phpに1行追加。
/WORDPRESS-PATH/wp-content/themes/使用中テーマ/functions.php
function bny_sitemap_maxurls( $max_urls, $object_type ) {
    $max_urls = 10;
    return $max_urls;
}
add_filter( 'wp_sitemaps_max_urls', 'bny_sitemap_maxurls', 10, 2 );

上のコードの $max_urls = 10; の10を希望の上限数にする。10は極端に少ないので100〜500あたりが無難かと。(WordPressの初期値は2000)

WordPress標準機能のXML Sitemap 4
1サイトマップに含められるURL数を10に絞ったので元々の「投稿」用の子サイトマップ wp-sitemap-posts-post-1.xml が1つでは無理になった。溢れたURLを納めるためにサイトマップインデックス(親サイトマップ)にはwp-sitemap-posts-post-2.xml 〜 wp-sitemap-posts-post-11.xmlの子サイトマップが増えている。

WordPress標準機能のXML Sitemap 5
変更前はwp-sitemap-posts-post-1.xmlには108個のURLがあったが、1サイトマップのURL数の上限を10に変更したのでそのとおりになっている。10というのは極端だが、このように上限数を設定できるのは好ましい。

このように、更新日時を出力できて、子サイトマップ内のURL数を変更することもできるのでWordPress標準機能のXMLサイトマップ出力機能の気に入らないことは投稿記事用の子サイトマップを年別や月別で分けられないということ。まぁ、管理者の自己満足の部分だけど、気になるとWordPress標準のXMLサイトマップは嫌ということに。年別/月別などで子サイトマップを出し分けできて更新日時が出力されるXMLサイトマッププラグインを使いたいところ。

WordPress標準のXMLサイトマップ出力はデフォルトで有効だが、他のXMLサイトマップ出力ブラグインを使うとかXML出力機能を自作して組み込んだということであれば標準のXMLサイトマップ出力機能は完全に停めたいかも。

使用中のWordPressテーマディレクトリのfuctions.phpに1行追加。
/WORDPRESS-PATH/wp-content/themes/使用中テーマ/functions.php
add_filter( 'wp_sitemaps_enabled', '__return_false' );

他にもWordPress標準のXMLサイトマップのカスタムに役立つ情報がWordPress v5.5リリース時に出たドキュメントに解りやすく書かれています。
参照: https://make.wordpress.org/core/2020/07/22/new-xml-sitemaps-functionality-in-wordpress-5-5/

関連記事:
Up