{"id":15565,"date":"2026-09-05T14:29:47","date_gmt":"2026-09-05T12:29:47","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/"},"modified":"2026-09-05T14:29:47","modified_gmt":"2026-09-05T12:29:47","slug":"well-known-policy-files-inspector-security-txt-ads-txt","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/","title":{"rendered":"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt"},"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 Domain spricht mit Maschinen \u00fcber eine Handvoll Dateien unter festen Pfaden. security.txt sagt Sicherheitsforschern, wohin eine Schwachstelle zu melden ist, robots.txt und llms.txt richten sich an Crawler, ads.txt nennt, wer das Werbeinventar verkaufen darf, gpc.json erkl\u00e4rt, dass Global Privacy Control beachtet wird, change-password f\u00fchrt Passwortmanager zur richtigen Seite, und assetlinks sowie die Apple-App-Zuordnung binden Apps an die Seite. Diese Pr\u00fcfung holt alle dreizehn von diesem Server aus und beurteilt jede nach ihrer eigenen Spezifikation: Eine Datei, die existiert, aber abgelaufen ist, als HTML ausgeliefert wird oder mit 200 und der Startseite statt mit 404 antwortet, ist wissenswert.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"wk-url\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Domain oder Adresse (nur der Host wird genutzt)<\/label><br \/>\n        <input id=\"wk-url\" type=\"text\" value=\"securitytxt.org\" 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 gehen dreizehn Anfragen von je h\u00f6chstens 200 KB an den eingegebenen Host, jede mit bis zu drei Weiterleitungen. 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=\"wk-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;\">Richtliniendateien pr\u00fcfen<\/button><\/p>\n<div id=\"wk-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: Gepr\u00fcft werden nur die festen Pfade, nicht Dateien, die eine Seite anderswo h\u00e4lt; Dateien werden bei 200 KB abgeschnitten; ein Soft-404 wird an HTML im Inhalt erkannt, was Server \u00fcbersieht, die mit einer JSON-Fehlerseite antworten; die Signatur der security.txt wird erkannt, aber nicht verifiziert; und das Fehlen der meisten dieser Dateien ist f\u00fcr die meisten Seiten normal, fehlend z\u00e4hlt deshalb als Hinweis, nicht als Mangel.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Eine Domain spricht mit Maschinen \u00fcber eine Handvoll Dateien unter festen Pfaden. security.txt sagt Sicherheitsforschern, wohin eine Schwachstelle zu melden ist, robots.txt und llms.txt richten sich an Crawler, ads.txt nennt, wer das Werbeinventar verkaufen darf, gpc.json erkl\u00e4rt, dass Global Privacy Control beachtet wird, change-password f\u00fchrt Passwortmanager zur richtigen Seite, und assetlinks sowie die Apple-App-Zuordnung binden Apps an die Seite. Diese Pr\u00fcfung holt alle dreizehn von diesem Server aus und beurteilt jede nach ihrer eigenen Spezifikation: Eine Datei, die existiert, aber abgelaufen ist, als HTML ausgeliefert wird oder mit 200 und der Startseite statt mit 404 antwortet, ist wissenswert.\",\"label_url\":\"Domain oder Adresse (nur der Host wird genutzt)\",\"datenschutz\":\"Von diesem Server gehen dreizehn Anfragen von je h\u00f6chstens 200 KB an den eingegebenen Host, jede mit bis zu drei Weiterleitungen. 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\":\"Richtliniendateien pr\u00fcfen\",\"laeuft\":\"Dreizehn Dateien werden geholt...\",\"grenze\":\"Grenzen, die dazugeh\u00f6ren: Gepr\u00fcft werden nur die festen Pfade, nicht Dateien, die eine Seite anderswo h\u00e4lt; Dateien werden bei 200 KB abgeschnitten; ein Soft-404 wird an HTML im Inhalt erkannt, was Server \u00fcbersieht, die mit einer JSON-Fehlerseite antworten; die Signatur der security.txt wird erkannt, aber nicht verifiziert; und das Fehlen der meisten dieser Dateien ist f\u00fcr die meisten Seiten normal, fehlend z\u00e4hlt deshalb als Hinweis, nicht als Mangel.\",\"zusammenfassung\":\"{basis}: {vorhanden} von {gesamt} Dateien vorhanden, {soft} Soft-404.\",\"h_dateien\":\"Dateien\",\"spalte_pfad\":\"Pfad\",\"spalte_zustand\":\"Zustand\",\"spalte_status\":\"Status\",\"spalte_typ\":\"Inhaltstyp\",\"spalte_groesse\":\"Gr\u00f6\u00dfe\",\"zustand_vorhanden\":\"vorhanden\",\"zustand_fehlt\":\"fehlt\",\"zustand_soft_404\":\"Soft-404 (HTML statt der Datei)\",\"zustand_weitergeleitet\":\"leitet weiter\",\"zustand_fehler\":\"nicht erreichbar\",\"zustand_status\":\"unerwarteter Status\",\"zustand_leer\":\"leer\",\"zeile_dauer\":\"Dauer\",\"zeile_limit\":\"Pr\u00fcfungen in dieser Stunde noch\",\"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 vorhandenen Dateien sind stimmig; die fehlenden sind optional.\",\"urteil_warnung\":\"Mindestens eine ver\u00f6ffentlichte Datei ist kaputt oder abgelaufen, und das ist schlechter als keine.\",\"urteil_kritisch\":\"Der Host lie\u00df sich nicht pr\u00fcfen.\",\"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 kein lesbarer Hostname.\",\"grund_schema\":\"Gepr\u00fcft werden nur http- und https-Hosts.\",\"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_soft_404\":\"Soft-404 unter {pfad} || Der Server hat mit 200 und einer HTML-Seite geantwortet statt mit der Datei oder einem 404. Crawler und Werkzeuge, die diese Datei suchen, bekommen eine Webseite und lesen sie entweder falsch oder halten die Datei f\u00fcr vorhanden. Ein echter 404 ist die ehrliche Antwort.\",\"befund_security_fehlt\":\"Keine security.txt || RFC 9116 legt fest, wo Sicherheitsforscher einen Kontakt finden: \\\/.well-known\\\/security.txt. Ohne sie geht eine Meldung \u00fcber eine Schwachstelle an eine geratene Adresse oder nirgendwohin. Zwei Zeilen, Contact und Expires, gen\u00fcgen.\",\"befund_security_nur_alt\":\"security.txt nur am alten Pfad \\\/security.txt || Der Standardort ist \\\/.well-known\\\/security.txt; der Wurzelpfad ist ein R\u00fcckfall, den Werkzeuge noch probieren. Empfohlen ist, sie an beiden Orten auszuliefern.\",\"befund_security_alt_fehlt\":\"security.txt nicht unter \\\/security.txt gespiegelt || Optional: \u00c4ltere Werkzeuge schauen an der Wurzel. Eine Weiterleitung von \\\/security.txt auf den Well-known-Pfad deckt sie ab.\",\"befund_security_vorhanden\":\"security.txt vorhanden (Felder: {felder}; signiert: {signiert}) || Die Datei existiert am Standardpfad und ist lesbar.\",\"befund_security_contact_fehlt\":\"security.txt ohne Contact || Contact ist das einzige Pflichtfeld; ohne es erf\u00fcllt die Datei keinen Zweck.\",\"befund_security_contact_form\":\"Contact ist keine URI: {wert} || Contact muss eine mailto:-, https:- oder tel:-URI sein. Eine nackte Adresse ist nach RFC 9116 nicht g\u00fcltig, auch wenn viele Leser damit zurechtkommen.\",\"befund_security_expires_fehlt\":\"security.txt ohne Expires || Expires ist seit RFC 9116 Pflicht. Ohne es kann ein Leser nicht erkennen, ob die Kontakte noch aktuell sind.\",\"befund_security_expires_unlesbar\":\"Expires ist kein g\u00fcltiges Datum: {wert} || Der Wert muss ein ISO-8601-Zeitpunkt sein, etwa 2027-03-01T00:00:00.000Z.\",\"befund_security_abgelaufen\":\"security.txt am {datum} abgelaufen || Eine abgelaufene Datei gilt als veraltet. Die Kontakte funktionieren wom\u00f6glich noch, aber der Standard sagt, sich nicht darauf zu verlassen. Expires einmal im Jahr zu erneuern ist die \u00fcbliche Routine.\",\"befund_security_expires_lang\":\"Expires liegt mehr als ein Jahr voraus ({datum}) || RFC 9116 empfiehlt ein Ablaufdatum innerhalb eines Jahres, damit die Datei regelm\u00e4\u00dfig durchgesehen wird. Kein Fehler, aber ein Zeichen, dass die Datei in Vergessenheit geraten k\u00f6nnte.\",\"befund_security_expires_ok\":\"G\u00fcltig bis {datum} ({tage} Tage) || Die Datei ist aktuell.\",\"befund_security_expires_mehrfach\":\"Mehrere Expires-Felder || Erlaubt ist genau eines; Leser d\u00fcrfen die Datei ablehnen.\",\"befund_security_canonical_fremd\":\"Canonical zeigt woandershin: {wert} || Canonical muss die URL nennen, unter der die Datei tats\u00e4chlich ausgeliefert wird. Eine Abweichung deutet auf eine von einem anderen Host kopierte Datei.\",\"befund_security_canonical_fehlt\":\"Kein Canonical-Feld || Optional, aber zusammen mit einer Signatur belegt es, dass die Datei zu diesem Host geh\u00f6rt und nicht anderswo untergeschoben wurde.\",\"befund_security_unsigniert\":\"security.txt ist nicht signiert || Optional: Eine OpenPGP-Signatur l\u00e4sst Forscher pr\u00fcfen, dass die Datei nicht ver\u00e4ndert wurde. Die meisten Seiten verzichten darauf.\",\"befund_security_encryption_fehlt\":\"Kein Encryption-Feld || Optional: Ein Verweis auf einen \u00f6ffentlichen Schl\u00fcssel erlaubt verschl\u00fcsselte Meldungen.\",\"befund_security_sprachen_fehlen\":\"Kein Preferred-Languages-Feld || Optional: Sagt Forschern, welche Sprachen der Kontakt liest.\",\"befund_security_zeilen_unlesbar\":\"{n} Zeile(n) in security.txt sind nicht lesbar || Zeilen m\u00fcssen Feld: Wert sein oder Kommentare mit #. Leser ignorieren den Rest, aber es deutet auf einen Formatierungsfehler.\",\"befund_security_content_type\":\"security.txt als {typ} ausgeliefert || Die Datei muss als text\\\/plain ausgeliefert werden. Manche Leser lehnen andere Typen ab.\",\"befund_robots_vorhanden\":\"robots.txt vorhanden: {gruppen} Gruppe(n), {disallow} Disallow-Zeile(n), {sitemaps} Sitemap-Zeile(n) || Die Crawler-Regeldatei existiert und ist auf den ersten Blick lesbar.\",\"befund_robots_wellknown_gesperrt\":\"robots.txt sperrt \\\/.well-known\\\/ || Crawler, die robots.txt beachten, \u00fcberspringen dann security.txt, gpc.json und die App-Zuordnungsdateien, und Werkzeuge, die erst robots pr\u00fcfen, melden sie als gesperrt.\",\"befund_robots_fehlt\":\"Keine robots.txt || Crawler werten eine fehlende Datei als Erlaubnis, alles zu lesen. Verbreitet und harmlos; eine Datei ist nur n\u00f6tig, um etwas auszuschlie\u00dfen oder die Sitemap zu nennen.\",\"befund_ads_vorhanden\":\"ads.txt vorhanden: {eintraege} Eintr\u00e4ge ({direct} DIRECT, {reseller} RESELLER, {domains} Systeme), OWNERDOMAIN {owner} || Die Datei der autorisierten Verk\u00e4ufer existiert. Werbeeink\u00e4ufer pr\u00fcfen sie, bevor sie auf das Inventar dieser Domain bieten.\",\"befund_ads_ungueltig\":\"{n} Zeile(n) in ads.txt sind nicht lesbar || Jeder Eintrag braucht Domain, Publisher-ID und DIRECT oder RESELLER. Fehlerhafte Zeilen ignorieren Eink\u00e4ufer, der Verk\u00e4ufer, den sie autorisieren sollten, ist damit nicht autorisiert.\",\"befund_ads_leer\":\"ads.txt existiert, nennt aber keine Verk\u00e4ufer || Eine leere Datei sagt Eink\u00e4ufern, dass niemand dieses Inventar verkaufen darf, eine g\u00fcltige Aussage f\u00fcr eine Seite ohne Werbung.\",\"befund_ads_ownerdomain_fehlt\":\"Kein OWNERDOMAIN in ads.txt || Die Variable nennt den Eigent\u00fcmer der Seite und ist seit ads.txt 1.1 n\u00f6tig, wenn die Seite zu einer Gruppe geh\u00f6rt; sie hilft Eink\u00e4ufern, eigenes von verwaltetem Inventar zu unterscheiden.\",\"befund_ads_content_type\":\"ads.txt als {typ} ausgeliefert || Die IAB-Spezifikation verlangt text\\\/plain.\",\"befund_app_ads_vorhanden\":\"app-ads.txt vorhanden: {eintraege} Eintr\u00e4ge ({direct} DIRECT, {reseller} RESELLER, {domains} Systeme) || Das App-Gegenst\u00fcck zu ads.txt existiert.\",\"befund_app_ads_ungueltig\":\"{n} Zeile(n) in app-ads.txt sind nicht lesbar || Fehlerhafte Eintr\u00e4ge ignorieren Eink\u00e4ufer.\",\"befund_app_ads_leer\":\"app-ads.txt existiert, nennt aber keine Verk\u00e4ufer || G\u00fcltig, aber ungew\u00f6hnlich f\u00fcr eine Domain, die die Datei ver\u00f6ffentlicht.\",\"befund_app_ads_content_type\":\"app-ads.txt als {typ} ausgeliefert || Die Spezifikation verlangt text\\\/plain.\",\"befund_ads_fehlt\":\"Keine ads.txt und keine app-ads.txt || Nur f\u00fcr Seiten relevant, die Werbung programmatisch verkaufen. Ohne ads.txt behandeln Eink\u00e4ufer, die sie nutzen, alles Inventar als nicht autorisiert.\",\"befund_gpc_unlesbar\":\"gpc.json ist nicht lesbar || Die Datei muss JSON mit einem booleschen Feld gpc sein, etwa {\\u0022gpc\\u0022: true, \\u0022lastUpdate\\u0022: \\u00222026-01-01\\u0022}.\",\"befund_gpc_ja\":\"gpc.json erkl\u00e4rt, dass Global Privacy Control beachtet wird (Stand {lastUpdate}) || Die Seite sagt Browsern und Aufsichtsbeh\u00f6rden, dass ein Sec-GPC-Signal als Widerspruch gegen Verkauf und Weitergabe behandelt wird.\",\"befund_gpc_nein\":\"gpc.json erkl\u00e4rt, dass Global Privacy Control nicht beachtet wird (Stand {lastUpdate}) || Die Datei existiert und sagt gpc: false. Ehrlich, aber selten das, was eine Seite ver\u00f6ffentlichen will.\",\"befund_gpc_ohne_datum\":\"gpc.json ohne lastUpdate || Empfohlen, damit Leser erkennen, wie aktuell die Erkl\u00e4rung ist.\",\"befund_gpc_content_type\":\"gpc.json als {typ} ausgeliefert || Die Spezifikation verlangt application\\\/json.\",\"befund_gpc_fehlt\":\"Keine gpc.json || Optional. Eine Seite, die Global Privacy Control beachtet, kann das hier sagen; die kalifornische Aufsicht nennt die Datei als einen Weg, die Einhaltung zu belegen.\",\"befund_llms_vorhanden\":\"llms.txt vorhanden: {links} Verweis(e) in {abschnitte} Abschnitt(en), {kb} KB || Die Markdown-Datei f\u00fcr Sprachmodelle existiert. Sie ist ein Vorschlag, kein Standard; bislang lesen sie wenige Crawler.\",\"befund_llms_ohne_h1\":\"llms.txt ohne Haupt\u00fcberschrift || Der Vorschlag verlangt genau eine H1 mit dem Namen der Seite als erste Zeile.\",\"befund_llms_ohne_zitat\":\"llms.txt ohne Zusammenfassung als Blockzitat || Der Vorschlag empfiehlt unter der \u00dcberschrift ein kurzes Blockzitat, das die Seite zusammenfasst.\",\"befund_llms_fehlt\":\"Keine llms.txt || Optional und weiterhin ein Vorschlag. F\u00fcr die KI-Crawler, die heute z\u00e4hlen, bewirkt sie nichts; ihr Zugriff wird in robots.txt gesteuert.\",\"befund_change_password_ok\":\"change-password leitet weiter auf {ziel} || Passwortmanager \u00f6ffnen diesen Pfad, um Nutzer zum Passwortformular zu f\u00fchren. Die Weiterleitung ist die vorgesehene Umsetzung.\",\"befund_change_password_seite\":\"change-password antwortet direkt mit einer Seite || Funktioniert, wenn die Seite das Passwortformular ist. Eine Weiterleitung auf das echte Formular ist die \u00fcblichere Umsetzung.\",\"befund_change_password_fehlt\":\"Kein change-password || Optional und nur f\u00fcr Seiten mit Konten relevant. Eine Weiterleitungszeile l\u00e4sst die Passwort-\u00e4ndern-Kn\u00f6pfe der Passwortmanager funktionieren.\",\"befund_change_password_soft\":\"change-password antwortet mit 200 und einer allgemeinen Seite || Passwortmanager k\u00f6nnen das nicht von einem echten Ziel unterscheiden. Die Spezifikation verlangt eine Weiterleitung oder einen echten 404 und empfiehlt, dass \\\/.well-known\\\/resource-that-should-not-exist-whose-status-code-should-not-be-200 einen 404 liefert.\",\"befund_assetlinks_unlesbar\":\"assetlinks.json ist nicht lesbar || Android App Links und das Teilen von Zugangsdaten h\u00e4ngen an diesem JSON; ein Syntaxfehler schaltet sie ab.\",\"befund_assetlinks_vorhanden\":\"assetlinks.json vorhanden: {n} Aussage(n), Paket(e) {pakete} || Android-App-Links und geteilte Zugangsdaten sind erkl\u00e4rt.\",\"befund_assetlinks_content_type\":\"assetlinks.json als {typ} ausgeliefert || Android verlangt application\\\/json; andere Typen werden abgelehnt.\",\"befund_aasa_unlesbar\":\"apple-app-site-association ist nicht lesbar || Universal Links und geteilte Web-Zugangsdaten unter iOS h\u00e4ngen an diesem JSON.\",\"befund_aasa_vorhanden\":\"apple-app-site-association vorhanden (Schl\u00fcssel: {schluessel}) || Die iOS-Zuordnungsdatei existiert.\",\"befund_aasa_content_type\":\"apple-app-site-association als {typ} ausgeliefert || Apples CDN holt sie und erwartet application\\\/json; andere Typen werden ignoriert.\",\"befund_traffic_advice_unlesbar\":\"traffic-advice ist nicht lesbar || Die Datei muss ein JSON-Feld aus Empfehlungsobjekten sein.\",\"befund_traffic_advice_vorhanden\":\"traffic-advice vorhanden (Prefetch-Anteil {fraction}) || Die Seite sagt Chromes Prefetch-Proxy, wie viel spekulativen Verkehr sie annimmt.\",\"befund_humans_vorhanden\":\"humans.txt vorhanden || Eine Notiz \u00fcber die Menschen hinter der Seite. Rein informativ.\",\"befund_sitemap_vorhanden\":\"sitemap.xml vorhanden ({art}, {n} loc-Eintr\u00e4ge) || Die Sitemap existiert am Standardpfad.\",\"befund_sitemap_kein_xml\":\"sitemap.xml ist keine Sitemap ({typ}) || Der Pfad antwortet, aber nicht mit einem urlset- oder sitemapindex-Dokument.\",\"befund_sitemap_fehlt\":\"Keine sitemap.xml am Standardpfad || \u00dcblich, wenn die Sitemap anderswo liegt und in robots.txt oder der Search Console angek\u00fcndigt ist.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-wellknown.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];\n    var ZUSTAENDE = ['vorhanden', 'fehlt', 'soft_404', 'weitergeleitet', 'fehler', 'status', 'leer'];<\/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    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 z = (a.zaehlung &#038;&#038; typeof a.zaehlung === 'object') ? a.zaehlung : {};\n        return {\n            fehler: null, basis: a.basis ? String(a.basis) : '', host: a.host ? String(a.host) : '',\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            zaehlung: { vorhanden: zahl(z.vorhanden) || 0, fehlt: zahl(z.fehlt) || 0, soft_404: zahl(z.soft_404) || 0, weitergeleitet: zahl(z.weitergeleitet) || 0, fehler: zahl(z.fehler) || 0 },\n            dateien: liste(a.dateien).map(function (f) { f = f || {}; return { key: String(f.key || ''), pfad: String(f.pfad || ''), zustand: ZUSTAENDE.indexOf(f.zustand) === -1 ? 'fehler' : f.zustand, status: zahl(f.status), contentType: f.content_type ? String(f.content_type) : null, bytes: zahl(f.bytes), spruenge: zahl(f.spruenge) || 0, endurl: f.endurl ? String(f.endurl) : null }; }),\n            befunde: befunde, gruppen: gruppen, 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: 'wellknown' }).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    }\n\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.WK = { bewerten: bewerten, darstellen: null, text: text, kb: kb, ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, ZUSTAENDE: ZUSTAENDE, T: T };\n\n    var btn = document.getElementById('wk-btn');\n    var out = document.getElementById('wk-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    var ZUSTAND_FARBE = { vorhanden: GUT, fehlt: GRAU, soft_404: WARN, weitergeleitet: '', fehler: ROT, status: WARN, leer: 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)); }\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        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;', text('zusammenfassung', { basis: b.basis, vorhanden: b.zaehlung.vorhanden + b.zaehlung.weitergeleitet, gesamt: b.dateien.length, soft: b.zaehlung.soft_404 })));\n\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_dateien));\n        var huelle = el('div', 'overflow-x: auto;');\n        var gp = gitter('auto auto auto auto auto');\n        [T.spalte_pfad, T.spalte_zustand, T.spalte_status, T.spalte_typ, T.spalte_groesse].forEach(function (s) { gp.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap;', s)); });\n        b.dateien.forEach(function (f) {\n            gp.appendChild(el('div', ZELLE_WERT + ' white-space: nowrap;', f.pfad));\n            gp.appendChild(el('div', ZELLE_WERT + ZUSTAND_FARBE[f.zustand] + ' white-space: nowrap;', T['zustand_' + f.zustand] + (f.zustand === 'weitergeleitet' &#038;&#038; f.endurl ? ' \u2192 ' + f.endurl : '')));\n            gp.appendChild(el('div', ZELLE_WERT + GRAU, f.status === null ? '-' : String(f.status)));\n            gp.appendChild(el('div', ZELLE_WERT + GRAU, f.contentType || '-'));\n            gp.appendChild(el('div', ZELLE_WERT + GRAU, f.zustand === 'vorhanden' ? kb(f.bytes) : '-'));\n        });\n        huelle.appendChild(gp);\n        ziel.appendChild(huelle);\n        var g = gitter('auto auto');\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);\n\n        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.WK.darstellen = darstellen;\n\n    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('wk-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>Holt die dreizehn Richtliniendateien, die eine Domain unter festen Pfaden ver\u00f6ffentlichen kann, von security.txt und robots.txt \u00fcber ads.txt, gpc.json und llms.txt bis zu change-password, assetlinks und der Apple-App-Zuordnung, und pr\u00fcft jede nach ihren eigenen Regeln: vorhanden, abgelaufen, Soft-404, falscher Inhaltstyp, unlesbar.<\/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":[92265,92289,92071],"class_list":["post-15565","page","type-page","status-publish","hentry","tag-prywatnosc-danych-pl-de","tag-seo-de","tag-web-security-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt - 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\/well-known-policy-files-inspector-security-txt-ads-txt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Holt die dreizehn Richtliniendateien, die eine Domain unter festen Pfaden ver\u00f6ffentlichen kann, von security.txt und robots.txt \u00fcber ads.txt, gpc.json und llms.txt bis zu change-password, assetlinks und der Apple-App-Zuordnung, und pr\u00fcft jede nach ihren eigenen Regeln: vorhanden, abgelaufen, Soft-404, falscher Inhaltstyp, unlesbar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/\" \/>\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\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/\",\"name\":\"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-05T12:29:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/well-known-policy-files-inspector-security-txt-ads-txt\\\/#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\":\"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt\"}]},{\"@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":"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt - 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\/well-known-policy-files-inspector-security-txt-ads-txt\/","og_locale":"en_US","og_type":"article","og_title":"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog","og_description":"Holt die dreizehn Richtliniendateien, die eine Domain unter festen Pfaden ver\u00f6ffentlichen kann, von security.txt und robots.txt \u00fcber ads.txt, gpc.json und llms.txt bis zu change-password, assetlinks und der Apple-App-Zuordnung, und pr\u00fcft jede nach ihren eigenen Regeln: vorhanden, abgelaufen, Soft-404, falscher Inhaltstyp, unlesbar.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/","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\/well-known-policy-files-inspector-security-txt-ads-txt\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/","name":"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-05T12:29:47+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/well-known-policy-files-inspector-security-txt-ads-txt\/#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":"Well-known- und Richtliniendateien-Inspector: security.txt, ads.txt, gpc.json, llms.txt"}]},{"@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\/15565","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=15565"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15565\/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=15565"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}