採点の仕組み — 23 項目と、項目ごとに重みが違う理由

100 点満点のスコアは主張です。そして、その主張はたいてい検証できません。裏づけとなる方法も、バージョン番号もなく、後から見て変わったのが自分のサイトなのか採点側なのかを判断する手がかりもない数字が出てくるだけです。

私たちのスコアは、重み付けされた 5 つの次元にまたがる 23 の検査項目でできています。すべて 1 つのファイル、packages/engine/src/scorer.js に入っています。ここでは各部分が何を測り、いくら分の価値があり、そして何を教えてくれないのかを書きます。

5 つの次元

アクセシビリティ — 30%、3 項目。 そもそも機械がそのページを読めるのか。JavaScript なしで本文が存在するか、主要な本文が HTML の先頭近くから始まるか、ページ全体を取得できる程度の大きさか。いちばん重い次元です。クローラーが受け取るのが空の殻なら、ほかは全部飾りだからです。

AI からの発見しやすさ — 25%、6 項目。 AI クライアントが入れるか、入ってから道に迷わないか。robots.txt があるか、AI 検索ボットを許可しているか、サイトマップがあるか、Accept: text/markdown に応答するか、llms.txt があるか、Content-Signal を宣言しているか。

構造化データ — 20%、5 項目。 Schema.org / JSON-LD、Open Graph、meta description、正規 URL、<html>lang。そのページが何を語っているかではなく、そのページが何であるかを機械に伝える部分です。

セマンティック HTML — 15%、5 項目。 見出しの階層、<article><main>、セマンティック要素と div の比率、中身のある代替テキスト、div のネストの深さ。抽出処理はここを手がかりに、ページのどこが本文なのかを決めます。

コンテンツ効率 — 10%、4 項目。 HTML から Markdown にしたときのトークン削減率、本文とノイズの比率、ページ重量、インラインスタイル。送っているもののうちどれだけが中身かということです。

項目ごとに重みが違う理由

どの項目にも、重みと並んで証拠の強さが付いています。そして重みを決めているのはその強さのほうです。

  • 実証済み — モデル提供元自身が文書で述べている、または計測で示されている。23 項目のうち 3 つ。
  • もっともらしい — 抽出処理の仕組みと矛盾しない筋の通った推論だが、どの提供元も確認していない。23 項目のうち 13。
  • 推測 — 慣習として存在し、業界も信じているが、実際にボットが読んでいることを誰も示していない。23 項目のうち 7。

最終スコアまで通して計算すると、100 点のうち約 32 点が実証済みの項目、51 点がもっともらしい項目、17 点が推測の項目に載ります。

実証済みの 3 項目は、JavaScript なしで表示されること、robots.txt が AI 検索ボットを許可していること、ページに Schema.org のマークアップがあることです。1 つ目はこの分野で最も裏づけの強い信号で、主要な AI クローラーはどれも JavaScript を実行しません。2 つ目は盤面で唯一の本当の関門で、検索ボットを遮断すればそのアシスタントからは単に消えます。

反対の端にあるのが llms.txt と Content-Signal です。非常に多くのドメインが配信していますが、読んでいると確認した提供元はなく、Google は llms.txt には何の効果もないと述べています。それでも採点には残しています。証拠がないことは、効果がないことの証拠ではないからです。ただし配点は、llms.txt がかつて持っていた次元内 20% ではなく、それぞれ 10% です。コンテンツ効率は最初から最後まで推測です。検索・取得のパイプラインはモデルが何かを見る前に Readability 方式の抽出をかけるので、すっきりした HTML が買えるものは業界が思っているより少ないはずです。

この重み直しがそのまま基準 v2 でした。v1 では「JavaScript なしで表示される」が最終スコアの 6% だったのに対し、どの提供元も一度も言及していないトークン削減が 10% を占めていました。盤面で最も裏づけの強い項目が、当て推量より軽かったわけです。

基準にはバージョン番号が付いている

スコアラーは RUBRIC_VERSION を公開していて、現在は 2 です。v1 は 2026 年 2 月の当初の重み、v2 は 2026 年 7 月の証拠にもとづく重み直しです。

この番号がないとスコアは再現できません。分析して 90 が出る。半年後にもう一度やると 85 が出る。サイトが劣化したのか、こちらがゴールポストを動かしたのか。どの物差しで測ったかを書いていない証明書は、誰にも検算できない数字です。

その間違いを、私たちは実際に出してしまいました。バージョンはスコアラーの中に存在し、結果オブジェクトには載っていたのに、データベースまで届いていなかったのです。おかげでリーダーボードは、同じ測り方かどうかも分からないままスコアを並べていました。v1 の行が v2 の行の上に、その比較に意味があるかのように並んでいたわけです。

マイグレーション 007_add_rubric_version_to_analyses.js がその列を追加し、既存の行すべての既定値を 1 にしました。この既定値は推測ではありません。既存の行はすべて v2 より前のものなので、1 は事実です。さらに (rubric_version, score) にインデックスを張り、順位付けを 1 つの基準に限定できるようにしました。難しかったのは順番です。v2 での最初の分析が書き込まれる前に入れる必要がありました。そうでなければ、新しい行が黙って v1 を名乗ってしまいます。

あえて採点しないもの

サイトではなく 1 ページ。 1 回の分析が読むのは 1 つの URL です。robots.txt、サイトマップ、llms.txt はサイト全体のものですが、それ以外はそのページだけの話です。ほかが弱いサイトでも、よくできた 1 ページなら高い点が出ます。それで正しいのです。

モデルが実際にあなたをどう扱ったか。 ChatGPT があなたを引用したか、Claude があなたのページから答えを組み立てたか、そもそも言及されたのか。私たちには見えません。外からは誰にも見えません。どの項目も、あなたが配信しているものの性質であって、それがどう使われたかの性質ではありません。

クローラーが本当に入れたのかどうか。 AI ボットを名乗って探りを入れたときに、robots.txt は歓迎だと言っているのにエッジの何かが追い返してくる場合、検証済みのクローラーがどちらに出会うのかは分かりません。その項目は 60 点で頭打ちにしています。不合格ではなく、留保付きの合格です。何が起きたのかは詳細欄が説明します。「分からない」を数字で言うのは筋が悪いからです。

書いた内容の中身がいいかどうかは、ここでは一切見ていません。高いスコアは出発点としての良い見込みです。機械がそのページを読めて、それが何かを判別できるということ。引用されるという約束ではありません。

自分たちにも当てはめています

agentready.md は 94/100 です。この数字はテンプレートに手で書いたものではなく、データベースから読み出しています。自分のドメインに対する最新の分析であり、その証明書にリンクしています。数字が動けばページも動きます。分析がなければ、古い数字を出す代わりに何も出しません。

下がったこともあります。数か月のあいだ、うちのオリジンは /robots.txt404 を返していて、その裏で Cloudflare のマネージド Content Signals Policy がエッジで 200 と、私たちが書いた覚えのないファイルを返していました。私たち自身のスコアラーがその 200 を読んで合格を出していたのです。オリジンを直してマネージドのファイルを止めたところ、93 から 90 に下がりました。低いほうが正直な数字でした。あの 3 点は Cloudflare のファイルを測っていたのであって、うちのものではありませんでした。

スコアの組み立て方 · ほかのサイトの点数