Programmatic SEO und Content Automation: Skalieren mit Strategie und Struktur

Kurz gesagt

Niveau: Fortgeschritten

  • Programmatic SEO ist ein Template plus eine Datentabelle. Die Tabelle entscheidet, ob die Seiten nützlich sind oder Spam.
  • Googles Spamrichtlinien zum Missbrauch mit massenhaft generierten Inhalten (seit März 2024), zum Missbrauch von Brückenseiten und zu Affiliates ohne Mehrwert treffen Seiten, auf denen sich nur das Keyword ändert, egal wie sie entstanden sind.
  • Fang mit Daten an, die nur du hast, setz eine Schwelle, bevor eine Zeile eine URL bekommt, und bau Templates aus bedingten Abschnitten statt aus ausgetauschten Ortsnamen.
  • Nimm nur die Seiten in die Sitemap auf, hinter denen du stehst, miss die Indexierungsrate und räum jedes Quartal auf.

Programmatic SEO baut Hunderte Seiten aus einem Template und einer Tabelle, und das ist entweder eines der nützlichsten Dinge, die eine Website tun kann, oder der schnellste Weg zu einem Spamproblem. In diesem Artikel zeige ich, was Googles Richtlinien wirklich sagen, und begleite dann ein erfundenes Hamburger Umzugsunternehmen von seinen Buchungsdaten bis zu 31 Seiten, von denen jede etwas sagt, das keine andere Seite sagen kann.

Programmatic SEO ist eine Datenbank mit einem Template, und das Produkt ist die Datenbank

Programmatic Search Engine Optimisation (SEO) heißt: Du baust viele Seiten aus einem einzigen Template und einer einzigen Datentabelle, statt jede Seite von Hand zu schreiben. Jede Zeile der Tabelle wird zu einer Seite. Auf einer Fahrplanseite ist das eine Verbindung, bei einer Software eine Integration, in einem Shop ein Ersatzteil samt der Maschine, in die es passt.

Ein Trick ist das nicht, und Google sieht das genauso. In seinem Leitfaden zu KI und Automatisierung von 2023 schreibt Google: "Automatisierung wird schon lange verwendet, um nützliche Inhalte wie Sportergebnisse, Wettervorhersagen und Transkripte zu erstellen."1 Das Template ist kein Problem. Die Automatisierung auch nicht.

Ob am Ende etwas Nützliches oder Spam herauskommt, entscheidet die Tabelle. Stehen in jeder Zeile Fakten, die genau für diese Zeile gelten und für keine andere, dann hat jede Seite etwas zu sagen. Ändert sich von Zeile zu Zeile nur das Keyword, dann hast du dieselbe Seite 400 Mal gebaut, mit einem anderen Wort in der Überschrift. Dafür hat Google einen eigenen Namen, und dazu komme ich im nächsten Abschnitt.

Die Daten sind das Produkt. Das Template ist nur die Verpackung. Ich begleite dafür ein erfundenes Unternehmen durch jeden Schritt.

Beispiel: das Umzugsunternehmen in diesem Artikel

Umzüge Ottensen ist ein erfundenes Umzugsunternehmen aus Hamburg. Es gibt die Firma nicht, und jede Zahl ist ausgedacht. Die Inhaberin, Aylin, hat vier Transporter und neun Leute im Team, und den Großteil ihres Geschäfts machen Haushalte, die aus Hamburg irgendwohin in Deutschland ziehen. Ihre Website liegt unter www.umzuegeottensen.example.

In vier Jahren hat ihr Buchungssystem 1.900 Umzüge aus Hamburg erfasst, in 140 verschiedene Zielorte. Zu jedem Umzug stehen dort der Zielort, die Größe der Wohnung, der Preis, die Stunden auf der Straße, die Stunden fürs Einladen und Ausladen und eine freie Notiz der Vorarbeiterin oder des Vorarbeiters. Diese Tabelle ist das Wertvollste, was Aylin für ihr SEO besitzt. Am Anfang dieser Geschichte weiß sie das noch nicht.

Was Googles Spamrichtlinien über Seiten in großer Zahl sagen

Google veröffentlicht seine Spamrichtlinien in einem einzigen Dokument, und drei davon beschreiben ziemlich genau, wie Programmatic SEO schiefgeht.2

Den Missbrauch mit massenhaft generierten Inhalten gibt es als eigene Richtlinie seit März 2024. Google meint damit Fälle, in denen "viele Seiten in erster Linie erstellt [werden], um das Suchranking zu manipulieren, aber nicht, um Nutzern zu helfen". Typisch sind große Mengen nicht origineller Inhalte, "die für Nutzer unabhängig von der Art der Erstellung wenig oder gar keinen Mehrwert bieten".2 In der Ankündigung vom März 2024 erklärt Google, was sich geändert hat: Die neue Richtlinie baut auf der älteren Regel gegen automatisch generierte Inhalte auf und greift, "unabhängig davon, ob Inhalte durch Automatisierung, menschliche Bemühungen oder eine Kombination aus menschlichen und automatisierten Prozessen" entstanden sind.3 Ein Team aus Textern, das 400 fast gleiche Seiten von Hand abtippt, fällt also unter dieselbe Regel wie ein Skript.

Der Missbrauch von Brückenseiten (im Englischen Doorway Pages) ist älter, und über ihn stolpern programmatische Websites am häufigsten. Zu Googles Beispielen gehören "Mehrere Domainnamen oder Seiten, die auf bestimmte Regionen oder Städte ausgerichtet sind, die Nutzer jedoch alle zur selben Seite weiterleiten" und "Im Wesentlichen ähnliche Seiten erstellen, die eher Suchergebnissen ähneln als einer klar definierten, durchsuchbaren Hierarchie".2 Den zweiten Satz lohnt es sich zweimal zu lesen. Gemeint ist mit "durchsuchbar" eine Struktur, durch die sich ein Mensch klicken kann. Ein Stapel Seiten, von denen jede eine leicht andere Suchanfrage beantwortet, ohne eine solche Struktur, ist eine Suchergebnisseite, die du dir selbst gebaut hast.

Die dritte Richtlinie heißt bei Google Affiliates ohne Mehrwert. Sie betrifft Seiten mit Affiliate Links, bei denen "die Produktbeschreibungen und Erfahrungsberichte direkt vom ursprünglichen Händler kopiert werden, ohne dass Originalinhalte oder Mehrwert hinzugefügt werden". Google stellt ausdrücklich klar, dass Affiliate Websites an sich in Ordnung sind. Als Beispiele dafür, wie gute Affiliate Seiten Mehrwert bieten, nennt Google zusätzliche Preisinformationen, Rezensionen, gründliche Tests und Produktvergleiche.2

Die Folge ist bei allen drei dieselbe. Websites, die gegen die Richtlinien verstoßen, "erhalten möglicherweise ein niedrigeres Ranking oder werden gar nicht in den Suchergebnissen angezeigt". Erkannt wird das von automatischen Systemen und, wo nötig, von einer manuellen Prüfung, die zu einer manuellen Maßnahme führen kann.2 Der Schaden muss auch nicht auf den betroffenen Seiten bleiben. Google sagt, dass seine Rankingsysteme auf Seitenebene arbeiten, dass aber zusätzlich "websiteweite Signale und Klassifikatoren" verwendet werden.4 Tausend dünne Seiten können also auf die 30 guten drücken, die daneben stehen.

Was Google zu Texten aus der KI sagt und warum die Detektoren, die man kaufen kann, nicht funktionieren, habe ich in KI Content in der Suche aufgeschrieben. Das wiederhole ich hier nicht.

Beispiel: die 400 Seiten, die Aylin angeboten bekommt

Eine Agentur, von der Sorte, die Angebote mit einem Stockfoto von einer Rakete auf dem Deckblatt verschickt, bietet Aylin 400 Seiten für 2.000 € an. Eine Seite für jede Stadt und jeden größeren Ort im Umkreis von 320 Kilometern um Hamburg, jeweils mit dem Titel "Umzug von Hamburg nach [Stadt]". Die Musterseite hat 600 Wörter: ein Absatz darüber, wie stressig ein Umzug ist, ein Absatz über ihre Transporter, ein Absatz mit Packtipps, und der Ortsname steht in der Überschrift, im ersten Satz und im letzten.

Leg das Angebot neben die Richtlinien, eine nach der anderen. Es sind viele Seiten, gemacht vor allem fürs Ranking, ohne irgendetwas Eigenes darauf: Missbrauch mit massenhaft generierten Inhalten. Es ist eine Seite pro Stadt, die alle in dasselbe Angebotsformular leitet, mit im Wesentlichen gleichem Text: Missbrauch von Brückenseiten, fast wörtlich Googles eigenes Beispiel. Und von den 400 Orten hat Aylin in 140 überhaupt schon jemanden gebracht. Für die anderen 260 hätte sie nicht einen Satz eigener Erfahrung, den sie auf die Seite schreiben könnte, selbst wenn sie wollte.

Sie sagt nein. Es ist die günstigste Entscheidung in diesem ganzen Artikel: Sie kostet nichts und rettet die Domain.

Der Test: Wäre die Seite einen Besuch wert, wenn es keine Suchmaschine gäbe

Googles Leitfaden zu hilfreichen Inhalten enthält eine Liste von Warnsignalen, und zwei davon lesen sich, als wären sie für Programmatic SEO geschrieben: "Erstellst du viele Inhalte zu vielen verschiedenen Themen in der Hoffnung, dass einige davon in den Suchergebnissen gut abschneiden?" und "Nutzt du umfangreiche Automatisierung, um Inhalte zu vielen Themen zu erstellen?"5 Derselbe Leitfaden setzt den Maßstab in einfachen Worten: Würden die Menschen, für die du schreibst, deine Inhalte auch dann interessant finden, wenn sie direkt zu dir kämen, ganz ohne Suchmaschine?5

Seit März 2024 ist das kein eigener Filter mehr. Das System für hilfreiche Inhalte wurde laut Google "weiterentwickelt" und ist seitdem Teil der zentralen Rankingsysteme.4

Auf 140 Seiten auf einmal lässt sich das schwer anwenden. Deshalb mache ich daraus eine Zahl, die ich für jedes Template prüfen kann. Für eine Seite zähle ich die einzelnen Fakten, die sie nennt. Dann zähle ich, wie viele davon für genau diese Zeile gelten und für keine andere:

s=frowftotals = \frac{f_{\text{row}}}{f_{\text{total}}}

Dabei ist ss der spezifische Anteil der Seite, frowf_{\text{row}} die Zahl der Fakten auf der Seite, die nur für diese Zeile gelten (diese Strecke, diese Integration, dieses Produkt), und ftotalf_{\text{total}} die Zahl aller Fakten auf der Seite. Es ist ein ganz normales Verhältnis von einem Teil zum Ganzen, erklärt in Grundlagen: Quoten und Raten.

Das ist mein eigener Test, nichts, was Google berechnet. Google sagt ausdrücklich, dass es keine bevorzugte Wortzahl gibt, also zähle ich Fakten und keine Wörter.5 Eine Seite mit ss nahe null ist dieselbe Seite wie ihre Nachbarn, nur mit ausgetauschten Ortsnamen. Eine Seite, deren Fakten überwiegend zu ihrer Zeile gehören, hat einen Grund zu existieren.

Beispiel: zwei Seiten im Vergleich

Die Seite der Agentur zu Bremen nennt 14 Fakten: Umziehen ist stressig, Aylin hat vier Transporter, sie bietet einen Packservice an, und so weiter. Abgesehen vom Wort "Bremen" selbst handelt kein einziger davon von Bremen. Also ist frow=0f_{\text{row}} = 0, ftotal=14f_{\text{total}} = 14 und s=0/14=0s = 0 / 14 = 0.

Jetzt eine Seite, die aus Aylins eigener Tabelle gebaut ist. Sie nennt 12 Fakten: wie viele Haushalte Aylin schon nach Bremen gebracht hat (22), was ein Umzug dorthin typischerweise kostet, in welcher Spanne die meisten Kundinnen und Kunden lagen, wie viele Stunden die Fahrt üblicherweise dauert, wie viele Tage das Ganze in der Regel braucht, die Notiz des Teams zu den engen Gassen im Schnoor, welches Ankunftsfenster am besten funktioniert, dass zwei der 22 Umzüge eine Halteverbotszone gebraucht haben, und vier allgemeine Fakten über ihren Service. Acht Fakten gehören zu Bremen, vier nicht. Also ist frow=8f_{\text{row}} = 8, ftotal=12f_{\text{total}} = 12 und s=8/12=0,67s = 8 / 12 = 0{,}67.

Zwei Drittel dieser Seite könnten nirgendwo sonst auf ihrer Website stehen. Genau den Unterschied, den die Spamrichtlinien beschreiben, hast du damit als Zahl.

Fang mit den Daten an, nicht mit der Keywordliste

Die meisten programmatischen Projekte beginnen in einem Keyword Tool: alle Varianten von "Umzug Hamburg nach X" exportieren, pro Zeile eine Seite bauen. Das ist die falsche Reihenfolge. Die Keywordrecherche sagt dir, welche Zeilen die Leute interessieren, aber nie, was du über sie sagen sollst. Das können nur Daten.

Ich fange deshalb mit einer Frage an: Welche Tabelle hat dieses Unternehmen, die sonst niemand hat? Gute Quellen, nach meiner Erfahrung, in der Reihenfolge, in der ich ihnen vertraue:

  1. Deine eigenen Aufzeichnungen: Bestellungen, Buchungen, Tickets, Testergebnisse. Die hat niemand sonst.
  2. Dein eigenes Fachwissen, Zeile für Zeile aufgeschrieben: die Notizen des Teams, das Urteil der Entwicklerin zu jeder Integration, die Meinung des Einkäufers zu jedem Produkt.
  3. Öffentliche Daten, die du so kombinierst, wie es noch niemand getan hat, genutzt im Rahmen ihrer Lizenz und mit Quellenangabe.
  4. Ein Feed von Lieferanten oder Herstellern. Als Gerüst nützlich, aber für sich allein genau das, was die Richtlinie zu Affiliates ohne Mehrwert beschreibt: derselbe Text, den alle anderen mit diesem Feed schon veröffentlichen.2

Inhalte, die von anderen Websites kopiert oder leicht umformuliert sind, sind überhaupt keine Quelle. Googles Richtlinie zum Scraping nennt ausdrücklich, Inhalte von anderen Websites zu kopieren, sie leicht zu verändern, "z. B. durch das Verwenden von Synonymen oder mithilfe automatisierter Verfahren", und noch einmal zu veröffentlichen.2

Beispiel: was Aylins Tabelle wirklich trägt

Aylins 1.900 Umzüge verteilen sich nicht gleichmäßig auf die 140 Zielorte. Eine Handvoll Städte macht den Großteil der Arbeit aus, und ein langer Schwanz von Orten taucht nur ein oder zwei Mal auf.

Zielorte nach Zahl der bisherigen UmzügeEin Balkendiagramm der 140 erfundenen Zielorte, gruppiert danach, wie viele Umzüge Umzüge Ottensen in jeden Ort gemacht hat. 1 bis 4 Umzüge: 78 Orte. 5 bis 9 Umzüge: 22 Orte. 10 bis 14 Umzüge: 9 Orte. 15 bis 29 Umzüge: 17 Orte. 30 bis 59 Umzüge: 9 Orte. 60 oder mehr Umzüge: 5 Orte.140 Zielorte, gruppiert nach bisherigen Umzügen ab Hamburg0255075100781 bis 4225 bis 9910 bis 141715 bis 29930 bis 59560 odermehrZielorteBisherige Umzüge in diesen Ort

Die waagrechte Achse gruppiert die Zielorte danach, wie viele Umzüge Aylin in jeden gemacht hat. Die senkrechte Achse zeigt, wie viele Orte in jede Gruppe fallen. Die Erkenntnis steckt im ersten Balken: Mehr als die Hälfte der 140 Orte, nämlich 78, hat weniger als fünf ihrer Umzüge gesehen. Nur die letzten drei Balken, 17 plus neun plus fünf, zusammen 31 Orte, kommen auf 15 Umzüge oder mehr. Die Daten tragen also etwa 31 starke Seiten, nicht 140, und ganz sicher nicht 400.

Setz eine Schwelle: Eine Zeile bekommt erst eine Seite, wenn sie genug zu sagen hat

Eine Schwelle ist eine Regel, festgelegt, bevor auch nur eine Seite gebaut wird, die bestimmt, wie viele Daten eine Zeile braucht, bevor sie eine eigene URL bekommt. Ohne diese Regel wird aus dem langen Schwanz dünner Zeilen ein langer Schwanz dünner Seiten.

Bei Zahlen ergibt sich die Schwelle daraus, wie stark ein Wert schwanken würde, wenn du zufällig eine andere Handvoll Umzüge gehabt hättest. Diese Schwankung ist der Standardfehler des Mittelwerts:

SE=snSE = \frac{s}{\sqrt{n}}

Dabei ist SESE der Standardfehler des Durchschnittspreises, ss die Standardabweichung der einzelnen Preise (wie weit ein typischer Umzug vom Durchschnitt entfernt liegt) und nn die Zahl der Umzüge, auf denen der Durchschnitt beruht. Die vollständige Herleitung, und warum ein Stichprobenmittel überhaupt schwankt, steht in Grundlagen: Stichproben und der Standardfehler. In rund 95 % der Fälle liegt der wahre Durchschnitt innerhalb von 1,96×SE1{,}96 \times SE um den Wert, den du gemessen hast, wie Grundlagen: Konfidenzintervalle erklärt.

Beispiel: Bremen gegen einen Ort mit vier Umzügen

Damit die Rechnung übersichtlich bleibt, nehme ich an, dass die Preise auf jeder längeren Strecke gleich stark streuen, mit einer Standardabweichung von 310 €.

Nach Bremen gab es 22 Umzüge zu durchschnittlich 1.240 €. Also ist SE=310/22=310/4,69=66SE = 310 / \sqrt{22} = 310 / 4{,}69 = 66, das sind 66 €. Das Intervall beträgt 1,96×66=1301{,}96 \times 66 = 130, also 130 € in jede Richtung, und der wahre Durchschnitt liegt sehr wahrscheinlich zwischen 1.110 € und 1.370 €. Mit dieser Zahl kann eine Kundin planen.

Ein Ort mit vier Umzügen zu durchschnittlich 1.310 € ergibt SE=310/4=310/2=155SE = 310 / \sqrt{4} = 310 / 2 = 155, also 155 €. Das Intervall beträgt 1,96×155=3041{,}96 \times 155 = 304, also 304 € in jede Richtung, von 1.006 € bis 1.614 €. Auf dieser Grundlage "ein typischer Umzug kostet 1.310 €" zu schreiben hieße, der Kundschaft etwas zu erzählen, das Aylin gar nicht weiß.

Bei 15 Umzügen ist SE=310/15=310/3,87=80SE = 310 / \sqrt{15} = 310 / 3{,}87 = 80, also 80 €, und das Intervall liegt bei etwa 157 € in jede Richtung. Aylin entscheidet, dass das das Mindeste ist, was sie veröffentlichen will. Die Regel lautet also: 15 Umzüge oder mehr, und die 31 Orte aus dem Diagramm bekommen Seiten. Die anderen 109 Orte bekommen keine eigene Seite. Sie stehen mit der Zahl ihrer Umzüge auf einer Regionalseite, und das Angebotsformular funktioniert so oder so für jeden Ort in Deutschland.

Noch ein ehrlicher Hinweis zur Seite selbst. Ein Konfidenzintervall beschreibt den Durchschnitt, nicht die Streuung der einzelnen Umzüge, und vor genau dieser Verwechslung warnen die Grundlagen. Auf der Seite stehen deshalb der typische Preis (der Median) und die Spanne, in der die mittlere Hälfte der Kundschaft lag. Der Standardfehler ist Aylins interner Test dafür, ob die Zahlen überhaupt stabil genug sind, um sie zu zeigen.

Bekommt eine Zeile ihre eigene SeiteEin Entscheidungsablauf von oben nach unten für jede Zeile der Daten. Hat die Zeile genug Datensätze, um die Schwelle zu erreichen, und kann das Template die meisten Abschnitte mit Fakten füllen, die nur für diese Zeile gelten, wird sie zu einer Seite in der Sitemap. Lautet eine der beiden Antworten nein, steht die Zeile stattdessen auf ihrer übergeordneten Seite und bekommt keine eigene URL.Nimm eine Zeile der Tabelle, zumBeispiel einen ZielortErreicht sie die Datenschwelle, 15Umzüge oder mehr?neinAuf der Regionalseite aufführen, keineeigene URLjaKann das Template die meistenAbschnitte mit Fakten füllen, dienur für diese Zeile gelten?neinZurückhalten, bis das Team Notizen dazugeschrieben hatjaSeite bauen, von Hand prüfen, in dieSitemap aufnehmenErneut prüfen, sobald die Daten desnächsten Quartals da sind

Das Diagramm läuft von oben nach unten, eine Zeile nach der anderen. Die erste Frage betrifft die Menge, die zweite die Substanz, und eine Zeile muss beide bestehen. Eine Zeile, die an einer der beiden scheitert, taucht trotzdem auf ihrer übergeordneten Seite auf. Es fehlt also nichts, was eine Kundin braucht. Die Zeile bekommt nur keine eigene URL.

Bau das Template aus bedingten Abschnitten, nicht aus ausgetauschten Ortsnamen

Ein schwaches Template ist ein Absatz mit Lücken. Ein starkes Template ist eine Reihe von Abschnitten, von denen jeder nur dann erscheint, wenn die Zeile die Daten hat, um ihn zu füllen. Zwei Seiten aus demselben Template sollten sich in ihrer Form unterscheiden, nicht nur in ihren Substantiven.

Beispiel: Aylins Streckenseite in Ruby on Rails

Aylins Website läuft auf Ruby on Rails. Hier ist der Kern einer schlichten Ruby Klasse, die entscheidet, was eine Streckenseite sagen kann.

class RoutePage
  MIN_MOVES = 15

  attr_reader :town, :moves

  def initialize(town, moves)
    @town = town
    @moves = moves
  end

  def publishable?
    moves.size >= MIN_MOVES && town.crew_notes.present?
  end

  def median_price
    median(moves.map(&:price))
  end

  def middle_half
    prices = moves.map(&:price).sort
    [percentile(prices, 0.25), percentile(prices, 0.75)]
  end

  def overnight?
    town.km_from_hamburg > 290
  end

  private

  def median(values)
    sorted = values.sort
    mid = sorted.size / 2
    sorted.size.odd? ? sorted[mid] : (sorted[mid - 1] + sorted[mid]) / 2.0
  end

  def percentile(sorted, share)
    sorted[((sorted.size - 1) * share).round]
  end
end

Und dazu die View, in den ERB Templates von Rails. Jeder Abschnitt nach dem ersten ist bedingt:

<h1>Umzug von Hamburg nach <%= page.town.name %></h1>

<p>
  Umzüge Ottensen hat schon <%= page.moves.size %> Haushalte von Hamburg
  nach <%= page.town.name %> gebracht. Ein Umzug dorthin kostet typischerweise
  <%= number_to_currency(page.median_price, unit: "€", format: "%n %u", delimiter: ".", precision: 0) %>,
  und die Hälfte der Kundschaft hat zwischen
  <%= number_to_currency(page.middle_half.first, unit: "€", format: "%n %u", delimiter: ".", precision: 0) %> und
  <%= number_to_currency(page.middle_half.last, unit: "€", format: "%n %u", delimiter: ".", precision: 0) %> bezahlt.
</p>

<% if page.overnight? %>
  <h2>Warum dieser Umzug zwei Tage dauert</h2>
  <%= render "overnight_explainer", town: page.town %>
<% end %>

<% if page.town.parking_note.present? %>
  <h2>Parken am Umzugstag</h2>
  <p><%= page.town.parking_note %></p>
<% end %>

<h2>Was das Team über <%= page.town.name %> sagt</h2>
<p><%= page.town.crew_notes %></p>

Spiel das für zwei Orte durch. Bremen liegt rund 120 Kilometer entfernt, also ist overnight? falsch, und der Abschnitt über zwei Tage erscheint nicht. Für Bremen hat das Team eine Notiz zum Parken, also erscheint dieser Abschnitt. Ein Ort im Allgäu, rund 800 Kilometer entfernt, bekommt den Abschnitt zur Übernachtung und keinen zum Parken, weil das Team dort nie einen gebraucht hat. Dasselbe Template, zwei Seiten mit unterschiedlichen Abschnitten und unterschiedlichen Fakten. Ein Ort mit 12 Umzügen, oder einer, zu dem es noch keine Notizen vom Team gibt, scheitert an publishable? und bekommt gar keine Seite.

Zwei Details sind wichtiger als der Code. Die Notizen kommen vom Team, Ort für Ort. Und Aylin liest alle 31 Seiten, bevor sie live gehen, was einen Nachmittag dauert. Die Automatisierung baut die Seiten. Ein Mensch gibt sie frei.

Gib den Seiten eine Struktur, durch die man sich klicken kann

Erinnere dich an den Satz zu den Brückenseiten: "Im Wesentlichen ähnliche Seiten erstellen, die eher Suchergebnissen ähneln als einer klar definierten, durchsuchbaren Hierarchie".2 Das Gegenmittel ist eine echte Hierarchie, eine, durch die sich jemand durchklicken könnte, ohne je ein Suchfeld zu berühren.

Für Aylin heißt das drei Ebenen. Eine Seite für alle Umzüge ab Hamburg. Darunter eine Seite pro Region Deutschlands, auf der jeder Ort steht, in den sie schon Leute gebracht hat, mit der Zahl der Umzüge und einem Link, wo ein Ort eine eigene Seite hat. Darunter die 31 Ortsseiten, jede mit einem Link hinauf zu ihrer Region und hinüber zu ihren nächsten Nachbarn. Jede Ortsseite ist von oben in zwei Klicks erreichbar, und die Regionalseiten tragen den langen Schwanz der 109 Orte, damit nichts versteckt ist.

Innerhalb jeder Seite gilt dasselbe Denken im Kleinen. Klare Abschnitte mit echten Überschriften helfen Leserinnen und Lesern, und sie helfen Suchmaschinen zu verstehen, welcher Teil der Seite welche Frage beantwortet. Wie das funktioniert, und was das Passage Ranking leistet und was nicht, habe ich in Passage Indexing und Content Fragmentierung erklärt.

Beispiel: der Weg einer Besucherin

Eine Kundin, die nach Delmenhorst zieht, landet auf der Regionalseite Nordwest. Delmenhorst steht dort mit neun bisherigen Umzügen und ohne eigene Seite, gleich daneben Bremen mit 22 Umzügen und einem Link. Sie liest die Seite zu Bremen und fragt ein Angebot für Delmenhorst an. Die dünne Zeile brauchte keine eigene Seite. Die starke Zeile daneben hat die Überzeugungsarbeit geleistet.

Sitemaps und Indexierung: Nimm nur die Seiten auf, hinter denen du stehst

Eine Sitemap ist eine Datei mit den URLs, die eine Suchmaschine kennen soll. Für eine programmatische Website ist sie zugleich eine Aussage: Hinter diesen Seiten stehe ich. Die Regeln, auf die es hier ankommt, sind überschaubar. Eine einzelne Sitemap darf höchstens 50.000 URLs oder 50 MB (unkomprimiert) enthalten, je nachdem, was zuerst erreicht ist, und eine größere Website verteilt ihre URLs auf mehrere Sitemaps, die in einer Sitemap Indexdatei aufgeführt sind.67 Google verwendet den Wert lastmod nur, wenn er "konsistent und nachweisbar korrekt" ist, und er soll "das Datum und die Uhrzeit der letzten signifikanten Aktualisierung der Seite" zeigen, nicht etwa eine geänderte Copyright Zeile.6 Und das Einreichen einer Sitemap ist laut Google "nur ein Hinweis". Es garantiert nicht, dass irgendetwas gecrawlt oder indexiert wird.6

Hier ist ein Eintrag aus Aylins Sitemap. Der Wert lastmod stammt vom letzten Mal, als neue Umzugsdaten oder eine neue Notiz vom Team die Seite verändert haben, nicht vom Zeitpunkt, zu dem die Datei erzeugt wurde:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.umzuegeottensen.example/umzug/hamburg-nach-bremen</loc>
    <lastmod>2026-10-14</lastmod>
  </url>
</urlset>

Hinein kommen nur Zeilen, die publishable? bestehen. Zeilen, die nicht bestehen, bekommen nie eine URL, also gibt es auch nichts, was aus dem Index herausgehalten werden müsste. Das ist sauberer, als dünne Seiten zu veröffentlichen und sie dann mit noindex zu verstecken, einer Regel, die Google anweist, eine Seite aus den Ergebnissen zu nehmen, die aber nur wirkt, wenn Google die Seite crawlen und die Regel überhaupt sehen darf.8

Das Crawl Budget ist für eine Website mit ein paar hundert Seiten kein Thema. Google richtet seinen Leitfaden dazu an Websites mit über einer Million Seiten, die sich etwa wöchentlich ändern, oder mit mehr als 10.000 Seiten, die sich täglich ändern.9 Programmatic SEO kann aus einer kleinen Website aber über Nacht eine große machen. Wenn du über diese Zahlen hinaus willst, lies IndexNow, Instant Indexing und Crawl Budget Strategie, bevor du veröffentlichst, nicht danach.

Dann wird gemessen. Der Bericht zur Seitenindexierung in der Search Console zeigt, welche eingereichten URLs Google indexiert hat und warum die anderen nicht. Google selbst sagt, du sollst nicht davon ausgehen, dass jede URL deiner Website indexiert wird, und dass der Status Gecrawlt – zurzeit nicht indexiert bei vielen Websites üblich ist und nicht unbedingt auf ein Problem hinweist.10 Über eine Gruppe programmatischer Seiten hinweg ist der Anteil, der es in den Index schafft, aber eines der ehrlichsten Signale, die du bekommen wirst:

i=uindexedusubmittedi = \frac{u_{\text{indexed}}}{u_{\text{submitted}}}

Dabei ist ii die Indexierungsrate, uindexedu_{\text{indexed}} die Zahl der URLs aus der Sitemap, die der Bericht zur Seitenindexierung als indexiert zeigt, und usubmittedu_{\text{submitted}} die Zahl der URLs in dieser Sitemap. Auch das ist ein schlichtes Verhältnis, erklärt in Grundlagen: Quoten und Raten.

Beispiel: Aylins alte Ortsseiten gegen die neuen

Zwei Jahre vor dieser Geschichte hatte ein früherer Entwickler 60 Seiten nach dem Muster "Umzug nach [Stadt]" für Aylin gebaut, jede davon ein Template mit ausgetauschtem Ortsnamen. Der Bericht zur Seitenindexierung zeigt elf davon als indexiert. Der Rest steht unter Gecrawlt – zurzeit nicht indexiert oder Duplikat – vom Nutzer nicht als kanonisch festgelegt. Das Zweite heißt, dass Google entschieden hat, eine andere Seite sage dasselbe.10 Also ist i=11/60=0,18i = 11 / 60 = 0{,}18.

Drei Monate nachdem die 31 neuen Seiten live gegangen sind, zeigt der Bericht 29 davon als indexiert. Also ist i=29/31=0,94i = 29 / 31 = 0{,}94.

Die Indexierungsrate ist nicht das Ziel, denn auch eine indexierte Seite kann niemandem helfen. Aber wenn Google vier von fünf Seiten ablehnt, sagt es dir so höflich, wie es eben kann, dass es diese Seiten schon einmal gesehen hat.

Wo KI und Automatisierung helfen, und wo sie aufhören

Automatisierung zieht sich durch das ganze System, von den Abfragen, die die Tabelle erzeugen, bis zum Job, der die Seiten neu baut, wenn neue Umzüge dazukommen. KI Werkzeuge passen auch hinein, solange sie auf der richtigen Seite einer Linie bleiben. Googles Leitfaden zu generativer KI ist kurz und lohnt sich ganz. Dort heißt es, generative KI könne "besonders nützlich sein, wenn du zu einem Thema recherchierst und Originalinhalten Struktur verleihen möchtest", und im selben Atemzug, dass viele Seiten zu generieren, ohne Nutzern einen Mehrwert zu bieten, gegen die Richtlinie zum Missbrauch mit massenhaft generierten Inhalten verstoßen kann.11 Auch zur Richtigkeit sagt der Leitfaden etwas. Er erinnert daran, dass "generative Modelle keine Fakten abrufen, sondern anhand ihrer Trainingsdaten eine wahrscheinliche Wortfolge vorhersagen". Deshalb sei es wichtig, alles, was eine KI erzeugt hat, "vor der Veröffentlichung manuell auf Richtigkeit und Vertrauenswürdigkeit zu prüfen", und zwar einschließlich Titelelementen, Metabeschreibungen, strukturierten Daten und Alternativtexten für Bilder, weil auch die in den Suchergebnissen erscheinen können.11

Beispiel: die Notizen des Teams

Aylins Vorarbeiter schreiben ihre Notizen im Transporter aufs Handy, in Stichworten. "Schnoor, enge Gassen, Frühslot nehmen, sonst stehst du im Stau." Aylin lässt ein KI Werkzeug aus jeder Notiz zwei saubere Sätze im Stil der Website machen, mit der Anweisung, die Formulierung zu ändern und nie die Fakten. Dann liest sie jedes Ergebnis neben der ursprünglichen Notiz, bevor es in die Tabelle kommt.

Das Werkzeug hat getippt, das Team hat das Wissen geliefert, und Aylin hat geprüft, ob beides zusammenpasst. Hätte sie stattdessen verlangt "schreib einen Absatz über einen Umzug nach Bremen", hätte dasselbe Werkzeug den Durchschnitt aus allem geliefert, was je über Bremen geschrieben wurde. Dasselbe Werkzeug, das gegenteilige Ergebnis. Der Unterschied liegt darin, woher die Fakten kommen.

Räum weg, was seinen Platz nicht verdient

Ein programmatisches System ist nie fertig. Die Daten ändern sich, und manche Seiten finden nie Leser. Deshalb schaue ich mir jedes Quartal in der Search Console die Impressionen und Klicks jeder Seite an und prüfe, ob sie die Schwelle noch erreicht, und jede Seite bekommt eine von drei Antworten.

Behalten, und aktualisieren, wenn sich die Daten bewegen. Zusammenlegen, wenn zwei Seiten dieselbe Frage für dieselben Leute beantworten: Die schwächere Seite leitet mit einer 301 Weiterleitung auf die stärkere um, und Google wertet eine Weiterleitung als "ein starkes Signal dafür, dass das Ziel der Weiterleitung kanonisch sein sollte".12 Oder entfernen, mit einem 404 oder 410, wenn die Seite nichts mehr zu sagen hat und es kein natürliches Ziel für eine Weiterleitung gibt.

Beispiel: die 60 alten Seiten

Aylins 60 alte Seiten mit ausgetauschten Ortsnamen müssen irgendwohin. Für die 19 Orte, die jetzt eine richtige neue Seite haben, leitet die alte URL mit einer 301 auf die neue um, damit Links und Lesezeichen weiter irgendwo Nützliches ankommen. Die anderen 41 Orte haben keine neue Seite, also liefern ihre alten URLs einen 410, gelöscht. Alle auf die Startseite umzuleiten, macht sie nicht, denn damit würde sie jeden enttäuschen, der nach einem bestimmten Ort gefragt hat.

Wo Programmatic SEO passt, und wo nicht

Es passt überall dort, wo ein Unternehmen eine Tabelle mit Fakten hat, nach denen Menschen Zeile für Zeile suchen, und wo sich die Zeilen wirklich unterscheiden. Integrationsseiten für eine Software, auf denen jede Seite erklärt, was die Verbindung tatsächlich tut und wie man sie einrichtet. Kompatibilitätsseiten für einen Ersatzteilshop, auf denen jede Seite auflistet, was passt und was nicht. Strecken, Filialen mit ihrem echten Bestand und ihren echten Öffnungszeiten, Preise, die wirklich bezahlt wurden.

Es passt nicht, wenn sich nur das Keyword ändert. Ortsseiten für eine Dienstleistung, die überall gleich ist, Seiten nach dem Muster "das beste [Produkt] für [Berufsbezeichnung]", hinter deren Berufsbezeichnung nichts steht, übersetzte Kopien eines Artikels für Märkte, die du gar nicht bedienst. Wenn du nicht sagen kannst, was für diese Zeile gilt und für keine andere, dann hast du keine programmatische Seite. Dann hast du eine Brückenseite.

Ein Beispiel: Ein Jahr später überlegt Aylin, eine zweite Reihe von Seiten zu bauen, "Haushaltsauflösung in [Stadt]". Insgesamt hat sie 14 Haushaltsauflösungen gemacht, verteilt auf neun Orte, also hat kein Ort mehr als drei. Keine einzige Zeile erreicht die Schwelle, und die Idee wandert zurück in die Schublade, bis die Tabelle sie tragen kann. Das ist kein Versagen des Systems. Genau so soll es arbeiten.

Die alte Fassung dieses Artikels begann mit dem Satz, Suchmaschinen belohnten Masse. Das tun sie nicht. Sie belohnen Seiten, die einen Besuch wert sind, und Masse ist nur dann eine gute Nachricht, wenn jede einzelne Seite das ist. Aylin hatte am Ende 31 Seiten statt 400, und jede davon sagt etwas, das keine andere Seite im Internet sagen kann. Das ist die einzige Größe, die bleibt.

Footnotes

  1. Danny Sullivan und Chris Nelson, Leitfaden der Google Suche zu KI-generierten Inhalten, Google Search Central Blog, 8. Februar 2023, https://developers.google.com/search/blog/2023/02/google-search-and-ai-content?hl=de

  2. Google, Spamrichtlinien für die Google Websuche (Abschnitte Missbrauch von Brückenseiten, Missbrauch mit massenhaft generierten Inhalten, Scraping und Affiliates ohne Mehrwert), Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/essentials/spam-policies?hl=de (die deutsche Fassung führt die im Englischen "scaled content abuse" genannte Richtlinie unter "Missbrauch mit massenhaft generierten Inhalten", englische Fassung: https://developers.google.com/search/docs/essentials/spam-policies)

  3. Google Search Central, Wichtige Informationen für Web-Creator über das grundlegende Update vom März 2024 und die neuen Spamrichtlinien, Google Search Central Blog, 5. März 2024, https://developers.google.com/search/blog/2024/03/core-update-spam-policies?hl=de

  4. Google, Leitfaden zu Ranking-Systemen der Google Suche (Einleitung und System für hilfreiche Inhalte), Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/appearance/ranking-systems-guide?hl=de

  5. Google, Hilfreiche, vertrauenswürdige, nutzerorientierte Inhalte erstellen, Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/fundamentals/creating-helpful-content?hl=de

  6. Google, Sitemap erstellen und einreichen, Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap?hl=de

  7. Google, Sitemaps mit Sitemap-Indexdateien verwalten, Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/crawling-indexing/sitemaps/large-sitemaps?hl=de

  8. Google, Aufnahme in den Google-Suchindex mit "noindex" blockieren, Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/crawling-indexing/block-indexing?hl=de

  9. Google, Verwaltung des Crawling-Budgets, Dokumentation zur Google Crawling Infrastruktur, abgerufen am 8. November 2026, https://developers.google.com/crawling/docs/crawl-budget?hl=de

  10. Google, Bericht zur Seitenindexierung, Search Console-Hilfe, abgerufen am 8. November 2026, https://support.google.com/webmasters/answer/7440203?hl=de

  11. Google, Leitfaden der Google Suche zur Verwendung von KI-generierten Inhalten auf deiner Website, Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/fundamentals/using-gen-ai-content?hl=de

  12. Google, Kanonische URL mit rel="canonical" und anderen Methoden angeben, Google Search Central Dokumentation, abgerufen am 8. November 2026, https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls?hl=de

Wenn du den Verdacht hast, dass in deinem Unternehmen eine Datentabelle schlummert, aus der Seiten werden könnten, die gefunden werden wollen, dann komm in meinen kostenlosen Workshop, und wir finden heraus, ob das stimmt. Die ersten zwei Wochen Arbeit gehen auf meine Rechnung. Du bringst die Tabelle mit, ich die Schwelle.