2022年に遡ると、私はイギリスの不動産アグリゲーターのためのプログラマティックサイトを立ち上げました。Google Sheetsのデータソースから約11,000ページを生成し、すべてをライブにプッシュしてサイトマップを送信し、待ちました。6週間後、Googleは約4,200ページをインデックスしていました。ランキングはばらばらで、薄く、恥ずかしいものでした。クライアントは私が明確な答えを持っていない質問をし始めました。
私は古典的な間違いを犯していました。「生成」と「公開」を同じステップとして扱っていたのです。それらは異なります。
そのプロジェクトが、私が現在SeahawkのすべてのプログラマティックSEOビルドに「品質ゲート」と呼んでいるものを構築し始めた理由です。今日、私が実行するあらゆるpSEOプロジェクトで、ページの約15%をインデックスから保留しています。データについてどれほど自信を持っているかに関わらず。悪いページへの罰としてではなく。良いページを保護するフィルターとして。
それが実際にどのように見えるか、そしてプログラマティックサイトを構築しているほとんどの人がこのステップをスキップすることでランキングの可能性をたくさん残しているのではないかと思う理由をご紹介します。
---
プログラマティック文脈における「Quality Gate」の実際の意味
Quality Gateはページがインデックスディレクティブを受け取る前にクリアする必要があるしきい値です。シンプルな考え方です。実行段階でこそ面白くなります。index directive. Simple idea. The execution is where it gets interesting.
標準的な編集系サイトでは、品質管理は編集的なものです。誰かが記事を読んで、イエスかノーか判断します。プログラマティックSEOではデータベースから1日に500ページ生成する可能性があります。誰もそれらを読んでいません。だからゲートは機械的である必要があり、公開後ではなく公開前に設定される必要があります。Google がサイトマップの半分を無視していることに気づいた後ではなく。before you publish, not after you notice Google ignoring half your sitemap.
私が使うゲートはほぼ常に以下の組み合わせです。
- コンテンツ密度スコア。単純なワード数は粗すぎます。テンプレートごとに入力されたユニークなデータフィールドを測定します。ページテンプレートに14個のデータフィールドがあり、該当行が6個だけ埋められている場合、それは不合格です。 Word count alone is too blunt. I measure unique data fields populated per template. If a page template has 14 data fields and a given row only fills 6, it fails.
- 重複リスクスコア。レンダリングされた本文テキストに対して迅速なコサイン類似度パスを実行します。同じカテゴリ内の他のページに対して0.82を超える類似度スコアを示すページは保留されます。 I run a quick cosine similarity pass on the rendered body text. Pages that score above 0.82 similarity to any other page in the same category get held back.
- 検索インテント信号。このページがターゲットとするキーワードに測定可能な検索ボリュームがあるか。AhrefsまたはSEMrushが主要キーワードとすべてのセカンダリバリエーションでフラットゼロを示す場合、そのページはホールディングプールに移動します。 Does the keyword this page targets have any measurable search volume? If Ahrefs or SEMrush shows a flat zero for the primary and all secondary variants, the page goes into a holding pool.
- ボイラープレートを削除した後、目に見える本文テキストが320語未満でレンダリングされるページは自動的にフラグが立てられます。 Pages that render under 320 words of visible body text after stripping boilerplate get flagged automatically.
これはいずれも革新的なものではありません。実際にそれを強制する規律こそが鍵です。
---
なぜすべてをインデックスすることは実害をもたらすのか
反論があることは知っています。「Googleは薄いページを無視するだけだ。何が害になるのか?」
害はクロール予算です。そしてクロール予算は、ほとんどの人が認めるより大規模なプログラマティックサイトではるかに重要です。
Googleの自社クローリングドキュメントはこの点について非常に明確です。Googlebotはサイトのクロール健全性シグナルに基づいてクロール容量を割り当てます。サーバーが定期的に薄い低価値ページを返している場合、Googlebotは引き下がります。サイトに費やす時間が減ります。高品質ページのクロール頻度が低下します。 is pretty direct about this: Googlebot allocates crawl capacity based on a site's crawl health signals. If your server is regularly returning thin, low-value pages, Googlebot pulls back. It spends less time on your site. Your high-quality pages get crawled less frequently.
2023年初期にSeahawk Mediaで構築したSaaSディレクトリでこれがリアルタイムで起きるのを見ました。約9,000ページ、すべてがインデックスされ、そのうち約2,100ページは本当に弱い(データが少なく、ほぼ重複した説明、バックリンク価値がゼロ)。GoogleのSearch Consoleでは、8週間で約40%低下したクロール率を示していました。2,100ページをnoindexに移動してサイトマップを更新して送信した直後、クロール率は3週間以内に回復しました。4ページ目または5ページ目で停滞していたいくつかのページは、修正から6週間以内にトップ15の結果に入りました。noindex and submitted an updated sitemap, crawl rate recovered within three weeks. Several pages that had been stuck on page 4 or 5 moved into the top 15 results within six weeks of the fix.
これは偶然ではありません。クロール予算を浪費するのをやめると、本来の働きをするクロール予算です。
---
15%のホールドバックを実際にどう構造化するか
15%という数字は恣意的ではありませんが、神聖でもありません。過去数年間にわたって、おおよそ60のプログラマティックプロジェクトで品質ゲートを実行した後に、私が収束した数字です。プロジェクトによっては8%ホールドバックするものもあります。昨年のあるeコマースのpSEOビルドは、サプライヤーデータが本当にまばらだったため、初期ローンチで23%ホールドバックしました。
開始から終了までの大体のプロセスは以下の通りです。
- 最初に完全なデータセットを構築する。最終的に公開するすべてのページを生成する。データの段階で事前フィルタリングを避けられるなら避ける。 Generate every page you intend to eventually publish. Don't pre-filter at the data stage if you can avoid it.
- ゲートチェックはレンダー時に実行する。レンダリングされたHTML(生のテンプレートではなく)を呼び出し、単語数、フィールド充填率、SentenceTransformersを使った基本的な類似度ハッシュをチェックするPythonスクリプトを使う。ページあたり約4秒かかる。 I use a Python script that calls the rendered HTML (not the raw template) and checks word count, field population rate, and a basic similarity hash using SentenceTransformers. Takes about 4 seconds per page.
- 各ページにステータスフィールドをタグ付けする。index、hold、またはreviewのいずれか。holdは今のところnoindexを意味する。reviewは人間(通常は私、またはSeahawkチームの誰か)が48時間以内に確認する必要があることを意味する。
index,hold, orreview.Holdmeansnoindexfor now.Reviewmeans a human (usually me, or someone on the Seahawk team) needs to look at it within 48 hours. - すべてを公開するが、テンプレートレベルでディレクティブを制御する。すべてのページが存在する。URLを見つけた人なら誰でもアクセスできる。robots メタタグで緑信号をもらうのはインデックス対象のページだけ。これが重要だ。他のチャネルからリンクやトラフィックを得る可能性のあるページで404を出したくない。 All pages exist. All pages are accessible if someone finds the URL. Only
indexpages get the green light in the robots meta tag. This matters: you don't want 404s on pages that might earn links or traffic from other channels. - holdプールを月次で再評価する。データが改善されるにつれ、ページは段階を進む。データ充実パスを実行してスパースなフィールドを埋めることもあり、以前はholdだったページが自動的にゲートをクリアすることもある。 As data improves, pages graduate. Sometimes I push a data enrichment pass to fill sparse fields, and a previously held page clears the gate automatically.
最後のステップは人々がスキップするもの。ページをnoindexにして放置する。これらのページは、基盤となるデータが改善されれば、ランキング資産になる可能性がある。放棄するな。
---
重い処理を担当するツール
ツール選びで気難しくはない。スタックにクリーンに統合できれば何でもいい。
言及した類似度チェックについては、SentenceTransformersをローカルで実行すれば、約15,000ページまでのバッチで十分高速だ。それ以上のデータセットではPineconeをベクトルストアとして使い、近似最近傍クエリを実行してきた。これで比較時間を劇的に短縮できる。Pinecone as a vector store to run approximate nearest-neighbour queries, which cuts the comparison time dramatically.
ローンチ後のモニタリングでは、Search Consoleのプロパティをインデックス済みプールと全URLインベントリを追跡するように分割しています。Screaming Frogをスケジュール実行させ(DigitalOceanドロップレット上でcronジョブ経由でCLI版を使用)し、週ごとにどのページがステータス変更したかの差分を取得しています。故意にnoindexを設定したページがなぜかインデックスされてしまった場合は、48時間以内に検知したいのです。
Ahrefs Site Auditもワークフローに組み込んでいます。主にカニバリゼーションシグナルを検出するためです。インデックスするとマークした2つのページが同じキーワードクラスターで競合していれば、それは見落とした検証の失敗です。よくあることです。auditがそれを検出します。index are competing for the same keyword cluster, that's a gate failure I missed. It happens. The audit catches it.
---
一般的な異論(とそれらがなぜほとんど成立しないのか)
「ページを保留することはトラフィック成長を遅延させないか?」
非常に短期的には限定的です。しかし850の本当に質の高いページに向けられたクローリング予算は、品質が混在した1,000ページに広げられた予算よりもそれらを高速でインデックスします。複数のプロジェクトで測定しています。選別性を高めると、ネットトラフィック曲線はより急勾配になります。
「Googleはどのページが優れているかを判断できるほど十分にスマートだ。」
時にそうです。ただし確実ではありません。特に新規ドメインや権威性が限定的なサイトではそうではありません。クライアントのオーガニックチャネルをGoogleの寛容性に賭けることはできません。
「これはパブリッシングパイプラインに複雑さを追加する。」
そうです。追加されます。パブリッシング一括処理の前に約20分間実行されるステージング確認です。それが複雑さです。それだけの価値があります。
Seahawkはフィンテック比較プロジェクトに取り組んでいましたが、クライアントはゲートステップの追加に強く反発しました。初日からすべてをインデックスしたいということでした。最初の2ヶ月間は彼らのやり方で進めました。3ヶ月目に、Search Consoleのインプレッション曲線が横ばいになったのを見て、彼らはゲートの後付けに同意しました。noindexロジックの後付けに2週間かかり、その後回復を見るのにさらに1ヶ月かかりました。おおよそ5ヶ月の複利効果を失いました。あのプロジェクトのことはよく考えます。
---
「ホールド」から卒業する準備ができたページとは何か
これを詳しく説明する価値があります。なぜなら、これはシステムの一度限りのフィルターではなく、持続可能にする部分だからです。
ホールドされたページは、元々失敗した同じゲートをクリアしたときに卒業します。さらに1つの追加チェックがあります。内部リンクエクイティです。サイト内の他のページからリンクされていないページは、コンテンツが改善されていても、依然としてゴーストのままです。ページをインデックスに含める前に、すでにパフォーマンスが出ている2つ以上のページからの内部リンクが必要です。plus one additional check: internal link equity. A page that nobody else on the site links to internally is still a ghost, even if its content has improved. Before I let a page into the index, it needs at least two internal links pointing to it from pages that are already performing.
これは好循環を生み出します。強いページはリンクを蓄積します。ホールドされたページはサイト構造に真に接続されるまで待機します。卒業するとき、Googlebotが実際にたどることができるコンテキストにスロットインします。
これを実践的に処理する方法:ページがコンテンツゲートをクリアしたら、内部リンク注入パスの簡単な実行を行います。最も関連性の高い10~15個のインデックス済みページを探し、完全一致または部分一致のアンカーテキストを使用してコンテキスト的なリンクを追加します。その後ページをインデックスに切り替えます。その後、鮮度に敏感なトピック(ほとんどのpSEOコンテンツはそうではないので、次のクロールサイクルを待つだけです)である場合は、Indexing APIを介して送信します。index. Then I submit it via the Indexing API if it's a freshness-sensitive topic (and for most pSEO content, it isn't, so I just wait for the next crawl cycle).
---
ファセットページとパラメータトラップに関する注記
独自の言及に値する特定のシナリオがあります。ファセットナビゲーションです。pSEOサイトがURLパラメータを介してページを生成する場合(/listings?city=london&bedrooms=2など)、ゲートロジックはコンテンツ品質に到達する前にパラメータの重複排除を考慮する必要があります。/listings?city=london&bedrooms=2), the gate logic needs to account for parameter deduplication before you even get to content quality.
ファセット化されたパラメータページは、プログラマティックサイトがクロールバジェットを最も攻撃的に消費する場所です。意味のある違いのないパラメータバリエーションに対して、rel=canonicalと明示的なnoindexを組み合わせて使用しています。このgGoogleサーチセントラルのURLパラメータに関するガイダンスが、ここでの標準的なリファレンスです(ダジャレではありません)。ファセット化されたpSEO構造を構築する前に、注意深く読んでください。rel=canonical and explicit noindex on parameter variants that don't represent meaningfully distinct content. The Google Search Central guidance on URL parameters is the canonical reference here (no pun intended). Read it carefully before you build any faceted pSEO structure.
---
FAQ
ページの何パーセントを保持するかは、どのように判断しますか?
何かを公開する前に、完全なデータセットに対してコンテンツ密度監査を実行します。1つでもゲート基準に失敗する行のパーセンテージを数えます。それがあなたの開始時の保持レートです。クリーンなデータセットであれば、6%程度と低いこともあります。スクレイプされたデータやサードパーティのソースデータの場合、定期的に20~25%になります。私が引用している15%という数字は、比較的クリーンなデータを持つプロジェクト全体の平均値に過ぎません。
ページをnoindexにすると、それが獲得する可能性があるリンクが無駄になりますか?
いいえ。ページは依然として存在し、アウトバウンドリンクを通じてPageRankを渡します。noindex指令は、そのページを検索結果に含めないようGoogleに指示しますが、ページへのリンクからリンク的価値を奪いません。これらのリンクはドメインに対してカウントされます。ページは単にSERPで競争していないだけです。noindex directive tells Google not to include the page in search results, but it doesn't strip link equity from links to the page. Those links still count toward the domain. The page just isn't competing in SERPs.
品質ゲートが実装する価値がある最小サイトサイズは?
正直なところ、プログラマティックに生成されたページが300ページ以上であればどこでも価値があります。それ以下の場合は、ページを手動でレビューできるでしょう。300ページ以上であれば、自動化は最初の月以内に元が取れます。
保持ページは削除すべきですか、それともnoindexにするだけですか?
noindex は削除ではなく。削除されたページは 404 を返し、Googlebot にそのページが存在しなかったことを伝えます。noindex されたページは後で昇格でき、その間にリンクを獲得でき、直接トラフィックを受け入れることができます。削除は最後の手段であり、根本的なデータが本当に修正不可能なページのために予約されています。
これは英語以外の pSEO サイトでも機能しますか?
ゲート ロジックは言語に依存しません。類似性チェックはフランス語、ドイツ語、スペイン語でも問題なく機能します。フランス語の不動産 pSEO プロジェクトで実行しましたが、コサイン類似度スコアは英語コンテンツと同じくらい信頼できました。変わるのはしきい値の調整であり、言語によっては構造的に本質的により反復的だからです。
---
プログラマティック SEO は本質的には SEO の衣を被ったデータ品質の問題です。成功しているサイトはもっともページを生成したサイトではありません。どのページが表示される価値があるかについて厳格だったサイトです。15% を引き留めることは悲観主義ではありません。あなたが実際に構築したものの正直な会計です。
