記事を置いているサイトに Google Search Console と AdSense を 1 日で設置した。手順自体は単純だが、途中で「これ失敗した?」と不安になる表示がいくつかある。
実際にやった順番と、不安になったポイントの正体、Next.js 固有のハマりどころを書く。
なお AdSense はこの時点ではまだ審査待ちで、広告は 1 円も表示されていない。そこも含めて実録。
記事を置いているサイトに Google Search Console と AdSense を 1 日で設置した。実際にやった順番と、途中で不安になった表示の正体、Next.js 固有のハマりどころを書く。
Search Console: ドメインプロパティ + DNS TXT
ドメイン全体を測りたいので URL プレフィックスでなくドメインプロパティで登録した。検証は DNS の TXT レコード。Vercel でドメインを管理しているなら 1 コマンド:
vercel dns add example.com '@' TXT 'google-site-verification=xxxx'
数分で「所有権を証明しました」が出た。この TXT レコードは消すと所有権が失効するので、掃除のつもりで消さないこと。
「サイトマップを取得できませんでした」は慌てない
sitemap.xml を送信した直後、ステータスが「取得できませんでした」と出た。実体を curl すると 200 で正しい XML。これは送信直後の表示の遅れで、数日すると「成功しました」に変わる。送った直後の赤表示で sitemap を作り直し始めると無駄足になる。
AdSense: 審査リクエストまで
流れは、サイトを追加 → head にスニペット設置 → ads.txt 設置 → サイト上でコードを確認 → 審査をリクエスト。終わるとステータスが「準備中 / 審査待ち」になる。
押さえておく点:
- 広告は審査承認後にしか出ない。 スニペットを置いた時点では何も表示されないのが正常
- 審査は数日〜数週間かかる
- ads.txt は
public/ads.txtに 1 行置くだけ (内容は AdSense の画面からコピー)
Next.js 固有の罠: head に素の script を書くと hydration 警告
App Router の layout の head に素の <script async src="...adsbygoogle.js"> を書いたら、開発サーバーで React の hydration mismatch 警告が出た。AdSense のローダーが hydration 前に head を書き換えるのが原因。
直しは next/script:
<Script
id="adsbygoogle-loader"
strategy="afterInteractive"
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-XXXX"
crossOrigin="anonymous"
/>
afterInteractive なら hydration 後に読み込まれるので警告が出ない。console に「data-nscript 属性は非対応」という警告が 1 本出るが、これは無害。
まとめ
- Search Console はドメインプロパティ + DNS TXT。TXT は永久に残す
- sitemap 送信直後の「取得できませんでした」は表示の遅れ。実体が 200 なら待つ
- AdSense の広告は承認後にしか出ない。審査待ちで数日〜数週間
- Next.js では広告スニペットを next/script (afterInteractive) で入れる
コメント (0)
まだコメントなし。