SiteOps
トップメディアダッシュボード更新履歴
記事一覧

Next.js(App Router)でAdSenseが表示されないとき、最初の30分でやること

Next.js(App Router)でAdSenseが表示されないときに、slot/初期化/SPA遷移/二重scriptを30分で切り分ける。

著者: 川原更新: 2026-05-17収益化RSS
Xで共有FacebookLinkedIn
料金相談

Next.js(App Router)でAdSenseが表示されないとき、最初の30分でやることは「HTMLに data-ad-client / data-ad-slot が入っているか」「adsbygoogle.push({}) が“1回だけ”確実に走っているか」「SPA遷移(App Router)で初期化が抜けていないか」を固定順で潰すことです。

最初に結論

  • “枠が出ない/空のまま”の多くは、data-ad-slot 未設定 or adsbygoogle.push({}) 未実行です。待っても直りません。
  • Next.js(App Router)では、初回ロードだけ動いて ページ遷移後に広告が出なくなる 事故が起きやすいです(初期化の置き場所の問題)。
  • scriptの二重読み込みは、adsbygoogle.push() 側のエラーを誘発しやすいので、まず「scriptは1回だけ」を担保します。

最初の30分でやること

1) 症状を分類する(この先の分岐が決まる)

  • A: 枠(ins.adsbygoogle)がDOMにない
  • B: 枠はあるが空(表示されない/0px/真っ白)
  • C: 初回は出るが、SPA遷移後に出ない
  • D: Consoleに adsbygoogle.push() 系エラーが出ている

2) 実DOMで data-ad-client / data-ad-slot を確認する(最短)

  • DevToolsで ins.adsbygoogle を探し、data-ad-client / data-ad-slot が両方埋まっているか確認
  • data-ad-slot が空/undefinedなら、環境変数 or 実装分岐が原因です(とくにCI/本番だけ空が多い)
  • ページ別slotを使っているなら、想定ページで想定slotになっているか見る

次に読む(slot未設定の最短対応):

  • /media/adsense-ad-slot-missing-first-30-minutes

3) adsbygoogle.push({}) が走っているか(“1回だけ”)確認する

  • window.adsbygoogle が存在し、push({}) が例外なく実行されているか
  • 例外で止まると、枠があっても配信が開始されません
  • “毎レンダーpush” のような過剰実行は不安定化するので、まずは 意図したタイミングで1回 を担保します

次に読む(表示0件のデバッグ):

  • /media/adsense-no-impressions-debug-first-30-minutes

4) scriptが二重読み込みになっていないか確認する(Next.jsでやりがち)

  • pagead2.googlesyndication.com/pagead/js/adsbygoogle.js を、Layoutとページ/コンポーネントで二重に読んでいないか
  • 同じscriptを複数回入れると、Consoleにエラーが出たり、以降の初期化が壊れたりします

5) SPA遷移(App Router)で初期化が抜けていないか確認する(Cのとき)

  • 症状が「初回だけOK」なら、遷移後にpushされていない 可能性が高いです
  • まずは「該当ページの広告枠コンポーネントが、遷移後にmountされるか」を見る(mountされていなければ、配置の問題)
  • mountされているのに出ない場合は、pushのタイミング/例外/重複scriptを疑います

6) 実装が正しそうでも“出ない”ときの最短切り分け

  • 広告ブロッカー/拡張の影響を除外(シークレット/別端末/別回線で1回だけ確認)
  • CSSで潰れていないか(親要素の高さ0 / overflow:hidden / display:none)
  • ads.txt の到達性が壊れていないか(404/別ドメイン/HTML)※別記事に誘導

次に読む(ads.txt):

  • /media/adsense-ads-txt-not-found-first-30-minutes
  • /media/adsense-ads-txt-first-30-minutes

“やってはいけない”注意(ポリシー事故を防ぐ)

  • 「広告をクリックして」などの誘導文言は避けます(ポリシー違反リスク)。
  • まずは実装/配信の安定化を優先し、運用上の改善はその次に回します。

相談する(最短ルート)

AdSenseの「最初の30分」ハブ: /media/adsense-first-30-minutes-hub

SiteOpsでできること

複数サイトを運用していると、原因の切り分けが「サイト別に」できずに時間が溶けます。SiteOpsでは、サイト別に見る順番を固定して、異常検知→切り分け→復旧を速くします。

  • まずは ダッシュボード で、影響の大きいサイトから優先して見直せます。
  • 状況を相談したい場合は お問い合わせ から送ってください(止血の順番を一緒に整理できます)
  • 料金と導入の流れは 料金ページ にまとめています
  • お問い合わせにこの3点があると最短です(箇条書きでOK)
    • 対象ドメイン(例: example.com)
    • いつから/何を変えたか(例: 5/17にNext.jsをApp Routerへ移行)
    • いま見える症状(例: 枠がない/空白/SPA遷移後に出ない/Consoleエラー)

この記事を書いた人

川原

SiteOps編集チームの公開窓口として、検索、アクセス、収益データをもとにした運営判断の知見をまとめています。

著者情報

関連記事

AdSenseのAuthorized Sellers(ads.txt)で警告が出たとき、最初の30分でやること収益化更新: 2026-05-17AdSenseのインプレ0(デバッグ編)のとき、最初の30分でやること収益化更新: 2026-05-17AdSenseがEU/一部地域だけ収益が落ちた(CMP/同意)とき、最初の30分でやること収益化更新: 2026-05-17
前の記事AdSenseのCPC(単価)が急落したとき、最初の30分でやること次の記事Cloudflare WorkersのCronが動かないとき、最初の30分でやること

次にやること

複数サイトの検索、アクセス、収益データをまとめて見直すなら、SiteOpsのダッシュボードでサイト別に確認できます。

料金を見る相談したい / お問い合わせ