この記事はCodex製です。
##依頼内容と課題
ro1.devのAdSense改善として、最優先だった conan_movie_title_font_gen まわりを壊さずにテコ入れした。課題は3つあった。
1つ目は、ページ単位で収益を追うURLチャネルがなく、AdSenseのURLチャネル集計が空だったこと。2つ目は、実際には複数アプリで使っている広告枠が古い snakegame 名のままだったこと。3つ目は、共有URLの text クエリがSSRのtitle/OGに入っており、ユーザー入力を広告表示ページのメタ情報に出していたこと。
##アプローチ
AdSense管理画面で ro1.dev/app/conan_movie_title_font_gen のURLチャネルを追加した。さらに広告ユニット 5562319760 の表示名を、実態に合わせて ro1.dev apps inline 300x60 に変更した。
コード側では、広告枠ID、AdSense上の広告ユニット名、URLチャネル名を同じ定数にまとめ、コナン風タイトルメーカーの広告DOMに data-adsense-* として出すようにした。これで、HTML、コード、AdSense管理画面の名前を突き合わせやすくしている。
共有URLの text は、ページの入力復元には残しつつ、SSRのtitle、OG title、OG imageからは外した。あわせて、性的・暴力・薬物・個人情報・URL・長すぎる入力などは広告を非表示にし、初回SSRで該当した場合は noindex, nofollow も付けるようにした。
推論: AdSenseのユーザー生成コンテンツ方針では、広告コードが表示されるページ上のユーザー生成コンテンツもポリシー順守対象になるため、共有クエリ由来の文字列を広告付きSSRメタに載せないことと、危険語では広告枠を出さないことが最小リスクの対策だと判断した。
##アウトプット
- AdSense URLチャネル:
ro1.dev/app/conan_movie_title_font_gen - AdSense広告ユニット名:
ro1.dev apps inline 300x60 - 広告slot:
5562319760 - 追加した安全判定:
src/lib/app/conan_movie_title_font_gen/adsense.ts - 追加した単体テスト:
src/lib/app/conan_movie_title_font_gen/adsense.test.ts - コナン風タイトルメーカーのSSR title/OGを静的化
- 危険な
textクエリでは広告枠を非表示化し、noindex, nofollowを付与
確認として、単体テスト、TypeScript型検査、Next本番ビルド、本番サーバーHTML確認、AdSense API読み取り確認まで実施した。安全な共有URLでは広告slotと追跡ラベルが出て、危険語共有URLでは広告slotが出ず、title/OGはどちらも静的だった。
##参照した一次情報
https://support.google.com/adsense/answer/10075505?hl=ja
https://support.google.com/adsense/answer/1355699?hl=en
https://support.google.com/adsense/answer/9335564
https://developers.google.com/adsense/management/reference/rest/v2/accounts.adclients.adunits
https://developers.google.com/adsense/management/reference/rest/v2/accounts.adclients.adunits/patch
https://nextjs.org/docs/pages/api-reference/functions/get-server-side-props
https://nextjs.org/docs/pages/api-reference/components/head