{"id":15720,"date":"2026-09-06T10:54:06","date_gmt":"2026-09-06T08:54:06","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/robots-txt-crawler-matrix\/"},"modified":"2026-09-06T10:54:06","modified_gmt":"2026-09-06T08:54:06","slug":"robots-txt-crawler-matrix","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/","title":{"rendered":"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota"},"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;\">Pliku robots.txt nie czyta si\u0119 od g\u00f3ry do do\u0142u. Ka\u017cdy crawler najpierw wybiera dok\u0142adnie jedn\u0105 grup\u0119, a wewn\u0105trz niej wygrywa najd\u0142u\u017cszy pasuj\u0105cy wzorzec, przy remisie za\u015b Allow. To narz\u0119dzie stosuje te trzy zasady z RFC 9309 i przy ka\u017cdym zestawieniu podaje lini\u0119, kt\u00f3ra wygra\u0142a.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"rb-url\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Domena lub adres<\/label><br \/>\n        <input id=\"rb-url\" type=\"text\" value=\"nytimes.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<div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; margin-bottom: 14px;\">\n<div>\n            <label for=\"rb-agenten\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Nazwy crawler\u00f3w, po jednej w wierszu (do 8)<\/label><br \/>\n            <textarea id=\"rb-agenten\" rows=\"8\" 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; font-size: 0.85rem;\">Googlebot<br \/>\nBingbot<br \/>\nGPTBot<br \/>\nClaudeBot<br \/>\nGoogle-Extended<br \/>\nCCBot<br \/>\nPerplexityBot<br \/>\nApplebot-Extended<\/textarea><\/p>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.78rem; margin: 5px 0 0;\">Por\u00f3wnanie pomija wielko\u015b\u0107 liter, a nazwa z pliku liczy si\u0119 wtedy, gdy identyfikator si\u0119 od niej zaczyna.<\/p>\n<\/p><\/div>\n<div>\n            <label for=\"rb-pfade\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">\u015acie\u017cki do sprawdzenia, po jednej w wierszu (do 12)<\/label><br \/>\n            <textarea id=\"rb-pfade\" rows=\"8\" 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; font-size: 0.85rem;\">\/<br \/>\n\/wp-admin\/<br \/>\n\/wp-login.php<br \/>\n\/wp-json\/<br \/>\n\/?s=test<br \/>\n\/feed\/<br \/>\n\/cgi-bin\/<br \/>\n\/admin\/<\/textarea><\/p>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.78rem; margin: 5px 0 0;\">Wy\u0142\u0105cznie \u015bcie\u017cki, zaczynaj\u0105ce si\u0119 od uko\u015bnika. Ci\u0105g zapytania mo\u017ce przy nich sta\u0107.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Adres zostaje pobrany raz z tego serwera. Zapisywane jest tylko to pobranie, na potrzeby limitu godzinowego.<\/p>\n<p>    <button id=\"rb-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;\">Odczytaj robots.txt<\/button><\/p>\n<div id=\"rb-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.8rem; margin: 24px 0 0;\">Osiem zapyta\u0144 na godzin\u0119. Pobierany jest wy\u0142\u0105cznie \/robots.txt, najwy\u017cej 500 KiB, prywatne zakresy adres\u00f3w s\u0105 odrzucane.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Pliku robots.txt nie czyta si\u0119 od g\u00f3ry do do\u0142u. Ka\u017cdy crawler najpierw wybiera dok\u0142adnie jedn\u0105 grup\u0119, a wewn\u0105trz niej wygrywa najd\u0142u\u017cszy pasuj\u0105cy wzorzec, przy remisie za\u015b Allow. To narz\u0119dzie stosuje te trzy zasady z RFC 9309 i przy ka\u017cdym zestawieniu podaje lini\u0119, kt\u00f3ra wygra\u0142a.\",\"label_url\":\"Domena lub adres\",\"label_agenten\":\"Nazwy crawler\u00f3w, po jednej w wierszu (do 8)\",\"label_pfade\":\"\u015acie\u017cki do sprawdzenia, po jednej w wierszu (do 12)\",\"hinweis_agenten\":\"Por\u00f3wnanie pomija wielko\u015b\u0107 liter, a nazwa z pliku liczy si\u0119 wtedy, gdy identyfikator si\u0119 od niej zaczyna.\",\"hinweis_pfade\":\"Wy\u0142\u0105cznie \u015bcie\u017cki, zaczynaj\u0105ce si\u0119 od uko\u015bnika. Ci\u0105g zapytania mo\u017ce przy nich sta\u0107.\",\"datenschutz\":\"Adres zostaje pobrany raz z tego serwera. Zapisywane jest tylko to pobranie, na potrzeby limitu godzinowego.\",\"knopf\":\"Odczytaj robots.txt\",\"grenze\":\"Osiem zapyta\u0144 na godzin\u0119. Pobierany jest wy\u0142\u0105cznie \\\/robots.txt, najwy\u017cej 500 KiB, prywatne zakresy adres\u00f3w s\u0105 odrzucane.\",\"laeuft\":\"Trwa pobieranie i ocena pliku z regu\u0142ami \u2026\",\"urteil_gut\":\"Nic nie stoi na przeszkodzie\",\"urteil_warnung\":\"Warte spojrzenia\",\"urteil_kritisch\":\"Wymaga uwagi\",\"wirkung_regeln_gelten\":\"Plik zosta\u0142 dostarczony, jego regu\u0142y obowi\u0105zuj\u0105.\",\"wirkung_alles_erlaubt\":\"Plik z regu\u0142ami jest niedost\u0119pny. Odpowied\u017a 4xx liczy si\u0119 jako brak pliku, a brak pliku pozostawia ka\u017cd\u0105 \u015bcie\u017ck\u0119 otwart\u0105.\",\"wirkung_nichts_crawlen\":\"Serwer odpowiedzia\u0142 b\u0142\u0119dem. Odpowied\u017a 5xx oznacza nieosi\u0105galno\u015b\u0107, a crawler traktuje wtedy przez pewien czas ca\u0142\u0105 witryn\u0119 jako zablokowan\u0105.\",\"wirkung_unerreichbar\":\"Pliku w og\u00f3le nie da\u0142o si\u0119 pobra\u0107.\",\"wirkung_unklar\":\"Odpowied\u017a nie pasuje do \u017cadnego z przypadk\u00f3w opisanych w RFC 9309.\",\"h_abruf\":\"Pobranie\",\"h_matrix\":\"Macierz\",\"h_regeln\":\"Kt\u00f3ra regu\u0142a zdecydowa\u0142a\",\"h_befunde\":\"Ustalenia\",\"zeile_datei\":\"Adres\",\"zeile_status\":\"Status\",\"zeile_spruenge\":\"Przekierowania\",\"zeile_typ\":\"Typ tre\u015bci\",\"zeile_groesse\":\"Rozmiar\",\"zeile_gruppen\":\"Grupy w pliku\",\"zeile_sitemaps\":\"Wpisy Sitemap\",\"zeile_dauer\":\"Czas\",\"zeile_limit\":\"Pozosta\u0142e zapytania w tej godzinie\",\"spalte_kennung\":\"Crawler\",\"spalte_gruppe\":\"Grupa\",\"spalte_pfad\":\"\u015acie\u017cka\",\"spalte_regel\":\"Regu\u0142a\",\"spalte_zeile\":\"Wiersz\",\"legende\":\"Plus oznacza, \u017ce indeksowanie jest dozwolone, minus \u2014 \u017ce nie.\",\"via_stern\":\"* (grupa zapasowa)\",\"keine_gruppe\":\"brak\",\"keine_befunde\":\"Brak ustale\u0144.\",\"stufe_hoch\":\"Wysoki\",\"stufe_mittel\":\"\u015aredni\",\"stufe_niedrig\":\"Niski\",\"stufe_info\":\"Uwaga\",\"stufe_gut\":\"Dobrze\",\"befund_nicht_erreichbar\":\"Pliku z regu\u0142ami nie uda\u0142o si\u0119 pobra\u0107 || Pobranie nie powiod\u0142o si\u0119: {fehler}. To, czy crawler uzna to za brak pliku, czy za nieosi\u0105galno\u015b\u0107, zale\u017cy od dok\u0142adnej przyczyny \u2014 a ka\u017cda z tych dr\u00f3g prowadzi do przeciwnego skutku.\",\"befund_status_410\":\"410 Gone na robots.txt || Kod 410 to odpowied\u017a z rodziny 4xx, a RFC 9309 traktuje ka\u017cd\u0105 4xx jako ca\u0142kowity brak pliku z regu\u0142ami. Skutek jest odwrotny od tego, co sugeruje kod: zamiast zamkn\u0105\u0107 witryn\u0119, otwiera ka\u017cd\u0105 \u015bcie\u017ck\u0119.\",\"befund_status_gesperrt\":\"Status {status} na robots.txt || Dost\u0119p do samego pliku z regu\u0142ami jest odmawiany. Jako odpowied\u017a 4xx liczy si\u0119 to jako brak pliku, wi\u0119c wszystkie \u015bcie\u017cki uchodz\u0105 za dozwolone.\",\"befund_status_4xx\":\"Status {status} na robots.txt || Pliku z regu\u0142ami nie ma. Ka\u017cda \u015bcie\u017cka uchodzi za dozwolon\u0105.\",\"befund_status_5xx\":\"Status {status} na robots.txt || B\u0142\u0105d serwera oznacza nieosi\u0105galno\u015b\u0107, a nie brak. Crawlery trzymaj\u0105 si\u0119 wtedy z dala od ca\u0142ej witryny \u2014 Google przez mniej wi\u0119cej dwana\u015bcie godzin, zanim si\u0119gnie po kopi\u0119 z pami\u0119ci podr\u0119cznej.\",\"befund_status_unklar\":\"Nietypowy status {status} || Nie zachodzi tu ani przypadek powodzenia, ani przypadek b\u0142\u0119du z RFC 9309.\",\"befund_weitergeleitet\":\"Przekierowania: {spruenge} || Plik z regu\u0142ami znalaz\u0142 si\u0119 ostatecznie pod {endurl}. RFC 9309 pozwala crawlerom pod\u0105\u017cy\u0107 najwy\u017cej za pi\u0119cioma przekierowaniami, dalej plik uchodzi za nieistniej\u0105cy.\",\"befund_typ_nicht_text\":\"Typ tre\u015bci to {typ} || Plik z regu\u0142ami powinien by\u0107 dostarczany jako text\\\/plain. Cz\u0119\u015b\u0107 crawler\u00f3w odrzuca wszystko inne.\",\"befund_zu_gross\":\"Plik ma {bytes} bajt\u00f3w || Google czyta najwy\u017cej {grenze} bajt\u00f3w i pomija wszystko dalej.\",\"befund_leer\":\"Plik jest pusty || Pusty plik z regu\u0142ami pozwala na wszystko \u2014 ten sam skutek co brak pliku.\",\"befund_bom\":\"Znacznik BOM na pocz\u0105tku || Crawlery go pomijaj\u0105, ale zdradza edytor, kt\u00f3ry go dopisuje.\",\"befund_keine_sterngruppe\":\"Brak grupy dla * || Ka\u017cdy crawler bez w\u0142asnej grupy nie ma tym samym \u017cadnych regu\u0142.\",\"befund_gruppe_doppelt\":\"{agent} wyst\u0119puje w wi\u0119cej ni\u017c jednej grupie || Crawlery \u0142\u0105cz\u0105 takie grupy rozmaicie, wi\u0119c to, kt\u00f3re regu\u0142y obowi\u0105zuj\u0105, pozostaje otwarte. Grupy: {gruppen}.\",\"befund_kennung_wiederholt\":\"{agent} wyst\u0119puje {anzahl} razy w tej samej grupie || Na wyniku to nic nie zmienia, to tylko powt\u00f3rzenie.\",\"befund_muster_ohne_schraegstrich\":\"Wiersz {zeile}: wzorzec bez pocz\u0105tkowego uko\u015bnika || Warto\u015b\u0107 {muster} nie zaczyna si\u0119 ani od \\\/, ani od *, wi\u0119c regu\u0142a do niczego nie pasuje.\",\"befund_zeile_ohne_doppelpunkt\":\"Wiersz {zeile} nie ma dwukropka || Wiersz brzmi {text} i zostaje pomini\u0119ty.\",\"befund_zeile_regel_ohne_gruppe\":\"Wiersz {zeile} stoi przed jak\u0105kolwiek grup\u0105 || Regu\u0142a potrzebuje nad sob\u0105 wiersza User-agent, inaczej do niczego nie nale\u017cy.\",\"befund_crawl_delay\":\"Crawl-delay wyst\u0119puje {anzahl} razy || Google pomija to pole ca\u0142kowicie; Bing i Yandex si\u0119 do niego stosuj\u0105.\",\"befund_felder_ohne_wirkung\":\"Pola bez dzia\u0142ania: {felder} || Nie nale\u017c\u0105 do RFC 9309, wi\u0119kszo\u015b\u0107 crawler\u00f3w je pomija.\",\"befund_sitemap_fehlt\":\"Brak wpisu Sitemap || Wiersz Sitemap to jedyna droga, na kt\u00f3rej crawler znajdzie indeks bez zgadywania adres\u00f3w.\",\"befund_sitemap_relativ\":\"Sitemap bez pe\u0142nego adresu || Warto\u015b\u0107 {wert} nie jest adresem bezwzgl\u0119dnym, wiersz pozostaje bez dzia\u0142ania.\",\"befund_sitemap_fremder_host\":\"Sitemap na innym ho\u015bcie: {hosts} || Jest to dozwolone, ale adresy w niej licz\u0105 si\u0119 tylko dla hosta, kt\u00f3rego przynale\u017cno\u015b\u0107 crawler r\u00f3wnie\u017c uznaje.\",\"befund_sitemap_vorhanden\":\"Wpisy Sitemap: {anzahl}\",\"befund_kennung_ganz_gesperrt\":\"Zablokowane dla wszystkich sprawdzonych \u015bcie\u017cek: {agenten} || To decyzja, a nie usterka, i stoi tutaj po to, \u017ceby ta decyzja pozosta\u0142a widoczna.\",\"fehler_adresse\":\"Tego adresu nie da si\u0119 u\u017cy\u0107.\",\"fehler_netz\":\"Serwer by\u0142 nieosi\u0105galny.\",\"fehler_antwort\":\"Odpowied\u017a by\u0142a nieczytelna.\",\"fehler_captcha\":\"Sprawdzenie antyspamowe nie powiod\u0142o si\u0119. Zwykle pomaga ponowne wczytanie strony.\",\"fehler_kein_token\":\"Sprawdzenie antyspamowe nie dostarczy\u0142o znacznika.\",\"fehler_zu_viele\":\"Osi\u0105gni\u0119to limit {limit} zapyta\u0144 na godzin\u0119.\",\"fehler_zaehler\":\"Licznik jest niedost\u0119pny.\",\"fehler_pruefdienst\":\"Sprawdzenie antyspamowe jest niedost\u0119pne.\",\"fehler_aufbau\":\"Narz\u0119dzie jest b\u0142\u0119dnie skonfigurowane.\",\"fehler_methode\":\"Nieprawid\u0142owa metoda \u017c\u0105dania.\",\"fehler_eingabe\":\"Dane wej\u015bciowe by\u0142y nieczytelne.\",\"fehler_unbekannt\":\"Co\u015b posz\u0142o nie tak.\",\"grund_leer\":\"Nie podano adresu.\",\"grund_zu_lang\":\"Adres jest za d\u0142ugi.\",\"grund_schema\":\"Dzia\u0142aj\u0105 wy\u0142\u0105cznie http i https.\",\"grund_unlesbar\":\"Adresu nie da\u0142o si\u0119 roz\u0142o\u017cy\u0107.\",\"grund_benutzerinfo\":\"Adresy z nazw\u0105 u\u017cytkownika s\u0105 odrzucane.\",\"grund_gesperrter_bereich\":\"Ten adres wskazuje do sieci prywatnej.\",\"grund_kein_punkt\":\"Nazwa hosta potrzebuje kropki.\",\"grund_hostform\":\"Potrzebna jest nazwa domeny, nie adres IP.\",\"grund_port\":\"Ten port nie jest dopuszczony.\",\"grund_kein_dns\":\"Nazwa si\u0119 nie rozwi\u0105zuje.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-robots.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];\n    var WIRKUNGEN = ['regeln_gelten', 'alles_erlaubt', 'nichts_crawlen', 'unerreichbar', 'unklar'];\n    var GRUENDE = ['regel', 'keine_regel', 'keine_gruppe', 'status'];<\/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    }\n    function kb(bytes) { if (bytes === null) { return '-'; } if (bytes < 1024) { return bytes + ' B'; } return (Math.round(bytes \/ 102.4) \/ 10) + ' KB'; }\n\n    \/** Zeilen eines Textfeldes zu einer Liste machen. *\/\n    function zeilen(roh, grenze) {\n        return String(roh || '').split(\/\\r?\\n\/).map(function (z) { return z.trim(); })\n            .filter(function (z) { return z !== ''; }).slice(0, grenze);\n    }\n\n    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 &#038;&#038; 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        var abruf = (a.abruf &#038;&#038; typeof a.abruf === 'object') ? a.abruf : {};\n        var matrix = liste(a.matrix).map(function (z) {\n            z = z || {};\n            return {\n                agent: String(z.agent || ''),\n                wodurch: z.wodurch ? String(z.wodurch) : null,\n                stern: !!z.stern,\n                felder: liste(z.felder).map(function (f) {\n                    f = f || {};\n                    var r = (f.regel &#038;&#038; typeof f.regel === 'object') ? f.regel : null;\n                    return {\n                        pfad: String(f.pfad || ''),\n                        erlaubt: !!f.erlaubt,\n                        grund: GRUENDE.indexOf(f.grund) === -1 ? 'status' : f.grund,\n                        regel: r ? { art: r.art === 'allow' ? 'allow' : 'disallow', muster: String(r.muster || ''), zeile: zahl(r.zeile) } : null\n                    };\n                })\n            };\n        });\n        return {\n            fehler: null,\n            basis: a.basis ? String(a.basis) : '',\n            url: a.url ? String(a.url) : '',\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            wirkung: WIRKUNGEN.indexOf(a.wirkung) === -1 ? 'unklar' : a.wirkung,\n            abruf: {\n                status: zahl(abruf.status), fehler: abruf.fehler ? String(abruf.fehler) : null,\n                spruenge: zahl(abruf.spruenge) || 0, endurl: abruf.endurl ? String(abruf.endurl) : null,\n                typ: abruf.typ ? String(abruf.typ) : null, bytes: zahl(abruf.bytes)\n            },\n            gruppenZahl: zahl(a.gruppen_gesamt) || 0,\n            sitemaps: liste(a.sitemaps).length,\n            pfade: liste(a.pfade).map(String),\n            matrix: matrix,\n            befunde: befunde, stufengruppen: gruppen,\n            dauer: zahl(a.dauer_ms), limitRest: zahl(a.limit_rest)\n        };\n    }\n\n    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: 'robots' }).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, agenten, pfade) {\n        return tokenHolen().then(function (token) {\n            return fetch(ENDPUNKT, { method: 'POST', headers: { 'Content-Type': 'application\/json' },\n                body: JSON.stringify({ url: url, agenten: agenten, pfade: pfade, token: token || '' }) })\n                .then(function (r) { return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; }); }, function () { return { fehler: 'netz' }; });\n        });\n    }\n\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.RB = { bewerten: bewerten, darstellen: null, text: text, kb: kb, zeilen: zeilen,\n        ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, WIRKUNGEN: WIRKUNGEN, GRUENDE: GRUENDE, T: T };\n\n    var btn = document.getElementById('rb-btn');\n    var out = document.getElementById('rb-ausgabe');\n    if (!btn || !out) { return; }\n\n    function el(tag, stil, txt) { var e = document.createElement(tag); if (stil) { e.setAttribute('style', stil); } if (txt !== undefined &#038;&#038; 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    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)); }\n\n    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 &#038;&#038; 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\n        ziel.appendChild(el('div', 'font-size: 1.05rem; font-weight: 700; margin: 0 0 6px;' + URTEIL[b.urteil], T['urteil_' + b.urteil]));\n        ziel.appendChild(el('p', ZELLE + ' margin: 0 0 12px;', T['wirkung_' + b.wirkung]));\n\n        \/\/ --- Der Abruf selbst\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_abruf));\n        var ga = gitter('auto auto');\n        paar(ga, T.zeile_datei, b.url, GRAU);\n        paar(ga, T.zeile_status, b.abruf.status === null ? (b.abruf.fehler || '-') : String(b.abruf.status),\n            b.abruf.status !== null &#038;&#038; b.abruf.status >= 200 && b.abruf.status < 300 ? GUT : WARN);\n        if (b.abruf.spruenge > 0) { paar(ga, T.zeile_spruenge, String(b.abruf.spruenge) + (b.abruf.endurl ? ' \u2192 ' + b.abruf.endurl : ''), GRAU); }\n        if (b.abruf.typ) { paar(ga, T.zeile_typ, b.abruf.typ, GRAU); }\n        if (b.abruf.bytes !== null && b.abruf.bytes > 0) { paar(ga, T.zeile_groesse, kb(b.abruf.bytes), GRAU); }\n        paar(ga, T.zeile_gruppen, String(b.gruppenZahl), GRAU);\n        paar(ga, T.zeile_sitemaps, String(b.sitemaps), GRAU);\n        if (b.dauer !== null) { paar(ga, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        if (b.limitRest !== null) { paar(ga, T.zeile_limit, String(b.limitRest), GRAU); }\n        ziel.appendChild(ga);<\/p>\n<p>        \/\/ --- Die Matrix\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_matrix));\n        var huelle = el('div', 'overflow-x: auto;');\n        var spalten = 'auto auto' + b.pfade.map(function () { return ' auto'; }).join('');\n        var gm = gitter(spalten);\n        var kopf = [T.spalte_kennung, T.spalte_gruppe].concat(b.pfade);\n        kopf.forEach(function (s) {\n            gm.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap; font-family: monospace;', s));\n        });\n        b.matrix.forEach(function (z) {\n            gm.appendChild(el('div', ZELLE_WERT + ' white-space: nowrap;', z.agent));\n            gm.appendChild(el('div', ZELLE_WERT + GRAU + ' white-space: nowrap;',\n                z.wodurch === null ? T.keine_gruppe : (z.stern ? T.via_stern : z.wodurch)));\n            z.felder.forEach(function (f) {\n                gm.appendChild(el('div', ZELLE_WERT + (f.erlaubt ? GUT : ROT) + ' text-align: center;', f.erlaubt ? '+' : '\u2212'));\n            });\n        });\n        huelle.appendChild(gm);\n        ziel.appendChild(huelle);\n        ziel.appendChild(el('p', ZELLE + GRAU + ' margin: 6px 0 0;', T.legende));<\/p>\n<p>        \/\/ --- Welche Regel entschieden hat\n        var entschieden = [];\n        b.matrix.forEach(function (z) {\n            z.felder.forEach(function (f) {\n                if (f.grund === 'regel' && f.regel) { entschieden.push({ agent: z.agent, pfad: f.pfad, regel: f.regel, erlaubt: f.erlaubt }); }\n            });\n        });\n        if (entschieden.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_regeln));\n            var h2 = el('div', 'overflow-x: auto;');\n            var gr = gitter('auto auto auto auto');\n            [T.spalte_kennung, T.spalte_pfad, T.spalte_regel, T.spalte_zeile].forEach(function (s) {\n                gr.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap;', s));\n            });\n            entschieden.slice(0, 80).forEach(function (e) {\n                gr.appendChild(el('div', ZELLE_WERT + ' white-space: nowrap;', e.agent));\n                gr.appendChild(el('div', ZELLE_WERT + ' white-space: nowrap;', e.pfad));\n                gr.appendChild(el('div', ZELLE_WERT + (e.erlaubt ? GUT : ROT) + ' white-space: nowrap;', e.regel.art + ': ' + (e.regel.muster === '' ? '(leer)' : e.regel.muster)));\n                gr.appendChild(el('div', ZELLE_WERT + GRAU, e.regel.zeile === null ? '-' : String(e.regel.zeile)));\n            });\n            h2.appendChild(gr);\n            ziel.appendChild(h2);\n        }<\/p>\n<p>        \/\/ --- Befunde\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        var irgendwas = false;\n        STUFEN.forEach(function (s) {\n            var gr2 = b.stufengruppen[s];\n            if (!gr2.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] + ' (' + gr2.length + ')'));\n            gr2.forEach(function (f) {\n                var k = el('div', KASTEN + ' border-left: 3px solid ' + FARBEN[s] + ';');\n                var d = {};\n                Object.keys(f.daten).forEach(function (n) {\n                    var w = f.daten[n];\n                    d[n] = Array.isArray(w) ? w.join(', ') : w;\n                });\n                var t = text('befund_' + f.key, d) || 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.RB.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('rb-url'), zeilen(wert('rb-agenten'), 8), zeilen(wert('rb-pfade'), 12)).then(\n            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>Narz\u0119dzie czyta plik robots.txt witryny, przypisuje ka\u017cd\u0105 nazw\u0119 crawlera do obowi\u0105zuj\u0105cej go grupy i pokazuje dla ka\u017cdej \u015bcie\u017cki, czy indeksowanie jest dozwolone i kt\u00f3ra regu\u0142a o tym zdecydowa\u0142a. W komplecie ta cz\u0119\u015b\u0107, kt\u00f3r\u0105 wi\u0119kszo\u015b\u0107 streszcze\u0144 podaje b\u0142\u0119dnie: co dla crawlera oznacza 404, 410 albo 500 na samym pliku z regu\u0142ami.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92343,92295,92762],"class_list":["post-15720","page","type-page","status-publish","hentry","tag-artificial-intelligence-pl","tag-seo-pl","tag-web-development-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota - 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\/pl\/narzedzia\/robots-txt-crawler-matrix\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Narz\u0119dzie czyta plik robots.txt witryny, przypisuje ka\u017cd\u0105 nazw\u0119 crawlera do obowi\u0105zuj\u0105cej go grupy i pokazuje dla ka\u017cdej \u015bcie\u017cki, czy indeksowanie jest dozwolone i kt\u00f3ra regu\u0142a o tym zdecydowa\u0142a. W komplecie ta cz\u0119\u015b\u0107, kt\u00f3r\u0105 wi\u0119kszo\u015b\u0107 streszcze\u0144 podaje b\u0142\u0119dnie: co dla crawlera oznacza 404, 410 albo 500 na samym pliku z regu\u0142ami.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/\" \/>\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\\\/pl\\\/narzedzia\\\/robots-txt-crawler-matrix\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/robots-txt-crawler-matrix\\\/\",\"name\":\"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-06T08:54:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/robots-txt-crawler-matrix\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/robots-txt-crawler-matrix\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/robots-txt-crawler-matrix\\\/#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-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota\"}]},{\"@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":"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota - 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\/pl\/narzedzia\/robots-txt-crawler-matrix\/","og_locale":"en_US","og_type":"article","og_title":"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota - Lukas Wojcik - Blog","og_description":"Narz\u0119dzie czyta plik robots.txt witryny, przypisuje ka\u017cd\u0105 nazw\u0119 crawlera do obowi\u0105zuj\u0105cej go grupy i pokazuje dla ka\u017cdej \u015bcie\u017cki, czy indeksowanie jest dozwolone i kt\u00f3ra regu\u0142a o tym zdecydowa\u0142a. W komplecie ta cz\u0119\u015b\u0107, kt\u00f3r\u0105 wi\u0119kszo\u015b\u0107 streszcze\u0144 podaje b\u0142\u0119dnie: co dla crawlera oznacza 404, 410 albo 500 na samym pliku z regu\u0142ami.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/","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\/pl\/narzedzia\/robots-txt-crawler-matrix\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/","name":"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-06T08:54:06+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/robots-txt-crawler-matrix\/#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-3\/"},{"@type":"ListItem","position":3,"name":"Macierz crawler\u00f3w robots.txt: kt\u00f3ra regu\u0142a wygrywa dla kt\u00f3rego bota"}]},{"@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\/15720","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=15720"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15720\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15720"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}