Daten & Monitoring

Rankings mit Machine Learning vorhersagen, unser Experiment von 2017

Wie wir mit SEMrush-Daten, On-Page-Merkmalen und einem neuronalen Netz Keywords mit Ranking-Potenzial gefunden haben.

MerkmaleVolumenCPCTitle 0/0,5/1ContentURL, DomainPosition#1
Michael WeberErstmals veröffentlicht: 26.10.2017Stand: 15.10.20268 Min. Lesezeit
Experiment von 2017

Methode und Ergebnis stammen aus unserem Experiment vom Oktober 2017. Wir haben es seitdem nicht neu durchgeführt. Was sich an Suche und Werkzeugen geändert hat, steht im Abschnitt Was hat sich seitdem geändert?

Kurz gesagt
  • Google verbindet Wörter heute über Systeme wie RankBrain, neuronales Matching und BERT mit Konzepten. Seiten ranken deshalb auch ohne die exakte Phrase, und On-Page-Merkmale wie „Phrase im Title“ erklären Rankings weniger als 2017.
  • 2017 wollten wir wissen, bei welchen von 3.600 Keywords eine einfache On-Page-Optimierung für eine Top-10-Position reicht. Keyword-Daten aus der SEMrush-API und gecrawlte On-Page-Merkmale (Phrase in Title, Content, URL-Pfad, Domain) trainierten ein neuronales Netz, einen MLPClassifier aus scikit-learn.
  • Für rund 600 der 3.600 Keywords sagte das Modell nach Optimierung von Title und Inhalt eine Top-10-Position voraus. Irrelevante Begriffe bekamen keine Vorhersage. Die Prognosen waren teils zu optimistisch.

Die Frage hinter dem Experiment

Keywords zu finden ist leicht, sie zu bewerten nicht. Für unsere Beispielwebsite, einen Nischen-Shop zum Thema Rohfütterung von Hunden (BARF), lieferte SEMrush über 1.100 Keywords, für die sie bereits rankte. Mit den Keywords der Wettbewerber wurden es über 3.600. Das ist für eine größere Website wenig und für eine Prüfung von Hand trotzdem zu viel.

Wir wollten wissen, bei welchen dieser Keywords eine Top-10-Position mit wenig Aufwand erreichbar ist. Dafür haben wir ein Machine-Learning-Modell trainiert, das die Position nach einer On-Page-Optimierung vorhersagt. Vorgestellt haben wir das Experiment erstmals auf dem SEO Day 2017.

Methode in fünf Schritten

1. Überlegen, wie du es von Hand machen würdest

Von Hand würdest du auf Suchvolumen und CPC schauen. Hohe Werte deuten auf viel Wettbewerb. Rankt ein sehr ähnlicher Wettbewerber in den Top 10, ist das auch für die eigene Seite wahrscheinlich machbar. Ist eine eigene Seite bereits gut optimiert, rankt aber auf Seite zwei oder drei, bringt weitere On-Page-Arbeit wenig. Fehlt eine passende Seite oder ist sie schwach optimiert, ist das Potenzial größer. Genau diese Daten bekommt das Modell.

2. Daten sammeln und umwandeln

Über die SEMrush-API haben wir alle Keywords der Beispielsite und ihrer Wettbewerber abgerufen. Danach haben wir jede rankende Seite gecrawlt und geprüft, ob die Keyword-Phrase in Title, Content, URL-Pfad oder Domain vorkommt. Das Modell verarbeitet nur Zahlen. Deshalb haben wir auch Domains und Keywords als Zahlen kodiert.

MerkmalBedeutungWerte
Suchvolumen, CPCWettbewerbssituation des KeywordsZahl aus SEMrush
Domain, KeywordWer rankt wofürals Zahl kodiert
title_foundWörter der Phrase im Title1 = alle, 0,5 = die Hälfte, 0 = keins
content_foundWörter der Phrase im Inhalt1 / 0,5 / 0
path_found, domain_foundWörter der Phrase in URL-Pfad und Domain1 / 0,5 / 0
PositionZielwert, den das Modell lerntaktuelle Position

3. Modell trainieren

Die Daten haben wir in 80 % Trainings- und 20 % Testdaten geteilt. Als Algorithmus diente ein MLPClassifier, ein neuronales Netz aus scikit-learn. In unseren Tests funktionierte ein neuronales Netz für diese Aufgabe am besten. Das Training kann Minuten oder Stunden dauern. Das Prinzip zeigt dieses vereinfachte Beispiel.

# Vereinfachtes Beispiel, nicht der Original-Code (der liegt bei GitHub) from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier def found(phrase, text): # Anteil der Wörter aus der Phrase, die im Text vorkommen: 0, 0.5 oder 1 words = phrase.lower().split() share = sum(w in text.lower() for w in words) / len(words) return 1.0 if share == 1 else (0.5 if share >= 0.5 else 0.0) # X: Suchvolumen, CPC, Domain-ID, Keyword-ID, title_found, content_found, path_found, domain_found # y: aktuelle Position X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) model = MLPClassifier().fit(X_train, y_train) print(model.predict(X_test[:5]))

4. Positionen für optimierte Seiten vorhersagen

Beim Keyword „barf fleisch kaufen“ fehlte die Phrase auf der Shop-Seite in Title und URL. Im Content und in der Domain kam sie teilweise vor. Das Modell sagte Position 20 voraus. In den Testdaten stand die Seite auf Position 18. Danach haben wir dieselben Daten mit der Phrase in Title und Content eingegeben. Das Modell sagte Position 1 voraus.

5. Alle Keywords auswerten

Dasselbe lief für alle 3.600 Keywords. Für Begriffe ohne Bezug zum Shop wie „kreuzberg“, „durchfall“ oder „ziege“ gab das Modell keine Vorhersage aus. Das spricht für die Qualität, denn für solche Begriffe ist ein gutes Ranking auch nicht zu erwarten. Gefiltert auf vorhergesagte Positionen unter 10 blieben rund 600 überwiegend relevante Keywords übrig.

Ergebnis

KennzahlWert
Keywords der Beispielsite laut SEMrushüber 1.100
Keywords inklusive Wettbewerberüber 3.600
Keywords mit vorhergesagter Top-10-Position nach Optimierungrund 600
Beispiel „barf fleisch kaufen“, Vorhersage vs. tatsächlichPosition 20 vs. 18
Dasselbe Keyword, optimiert in Title und Contentvorhergesagt Position 1

Statt 3.600 Keywords von Hand zu prüfen, lag damit eine Liste von 600 Kandidaten für neue oder optimierte Seiten vor. Einige davon waren Fehltreffer, und manche Prognose war zu optimistisch. Als Startpunkt für die On-Page-Arbeit hat die Liste funktioniert. Ob die Seiten nach der Optimierung tatsächlich so rankten, haben wir im Rahmen des Experiments nicht gemessen.

Grenzen des Experiments

  • Nur wenige On-Page-Merkmale, vor allem die Position der Phrase in Title und Inhalt. Externe Links und Analysen wie TF*IDF fehlten.
  • Eine Nischen-Website mit 3.600 Keywords. Mehr Ranking-Daten, mehr Wettbewerber und mehr Keywords sollten die Vorhersage verbessern.
  • Parameter und Algorithmus haben wir nicht systematisch optimiert.
  • Ein Klassifikator behandelt jede Position als eigene Klasse. Eine Regression, die Abstände zwischen Positionen kennt, wäre ein naheliegender Vergleich (unsere Einordnung, nicht getestet).

Was hat sich seitdem geändert?

Die Methode ist neun Jahre alt. Drei Dinge haben sich seitdem deutlich verändert.

  • Google versteht Sprache besser. Laut Google arbeiten heute unter anderem RankBrain, neuronales Matching und BERT daran, Wörter mit Konzepten zu verbinden. Seiten können damit auch ohne die exakte Phrase ranken (Stand der Google-Doku 10.12.2025). Ein Merkmal wie „alle Wörter im Title“ erklärt Rankings deshalb weniger als 2017.
  • Die Ergebnisseite ist voller. AI Overviews und AI Mode bauen laut Google auf denselben Ranking-Systemen auf. Eine Position allein sagt aber weniger über Klicks als früher, wenn darüber eine KI-Übersicht steht.
  • Werkzeuge sind zugänglicher. scikit-learn mit dem MLPClassifier gibt es weiterhin. Der Code unseres Experiments liegt öffentlich im Repository searchVIU Labs auf GitHub, dazu ein Beispiel, das die CTR je Position aus Search-Console-Daten vorhersagt.

Die Grundidee bleibt brauchbar. Willst du Keywords nach Potenzial priorisieren, kombinierst du Wettbewerbsdaten mit dem, was auf deinen Seiten steht, und lässt ein Modell die Liste vorsortieren.

Häufige Fehler beim Nachbauen

  • Test- und Trainingsdaten überschneiden sich, und das Modell wirkt genauer, als es ist.
  • Die Vorhersage wird als Zusage gelesen. Sie ist eine Rangfolge für die Prüfung von Hand.
  • Keywords ohne Bezug zum Angebot bleiben in der Liste, weil niemand die Ergebnisse durchsieht.

Häufige Fragen

Lassen sich Google-Rankings mit Machine Learning vorhersagen?

Grob ja. Ein Modell lernt aus Wettbewerbs- und On-Page-Daten, welche Positionen für ein Keyword realistisch sind. In unserem Experiment von 2017 lag die Vorhersage im Beispiel zwei Positionen neben dem echten Wert. Für eine Vorsortierung reicht das, für eine Zusage nicht.

Welche Daten braucht ein Modell zur Ranking-Vorhersage?

Wir haben Suchvolumen, CPC, rankende Domains und Keywords sowie die Position der Phrase in Title, Inhalt, URL-Pfad und Domain genutzt. Externe Links und Inhaltsanalysen würden die Vorhersage vermutlich verbessern.

Welcher Algorithmus eignet sich?

Wir haben einen MLPClassifier aus scikit-learn genutzt, ein neuronales Netz, das in unseren Tests am besten abschnitt. Andere Verfahren haben wir nicht systematisch verglichen.

Ist das Experiment heute noch aussagekräftig?

Als Methode ja. Die Zahlen gelten aber für 2017 und eine Nischen-Website. Google ordnet Wörter heute stärker nach Konzepten ein. Deshalb würden wir weitere Merkmale aufnehmen und das Ergebnis neu prüfen.

Wo finde ich den Code?

Im öffentlichen Repository searchVIU Labs auf GitHub, als Python-Code in Jupyter-Notebooks.

Rank Tracking in searchVIU misst deine Positionen jede Woche und ordnet jedem Keyword eine Ziel- und eine Ranking-URL zu. Verschwindet einer der Top-Suchbegriffe einer wichtigen Seite aus ihrem Title, meldet Page Watch das per Mail, Slack, Teams oder Webhook. Mehr dazu auf der Seite Rank Tracking.

Demo anfragen

Quellen

Abgerufen am 15.10.2026. Ist eine Angabe veraltet oder fehlt etwas, schreib uns.

  1. scikit-learn, MLPClassifier: https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html
  2. Semrush, API: https://developer.semrush.com/api/
  3. Google Search Central, Leitfaden zu den Ranking-Systemen: https://developers.google.com/search/docs/appearance/ranking-systems-guide · Stand 10.12.2025
  4. Google Search Central, Leitfaden zu generativen KI-Funktionen: https://developers.google.com/search/docs/fundamentals/ai-optimization-guide · Stand 10.07.2026