{"id":15568,"date":"2026-09-05T14:38:58","date_gmt":"2026-09-05T12:38:58","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/"},"modified":"2026-09-05T14:38:58","modified_gmt":"2026-09-05T12:38:58","slug":"xml-sitemap-auditor-lastmod-index-sample-check","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/","title":{"rendered":"XML-Sitemap-Auditor: Index, lastmod und Stichprobe"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Eine Sitemap ist ein Versprechen an Crawler: Diese Adressen existieren, sie sollen indexiert werden, und so alt sind sie. Gebrochene Versprechen kosten Crawl-Budget und Vertrauen: gelistete Seiten, die weiterleiten oder 404 antworten, noindex-Seiten in der Liste, ein lastmod, das bei jedem Eintrag gleich ist, oder eine Sitemap, die keine robots.txt ank\u00fcndigt. Diese Pr\u00fcfung findet die Sitemap so, wie ein Crawler es tut, liest einen Index und bis zu zehn Kind-Sitemaps, beurteilt die Eintr\u00e4ge und ruft dann zw\u00f6lf \u00fcber die Liste verteilte Seiten ab, um Versprechen und Wirklichkeit zu vergleichen.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"sm-url\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Domain oder Sitemap-Adresse<\/label><br \/>\n        <input id=\"sm-url\" type=\"text\" value=\"www.lukaswojcik.com\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box; font-family: monospace;\">\n    <\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Von diesem Server aus: robots.txt, die Sitemap und bis zu zehn Kind-Sitemaps (je h\u00f6chstens 5 MB), danach zw\u00f6lf gelistete Seiten von je h\u00f6chstens 64 KB. Hosts in privaten, Loopback- und Link-local-Netzen werden abgelehnt. Die Abfrage ist durch reCAPTCHA v3 gesch\u00fctzt; die aufrufende IP-Adresse und das Ziel werden eine Stunde lang gespeichert, um die Rate zu begrenzen.<\/p>\n<p>    <button id=\"sm-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: var(--on-accent, #0b1114); border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Sitemap pr\u00fcfen<\/button><\/p>\n<div id=\"sm-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.8rem; margin: 24px 0 0;\">Grenzen, die dazugeh\u00f6ren: Von einem Index werden nur die ersten zehn Kind-Sitemaps gelesen und nur die ersten 20.000 Eintr\u00e4ge f\u00fcr die Statistik behalten; die Stichprobe sind zw\u00f6lf gleichm\u00e4\u00dfig \u00fcber die Liste verteilte Seiten, was systematische Probleme findet und einzelne kaputte Eintr\u00e4ge \u00fcbersieht; noindex wird nur aus dem HTML gelesen, nicht aus einer X-Robots-Tag-Kopfzeile; und Bild-, Video- und News-Erweiterungen z\u00e4hlen als gew\u00f6hnliche Eintr\u00e4ge.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Eine Sitemap ist ein Versprechen an Crawler: Diese Adressen existieren, sie sollen indexiert werden, und so alt sind sie. Gebrochene Versprechen kosten Crawl-Budget und Vertrauen: gelistete Seiten, die weiterleiten oder 404 antworten, noindex-Seiten in der Liste, ein lastmod, das bei jedem Eintrag gleich ist, oder eine Sitemap, die keine robots.txt ank\u00fcndigt. Diese Pr\u00fcfung findet die Sitemap so, wie ein Crawler es tut, liest einen Index und bis zu zehn Kind-Sitemaps, beurteilt die Eintr\u00e4ge und ruft dann zw\u00f6lf \u00fcber die Liste verteilte Seiten ab, um Versprechen und Wirklichkeit zu vergleichen.\",\"label_url\":\"Domain oder Sitemap-Adresse\",\"datenschutz\":\"Von diesem Server aus: robots.txt, die Sitemap und bis zu zehn Kind-Sitemaps (je h\u00f6chstens 5 MB), danach zw\u00f6lf gelistete Seiten von je h\u00f6chstens 64 KB. Hosts in privaten, Loopback- und Link-local-Netzen werden abgelehnt. Die Abfrage ist durch reCAPTCHA v3 gesch\u00fctzt; die aufrufende IP-Adresse und das Ziel werden eine Stunde lang gespeichert, um die Rate zu begrenzen.\",\"knopf\":\"Sitemap pr\u00fcfen\",\"laeuft\":\"Sitemap suchen, Index lesen, Seiten stichprobenartig abrufen...\",\"grenze\":\"Grenzen, die dazugeh\u00f6ren: Von einem Index werden nur die ersten zehn Kind-Sitemaps gelesen und nur die ersten 20.000 Eintr\u00e4ge f\u00fcr die Statistik behalten; die Stichprobe sind zw\u00f6lf gleichm\u00e4\u00dfig \u00fcber die Liste verteilte Seiten, was systematische Probleme findet und einzelne kaputte Eintr\u00e4ge \u00fcbersieht; noindex wird nur aus dem HTML gelesen, nicht aus einer X-Robots-Tag-Kopfzeile; und Bild-, Video- und News-Erweiterungen z\u00e4hlen als gew\u00f6hnliche Eintr\u00e4ge.\",\"h_uebersicht\":\"\u00dcbersicht\",\"zeile_start\":\"Sitemap\",\"zeile_quelle\":\"Gefunden \u00fcber\",\"zeile_robots\":\"In robots.txt angek\u00fcndigt\",\"zeile_gesamt\":\"Gelistete Adressen\",\"zeile_dauer\":\"Dauer\",\"zeile_limit\":\"Pr\u00fcfungen in dieser Stunde noch\",\"quelle_robots\":\"Sitemap-Zeile in robots.txt\",\"quelle_genannt\":\"eingegebene Adresse\",\"quelle_standard\":\"Standardpfad \\\/sitemap.xml\",\"quelle_alternative\":\"einen alternativen Standardpfad\",\"h_sitemaps\":\"Sitemap-Dateien\",\"spalte_sitemap\":\"Datei\",\"spalte_art\":\"Art\",\"spalte_n\":\"Eintr\u00e4ge\",\"spalte_groesse\":\"Gr\u00f6\u00dfe\",\"spalte_status\":\"Status\",\"art_index\":\"Index\",\"art_urlset\":\"URL-Liste\",\"art_unbekannt\":\"keine Sitemap\",\"fehlgeschlagen\":\"fehlgeschlagen\",\"h_proben\":\"Stichprobe aus {n} gelisteten Seiten\",\"spalte_url\":\"Adresse\",\"spalte_befund\":\"Ergebnis\",\"spalte_hinweis\":\"Detail\",\"probe_ok\":\"antwortet 200\",\"probe_fehler\":\"nicht erreichbar\",\"probe_status\":\"falscher Status\",\"probe_weitergeleitet\":\"leitet weiter\",\"probe_noindex\":\"noindex\",\"probe_canonical\":\"Canonical woanders\",\"h_befunde\":\"Befunde\",\"stufe_hoch\":\"Hoch\",\"stufe_mittel\":\"Mittel\",\"stufe_niedrig\":\"Niedrig\",\"stufe_info\":\"Hinweis\",\"stufe_gut\":\"In Ordnung\",\"keine_befunde\":\"Nichts zu berichten.\",\"urteil_gut\":\"Die Sitemap ist auffindbar, wohlgeformt, und die Stichprobe h\u00e4lt das Versprechen.\",\"urteil_warnung\":\"Die Sitemap funktioniert, aber ein Teil dessen, was sie verspricht, stimmt nicht oder ist unbrauchbar.\",\"urteil_kritisch\":\"Es wurde keine brauchbare Sitemap gefunden.\",\"fehler_kein_token\":\"Die Pr\u00fcfung konnte nicht starten, weil reCAPTCHA nicht geladen wurde.\",\"fehler_captcha\":\"reCAPTCHA hat die Anfrage als automatisiert eingestuft. Ein Neuladen der Seite hilft in der Regel.\",\"fehler_zu_viele\":\"Die Grenze von {limit} Pr\u00fcfungen je Stunde f\u00fcr diese Adresse ist erreicht.\",\"fehler_adresse\":\"Diese Adresse l\u00e4sst sich nicht verwenden.\",\"fehler_zaehler\":\"Der Z\u00e4hler ist nicht erreichbar, deshalb wurde nichts gepr\u00fcft.\",\"fehler_pruefdienst\":\"Der reCAPTCHA-Dienst war nicht erreichbar.\",\"fehler_aufbau\":\"Der Dienst ist nicht richtig eingerichtet. Der Fehler liegt auf dieser Seite.\",\"fehler_eingabe\":\"Die Anfrage war nicht lesbar.\",\"fehler_methode\":\"Falsche Anfragemethode.\",\"fehler_netz\":\"Der Dienst war nicht erreichbar.\",\"fehler_antwort\":\"Die Antwort war nicht lesbar.\",\"fehler_unbekannt\":\"Etwas ging schief, wof\u00fcr es keine eigene Meldung gibt.\",\"grund_leer\":\"Es wurde nichts eingegeben.\",\"grund_zu_lang\":\"Die Eingabe ist zu lang.\",\"grund_unlesbar\":\"Das ist keine lesbare Adresse.\",\"grund_schema\":\"Gepr\u00fcft werden nur http- und https-Adressen.\",\"grund_benutzerinfo\":\"Eingaben mit Zugangsdaten werden abgelehnt.\",\"grund_kein_punkt\":\"Der Hostname braucht mindestens einen Punkt.\",\"grund_hostform\":\"Es wird ein Hostname gebraucht, keine IP-Adresse.\",\"grund_port\":\"Gepr\u00fcft werden nur die Ports 80, 443, 8080 und 8443.\",\"grund_gesperrter_bereich\":\"Dieser Host l\u00f6st in ein privates oder reserviertes Netz auf. Solche werden nie kontaktiert.\",\"grund_kein_dns\":\"Der Hostname l\u00e4sst sich nicht aufl\u00f6sen.\",\"befund_robots_sitemap\":\"robots.txt k\u00fcndigt {n} Sitemap(s) an; gepr\u00fcft: {url} || Crawler lesen die Sitemap-Zeile ohne weiteren Hinweis. So soll eine Sitemap gefunden werden.\",\"befund_genannt\":\"Gepr\u00fcft wurde die eingegebene Adresse: {url} || Die Sitemap stammt aus der Eingabe, nicht aus der Suche.\",\"befund_robots_ohne_sitemap\":\"robots.txt k\u00fcndigt keine Sitemap an || Google findet \\\/sitemap.xml per Konvention und \u00fcber die Search Console; Bing und andere verlassen sich auf die Sitemap-Zeile in robots.txt. Eine Zeile schlie\u00dft die L\u00fccke.\",\"befund_robots_andere_sitemap\":\"robots.txt k\u00fcndigt eine andere Sitemap an: {liste} || Die gepr\u00fcfte Datei ist nicht die, auf die robots.txt die Crawler schickt.\",\"befund_alternative\":\"Gefunden unter einem alternativen Pfad: {url} || \\\/sitemap.xml hat nicht geantwortet; ein WordPress- oder Plugin-Standardpfad schon. Ihn in robots.txt anzuk\u00fcndigen erspart das Raten.\",\"befund_sitemap_fehlt\":\"Keine Sitemap gefunden ({url}: {status} {fehler}) || Weder robots.txt noch die Standardpfade f\u00fchren zu einer Sitemap. Crawler verlassen sich dann allein auf Links; neue und tief liegende Seiten werden sp\u00e4ter oder gar nicht gefunden.\",\"befund_start_weitergeleitet\":\"Die Sitemap-Adresse leitet weiter auf {ziel} || Crawler folgen, aber die angek\u00fcndigte Adresse sollte die endg\u00fcltige sein. Eine Weiterleitungskette vor jedem Sitemap-Abruf ist vergeudete Arbeit.\",\"befund_kein_sitemap_xml\":\"Die Adresse antwortet, aber nicht mit einer Sitemap ({typ}) || Weder urlset noch sitemapindex wurden gefunden. Oft eine HTML-Fehlerseite unter dem Sitemap-Pfad.\",\"befund_nicht_wohlgeformt\":\"Kein wohlgeformtes XML: {url} || Die Eintr\u00e4ge lie\u00dfen sich noch z\u00e4hlen, aber ein strenger Parser bricht beim ersten Fehler ab, und Google meldet die Datei als unlesbar. Unmaskierte Kaufmanns-Und in URLs sind die \u00fcbliche Ursache.\",\"befund_namespace_fehlt\":\"Sitemap-Namensraum fehlt || Das Wurzelelement sollte xmlns=\\u0022http:\\\/\\\/www.sitemaps.org\\\/schemas\\\/sitemap\\\/0.9\\u0022 erkl\u00e4ren. Die meisten Crawler kommen damit zurecht, Validatoren nicht.\",\"befund_content_type\":\"Ausgeliefert als {typ} || Eine Sitemap sollte als application\\\/xml oder text\\\/xml ausgeliefert werden. Manche Crawler lehnen andere Typen ab.\",\"befund_gz\":\"Mit gzip komprimiert || Erlaubt und bei gro\u00dfen Dateien n\u00fctzlich; die 50-MB-Grenze gilt f\u00fcr die entpackte Gr\u00f6\u00dfe.\",\"befund_index\":\"Sitemap-Index mit {n} Kind-Sitemap(s), {gelesen} gelesen || Ein Index b\u00fcndelt mehrere Sitemaps. Jedes Kind wird einzeln geholt und beurteilt.\",\"befund_index_gekuerzt\":\"Nur die ersten {max} von {n} Kind-Sitemaps wurden gelesen || Die Statistik unten deckt die gelesenen Sitemaps ab, nicht den ganzen Bestand.\",\"befund_kind_fehler\":\"{n} Kind-Sitemap(s) nicht lesbar: {liste} || Ein Index, der auf fehlende oder scheiternde Dateien zeigt, l\u00e4sst Crawler diese Teile ganz \u00fcberspringen.\",\"befund_kind_leer\":\"{n} Kind-Sitemap(s) ohne Eintr\u00e4ge || Leere Kind-Sitemaps sind harmlos, aber sinnlos; sie zu entfernen h\u00e4lt den Index sauber.\",\"befund_index_verschachtelt\":\"{n} Kind-Sitemap(s) sind selbst Indizes || Ein Sitemap-Index darf nicht auf einen weiteren Index zeigen. Google ignoriert verschachtelte Indizes.\",\"befund_zu_viele_urls\":\"{n} Eintr\u00e4ge in {url} || Eine einzelne Sitemap darf h\u00f6chstens 50.000 URLs nennen. Alles dar\u00fcber wird ignoriert; ein Sitemap-Index mit mehreren Dateien ist die Abhilfe.\",\"befund_zu_gross\":\"{mb} MB entpackt: {url} || Eine einzelne Sitemap darf entpackt h\u00f6chstens 50 MB gro\u00df sein. Gr\u00f6\u00dfere Dateien werden abgelehnt; \u00fcber einen Index aufteilen.\",\"befund_leer\":\"Die Sitemap nennt keine Adressen || Eine Sitemap ohne Eintr\u00e4ge sagt Crawlern nichts. Entweder hat der Generator nichts erzeugt, oder die falsche Datei ist angek\u00fcndigt.\",\"befund_urls_gesamt\":\"{n} Adressen in {sitemaps} Sitemap-Datei(en) || Die Menge der Adressen, um deren Indexierung die Seite bittet.\",\"befund_lastmod_fehlt\":\"Kein Eintrag tr\u00e4gt lastmod || Google nutzt lastmod, um zu entscheiden, was neu zu crawlen ist, und vertraut ihm nach eigener Aussage nur, wenn es durchgehend stimmt. Ohne es sieht jeder Eintrag gleich alt aus.\",\"befund_lastmod_teilweise\":\"lastmod bei {mit} von {n} Eintr\u00e4gen || Gemischte Nutzung macht den Wert schwer vertrauensw\u00fcrdig. Entweder bekommt jeder Eintrag ein echtes \u00c4nderungsdatum, oder keiner.\",\"befund_lastmod_ungueltig\":\"{n} lastmod-Wert(e) sind keine W3C-Daten || Das Format ist YYYY-MM-DD oder ein vollst\u00e4ndiger Zeitpunkt mit Zeitzone. Alles andere wird ignoriert.\",\"befund_lastmod_zukunft\":\"{n} lastmod-Wert(e) liegen in der Zukunft || Ein \u00c4nderungsdatum nach jetzt ist unm\u00f6glich und stempelt das Feld f\u00fcr die ganze Datei als unzuverl\u00e4ssig ab.\",\"befund_lastmod_alle_gleich\":\"Alle {n} Eintr\u00e4ge tragen dasselbe lastmod ({datum}) || Der Generator schreibt die Bauzeit in jeden Eintrag. Das ist kein \u00c4nderungsdatum; Google hat erkl\u00e4rt, ein lastmod zu ignorieren, das bei jeder URL auf denselben Wert gesetzt ist.\",\"befund_lastmod_ok\":\"lastmod bei {mit} von {n} Eintr\u00e4gen mit {verschieden} verschiedenen Daten || Die Daten variieren, wie echte \u00c4nderungsdaten es tun.\",\"befund_host_fremd\":\"{n} Adresse(n) auf einem anderen Host als {host} || Eine Sitemap darf nur Adressen ihres eigenen Hosts nennen (Protokoll und www-Variante eingeschlossen), au\u00dfer die robots.txt des anderen Hosts k\u00fcndigt sie an. Fremde Eintr\u00e4ge werden ignoriert.\",\"befund_http_urls\":\"{n} http:\\\/\\\/-Adresse(n) in einer https-Sitemap || Gelistet werden sollten die kanonischen https-Adressen; http-Eintr\u00e4ge schicken Crawler f\u00fcr jede Seite durch eine Weiterleitung.\",\"befund_relativ\":\"{n} relative Adresse(n) || Sitemap-Eintr\u00e4ge m\u00fcssen absolute URLs sein. Relative werden ignoriert.\",\"befund_fragment\":\"{n} Adresse(n) mit #Fragment || Fragmente werden nie an den Server gesendet; solche Eintr\u00e4ge beschreiben dasselbe Dokument zweimal.\",\"befund_query\":\"{n} Adresse(n) mit Abfrageparametern || In Ordnung, wenn das kanonische Seiten sind; ein Zeichen f\u00fcr Parameterrauschen, wenn es Filter oder Tracking-Parameter sind.\",\"befund_duplikate\":\"{n} doppelte Adresse(n) || Dieselbe URL kommt mehr als einmal vor. Harmlos, bl\u00e4ht aber die Datei auf und deutet auf ein Generatorproblem.\",\"befund_priority_changefreq\":\"priority bei {priority}, changefreq bei {changefreq} Eintr\u00e4gen || Google ignoriert beide Felder; Bing weitgehend auch. Sie schaden nicht, leisten aber auch nichts.\",\"befund_stichprobe\":\"Stichprobe: {ok} von {n} antworten 200 ohne Auff\u00e4lligkeit, {weiter} leiten weiter, {fehler} scheitern, {noindex} noindex, {canonical} Canonical woanders || Zw\u00f6lf \u00fcber die Liste verteilte Seiten, abgerufen wie von einem Crawler.\",\"befund_probe_fehler\":\"{n} von {von} Stichprobenseiten antworten nicht mit 200 || Gelistete Seiten, die 404, 410 oder 5xx antworten, vergeuden Crawl-Budget und lassen Google in der Menge an der Datei zweifeln.\",\"befund_probe_weitergeleitet\":\"{n} von {von} Stichprobenseiten leiten weiter || Die Sitemap sollte die Endadresse nennen, nicht eine, die dorthin weiterleitet.\",\"befund_probe_noindex\":\"{n} von {von} Stichprobenseiten tragen noindex || Eine Seite, die nicht indexiert werden will, geh\u00f6rt nicht in die Sitemap. Die beiden Signale widersprechen sich.\",\"befund_probe_canonical\":\"{n} von {von} Stichprobenseiten zeigen mit ihrem Canonical woandershin || Die Sitemap nennt eine Adresse, von der die Seite selbst sagt, sie sei nicht die bevorzugte. Das Canonical gewinnt, der Eintrag ist vergeudet.\",\"befund_probe_sauber\":\"Alle {n} Stichprobenseiten antworten 200, ohne Weiterleitung, noindex oder fremdes Canonical || Versprechen und Wirklichkeit passen in der Stichprobe zusammen.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-sitemap.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];\n    var QUELLEN = ['robots', 'genannt', 'standard', 'alternative'];\n    var PROBEN = ['ok', 'fehler', 'status', 'weitergeleitet', 'noindex', 'canonical'];<\/p>\n<p>    function liste(w) { return Array.isArray(w) ? w : []; }\n    function zahl(w) { return (typeof w === 'number' && isFinite(w)) ? w : null; }\n    function text(schluessel, daten) {\n        var t = T[schluessel];\n        if (typeof t !== 'string') { return null; }\n        return t.replace(\/\\{([a-z_0-9]+)\\}\/g, function (m, k) {\n            return (daten && daten[k] !== undefined && daten[k] !== null) ? String(daten[k]) : m;\n        });\n    }<\/p>\n<p>    function bewerten(antwort) {\n        var a = antwort || {};\n        if (a.fehler) { return { fehler: String(a.fehler), grund: a.grund || null, limit: zahl(a.limit) }; }\n        var befunde = liste(a.befunde).map(function (f) {\n            return { key: String(f.key || ''), stufe: STUFEN.indexOf(f.stufe) === -1 ? 'info' : f.stufe, daten: (f.daten && typeof f.daten === 'object') ? f.daten : {} };\n        });\n        var gruppen = {};\n        STUFEN.forEach(function (s) { gruppen[s] = befunde.filter(function (f) { return f.stufe === s; }); });\n        return {\n            fehler: null, basis: a.basis ? String(a.basis) : '', start: a.start ? String(a.start) : '', quelle: QUELLEN.indexOf(a.quelle) === -1 ? 'standard' : a.quelle, robots: liste(a.robots).map(String),\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            gesamt: zahl(a.gesamt) || 0,\n            sitemaps: liste(a.sitemaps).map(function (s) { s = s || {}; return { url: String(s.url || ''), art: s.art ? String(s.art) : null, n: zahl(s.n) || 0, kb: zahl(s.kb), gz: !!s.gz, status: zahl(s.status), fehler: s.fehler ? String(s.fehler) : null, kind: !!s.kind, lastmod: s.lastmod ? String(s.lastmod) : null }; }),\n            proben: liste(a.proben).map(function (p) { p = p || {}; return { url: String(p.url || ''), status: zahl(p.status), spruenge: zahl(p.spruenge) || 0, endurl: p.endurl ? String(p.endurl) : null, noindex: !!p.noindex, canonical: p.canonical ? String(p.canonical) : null, fehler: p.fehler ? String(p.fehler) : null, befund: PROBEN.indexOf(p.befund) === -1 ? 'fehler' : p.befund }; }),\n            befunde: befunde, gruppen: gruppen, dauer: zahl(a.dauer_ms), limitRest: zahl(a.limit_rest)\n        };\n    }<\/p>\n<p>    function skriptLaden() {\n        return new Promise(function (auf) {\n            if (window.grecaptcha) { auf(true); return; }\n            var s = document.createElement('script');\n            s.src = 'https:\/\/www.google.com\/recaptcha\/api.js?render=' + SITEKEY;\n            s.onload = function () { auf(true); }; s.onerror = function () { auf(false); };\n            document.head.appendChild(s);\n            setTimeout(function () { auf(!!window.grecaptcha); }, 8000);\n        });\n    }\n    function tokenHolen() {\n        return skriptLaden().then(function (da) {\n            if (!da || !window.grecaptcha || !window.grecaptcha.ready) { return null; }\n            return new Promise(function (auf) {\n                var fertig = false;\n                function einmal(w) { if (!fertig) { fertig = true; auf(w); } }\n                setTimeout(function () { einmal(null); }, 12000);\n                try {\n                    window.grecaptcha.ready(function () {\n                        if (fertig) { return; }\n                        if (!window.grecaptcha.execute) { einmal(null); return; }\n                        window.grecaptcha.execute(SITEKEY, { action: 'sitemap' }).then(function (t) { einmal(t || null); }, function () { einmal(null); });\n                    });\n                } catch (e) { einmal(null); }\n            });\n        }, function () { return null; });\n    }\n    function abfragen(url) {\n        return tokenHolen().then(function (token) {\n            return fetch(ENDPUNKT, { method: 'POST', headers: { 'Content-Type': 'application\/json' }, body: JSON.stringify({ url: url, token: token || '' }) })\n                .then(function (r) { return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; }); }, function () { return { fehler: 'netz' }; });\n        });\n    }<\/p>\n<p>    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.SM = { bewerten: bewerten, darstellen: null, text: text, ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, QUELLEN: QUELLEN, PROBEN: PROBEN, T: T };<\/p>\n<p>    var btn = document.getElementById('sm-btn');\n    var out = document.getElementById('sm-ausgabe');\n    if (!btn || !out) { return; }<\/p>\n<p>    function el(tag, stil, txt) { var e = document.createElement(tag); if (stil) { e.setAttribute('style', stil); } if (txt !== undefined && txt !== null) { e.textContent = txt; } return e; }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }\n    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.95rem; margin: 22px 0 8px;';\n    var ZELLE = 'padding: 5px 12px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    var ZELLE_WERT = 'padding: 5px 12px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace; word-break: break-all;';\n    var KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 8px; padding: 14px 16px; margin: 0 0 10px;';\n    var GUT = ' color: #7ee787;', WARN = ' color: #ffa94d;', ROT = ' color: #ff7b72;', GRAU = ' color: #8a8a99;';\n    var FARBEN = { hoch: '#ff7b72', mittel: '#ffa94d', niedrig: '#e3b341', info: '#8a8a99', gut: '#7ee787' };\n    var URTEIL = { gut: GUT, warnung: WARN, kritisch: ROT };\n    var PROBE_FARBE = { ok: GUT, fehler: ROT, status: ROT, weitergeleitet: WARN, noindex: WARN, canonical: WARN };\n    function gitter(sp) { return el('div', 'display: grid; grid-template-columns: ' + sp + '; gap: 0 18px; align-items: baseline;'); }\n    function paar(g, n, w, stil) { g.appendChild(el('div', ZELLE, n)); g.appendChild(el('div', ZELLE_WERT + (stil || ''), w)); }<\/p>\n<p>    function darstellen(b, ziel) {\n        ziel.innerHTML = '';\n        if (b.fehler) {\n            var txt = T['fehler_' + b.fehler] || T.fehler_unbekannt;\n            if (b.grund && T['grund_' + b.grund]) { txt = txt + ' ' + T['grund_' + b.grund]; }\n            if (b.limit !== null) { txt = txt.replace('{limit}', String(b.limit)); }\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', txt));\n            return;\n        }\n        ziel.appendChild(el('div', 'font-size: 1.05rem; font-weight: 700; margin: 0 0 12px;' + URTEIL[b.urteil], T['urteil_' + b.urteil]));<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_uebersicht));\n        var g = gitter('auto auto');\n        paar(g, T.zeile_start, b.start || '-');\n        paar(g, T.zeile_quelle, T['quelle_' + b.quelle], GRAU);\n        if (b.robots.length) { paar(g, T.zeile_robots, b.robots.join(', '), GRAU); }\n        paar(g, T.zeile_gesamt, String(b.gesamt), b.gesamt ? GUT : ROT);\n        if (b.dauer !== null) { paar(g, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        if (b.limitRest !== null) { paar(g, T.zeile_limit, String(b.limitRest), GRAU); }\n        ziel.appendChild(g);<\/p>\n<p>        if (b.sitemaps.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_sitemaps));\n            var huelle = el('div', 'overflow-x: auto;');\n            var gp = gitter('auto auto auto auto auto');\n            [T.spalte_sitemap, T.spalte_art, T.spalte_n, T.spalte_groesse, T.spalte_status].forEach(function (s) { gp.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap;', s)); });\n            b.sitemaps.forEach(function (s) {\n                gp.appendChild(el('div', ZELLE_WERT + (s.kind ? ' padding-left: 16px;' : ''), s.url));\n                gp.appendChild(el('div', ZELLE_WERT + GRAU, s.art ? T['art_' + s.art] || s.art : '-'));\n                gp.appendChild(el('div', ZELLE_WERT, s.fehler ? '-' : String(s.n)));\n                gp.appendChild(el('div', ZELLE_WERT + GRAU, s.kb === null ? '-' : s.kb + ' KB' + (s.gz ? ' (gz)' : '')));\n                gp.appendChild(el('div', ZELLE_WERT + (s.fehler ? ROT : GUT), s.fehler ? (s.status !== null ? String(s.status) : T.fehlgeschlagen) : '200'));\n            });\n            huelle.appendChild(gp);\n            ziel.appendChild(huelle);\n        }<\/p>\n<p>        if (b.proben.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, text('h_proben', { n: b.proben.length })));\n            var hp = el('div', 'overflow-x: auto;');\n            var gq = gitter('auto auto auto auto');\n            [T.spalte_url, T.spalte_status, T.spalte_befund, T.spalte_hinweis].forEach(function (s) { gq.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap;', s)); });\n            b.proben.forEach(function (p) {\n                gq.appendChild(el('div', ZELLE_WERT, p.url));\n                gq.appendChild(el('div', ZELLE_WERT + GRAU, p.status === null ? (p.fehler || '-') : String(p.status)));\n                gq.appendChild(el('div', ZELLE_WERT + PROBE_FARBE[p.befund] + ' white-space: nowrap;', T['probe_' + p.befund]));\n                var hinweis = p.befund === 'weitergeleitet' && p.endurl ? '\u2192 ' + p.endurl : (p.befund === 'canonical' && p.canonical ? 'canonical: ' + p.canonical : '');\n                gq.appendChild(el('div', ZELLE_WERT + GRAU, hinweis));\n            });\n            hp.appendChild(gq);\n            ziel.appendChild(hp);\n        }<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        var irgendwas = false;\n        STUFEN.forEach(function (s) {\n            var gr = b.gruppen[s];\n            if (!gr.length) { return; }\n            irgendwas = true;\n            ziel.appendChild(el('div', 'font-weight: 700; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.5px; margin: 14px 0 6px; color: ' + FARBEN[s] + ';', T['stufe_' + s] + ' (' + gr.length + ')'));\n            gr.forEach(function (f) {\n                var k = el('div', KASTEN + ' border-left: 3px solid ' + FARBEN[s] + ';');\n                var t = text('befund_' + f.key, f.daten) || f.key;\n                var teile = t.split(' || ');\n                k.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-size: 0.9rem; font-weight: 700;', teile[0]));\n                if (teile[1]) { k.appendChild(el('div', ZELLE + ' padding: 6px 0 0; line-height: 1.55;', teile[1])); }\n                ziel.appendChild(k);\n            });\n        });\n        if (!irgendwas) { ziel.appendChild(el('p', ZELLE + ' margin: 0;', T.keine_befunde)); }\n    }\n    window.LW_TEST.SM.darstellen = darstellen;<\/p>\n<p>    var laeuft = false;\n    btn.addEventListener('click', function () {\n        if (laeuft) { return; }\n        laeuft = true; btn.disabled = true;\n        out.innerHTML = '';\n        out.appendChild(el('p', ZELLE + GRAU + ' margin: 0;', T.laeuft));\n        abfragen(wert('sm-url')).then(function (a) { darstellen(bewerten(a), out); laeuft = false; btn.disabled = false; },\n            function () { darstellen(bewerten({ fehler: 'netz' }), out); laeuft = false; btn.disabled = false; });\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Findet die XML-Sitemap einer Seite \u00fcber robots.txt oder die Standardpfade, folgt einem Sitemap-Index zu seinen Kindern, pr\u00fcft die Eintr\u00e4ge auf lastmod-Qualit\u00e4t, fremde Hosts, Doppelte und Gr\u00f6\u00dfengrenzen und ruft eine Stichprobe von zw\u00f6lf gelisteten Seiten ab: antworten sie mit 200, leiten sie weiter, tragen sie noindex oder zeigt ihr Canonical woandershin?<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92214,92289,92277],"class_list":["post-15568","page","type-page","status-publish","hentry","tag-devops-de","tag-seo-de","tag-wordpress-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>XML-Sitemap-Auditor: Index, lastmod und Stichprobe - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"XML-Sitemap-Auditor: Index, lastmod und Stichprobe - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Findet die XML-Sitemap einer Seite \u00fcber robots.txt oder die Standardpfade, folgt einem Sitemap-Index zu seinen Kindern, pr\u00fcft die Eintr\u00e4ge auf lastmod-Qualit\u00e4t, fremde Hosts, Doppelte und Gr\u00f6\u00dfengrenzen und ruft eine Stichprobe von zw\u00f6lf gelisteten Seiten ab: antworten sie mit 200, leiten sie weiter, tragen sie noindex oder zeigt ihr Canonical woandershin?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/xml-sitemap-auditor-lastmod-index-sample-check\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/xml-sitemap-auditor-lastmod-index-sample-check\\\/\",\"name\":\"XML-Sitemap-Auditor: Index, lastmod und Stichprobe - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-05T12:38:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/xml-sitemap-auditor-lastmod-index-sample-check\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/xml-sitemap-auditor-lastmod-index-sample-check\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/xml-sitemap-auditor-lastmod-index-sample-check\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"XML-Sitemap-Auditor: Index, lastmod und Stichprobe\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"XML-Sitemap-Auditor: Index, lastmod und Stichprobe - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/","og_locale":"en_US","og_type":"article","og_title":"XML-Sitemap-Auditor: Index, lastmod und Stichprobe - Lukas Wojcik - Blog","og_description":"Findet die XML-Sitemap einer Seite \u00fcber robots.txt oder die Standardpfade, folgt einem Sitemap-Index zu seinen Kindern, pr\u00fcft die Eintr\u00e4ge auf lastmod-Qualit\u00e4t, fremde Hosts, Doppelte und Gr\u00f6\u00dfengrenzen und ruft eine Stichprobe von zw\u00f6lf gelisteten Seiten ab: antworten sie mit 200, leiten sie weiter, tragen sie noindex oder zeigt ihr Canonical woandershin?","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/","name":"XML-Sitemap-Auditor: Index, lastmod und Stichprobe - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-05T12:38:58+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/xml-sitemap-auditor-lastmod-index-sample-check\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"XML-Sitemap-Auditor: Index, lastmod und Stichprobe"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15568","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=15568"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15568\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15568"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15568"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}