ヘッダーの後にカスタムスクリプトを挿入する

こんにちは、皆さん。

私はすでに公式の Discourse 広告プラグインを使用しており、サイト上で広告が表示されるように設定しています。問題は、Discourse に標準搭載されているもの以外の、カスタムスクリプトや広告を配置したい場合はどうすればよいのかということです。

カスタマイズ > テーマ > HTML/CSS の編集 > ヘッダー後(after header)に移動してみました。そこにスクリプトブロックを貼り付け、サイトを再読み込みしましたが、表示されません。実際、<body></body> の間に配置した場合のみ表示され、その結果広告がページの最下部に現れてしまいます。「ヘッダー後」は最適な位置のはずですが、表示されません。なお、このスクリプトには async 属性が含まれています。

なぜ単純な HTML ブロックをコピー&ペーストするだけで済むはずなのに、複雑なプラグインが必要なのでしょうか?Google だってスクリプトを提供しており、それをヘッダー後にコピー&ペーストするだけで済みます。これはウェブサイトでは一般的な做法ですが、Discourse では何らかの理由でスクリプトがブロックされているようです。CSP(コンテンツセキュリティポリシー)の問題ではないはずです。https:inline-code をフィルターとして既に設定しており、これで「https」で始まるすべての JavaScript が許可されるはずだからです。以下は Google 広告のスクリプトです。

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Ad 1 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-3368174556925488"
     data-ad-slot="4362547659"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>

Adsense プラグインを使わずに、上記のコードをマニュアルで動作させ、テーマの「ヘッダー後」に配置してみてください。

#plugin:advertising

更新:どうやら答えは「ハウス広告(House Ads)」だったようです。しかし、ハウス広告にスクリプトを貼り付けても表示されません。Discourse が何かをブロックしているのでしょう。同じスクリプトを通常の HTML ページに配置すれば表示されるからです。

「いいね!」 1

現在、テーマコンポーネントを使用してこれを実行できます。試しましたか?

ネタバレ:広告の自動更新は行われません。Discourse はシングルページアプリケーションだからです。もし AdSense が変更され、adsbygoogle.push({}) を使わずに広告を自動的に更新できるようになったのであれば、それは私にとっては初耳です。

「いいね!」 1

実は、iframe を使うことにしました。House Ads の中に iframe を埋め込むと、それが機能しました。Google AdSense の広告は、ページをリフレッシュすれば更新されます。

唯一の欠点は、House Ads からアフィリエイト広告をページの下部に配置したい場合、そのオプションがないことです。トピックリストの上部または間にしか配置できません。下部にも配置オプションが追加されれば、より自由度が高まって嬉しいです。

ただし、Google はあなたのフォーラムの主題を認識できず、訪問者には関連性の低い広告を表示してしまい、収益が大幅に低下する可能性があります。

単に別のページに移動するだけでは更新されません。

「いいね!」 2

この主張の根拠となる参考文献を提示してください。

Google AdSense や他の広告ボットがサイトの文脈を把握するためにサイトをクロールする際、広告が IFRAME タグで表示されるか SCRIPT タグで表示されるかによって違いは生じないはずです。

もちろん、Google の開発者向けリファレンスなどを読めることを楽しみにしています!

ありがとうございます。

https://support.google.com/admanager/answer/7438540?hl=ja

AdSense の広告がネストされた iframe 内で表示される場合、ブラウザのセキュリティ機能により、ターゲティングに使用するページ URL やドメインを検出することができません。その結果、最も関連性の高い広告が表示されず、広告収益が本来得られるべき水準より低くなります。

「いいね!」 3

はい、しかしそれは細部に過ぎず、広告コンテキストがどのように作成されるかという全体像ではありません。

Adsense を運用しているすべてのサイトは、Google Adsense のクローラーによってクロールされます。そのため、Google サーバーは、サイトをクロールするクローラーに基づいて、サイト全体としてコンテキストに即した広告を配信します。

つまり、Ruby on Rails について論じるような技術系サイトであれば、利用可能な場合、そのコンテキストに関連する広告がサイトレベルで配信されます。

ただし、ページレベルでは、ネストされた IFRAME タグにおけるコンテキストに問題があるのは確かです。

IFRAME タグ内で配信されるすべての広告タグがネストされているわけではありません。

ネストされた IFRAME タグの例を以下に示します。

<iframe src="http://www.w3schools.com" width="1000" height="1000" id="frame1" name="frame1">
   <iframe width="200" height="200" src="http://www.bing.com" id="frame2" name="frame2">
   </iframe>
</iframe>

率直に言って、私自身は実務的にこの状況に遭遇することはめったにありません。過去 15 年ほどにわたって何度も確認を行ってきましたが、この問題が発生したのはパッバックタグの場合に限られていました。

お役に立てれば幸いです。

参考資料をお求めでしたが、「ネスト」という言葉の意味はそれではありません。段落のタイトル「iFrame の中に AdSense 広告を表示するにはどうすればよいですか?」からそれが明確です。実際、過去には iframe の使用自体がポリシー違反でした。

2007 年以来、私は Adsense でありとあらゆる手口を試してきましたし、@michaeld と共に 最初の Discourse Adsense プラグインも作成しました。

おそらく、私たち双方の経験は異なるのでしょう。それでうまくいったとのこと、光栄に思います。もし他の誰かがそれを試みたい場合は、私の手は借りられませんので、泣き言を聞いてあげられないことをお断りしておきます。

「いいね!」 3

率直に言うと、過去10年間で10億件以上の広告配信を行ってきましたが、長年AdSenseを直接配信していません(多くの理由からAdSenseは好んでいません)。したがって、現在のディスプレイ広告の状況から「広告配信」を俯瞰的に見てみましょう。

コンテキスト(関連性)

IDN Technetのような直接購入型の広告を配信する広告ネットワークや、他のコンテキストベースの広告ネットワークのほとんどは、サイトのコンテンツをクロールしません。彼らは広告購入者に対してサイトを宣伝し、例えば「これはDiscourseのメタフォーラムで、技術開発、Ruby、JavaScriptなどに関する素晴らしいコンテンツがあります」と伝えます。私たちは彼らを強くお勧めします。

そして、彼らは現在、出版者に ads.txt エントリを提供し、サイトのカテゴリとサブカテゴリに基づいて広告ネットワークから広告を配信します。これは、クロールによるものではなく(AdSenseのクロールのようなものではなく)行われます。

これが現在のルールであり、例外ではありません。

ビデオコンテンツやビデオベースの広告についても同様です。当社のビデオパートナーは、広告を「クロールするロボット」がコンテキストを探すのではなく、サイトのコンテキストに基づいたパンフレット内で広告を販売しています。

実際、私たちは長年、クロールを使ってサイトを分類する広告ネットワークからの広告配信を行っていません。特にパスバックタグについてはそうです。パスバックタグは、広告ネットワークにコンテキストがハードコードされている場合、クロールによる分類よりも常に最もよく機能します。

パスバック

パスバック広告(タグ)から関連するコンテキストを取得するのは常に困難です。

過去に10億件以上のディスプレイ広告を配信した出版者の経験から言うと、パスバック広告ネットワークに対して、クロールからコンテキストを構築する広告ネットワークを使用しないことです。

過去10年間、広告を配信する経験から、ハードコードされたコンテキストに基づいたパスバックタグを使用するのが最善です。例えば、技術系サイトを持っており、インド向けにパスバックを配信したい場合は、インドの技術者にとって興味のある技術系のパスバックタグを使用します。

AdSense

AdSenseは約15〜10年前に使用していましたが、過去10年間はAdSenseを直接配信した記憶がありません。私の見解では、AdSenseは収益を上げる良い方法ではありません。

AdSenseはクロールからコンテキストを構築しますが、一般的に、タグがネストされたIFRAMEタグ(iFRAMEタグ内のIFRAMEパスバックタグ)でない限り、IFRAMEタグで問題ありません。

IFRAMEタグのいくつかの利点

  • ブラウザはインラインフレームのために事前にスペースを割り当て、ドキュメントのレンダリング時にこれを考慮します。

  • Iframesはドメイン間オリジンポリシーを実装しており、他のドメイン名からのサイト/コンテンツ/広告の読み込みに役立ちます。また、比較的安全であるため、ウェブ広告ソリューションの多くはiframeに基づいています。

  • 最初にコンテンツを読み込み、その後広告を読み込む場合、Ifreamを使用できます。

  • iframeはパフォーマンスの向上に役立ちます。

  • Iframeはページ上の他のコンポーネントとは独立して読み込まれます。

  • ユーザーがJavaScriptを無効にしていても、iframesは機能します。

  • iframeタグには“height”と“width”という属性があり、デザイナーは広告サイズに応じて300×250や728×90など、寸法や形式に大きな自由度を持たせることができます。

  • iframeタグはページ内のどこにでも表示でき、必要に応じて複数のiframeを追加できます。

IFRAMEタグのいくつかの欠点

  • iframeタグはアクセシビリティの問題を引き起こす可能性があります。

  • iframeタグはすべてのブラウザでサポートされているわけではなく、適切に表示されないか、空白として表示される場合があります。

  • ウェブ広告でiframeを使用する主な理由は、ドメイン間サポートにおけるセキュリティですが、パフォーマンスは完璧ではありません。

  • 多くの携帯端末ではiframeが表示されません。

  • 場合によっては、iframeがSEOを低下させることが知られています。

JSタグの利点と欠点:

  • 興味がある人がいれば、後で追加します。

需要と供給

现在是2020年。2000年以来、広告を提供するウェブサイトの数は指数関数的に増加しました。広告の供給は需要を大きく上回っています。つまり、Discourseで広告を設定することについて話している大多数のサイトにとって、強力な需要と確立されたニッチなオーディエンスを持っていない限り、プレミアムな広告トラフィックを得ることは期待できません。

2020年現在、すべての技術者とその姉妹がブログやフォーラムで広告を配信しており、実際にそうしています。つまり、将来もディスプレイ広告の供給は需要を上回り続けるでしょう。ほとんどのニッチサイトは、確立されるまで、新しいサイトから広告収益を上げるのに苦労するでしょう。

Discourseとクロール

DiscourseはSPAをクロールに提供しないため、広告ボットクロールもSPAを見ることができません。この完全な影響は、私の知る限り、独立した第三者によって「第三者、客観的」に分析されていません。

まとめ

JavaScript SPAとしてDiscourseを実行している新しいDiscourseユーザーの大多数は、広告収益ネットワーク(AdSenseなど)から大きな収益を得られないと思います。特に2020年は、パンデミックにより広告予算が大幅に減少しているため、特にそうです。さらに、供給は多く、需要は低いです。

ディスプレイ広告を実行する場合、「ページがリロードされない」という理由から、すべてのSPAで問題が発生します。これはJSタグとIFRAMEタグの問題です。すべての種類のサードパーティタグを最適化するためのより良いプラグインコードがSPAsに必要です。

結び

私たちは長年AdSenseを配信しておらず、今後もその計画はありません。したがって、AdSenseがコンテキストをどのように獲得するかという点は、私たちにとっては無意味です。他の人にとっては、SPAの問題やサードパーティのスクリプトタグやCORSの頭痛を戦うよりも、動作するIFRAMEタグを実行する方が良いでしょう。

歩く前に這い、走る前に歩きましょう。

これが役立つことを願っています。

気をつけてください。


PS: 誤字脱字がありましたら申し訳ありません。妻がドアで待っており、雨が降る前に買い物に行きたいそうです!

これは Google 用ではありません。以前議論した通り、これは Google や Amazon などの外部アフィリエイト広告ユニットに関するものです。Google については、すでに組み込みの Adsense プラグインを使用しており、Google 広告は既に機能し、訪問者に合わせた広告の主題に自動調整されます。さらに、Adsense を通じて広告のジャンルを制御することも可能です。

私の質問は、常に同じ内容を表示する静的なアフィリエイト広告に関するものです。そのため、その目的に特化した House 広告を使用しようと考えました。しかし、広告ユニットを配置できる位置に制限があります。

現在、iframe を使用してテーマの HTML フッターに配置しており、これは問題なく動作しています。ただし、唯一の問題点は、この iframe はすべてのユーザーグループ(信頼レベルが高いユーザーも含む)に表示されてしまうことです。以前は、Discourse の広告マネージャーを通じて、信頼レベル 3 以上のユーザーには広告ユニットを表示しないように選択することができました。