2022 habe ich eine programmatische Website für einen britischen Immobilienaggregator gestartet. Wir generierten etwa 11.000 Seiten aus einer Google Sheets-Datenquelle, stellten sie alle live und reichten eine Sitemap ein. Sechs Wochen später hatte Google etwa 4.200 davon indexiert. Die Rankings waren verstreut, dünn und beschämend. Der Kunde begann, Fragen zu stellen, auf die ich keine sauberen Antworten hatte.
Ich hatte den klassischen Fehler gemacht. Ich behandelte „generieren" und „veröffentlichen" als denselben Schritt. Das sind sie nicht.
Dieses Projekt war der Grund, warum ich angefangen habe, das zu bauen, was ich jetzt „Quality Gates" nenne, in jeden programmatischen SEO-Build bei Seahawk. Heute halte ich bei jedem pSEO-Projekt, das ich durchführe, ungefähr 15% der Seiten aus dem Index zurück – unabhängig davon, wie sicher ich mir über die Daten bin. Nicht als Strafe für schlechte Seiten. Als Filter, der die guten schützt.
Hier ist, wie das konkret aussieht, und warum ich denke, dass die meisten Menschen, die programmatische Websites bauen, viel Ranking-Potenzial verschenken, indem sie diesen Schritt überspringen.
---
Was „Quality Gate" überhaupt im programmatischen Kontext bedeutet
Ein Quality Gate ist ein Schwellwert, den eine Seite erfüllen muss, bevor sie eine Index-Direktive erhält. Einfache Idee. Die Umsetzung ist, wo es interessant wird.index directive. Simple idea. The execution is where it gets interesting.
Bei einer Standard-Redaktionsseite ist die Qualitätskontrolle redaktionell. Jemand liest den Text und sagt ja oder nein. Bei programmatischer SEO generierst du möglicherweise 500 Seiten pro Tag aus einer Datenbank. Niemand liest die. Also muss das Gate mechanisch sein, und es muss vor der Veröffentlichung konfiguriert werden, nicht nachdem du merkst, dass Google die Hälfte deiner Sitemap ignoriert.before you publish, not after you notice Google ignoring half your sitemap.
Die Gates, die ich nutze, sind fast immer eine Kombination aus:
- Content-Dichte-Score. Nur Wortanzahl ist zu grob. Ich messe gefüllte eindeutige Datenfelder pro Template. Wenn ein Seiten-Template 14 Datenfelder hat und eine bestimmte Zeile nur 6 füllt, fällt sie durch. 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.
- Duplikat-Risiko-Score. Ich führe einen schnellen Kosinus-Ähnlichkeits-Check am gerenderten Body-Text durch. Seiten, die über 0,82 Ähnlichkeit zu einer anderen Seite in derselben Kategorie erzielen, werden zurückgehalten. 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.
- Such-Intent-Signal. Hat das Keyword, das diese Seite anvisiert, ein messbares Suchvolumen? Wenn Ahrefs oder SEMrush für die primäre Variante und alle sekundären Varianten null anzeigen, geht die Seite in einen Holding-Pool. 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.
- Thin-Content-Flag. Seiten, die nach dem Entfernen von Boilerplate unter 320 Wörtern sichtbaren Body-Text rendern, werden automatisch gekennzeichnet. Pages that render under 320 words of visible body text after stripping boilerplate get flagged automatically.
Nichts davon ist revolutionär. Die Disziplin, es tatsächlich durchzusetzen, ist es.
---
Warum das Indexieren von allem aktiv schädlich ist
Ich kenne das Gegenargument. „Google wird die dünnen Seiten einfach ignorieren. Wo ist der Schaden?"
Der Schaden liegt beim Crawl-Budget. Und Crawl-Budget ist auf großen programmatischen Websites deutlich wichtiger, als die meisten Leute zugeben.
Googles eigene Crawling-Dokumentation ist ziemlich direkt dazu: Googlebot verteilt die Crawl-Kapazität basierend auf den Crawl-Health-Signalen einer Website. Wenn dein Server regelmäßig dünne, minderwertige Seiten zurückliefert, zieht sich Googlebot zurück. Es verbringt weniger Zeit auf deiner Website. Deine hochwertigen Seiten werden seltener gecrawlt. 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.
Ich habe das in Echtzeit auf einem SaaS-Verzeichnis beobachtet, das wir Anfang 2023 bei Seahawk gebaut haben. Etwa 9.000 Seiten, alle indexiert, ungefähr 2.100 davon waren wirklich schwach (spärliche Daten, nahezu doppelte Beschreibungen, null Backlink-Eigenkapital). Google Search Console zeigte eine Crawl-Rate, die über acht Wochen um etwa 40% gesunken war. In dem Moment, als wir 2.100 Seiten auf noindex setzten und eine aktualisierte Sitemap einreichten, erholte sich die Crawl-Rate innerhalb von drei Wochen. Mehrere Seiten, die auf Seite 4 oder 5 steckengeblieben waren, kamen innerhalb von sechs Wochen nach dem Fix in die Top 15 Ergebnisse.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.
Das ist kein Zufall. Das ist Crawl-Budget, das funktioniert, wie es sollte, wenn du es nicht länger verschwendest.
---
Wie ich die 15%-Reserve tatsächlich strukturiere
Die 15%-Zahl ist nicht willkürlich, aber auch nicht heilig. Es ist die Zahl, auf die ich mich nach dem Durchlaufen von Quality Gates in vielleicht 60-odd programmatischen Projekten in den letzten Jahren geeinigt habe. Manche Projekte halten 8% zurück. Ein e-Commerce-pSEO-Build im letzten Jahr hielt 23% bei der Erstveröffentlichung zurück, weil die Lieferantendaten wirklich lückenhaft waren.
Hier ist der ungefähre Prozess von vorne bis hinten:
- Erstelle zuerst den vollständigen Datensatz. Generiere jede Seite, die du später veröffentlichen möchtest. Filtere auf der Datenstufenicht vor, wenn du es vermeiden kannst. Generate every page you intend to eventually publish. Don't pre-filter at the data stage if you can avoid it.
- Führe die Gate-Checks zur Render-Zeit aus. Ich nutze ein Python-Skript, das das gerenderte HTML (nicht das rohe Template) aufruft und Wortanzahl, Feldausfüllungsquote und einen einfachen Ähnlichkeits-Hash mit SentenceTransformers prüft. Dauert etwa 4 Sekunden pro Seite. 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.
- Markiere jede Seite mit einem Status-Feld: index, hold oder review. Hold bedeutet noindex für jetzt. Review bedeutet, dass ein Mensch (normalerweise ich oder jemand vom Seahawk-Team) sich das innerhalb von 48 Stunden anschauen muss.
index,hold, orreview.Holdmeansnoindexfor now.Reviewmeans a human (usually me, or someone on the Seahawk team) needs to look at it within 48 hours. - Veröffentliche alles, aber steuere die Direktive auf Template-Ebene. Alle Seiten existieren. Alle Seiten sind zugänglich, wenn jemand die URL findet. Nur indexierte Seiten bekommen grünes Licht im robots-Meta-Tag. Das ist wichtig: du möchtest keine 404er auf Seiten, die Links oder Traffic von anderen Kanälen erhalten könnten. 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. - Bewerte den hold-Pool monatlich neu. Mit besseren Daten steigen Seiten auf. Manchmal führe ich einen Data-Enrichment-Pass durch, um spärliche Felder zu füllen, und eine vorher gehaltene Seite passiert das Gate automatisch. 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.
Der letzte Schritt ist derjenige, den Leute überspringen. Sie noindexen Seiten und vergessen sie. Diese Seiten sind potenzielle Ranking-Assets, wenn die zugrundeliegenden Daten besser werden. Gib sie nicht auf.
---
Die Tools, die schwer arbeiten
Ich bin da nicht wählerisch bei der Tool-Auswahl. Was auch immer sich sauber in deinen Stack integriert.
Für die Ähnlichkeitsprüfungen, die ich erwähnt habe, ist SentenceTransformers lokal ausgeführt schnell genug für Batches bis etwa 15.000 Seiten, bevor ich etwas Skalierbares in Betracht zöge. Bei größeren Datensätzen habe ich Pinecone als Vector Store genutzt, um ungefähre Nearest-Neighbour-Abfragen auszuführen, was die Vergleichszeit dramatisch senkt.Pinecone as a vector store to run approximate nearest-neighbour queries, which cuts the comparison time dramatically.
Zur Überwachung nach dem Launch halte ich eine Search-Console-Property, die speziell segmentiert ist, um den indexierten Pool gegenüber dem vollständigen URL-Bestand zu verfolgen. Screaming Frog, das auf einem Schedule läuft (ich nutze die CLI-Version über einen Cron-Job auf einem DigitalOcean-Droplet), liefert mir wöchentlich einen Diff darüber, welche Seiten ihren Status geändert haben. Wenn eine Seite, die ich bewusst noindexiert habe, irgendwie indexiert wird, möchte ich das innerhalb von 48 Stunden wissen.
Ahrefs Site Audit ist auch Teil des Workflows, hauptsächlich um Cannibalisierungssignale zu erkennen. Wenn zwei Seiten, die ich zum Indexieren freigegeben habe, um denselben Keyword-Cluster konkurrieren, ist das ein Gate-Fehler, den ich übersehen habe. Das kommt vor. Der Audit fängt es.index are competing for the same keyword cluster, that's a gate failure I missed. It happens. The audit catches it.
---
Häufige Einwände (und warum die meisten nicht stichhaltig sind)
„Wird das Zurückhalten von Seiten mein Trafficwachstum nicht verlangsamen?"
Marginal, sehr kurzfristig. Aber ein Crawl-Budget, das auf 850 wirklich starke Seiten ausgerichtet ist, wird diese schneller indexieren als ein Budget, das auf 1.000 gemischter Qualität verteilt ist. Ich habe das auf mehreren Projekten gemessen. Die Netto-Traffickurve ist steiler, wenn du selektiv vorgehst.
„Google ist smart genug, um herauszufinden, welche Seiten gut sind."
Manchmal. Nicht zuverlässig. Und schon gar nicht bei neuen Domains oder Sites mit begrenzter Authority. Ich würde den organischen Kanal eines Clients nicht auf Googles Großzügigkeit setzen.
„Das fügt meiner Publishing-Pipeline Komplexität hinzu."
Ja, das tut es. Ein Staging-Check, der vor jedem Publishing-Batch etwa 20 Minuten läuft. Das ist die Komplexität. Es lohnt sich.
Seahawk hatte ein Fintech-Vergleichsprojekt, bei dem der Kunde sich gegen das Hinzufügen des Gate-Schritts stark wehrte. Er wollte alles am ersten Tag indexiert haben. Wir führten es so aus, wie er wollte, die ersten zwei Monate lang. Im dritten Monat, nachdem wir die flache Kurve der Search-Console-Impressionen sahen, stimmte er dem Gate-Retrofit zu. Es dauerte zwei Wochen, um die noindex-Logik nachträglich zu integrieren, und einen weiteren Monat, um eine Erholung zu sehen. Wir verloren ungefähr fünf Monate an Compound Growth. Ich denke oft an dieses Projekt.
---
Was macht eine Seite bereit, den Status "Held" zu verlassen
Das lohnt sich auszusprechen, denn das ist der Teil des Systems, der es nachhaltig macht und nicht nur ein einmaliger Filter.
Eine gehaltene Seite steigt auf, wenn sie die gleichen Gates besteht, die sie ursprünglich nicht bestanden hat, plus eine zusätzliche Überprüfung: interne Link-Equity. Eine Seite, auf die von keiner anderen Seite der Website aus intern verlinkt wird, ist noch immer ein Ghost, selbst wenn sich der Inhalt verbessert hat. Bevor ich eine Seite in den Index aufnehme, braucht sie mindestens zwei interne Links von bereits performanten Seiten.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.
Das erzeugt eine positive Schleife. Starke Seiten sammeln Links an. Gehaltene Seiten warten, bis sie wirklich mit der Site-Struktur verbunden sind. Wenn sie aufsteigen, passen sie sich in einen Kontext ein, dem Googlebot tatsächlich folgen kann.
So gehe ich praktisch vor: Sobald eine Seite die Content-Gates besteht, führe ich einen schnellen Pass zur internen Link-Injektion durch. Ich schaue nach den 10-15 relevantesten indizierten Seiten und füge kontextuelle Links mit exaktem oder sehr ähnlichem Ankertext hinzu. Dann schalte ich die Seite auf Index. Danach reiche ich sie über die Indexing API ein, wenn es ein Thema mit hohem Aktualitätswert ist (und bei den meisten pSEO-Inhalten ist das nicht der Fall, daher warte ich einfach auf den nächsten Crawl-Zyklus).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).
---
Eine Anmerkung zu Facettierten Seiten und Parameter-Fallen
Ein spezifisches Szenario, das eine eigene Erwähnung verdient: Facettierte Navigation. Wenn deine pSEO-Site Seiten über URL-Parameter generiert (denk an /listings?city=london&bedrooms=2), muss die Gate-Logik Parameter-Deduplizierung berücksichtigen, bevor du überhaupt zur Content-Qualität kommst./listings?city=london&bedrooms=2), the gate logic needs to account for parameter deduplication before you even get to content quality.
Faceted Parameter Pages sind der Ort, an dem programmatische Websites das Crawl Budget am aggressivsten verbrauchen. Ich nutze eine Kombination aus rel=canonical und explizitem noindex bei Parameter-Varianten, die keinen sinnvoll unterschiedlichen Content darstellen. Die Google Search Central Anleitung zu URL-Parametern ist hier die kanonische Referenz (ohne Wortspiel beabsichtigt). Lies sie gründlich durch, bevor du eine faceted pSEO Struktur aufbaust.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
Wie entscheide ich, welcher Prozentsatz an Seiten zurückgehalten werden soll?
Führe ein Content Density Audit auf deinem vollständigen Datensatz durch, bevor du etwas veröffentlichst. Zähle den Prozentsatz der Zeilen, die auch nur ein Gate-Kriterium nicht erfüllen. Das ist deine anfängliche Zurückhaltungsquote. Bei sauberen Datensätzen habe ich sie schon bei 6% gesehen. Bei gescrapten oder von Drittanbietern stammenden Daten liegt sie regelmäßig zwischen 20-25%. Die 15%-Zahl, die ich anführe, ist einfach mein Durchschnitt über Projekte mit einigermaßen sauberen Daten.
Verschwendet das Noindexing von Seiten die Links, die sie möglicherweise verdienen könnten?
Nein. Die Seite existiert immer noch und gibt PageRank über ihre ausgehenden Links weiter. Die noindex Direktive weist Google an, die Seite nicht in die Suchergebnisse aufzunehmen, aber sie entzieht den Links zur Seite keine Link Equity. Diese Links zählen immer noch zur Domain. Die Seite konkurriert nur nicht in den SERPs.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.
Wie groß sollte eine Website mindestens sein, damit sich Quality Gates lohnen?
Ehrlich gesagt überall ab 300 programmatisch generierten Seiten. Darunter könntest du Seiten vermutlich manuell überprüfen. Darüber rechnet sich Automation innerhalb des ersten Monats selbst.
Sollte ich zurückgehaltene Seiten löschen oder nur noindexieren?
Noindex, nicht löschen. Eine gelöschte Seite gibt einen 404 zurück, was Googlebot mitteilt, dass sie nie existiert hat. Eine noindexierte Seite kann später wieder aufgewertet werden, Links in der Zwischenzeit sammeln und direkten Traffic akzeptieren. Löschen ist das letzte Mittel, reserviert für Seiten, deren zugrundeliegende Daten wirklich nicht zu reparieren sind.
Funktioniert das auch für nicht-englische pSEO-Seiten?
Die Gate-Logik ist sprachunabhängig. Die Similarity-Checks funktionieren im Französischen, Deutschen, Spanischen einwandfrei. Ich habe das auf einem französischsprachigen Real-Estate-pSEO-Projekt getestet und die Cosine-Similarity-Scores waren genauso zuverlässig wie bei englischen Inhalten. Was sich ändert, ist die Kalibrierung deines Schwellenwerts, da einige Sprachen strukturell natürlicherweise wiederholter sind.
---
Programmatic SEO ist meist ein Datenkvalitätsproblem im SEO-Gewand. Die Seiten, die gut performen, sind nicht die, die die meisten Seiten generiert haben. Es sind die, die rigoros entschieden haben, welche Seiten Sichtbarkeit verdienen. 15% zurückzuhalten ist nicht Pessimismus. Es ist einfach eine ehrliche Bilanz dessen, was du tatsächlich gebaut hast.
