サイト先生 ホームページ診療所

45の検査項目

何を見ていて、放置すると何が起きて、どう直すのか。配点まで含めてすべて公開します。

先に、これだけ

配点は SEO 35% / AI検索 35% / セキュリティ 30%。SEOとAI検索は同じ重さで診ます。

採点のしかた

合格=満点、注意=半分、要改善=0点として、カテゴリごとに加重平均し、上の配分で合算します。配点は項目ごとに違い、事業への影響が直接的なものほど重く置いています。各カテゴリの配点は、この下のグラフで全部公開しています。

判定できない項目は「対象外」として分母から外します(HTTPS未対応のサイトでHSTSを問うても意味がないため)。JavaScriptで中身を組み立てているサイトでは、本文量や見出しなどHTMLから読めない項目も対象外にします。ただし「JavaScriptなしで本文が読めるか」だけは例外で、対象外にせず要改善にします。AI検索にとっては、読めないこと自体が結論だからです。

診るのはトップページ1枚だけです。サイト全体の評価ではありませんが、トップページの作りは、たいていサイト全体の作りを映しています。

SEO / 検索で見つけてもらうための19項目

検索エンジンとSNSに、このページが何のページなのかを正しく伝えられているかを見ます。

  1. 検索エンジンへの表示設定 12
  2. タイトルタグ 10
  3. メタディスクリプション 9
  4. 大見出し(h1) 8
  5. スマホ表示対応 8
  6. 画像の代替テキスト 7
  7. SNSシェア設定(OGP) 6
  8. サイトマップ 6
  9. 本文の量 6
  10. 表示速度 6
  11. 正規URL(canonical) 5
  12. robots.txt 5
  13. 構造化データ 5
  14. 見出しの構造 4
  15. 言語指定 4
  16. 内部リンク 4
  17. Xカード設定 3
  18. 文字コード指定 3
  19. ファビコン 2
SEO(検索集客)の配点(19項目・重み合計 113)。棒が長いほど、落としたときの失点が大きい。

タイトルタグ

配点 10

検索結果の見出しが弱く、クリックされません。

くわしく

見ているもの:<title> の有無と文字数。

検索結果に青字で並ぶ見出しであり、ブラウザのタブに出る名前でもあります。ここが無いページは、検索結果に「何のページか分からない文字列」として並びます。30〜35文字が目安で、40文字を超えると末尾が切られます。

直し方:「会社名+事業内容+地域」で組むと、中小企業の場合はたいてい過不足がありません。

メタディスクリプション

配点 9

検索結果に説明文が出ず、上位でも選ばれません。

くわしく

見ているもの:<meta name="description"> の有無と文字数。

検索結果でタイトルの下に出る説明文です。未設定だと本文の一部が機械的に切り出されて表示されるため、意味の通らない文が出ることがあります。順位が上がってもクリックされない、という損の出方をします。

直し方:80〜120文字で、そのページを読むと何が分かるのかを書きます。

検索エンジンへの表示設定(noindex)

配点 12

付いていると、検索結果に一切出ません。

くわしく

見ているもの:<meta name="robots">noindex が入っていないか。

SEOの中で最も重い配点です。これが付いていると、他が満点でも検索結果に一切出ません。制作中に付けたまま公開してしまう事故が実際によくあります。「作ったのに検索で出てこない」の原因の筆頭です。

直し方:該当の1行を消すだけです。

大見出し(h1)

配点 8

ページの主題が、検索エンジンに伝わりません。

くわしく

見ているもの:<h1> の数と中身。

そのページの主題を宣言するタグです。無ければ主題が伝わらず、複数あれば主題が割れます。原則は1ページに1つです。

直し方:ロゴ画像を h1 にしている場合は、画像の alt に会社名を入れておきます。

見出しの構造

配点 4

文章の骨格が伝わらず、拾い読みされません。

くわしく

見ているもの:h1→h2→h3 の順序が飛んでいないか。

見出しは文章の目次です。h2 を飛ばして h4 が来るような構造は、検索エンジンにも読み上げソフトにも骨格が伝わりません。文字の大きさを変えたいだけで見出しレベルを選んでいると、ここで落ちます。

直し方:大きさはCSSで決め、レベルは意味で決めます。

画像の代替テキスト(alt)

配点 7

画像検索と読み上げソフトから、中身が見えません。

くわしく

見ているもの:<img> のうち alt が空・未設定のものの割合。

画像に添える説明文です。目の見えない方が読み上げソフトで聞く文章であり、画像検索で拾われる手掛かりでもあります。施工写真や商品写真が多いサイトほど、ここを空にしている損は大きくなります。

直し方:装飾目的の画像は alt=""(空で明示)、内容のある画像は写っているものを短く書きます。

正規URL(canonical)

配点 5

同じページが重複扱いされ、評価が分散します。

くわしく

見ているもの:<link rel="canonical"> の有無。

www の有無、末尾スラッシュの有無、広告用のパラメータ付きURL——同じページに複数の入口があると、検索エンジンから見て評価が分散します。canonical は「正式なURLはこれです」と1つに寄せる宣言です。

直し方:各ページの head に、そのページの正式URLを絶対URLで1行書きます。

SNSシェア設定(OGP)

配点 6

SNSで共有されても、画像もタイトルも出ません。

くわしく

見ているもの:og:title / og:description / og:image の3つ。

FacebookやLINEで共有されたときに出るカードの中身です。特に og:image が無いと、画像の無い地味なリンクとして流れ、クリックされません。せっかく紹介してもらった機会をそこで落とします。

直し方:1200×630ピクセルの画像を1枚用意します。全ページ共通の1枚でも、無いよりはるかに効きます。

Xカード設定

配点 3

Xでの見え方が、小さなカードになります。

くわしく

見ているもの:<meta name="twitter:card"> の有無。

X(旧Twitter)で共有されたときのカードの型です。summary_large_image を指定すると大きな画像付きで表示され、指定が無いと小さなカードになります。

直し方:1行足すだけです。画像はOGPのものが流用されます。

言語指定

配点 4

何語のページか伝わらず、読み上げも翻訳もぶれます。

くわしく

見ているもの:<html lang="…"> の有無。

このページが何語で書かれているかの宣言です。読み上げソフトの発音、ブラウザの翻訳提案、検索エンジンの言語判定に使われます。

直し方:日本語のサイトなら <html lang="ja"> です。

スマホ表示対応(viewport)

配点 8

スマホで、文字が読めない大きさになります。

くわしく

見ているもの:<meta name="viewport"> の有無。

これが無いと、スマホでPC用の画面が縮小表示され、文字が読めない大きさになります。中小企業のサイトは訪問者の過半がスマホです。検索順位の評価もスマホ表示が基準になっています。

直し方:1行入れたうえで、実機で崩れていないかを必ず見ます。

文字コード指定

配点 3

環境によっては、日本語が文字化けします。

くわしく

見ているもの:<meta charset> または応答ヘッダでの指定。

指定が無いと、環境によっては日本語が文字化けします。今どき滅多に起きませんが、起きたときの被害は「読めない」なので致命的です。

直し方:head の先頭に <meta charset="utf-8"> を置きます。

robots.txt

配点 5

クロールの指示とサイトマップの場所を伝えられません。

くわしく

見ているもの:/robots.txt の有無、全面拒否になっていないか、Sitemap の行があるか。

検索エンジンに対する交通整理のファイルです。無くても致命傷ではありませんが、Disallow: / でサイト全体を拒否したまま公開しているケースが実際にあります。その場合は検索結果から完全に消えます。

直し方:作ったうえで Sitemap: の行にサイトマップの場所を書いておきます。

サイトマップ(sitemap.xml)

配点 6

新しいページが見つかるまで、時間がかかります。

くわしく

見ているもの:/sitemap.xml が取得でき、中身が正しい形式か。

ページの一覧を検索エンジンに渡すファイルです。無くてもリンクをたどって発見されますが、新しいページが見つかるまでの時間が延びます。更新の多いサイトほど差が出ます。

直し方:1ページのサイトでも作る価値があります。手書きでも構いません。

構造化データ(JSON-LD)

配点 5

会社情報を、検索結果にもAIにも出せません。

くわしく

見ているもの:JSON-LD の有無と、壊れていないか。

会社名・所在地・電話番号・営業時間などを、機械が誤解しない形で書いておく仕組みです。検索結果のリッチ表示に使われるだけでなく、生成AIに事業内容を正しく読み取らせる手掛かりにもなります。これから効いてくる項目です。

直し方:まず Organization(または LocalBusiness)を1つ書きます。JSONの構文エラーがあると読み取られないので、必ず検証してください。

本文の量

配点 6

書いていないことは、検索されようがありません。

くわしく

見ているもの:タグを除いた本文の文字数。目安は1,000文字以上。

文字数そのものが順位を決めるわけではありません。ただ、書かれていないことは検索されようがない、というだけの話です。写真とキャッチコピーだけで作られたページは、検索エンジンから見ると「ほぼ空白」です。

直し方:料金、対応エリア、よくある質問、断っている仕事——問い合わせ前に聞かれることを書けば、量は自然に増えます。

ファビコン

配点 2

タブとブックマークで、無地のアイコンになります。

くわしく

見ているもの:<link rel="icon"> の有無。

タブとブックマークに出る小さなアイコンです。配点は最軽量ですが、無いと既定の無地アイコンになり、タブを何枚も開く人の中で見つけてもらえません。

直し方:32×32のPNGを1枚置きます。

表示速度

配点 6

読まれる前に閉じられます。順位にも効きます。

くわしく

見ているもの:HTMLが返るまでの時間と、HTMLそのものの重さ。目安は1秒未満・100KB前後。

遅いページは、読まれる前に閉じられます。順位にも効きます。ここで測っているのはHTMLの応答だけで、画像の読み込みやJavaScriptの実行までは含みません。実際の体感速度はこれより遅くなります。

直し方:まずは重い画像の圧縮からです。厳密に測るなら PageSpeed Insights を併用してください。

LLMO・AIO / AIに引用されるための10項目

ChatGPT・Gemini・Perplexity・Claude が答えを書くとき、このサイトを情報源として選び、引用できるかを見ます。SEOが「一覧に並ぶための条件」なら、こちらは「答えの中に入るための条件」です。

配点の重心は前半2つ、「そもそも読みに来られるか」「読んで文字があるか」に置いています。ここが閉じていると、あとの8項目をいくら整えても届きません。

  1. AIクローラーの許可 12
  2. JavaScriptなしで本文が読めるか 12
  3. 事業者の身元 10
  4. 質問に答える形になっているか 9
  5. 所在地・連絡先の明示 8
  6. 更新日の明示 8
  7. 引用しやすい構造 7
  8. 書き手の明示 7
  9. llms.txt 6
  10. 他サービスとの同一性 6
LLMO・AIO(AI検索)の配点(10項目・重み合計 85)。棒が長いほど、落としたときの失点が大きい。

AIクローラーの許可

配点 12

閉じていると、AIの答えに一切載りません。

くわしく

見ているもの:robots.txt が GPTBot・OAI-SearchBot・ChatGPT-User・ClaudeBot・PerplexityBot・Google-Extended を拒否していないか。

45項目のなかで最も重い配点です。ここが閉じていると、残る44項目が満点でもAIの答えには載りません。厄介なのは、良かれと思って入れた「AIに学習させない設定」が、そのまま「AIの検索結果に出ない設定」を兼ねてしまう点です。学習と引用は本来別の話ですが、robots.txt では同じ1行で両方止まります。

直し方:学習はされたくないが検索には出たい、という判断はあり得ます。その場合でも、学習用のクローラーと検索用のクローラー(OAI-SearchBot など)は分けて扱ってください。意図してすべて閉じているなら、この項目は無視して構いません。

JavaScriptなしで本文が読めるか

配点 12

AIから見ると、このページは白紙です。

くわしく

見ているもの:HTMLソースだけで本文が読み取れるか(JavaScriptで組み立てていないか)。

GoogleはJavaScriptを実行してページを読みます。しかしAI検索のクローラーの多くは実行しません。取得したHTMLに文字が入っていなければ、そこで終わりです。見た目は立派なのに、AIから見ると白紙——という状態が実際に起こります。ノーコードのサイトビルダーや、SPAで作られたサイトで出やすい落とし方です。

直し方:ページの中身をサーバー側で組み立てて返す(SSR・静的書き出し)のが根本策です。すぐに無理なら、せめてトップページと主要ページだけでもHTMLに本文を持たせてください。

事業者の身元

配点 10

AIが「どこの誰の情報か」を確定できません。

くわしく

見ているもの:構造化データに Organization / LocalBusiness / Person が定義されているか。

AIは「この情報は誰のものか」を確定できないと、引用をためらいます。社名を本文から推測することはできますが、同じ社名の別会社と取り違える危険が残ります。機械が読める形で名乗っておくと、その曖昧さが消えます。

直し方:JSON-LD で Organization(店舗なら LocalBusiness)を1つ書き、name・url・address・telephone を入れます。

質問に答える形になっているか

配点 9

質問と噛み合わず、答えとして拾われません。

くわしく

見ているもの:FAQの構造化データ、または問いの形の見出し・定義リスト。

AI検索は利用者の質問に対して答えを組み立てます。したがって、すでに問いと答えの形で書かれている文章が最も引用されやすくなります。会社案内の言葉でどれだけ立派に書いても、質問と噛み合わなければ拾われません。

直し方:お客さんに実際によく聞かれることを、聞かれたままの言葉で見出しにして、その下に答えを書きます。「料金はいくらですか」「対応エリアはどこまでですか」で構いません。

所在地・連絡先の明示

配点 8

「◯◯市の△△業者」で、候補にすら挙がりません。

くわしく

見ているもの:住所と電話番号が、構造化データまたは本文から読み取れるか。

AIへの質問には「近くの」「◯◯市の」という地域の条件がよく付きます。所在地が読み取れないサイトは、その時点で候補から外れます。地域で商売をしている会社にとっては、これが一番惜しい落とし方です。

直し方:フッターに住所と電話番号をテキストで書きます(画像に焼き込むと読めません)。構造化データにも同じものを入れます。

更新日の明示

配点 8

日付のはっきりした情報源に負けます。

くわしく

見ているもの:構造化データの dateModified、meta の更新日時、<time>、sitemap の lastmod

AIは古い情報を避けます。日付が無ければ「いつのものか分からない情報」として、日付のはっきりした情報源に負けます。日付はあるが2年以上前で止まっている場合も、この診断では注意にします。

直し方:更新したら日付も更新する、という当たり前を機械可読にします。sitemap.xmllastmod だけでも効きます。

引用しやすい構造

配点 7

「ここが答えだ」と切り出してもらえません。

くわしく

見ているもの:見出し・箇条書き・表の数。

AIはページを丸ごと引用しません。「この見出しの下の、この箇条書き」という単位で切り出します。一続きの文章は、切り出す場所が決まらないぶん不利になります。

直し方:長い段落を見出しで割り、並列に言えることは箇条書きに、比べられるものは表にします。人が読むときにも読みやすくなります。

書き手の明示

配点 7

名前の出ている情報源より、低く扱われます。

くわしく

見ているもの:構造化データの author / Person、meta の author。

誰が言っているか分からない情報より、名前と肩書きのある情報のほうが信頼されます。人間の読み手でもAIでも同じです。

直し方:記事なら執筆者、会社案内なら代表者を構造化データで示します。可能なら経歴のページへ繋いでください。

llms.txt

配点 6

AIに読ませたい要点を、こちらから示せません。

くわしく

見ているもの:/llms.txt が置かれているか。

AIに読ませたい要点と主要ページを、1枚のテキストにまとめて置く新しい慣習です。robots.txt が「読んでよい・いけない」を伝えるのに対し、llms.txt は「読むなら、ここを読んでほしい」を伝えます。まだ標準ではなく、対応しているAIも限られます。それでも配点を与えているのは、置くコストがほぼゼロだからです。

直し方:サイトの1行説明と、主要ページのリンク+短い説明を並べたテキストを /llms.txt に置きます。

他サービスとの同一性

配点 6

同じ社名の別会社と、混同されます。

くわしく

見ているもの:構造化データの sameAs

同じ社名・似た社名の会社は、どこにでもあります。sameAs でSNSや所属団体、地図サービスのページと結び付けておくと、AIは「これらは同じ事業者だ」と確定できます。無いと、他社の実績が自社に混ざったり、その逆が起きたりします。

直し方:JSON-LD の OrganizationsameAs を配列で足し、公式SNS・Googleビジネスプロフィール・所属団体のURLを並べます。

セキュリティ / 訪問者を守るための16項目

通信が守られているか、改ざんや盗み見に対する備えがあるかを、応答ヘッダとTLSの情報から見ます。すべて受動診断です。攻撃的な検査は一切行いません。

  1. HTTPS(通信の暗号化) 12
  2. HTTPからの自動転送 10
  3. SSL証明書 10
  4. HSTS(常時HTTPS強制) 8
  5. CSP(コンテンツ読込制限) 8
  6. 混在コンテンツ 8
  7. Cookieの安全設定 7
  8. クリックジャッキング対策 6
  9. MIMEタイプ推測の禁止 5
  10. TLSのバージョン 5
  11. リファラ送信制御 4
  12. サーバー情報の露出 4
  13. CMSバージョンの露出 4
  14. 外部スクリプトの改ざん検知 4
  15. 別タブリンクの安全設定 4
  16. 端末機能の利用制限 3
セキュリティ(安全性)の配点(16項目・重み合計 102)。棒が長いほど、落としたときの失点が大きい。

HTTPS(通信の暗号化)

配点 12

ブラウザに「保護されていない通信」と警告が出ます。

くわしく

見ているもの:https:// で配信されているか。

セキュリティ側で最も重い配点です。HTTPのままだと、ブラウザのアドレス欄に「保護されていない通信」と警告が出ます。問い合わせフォームに入力された名前・電話番号・相談内容が、暗号化されずに流れます。

直し方:今は無料の証明書(Let's Encrypt)が使えます。多くのレンタルサーバーは管理画面のボタン1つで済みます。

HTTPからの自動転送

配点 10

暗号化されない経路が、そのまま残ります。

くわしく

見ているもの:http:// でアクセスしたときHTTPSへ転送されるか。

HTTPS対応をしても、古い名刺やチラシに載ったHTTPのURLが生きたままだと、暗号化されない経路が残ります。両方が表示できる状態は、検索エンジンから見ても重複ページです。

直し方:301リダイレクトでHTTPSへ寄せます。

HSTS(常時HTTPS強制)

配点 8

HTTPSへ転送される前の一瞬を、突かれます。

くわしく

見ているもの:Strict-Transport-Security ヘッダと、その有効期間。

「このサイトへは今後必ずHTTPSで来い」とブラウザに記憶させる指示です。転送を設定していても、転送される前の一瞬を突く攻撃は成立します。それを塞ぎます。

直し方:max-age は180日(15552000)以上が推奨です。短いと注意判定になります。

CSP(コンテンツ読込制限)

配点 8

改ざんされても、ブラウザ側で止められません。

くわしく

見ているもの:Content-Security-Policy ヘッダの有無と、unsafe-inline が入っていないか。

「このページが読み込んでよいのはどこの何か」をブラウザに宣言する仕組みです。仮に改ざんで不正なスクリプトを埋め込まれても、宣言に無いものはブラウザが実行を拒みます。最後の砦です。

直し方:まず default-src 'self' から始めます。unsafe-inline を含めると防御効果が大きく落ちるため、この診断では注意判定になります。

MIMEタイプ推測の禁止

配点 5

アップロードされたファイルが実行される余地が残ります。

くわしく

見ているもの:X-Content-Type-Options: nosniff

ブラウザが「拡張子はこうだが中身はスクリプトらしい」と気を利かせて実行してしまう動作を止めます。利用者がファイルをアップロードできるサイトでは特に重要です。

直し方:ヘッダを1行足すだけで、副作用もほぼありません。

クリックジャッキング対策

配点 6

透明に重ねられ、誤操作を誘発されます。

くわしく

見ているもの:X-Frame-Options、または CSP の frame-ancestors

自分のサイトを他人のページへ透明で重ねられ、訪問者が見えないボタンを押させられる攻撃を防ぎます。会員機能や申込フォームがあるサイトでは実害に直結します。

直し方:SAMEORIGIN を指定します。外部に埋め込ませたいページがある場合だけ例外を切ります。

リファラ送信制御

配点 4

見ていたURLが、そのまま外部サイトに渡ります。

くわしく

見ているもの:Referrer-Policy ヘッダの有無。

外部サイトへ移動するとき、「どのURLから来たか」が相手に渡ります。会員向けページや検索結果のURLがそのまま外部に伝わることがあります。

直し方:strict-origin-when-cross-origin が無難な既定です。

端末機能の利用制限

配点 3

カメラ・マイク・位置情報の可否を明示できていません。

くわしく

見ているもの:Permissions-Policy(旧 Feature-Policy)の有無。

カメラ・マイク・位置情報を、このページとその中の埋め込みが使ってよいかを宣言します。使わないなら明示的に閉じておくのが安全です。

直し方:camera=(), microphone=(), geolocation=() から始めます。

サーバー情報の露出

配点 4

既知の穴を狙う相手に、手掛かりを与えます。

くわしく

見ているもの:Server / X-Powered-By にバージョン番号が出ていないか。

「Apache 2.4.x」「PHP 8.x」と番号まで見えていると、そのバージョンの既知の穴を狙う相手に手掛かりを与えます。それ自体が穴ではありませんが、隠すのは容易です。

直し方:サーバー設定で番号の出力を止めます。

CMSバージョンの露出

配点 4

未更新のまま放置していると、そこを狙われます。

くわしく

見ているもの:<meta name="generator"> にバージョン番号が入っていないか。

WordPressなどが自動で出力します。更新せずに放置しているサイトほど、番号が見えていることの意味が重くなります。番号を消すことより、更新することが本質です。

直し方:出力を止める設定を入れ、あわせて本体とプラグインを更新します。

混在コンテンツ

配点 8

ブラウザにブロックされ、表示が崩れます。

くわしく

見ているもの:HTTPSのページの中で http:// の画像やスクリプトを読んでいないか。

ブラウザにブロックされ、画像が出ない・レイアウトが崩れるという形で表に出ます。HTTPS化した直後のサイトでよく残ります。

直し方:該当箇所を https:// に書き換えます。

SSL証明書

配点 10

期限が切れると、真っ赤な警告画面になります。

くわしく

見ているもの:証明書が正しく検証できるか、残り日数、発行元。

期限が切れると、サイトは「開けない」のではなく真っ赤な警告画面が出ます。訪問者から見れば、危険なサイトになったのと同じことです。残り30日を切ると要改善として警告します。

直し方:自動更新になっているかを確認します。自動更新のつもりで止まっていた、が最も多い失敗です。

TLSのバージョン

配点 5

新しいブラウザから、接続できなくなります。

くわしく

見ているもの:実際に接続できたTLSのバージョン。

TLS 1.0 / 1.1 はすでに非推奨で、新しいブラウザから接続を拒まれるようになります。古いサーバーを使い続けているサイトで出ます。

直し方:TLS 1.2 以上を有効にします。多くはサーバー側の設定変更で済みます。

外部スクリプトの改ざん検知(SRI)

配点 4

配布元が乗っ取られると、そのまま実行されます。

くわしく

見ているもの:外部ドメインの <script>integrity 属性があるか。

他所から読み込んでいるJavaScriptは、配布元が乗っ取られればそのまま自分のサイトで実行されます。integrity は中身が変わったら実行を止める仕組みです。外部スクリプトが無いページは対象外になります。

直し方:配布元が提示するハッシュ値を属性に書きます。頻繁に更新されるタグでは運用が難しいこともあり、その場合は読み込み自体の要否を見直します。

別タブリンクの安全設定

配点 4

リンク先から、元のタブを書き換えられます。

くわしく

見ているもの:target="_blank" のリンクに rel="noopener" があるか。

別タブで開いた先のページから、元のタブを別のURLへ書き換えられる余地があります。偽のログイン画面へ差し替える手口に使われます。

直し方:rel="noopener noreferrer" を付けます。新しいブラウザは既定で安全側ですが、明示しておくに越したことはありません。

ここに無いもの

サイト先生はサイトを閲覧するだけです。ログインの試行、管理画面やバックアップファイルの探索、負荷をかける検査は行いません。

診ていないもの/診られないもの

実際の表示速度(Core Web Vitals)、リンク切れ、文章の質、デザインの良し悪しは診ていません。AI検索についても、実際にChatGPTに聞いて出てくるかどうかまでは確かめられません(同じ質問でも答えが毎回変わるためです)。ここで見ているのは、引用される可能性を自分から潰していないかまでです。

設定ファイルの探索まで踏み込めば重大な情報漏洩をもっと拾えますが、許可のない他社サイトに対して「穴を探しに行く」行為になるため、入れていません。45項目に合格したから良いサイト、という意味でもありません。

自分のサイトを診てもらう → 診療所について →