積み上げログ技術ブログ記事一覧へ

自主執筆記事

AdSense申請に必要なページ一式|プライバシーポリシーに何を書くか、実際に使っているサービスから決める

AdSenseの審査に落ちたサイトを整えるなかで、プライバシーポリシーもフッターも無いことに気づいた。テンプレートを貼るのではなく、コードを調べて実際に使っているサービスだけを書いた。必要なページと、それぞれに何を書いたかをまとめる。

サイト運営公開: 2026/08/24更新: 2026/08/24
AdSenseプライバシーポリシーads.txtサイト運営Next.js

01 / 本文

結論:必要なのは4つ。そのうち2つが無かった

AdSense の審査に向けてサイトを点検したら、次の状態だった。

プライバシーポリシー — 無い(404)

全ページ共通のフッター — 無い

運営者情報 — あるが672字と薄い

お問い合わせ — ある

さらに、技術的な設置も抜けていた。ads.txt が404で、広告スクリプトも読み込まれていなかった。メタタグだけ置いてあった。

「サイトは広告を表示できない状態です」という表示の直接の原因は、この2つだった。

02 / 本文

ads.txt と広告スクリプトは別物

AdSense の設置には3つの要素があり、どれか1つでも欠けると動かない。

1. google-adsense-account のメタタグ。 サイトの所有権を示す。

2. ads.txt ドメイン直下に置く。誰が広告枠を売る権限を持つかを申告するファイル。これが無いと「所有権を確認してください」が消えない。

3. adsbygoogle.js の読み込み。 これが実際に広告を表示する。メタタグだけでは1つも表示されない。

私はメタタグだけ置いて、済んだつもりになっていた。

# public/ads.txt(ドメイン直下に置く)
google.com, pub-XXXXXXXXXXXXXXXX, DIRECT, f08c47fec0942fa0

03 / 本文

Next.js での広告スクリプトの置き方

App Router なら app/layout.tsx に置く。next/script を使い、afterInteractive で読み込む。

crossOrigin="anonymous" を付けるのを忘れないこと。AdSense の公式コードに含まれている。

import Script from "next/script"

export default function RootLayout({ children }) {
  return (
    <html lang="ja">
      <body>
        {children}
        <Script
          src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-XXXXXXXXXXXXXXXX"
          strategy="afterInteractive"
          crossOrigin="anonymous"
        />
      </body>
    </html>
  )
}

04 / 本文

プライバシーポリシーは、テンプレートを貼らない

検索すれば雛形はいくらでも出てくる。しかし使っていないサービスまで書くのは良くない。Amazonアソシエイトを使っていないのに書けば、それは事実と違う記載になる。

自分のコードを調べて、実際に使っているものだけを列挙した。

調べ方は単純だ。外部サービスのドメインや識別子を、ソース全体から拾う。

grep -rhoE "googletagmanager|adsbygoogle|codoc|cusdis|docs\.google\.com/forms|youtube|rakuten|amazon-adsystem|a8\.net|valuecommerce" \n  app/ --include="*.tsx" --include="*.ts" | sort -u

05 / 本文

書いた項目

調べた結果に基づいて、次の項目を書いた。

運営者 — 誰が運営しているか。プロフィールと連絡先へのリンク。

アクセス解析 — GA4 を使っていること、Cookie を使うこと、個人を特定する情報は含まないこと。

広告の配信 — AdSense を使っていること、第三者配信事業者が Cookie を使うこと、無効化の方法(広告設定と aboutads.info へのリンク)。

アフィリエイト — 楽天アフィリエイトを使っていること。紹介料が評価を変えないこと。

コメントと有料記事 — Cusdis と codoc を使っていること、公開前に確認すること。

お問い合わせ — Googleフォームで受け付け、無断で公開・提供しないこと。

埋め込みコンテンツ — YouTube を埋め込むページがあること。

Cookie の無効化 — ブラウザ設定で無効にできること。

免責事項 — 情報の正確性を保証しないこと。技術記事のコードは自分の環境で検証すること。学習記録は結果を保証しないこと。

著作権 — 帰属と、権利者からの申し出への対応。

改定 — 最終更新日。

06 / 本文

フッターが無いと、どこからも辿れない

プライバシーポリシーを作っても、導線が無ければ意味がない。私のサイトにはフッターが無く、運営者情報も連絡先もトップページからしか辿れなかった。

全ページ共通のフッターを作り、次の3つをどこからでも1クリックで開けるようにした。

運営者について / プライバシーポリシー / お問い合わせ

あわせて、広告を掲載している旨をフッターに明記した。これも審査で見られる点だ。

07 / 本文

運営者情報は「実在すること」が伝わる分量にする

672字の経歴だけでは、実在の運営者かどうかが判断しにくい。次を足して1,866字にした。

運営しているサイトの一覧。 実際にアクセスして応答を確認したものだけを載せ、それぞれデータの出どころを添えた。

学習中のこと。 資格試験に挑戦していることと、その記録へのリンク。

失敗も公開している姿勢。 設定を間違えてやり直した話などへのリンク。

連絡先。 お問い合わせ、GitHub、プライバシーポリシーへの導線。

作ったものが実在して、動いていて、書いた記事と結びついている。これが伝わる構成にした。

08 / 本文

確認のしかた

対応したあと、外から見て揃っているかを確認する。

# 必須ページが200を返すか
for p in privacy profile contact; do
  echo -n "/$p/ "
  curl -sS -o /dev/null -w '%{http_code}
' "https://example.com/$p/"
done

# ads.txt が配信されているか
curl -sS -w '
HTTP %{http_code}
' https://example.com/ads.txt

# 広告スクリプトが読み込まれているか
curl -sSL https://example.com/ | grep -c 'adsbygoogle.js'

09 / 本文

まとめ

AdSense に必要なのは、プライバシーポリシー・運営者情報・お問い合わせ・全ページからの導線の4つ。

技術的には、メタタグ・ads.txt・広告スクリプトの3つが揃って初めて動く。1つでも欠けると表示されない。

プライバシーポリシーは、自分のコードを調べて、実際に使っているサービスだけを書く。テンプレートを貼ると、使っていないサービスまで書くことになる。

そして、作っただけでは足りない。 どのページからでも辿れるようにするところまでが対応だ。

10 / 本文

AdSense対策シリーズ

審査に落ちてから、申請の準備が整うまでの記録です。

/articles/manual/adsense-low-value-content-measured/ — 落ちた原因を、記事340本の文字数を測って特定した

/articles/manual/noindex-does-not-hide-from-adsense/ — noindex は審査には効かない。検索から消しても審査員には見えている

/articles/manual/adsense-required-pages-checklist/ — 申請に必要なページ一式。プライバシーポリシーに何を書くか(この記事)

/articles/manual/whois-rdap-expired-domain-check/ — 登録したまま放置したドメインの生死を調べる(whois と RDAP)

コメント

この記事へのコメント

お名前だけで投稿できます。アカウント登録やログインは不要です。 いただいたコメントは確認のうえ公開します。