Doppelte Inhalte mit Wort-Shingles prüfen
Dieser Duplicate-Content-Checker vergleicht zwei Texte anhand aufeinanderfolgender Wortgruppen und liefert einen klaren Ähnlichkeitswert.
Im Browser ausführen – kostenlos
Er vereinheitlicht Groß- und Kleinschreibung sowie Satzzeichen, bildet für jeden Text eine Menge von Wortfolgen und misst deren Überschneidung mit dem Jaccard-Koeffizienten. Sie legen die Shingle-Länge und den Schwellenwert für die Kennzeichnung fest. Das Ergebnis ist deterministisch, nachvollziehbar und eignet sich zur Prüfung von Landingpages, Produktbeschreibungen, übernommenen Artikeln und anderen Inhalten vor der Veröffentlichung.
Was die Ähnlichkeit von Wort-Shingles aussagt
Ein Shingle ist eine kurze Folge unmittelbar aufeinanderfolgender Wörter. Bei einer Länge von drei entstehen aus einem Satz Gruppen mit den Wörtern 1 bis 3, 2 bis 4 und so weiter. Das Werkzeug bildet diese Mengen für beide Texte, zählt die gemeinsamen Folgen und teilt diese Zahl durch die Gesamtzahl aller eindeutigen Folgen in beiden Mengen. Aus dieser Jaccard-Berechnung entsteht der Ähnlichkeitswert. Übereinstimmende Passagen werden erfasst, während Unterschiede bei Großschreibung und Satzzeichen ohne inhaltliche Auswirkung entfallen. Das Verfahren ist deshalb aussagekräftiger als der Vergleich einzelner Worthäufigkeiten: Allgemeiner Wortschatz erzeugt allein noch keine Übereinstimmung, solange die Wörter nicht in derselben lokalen Reihenfolge vorkommen. Der Wert belegt textliche Überschneidungen, sagt aber keine Suchmaschinenstrafe voraus. Ein hoher Wert zeigt, dass beide Fassungen viele Formulierungen wiederverwenden und redaktionell geprüft werden sollten. Ein niedriger Wert weist auf unterschiedliche genaue Formulierungen hin, beweist jedoch weder Originalität noch Richtigkeit, Nutzen oder Veröffentlichungsreife.
Shingle-Länge und Schwellenwert wählen
Die voreingestellte Länge von drei Wörtern ist ein sinnvoller Ausgangspunkt für gewöhnliche Webtexte. Kleinere Shingles reagieren empfindlicher: Sie finden kurze gemeinsame Fragmente, zählen aber möglicherweise auch übliche Wendungen, die auf unabhängigen Seiten natürlich vorkommen. Größere Shingles verlangen längere wortgleiche Folgen, verringern zufällige Treffer und können leicht umformulierte Passagen übersehen. Wählen Sie die Länge, bevor Sie den Prozentwert beurteilen, denn Ergebnisse verschiedener Längen sind nicht unmittelbar vergleichbar. Der Schwellenwert steuert ausschließlich die Kennzeichnung als wahrscheinliches Duplikat; die eigentliche Berechnung bleibt unverändert. Bei einem Wert von 70 wird ein Ergebnis ab 70 Prozent markiert. Kalibrieren Sie diese Grenze anhand eigener Inhaltsbeispiele, statt sie als allgemeingültige SEO-Regel zu behandeln. Nutzen Sie für Stapel stets dieselben Einstellungen. Jeder Text muss mindestens so viele normalisierte Wörter wie die gewählte Shingle-Länge enthalten. Andernfalls wird die Eingabe abgelehnt, damit kein künstlicher oder mathematisch irreführender Prozentwert erscheint.
Aus dem Ergebnis eine redaktionelle Entscheidung ableiten
Verwenden Sie den Wert als Prüfsignal in einem redaktionellen Ablauf. Vergleichen Sie zunächst Seiten für ähnliche Suchanfragen, Vorlagen aus demselben Katalog oder einen Entwurf mit dem bereitgestellten Quellenmaterial. Wird ein Paar markiert, prüfen Sie beide Dokumente und klären Sie die Ursache der gemeinsamen Shingles. Wiederkehrende Navigation, Rechtshinweise, technische Daten und standardisierte Handlungsaufforderungen können berechtigt sein. Übereinstimmende Einleitungen, Erklärungen, Vorteile und Schlussabschnitte sprechen stärker für eine Überarbeitung. Bewahren Sie Fakten, die korrekt bleiben müssen, aber ändern Sie Aufbau und Formulierungen so, dass jede Seite eine eigene Suchabsicht bedient. Halten Sie Shingle-Länge und Schwellenwert zusammen mit dem Ergebnis fest, wenn Sie einen reproduzierbaren Prüfpfad benötigen. Das Werkzeug verarbeitet genau zwei Texte je Anfrage. Es ruft keine URL auf, durchsucht nicht das öffentliche Web, bestimmt keinen ursprünglichen Urheber und entscheidet nicht über Rankings. Für eine Website-Prüfung wählen Sie zunächst aussagekräftige Paare, verwenden konstante Einstellungen und lassen hohe Werte von Menschen beurteilen, anstatt Seiten automatisch zu löschen oder umzuleiten.
Anwendungsfälle
Ähnliche Landingpages prüfen
Vergleichen Sie Seiten für verwandte Suchbegriffe und finden Sie Passagen, die unnötige Wiederholungen verursachen.
Lieferantentexte kontrollieren
Messen Sie, wie stark eine überarbeitete Produktbeschreibung noch dem Ausgangstext des Herstellers folgt.
Redaktionelle Beiträge vorsortieren
Vergleichen Sie einen neuen Entwurf mit einem bestehenden Artikel und geben Sie stark überlappende Paare zur Prüfung weiter.
Häufige Fragen
Wie wird der Ähnlichkeitswert berechnet?
Das Werkzeug nutzt eindeutige Wort-Shingles und deren Jaccard-Ähnlichkeit: gemeinsame Shingles geteilt durch alle eindeutigen Shingles beider Texte, multipliziert mit 100.
Was geschieht, wenn ein Text kürzer als die Shingle-Länge ist?
Die Anfrage liefert einen Eingabefehler und nennt den zu kurzen Text. Beide Texte müssen mindestens ein Shingle bilden können.
Bedeutet die Duplikat-Kennzeichnung eine Suchmaschinenstrafe?
Nein. Sie beschreibt die Phrasenüberschneidung am gewählten Schwellenwert und sagt nichts über Indexierung, Kanonisierung, Ranking oder Maßnahmen einer Suchmaschine voraus.
Beeinflussen Satzzeichen oder Großschreibung das Ergebnis?
Nein. Unicode, Schreibweise und Satzzeichen werden vor der Shingle-Bildung vereinheitlicht. Wortidentität und Reihenfolge bleiben entscheidend.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Dieselbe deterministische Prüfung können Sie auf dieser Seite auch kostenlos im Browser ausführen.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/seo/duplicate-content-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text_a":"Search engines value useful original pages that answer a reader'\''s question clearly and completely.","text_b":"Search engines value useful original pages that answer a reader'\''s question clearly and completely."}'const res = await fetch("https://api.kit.forhosting.com/seo/duplicate-content-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text_a": "Search engines value useful original pages that answer a reader's question clearly and completely.",
"text_b": "Search engines value useful original pages that answer a reader's question clearly and completely."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/duplicate-content-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text_a": "Search engines value useful original pages that answer a reader's question clearly and completely.",
"text_b": "Search engines value useful original pages that answer a reader's question clearly and completely."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/duplicate-content-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text_a":"Search engines value useful original pages that answer a reader\'s question clearly and completely.","text_b":"Search engines value useful original pages that answer a reader\'s question clearly and completely."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text_a":"Search engines value useful original pages that answer a reader's question clearly and completely.","text_b":"Search engines value useful original pages that answer a reader's question clearly and completely."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/duplicate-content-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text_a": "Search engines value useful original pages that answer a reader's question clearly and completely.",
"text_b": "Search engines value useful original pages that answer a reader's question clearly and completely."
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.duplicate_content_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |