はじめに:「何がダメなのか」がわからない
AdSenseに2回落ちました。
1回目は「有用性の低いコンテンツ」。 2回目も同じ理由でした。
Googleからの不合格メールには、 具体的に何を直せばいいのか書いてありません。
「プライバシーポリシーが足りないの?」 「記事数が少ないの?」 「そもそもサイトの作り自体がダメなの?」
全部わからない。
ネットで調べても「記事を増やしましょう」「独自性を出しましょう」みたいな 抽象的なアドバイスばかりでした。
「自分のブログの何がダメなのか、 具体的にチェックしてくれるツールがあればいいのに」
探してみたけど、満足できるものが見つかりませんでした。
じゃあ——自分で作ろう。
Claude Codeを使えばWebサイトが作れることは経験済みだったので、 「診断ツールも作れるのでは?」と思い立ちました。
この記事でわかること
- なぜAdSense合格診断ツールを作ったのか
- 診断する10項目をどう決めたか
- 技術選定の理由(Next.js / cheerio / Vercel)/li>
- 開発中につまづいたポイント3つ
- 完成したツールの使い方
- 公開後の反応と学び
結論:「自分の困りごと」が一番良いツールを生む
先に結論です。
AdSenseに落ちた悔しさから作ったツールは、 X(Twitter)で540インプレッション、55PVを記録しました。
「自分が欲しかったもの」を作ると、 同じ悩みを持つ人にも届くということを実感しました。
技術的にはNext.js + cheerioという構成で、 開発期間は約3時間ほど。 プログラミング経験が浅い僕でも、 Claude Codeの力を借りれば作れました。

何を診断するか決める:10項目の設計
AdSense審査で見られるポイントをリサーチ
まず「AdSense 審査基準」でとにかく情報を集めました。
Google公式のAdSenseヘルプページを軸に、 合格者のブログ記事や解説動画を合わせて 30以上の情報源を読み込みました。
見えてきたのは、 審査で見られるポイントが 大きく3つのカテゴリに分かれることです。
3カテゴリ × 10項目に整理

| カテゴリ | 診断項目 |
|---|---|
| 必須要件 | プライバシーポリシーの有無、お問い合わせページの有無、運営者情報の有無 |
| コンテンツ品質 | 記事数(10記事以上か)、1記事の文字数(1,500字以上か)、カテゴリの整理状況、オリジナル画像の有無 |
| 技術要件 | SSL(https)対応、モバイル対応、ページ表示速度 |
最初は20項目以上ありました。 でも「URLを入力するだけで自動チェックできるか」を基準にフィルタリングしました。

※結果的に決まった10項目の画像
たとえば「記事の独自性」は重要ですが、 機械的に判定するのが難しいので外しました。 逆に「SSL対応」「プライバシーポリシーの有無」は HTMLを解析すれば判定できます。 自動チェック可能な項目に絞ったのがポイントです。
技術選定:なぜこの構成にしたか
使った技術スタック
| 技術 | 役割 | 選んだ理由 |
|---|---|---|
| Next.js 14(App Router) | フレームワーク | サーバー側処理(APIルート)とフロントエンドを1つのプロジェクトにまとめられるから |
| TypeScript | 言語 | 型があるとClaude Codeの生成コードが安定するから |
| Tailwind CSS | スタイリング | クラス名を書くだけでデザインできるから |
| cheerio | HTMLパーサー | ユーザーのURLからHTMLを取得・解析するため |
| Vercel | ホスティング | Next.jsとの相性が良く、無料枠で運用できるから |
診断ツールにはサーバー側の処理が必要です。 ユーザーが入力したURLにアクセスしてHTMLを取得する処理は、 ブラウザ側ではCORSという制約があってできません。 Next.jsのAPIルートならこれを簡単に解決できるのが決め手でした。
cheerioはNode.js用のHTMLパーサーで、 取得したHTMLの中から「プライバシーポリシーへのリンクがあるか」 「メタディスクリプションが設定されているか」を効率的にチェックできます。
開発中につまづいたポイント
① CORSエラーで画面が真っ白になった
最初はフロントエンド側で 直接ユーザーのURLにfetchしていました。
結果——CORSエラー。 ブラウザが外部サイトへの直接アクセスをブロックしてしまい、 「URLを入力しても何も表示されない」という最悪の状態に。
解決策: Next.jsのAPIルート(/api/diagnose)を作り、 サーバー側でHTMLを取得する構成に変更しました。 フロントエンドはAPIルートだけを呼び出すのでCORSの問題が発生しません。
これはClaude Codeに相談してすぐに原因と解決策がわかりました。 一人で悩んでいたら数時間かかっていたと思います。
② HTMLの構造がサイトによってバラバラ
「プライバシーポリシーページがあるか」を判定するために、 ナビゲーションやフッターのリンクをcheerioで探す処理を書きました。
でも、サイトによってHTMLの構造が全然違います。 あるサイトは<nav>タグの中、別のサイトは<footer>の中、 さらに別のサイトは<div class="menu">の中にリンクがある。
解決策: 特定のHTML構造に依存せず、 ページ全体のリンクテキストとURLを 全部取得してキーワードで判定する方式に変えました。
「privacy」「プライバシー」「個人情報」 といったキーワードを含むリンクがあれば 「プライバシーポリシーあり」と判定します。
完璧ではありませんが、 8割以上のサイトで正しく判定できるようになりました。
③ Vercelの無料枠でタイムアウトする
診断処理は外部サイトのHTMLを取得するため、レスポンスが遅いです。
Vercelの無料枠ではサーバーレス関数のタイムアウトが10秒。 表示速度が遅いサイトを診断するとタイムアウトしてしまいました。
解決策: HTMLの取得にタイムアウト設定(5秒)を追加し、 取得できなかった項目は「チェックできませんでした」と表示する仕様にしました。
全項目を完璧にチェックすることより、 ユーザーを待たせないことを優先した判断です。
完成したツールの紹介
使い方は3ステップ
- AdSense合格診断ツールにアクセス
- 診断したいブログのURLを入力
- 「診断する」ボタンを押す
たった10秒で診断結果が表示されます。
診断結果の見方
10項目それぞれに対して、 合格(◎)/ 要改善(△)/ 不合格(✕) の3段階で判定されます。
さらに、不合格・要改善の項目には 具体的な改善ヒントが表示されます。
たとえば「プライバシーポリシーが見つかりません」と判定された場合—— 「固定ページでプライバシーポリシーを作成し、 フッターにリンクを設置しましょう」 という次にやるべきことが表示されます。

「何がダメかわからない」という 僕自身が一番苦しかった部分を解決するツールです。
公開してみた反応
X(Twitter)で告知した結果
ツールが完成した日にX(Twitter)で告知ポストを投稿しました。
| 指標 | 数値 |
|---|---|
| インプレッション | 540 |
| ツールへのPV | 55 |
| いいね | 8 |
インプレッション540に対してPV55。 約10%の人がリンクをクリックしてくれました。 フォロワーが少ない段階でこの反応をもらえたのは嬉しかったです。
翌日には改善ヒントも追加したことで、診断後にすぐ改善することができるような設計にしました。
「作って公開する」ことの価値
正直、ツールの完成度は プロのエンジニアが作ったものには遠く及びません。
でも「公開した」という事実が ポートフォリオとしての価値を生みました。
「AdSenseに落ちた→悔しい→ツールを作った」 このストーリーが、ブログのコンテンツにもなっています(この記事がそうです)。
まとめ:学生でもWebツールは作れる
AdSense合格診断ツールの開発を振り返ります。
| フェーズ | やったこと | 期間 |
|---|---|---|
| 設計 | 審査基準リサーチ → 10項目に整理 | 1時間 |
| 開発 | Next.js + cheerioで実装 | 1時間 |
| 公開 | Vercelにデプロイ → Xで告知 | 1時間 |
合計約3時間で、アイデアから公開まで完了しました。
プログラミング経験が浅くても、 Claude Codeを活用すれば自分のアイデアを形にできます。
大事なのは
「自分が困っていること」から始めること!
自分が本当に欲しいツールは、 同じ悩みを持つ誰かにとっても価値があります。
・関連記事



コメントを残す