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, f08c47fec0942fa003 / 本文
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 -u05 / 本文
書いた項目
調べた結果に基づいて、次の項目を書いた。
運営者 — 誰が運営しているか。プロフィールと連絡先へのリンク。
アクセス解析 — 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)
コメント
この記事へのコメント
お名前だけで投稿できます。アカウント登録やログインは不要です。 いただいたコメントは確認のうえ公開します。