{
  "produkt": "Website-Check Scherzinger",
  "analyse_id": "a26c9273-81ea-4083-83e8-ffbfa4a05e05",
  "url": "https://rtc-service.com/",
  "erstellt": "2026-10-18T17:57:32.949016+00:00",
  "gesamtscore": 99,
  "datenabdeckung": 0.954,
  "kategorien": {
    "geo": {
      "note": "",
      "grade": "sehr gut",
      "label": "KI-Bereitschaft (GEO)",
      "score": 98,
      "capped": false,
      "failed": 5,
      "passed": 35,
      "status": "heuristic",
      "category": "geo",
      "checks_total": 52,
      "checks_evaluated": 40
    },
    "local": {
      "note": "",
      "grade": "sehr gut",
      "label": "Lokale Sichtbarkeit",
      "score": 100,
      "capped": false,
      "failed": 0,
      "passed": 12,
      "status": "heuristic",
      "category": "local",
      "checks_total": 13,
      "checks_evaluated": 12
    },
    "onpage": {
      "note": "",
      "grade": "sehr gut",
      "label": "Inhalte & Onpage",
      "score": 97,
      "capped": false,
      "failed": 10,
      "passed": 34,
      "status": "heuristic",
      "category": "onpage",
      "checks_total": 44,
      "checks_evaluated": 44
    },
    "search": {
      "note": "Keine Daten.",
      "grade": "n/a",
      "label": "Google-Suchleistung",
      "score": null,
      "capped": false,
      "failed": 0,
      "passed": 0,
      "status": "unavailable",
      "category": "search",
      "checks_total": 0,
      "checks_evaluated": 0
    },
    "security": {
      "note": "",
      "grade": "sehr gut",
      "label": "Sicherheit",
      "score": 99,
      "capped": false,
      "failed": 1,
      "passed": 34,
      "status": "heuristic",
      "category": "security",
      "checks_total": 39,
      "checks_evaluated": 35
    },
    "marketing": {
      "note": "",
      "grade": "kritisch",
      "label": "Marketing & Tracking",
      "score": 38,
      "capped": false,
      "failed": 2,
      "passed": 2,
      "status": "measured",
      "category": "marketing",
      "checks_total": 17,
      "checks_evaluated": 4
    },
    "technical": {
      "note": "",
      "grade": "sehr gut",
      "label": "Technisches SEO",
      "score": 99,
      "capped": false,
      "failed": 4,
      "passed": 52,
      "status": "heuristic",
      "category": "technical",
      "checks_total": 60,
      "checks_evaluated": 56
    },
    "conversion": {
      "note": "",
      "grade": "sehr gut",
      "label": "Kundenfreundlichkeit",
      "score": 98,
      "capped": false,
      "failed": 2,
      "passed": 33,
      "status": "heuristic",
      "category": "conversion",
      "checks_total": 40,
      "checks_evaluated": 35
    },
    "performance": {
      "note": "",
      "grade": "sehr gut",
      "label": "Ladegeschwindigkeit",
      "score": 99,
      "capped": false,
      "failed": 1,
      "passed": 39,
      "status": "heuristic",
      "category": "performance",
      "checks_total": 43,
      "checks_evaluated": 40
    },
    "accessibility": {
      "note": "",
      "grade": "sehr gut",
      "label": "Barrierefreiheit",
      "score": 100,
      "capped": false,
      "failed": 1,
      "passed": 34,
      "status": "heuristic",
      "category": "accessibility",
      "checks_total": 38,
      "checks_evaluated": 35
    }
  },
  "zusammenfassung": {
    "notes": [],
    "home_ms": 176,
    "problems": 23,
    "sitemaps": [
      {
        "url": "https://rtc-service.com/sitemap.xml",
        "urls": 3,
        "index": true,
        "status": 200
      },
      {
        "url": "https://rtc-service.com/sitemap-seiten.xml",
        "urls": 17,
        "index": false,
        "status": 200
      },
      {
        "url": "https://rtc-service.com/sitemap-leistungen.xml",
        "urls": 10,
        "index": false,
        "status": 200
      },
      {
        "url": "https://rtc-service.com/sitemap-ratgeber.xml",
        "urls": 18,
        "index": false,
        "status": 200
      }
    ],
    "final_url": "https://rtc-service.com/",
    "redirects": [],
    "crawl_limit": 25,
    "home_status": 200,
    "links_total": 1612,
    "checks_total": 338,
    "pages_failed": 0,
    "sitemap_urls": 24,
    "crawl_limited": true,
    "pages_crawled": 25,
    "robots_status": 200,
    "checks_katalog": 343,
    "links_internal": 1455,
    "checks_bewertet": 304,
    "external_checked": 20,
    "blocked_by_robots": 0
  },
  "befunde": [
    {
      "code": "onpage.placeholder_text",
      "kategorie": "onpage",
      "titel": "Kein Platzhalter- oder Beispieltext auf den Seiten",
      "bestanden": true,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.title_present",
      "kategorie": "onpage",
      "titel": "Alle Seiten haben einen Title",
      "bestanden": true,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.noindex_pages",
      "kategorie": "technical",
      "titel": "3 Unterseiten sind auf „noindex“ gestellt",
      "bestanden": false,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "Diese Seiten werden von Google nicht in den Suchergebnissen angezeigt. Das ist bei Impressum, Datenschutz oder Danke-Seiten gewollt, bei Leistungs- und Infoseiten nicht.",
      "ursache": "",
      "loesung": "Prüfen Sie jede Seite: Soll sie gefunden werden, entfernen Sie noindex im meta-robots-Tag bzw. im SEO-Plugin.",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/preisangebot/",
        "https://rtc-service.com/datenschutz/",
        "https://rtc-service.com/agb/"
      ],
      "belege": [
        "https://rtc-service.com/preisangebot/: meta robots = noindex, follow",
        "https://rtc-service.com/datenschutz/: meta robots = noindex, follow",
        "https://rtc-service.com/agb/: meta robots = noindex, follow"
      ],
      "prioritaet": 1
    },
    {
      "code": "tech.robots_search_bots",
      "kategorie": "technical",
      "titel": "robots.txt lässt Googlebot und Bingbot alle eigenen Seiten zu",
      "bestanden": true,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.staging_references",
      "kategorie": "technical",
      "titel": "Keine Verweise auf Vorschau- oder Testadressen",
      "bestanden": true,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.viewport",
      "kategorie": "technical",
      "titel": "Alle Seiten haben ein Viewport-Meta-Tag",
      "bestanden": true,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.price_vat",
      "kategorie": "conversion",
      "titel": "5 von 11 Seiten mit Preisen nennen die Steuer",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "Auf diesen Seiten stehen Preise ohne Hinweis auf die Umsatzsteuer. Gegenüber Verbrauchern sind Gesamtpreise mit Steuerhinweis üblich und vorgeschrieben (Hinweis, keine Rechtsberatung).",
      "ursache": "",
      "loesung": "Neben die Preise \"inkl. MwSt.\" bzw. den Hinweis nach § 19 UStG setzen.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/referenzen/",
        "https://rtc-service.com/kooperationen/",
        "https://rtc-service.com/standorte/",
        "https://rtc-service.com/leistungen/heizung-sanitaer/",
        "https://rtc-service.com/leistungen/sicherheitstechnik/",
        "https://rtc-service.com/ratgeber/"
      ],
      "belege": [],
      "prioritaet": 6
    },
    {
      "code": "onpage.description_present",
      "kategorie": "onpage",
      "titel": "2 Seiten haben keine Meta-Description (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Die Description erscheint als Beschreibungstext im Suchergebnis und entscheidet mit über den Klick. Fehlt sie, wird irgendein Textschnipsel gezeigt.",
      "ursache": "",
      "loesung": "Schreiben Sie je Seite eine eigene Beschreibung mit Nutzen und Handlungsaufforderung (70–160 Zeichen) in <meta name=\"description\" content=\"…\">.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/datenschutz/",
        "https://rtc-service.com/agb/"
      ],
      "belege": [],
      "prioritaet": 5
    },
    {
      "code": "onpage.duplicate_content",
      "kategorie": "onpage",
      "titel": "Kein doppelter Inhalt zwischen den Seiten gefunden",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.img_alt",
      "kategorie": "onpage",
      "titel": "Alle Bilder haben ein alt-Attribut",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.inbound_links",
      "kategorie": "onpage",
      "titel": "Jede gecrawlte Seite ist intern verlinkt",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.thin_content",
      "kategorie": "onpage",
      "titel": "1 Seite hat dünnen Inhalt (unter 300 Wörter) (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "Sehr kurze Seiten liefern Google wenig Anlass, sie für eine Suche zu ranken. Impressum, Datenschutz und Kontakt sind ausgenommen.",
      "ursache": "",
      "loesung": "Ergänzen Sie hilfreichen Text: Leistungen, Ablauf, Preise/Beispiele, häufige Fragen. Qualität vor Länge, Füllwörter helfen nicht.",
      "aufwand": "high",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/preisangebot/"
      ],
      "belege": [
        "https://rtc-service.com/preisangebot/: 163 Wörter"
      ],
      "prioritaet": 3
    },
    {
      "code": "onpage.title_duplicate",
      "kategorie": "onpage",
      "titel": "2 Seiten teilen sich einen Title mit anderen Seiten (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Identische Titles erschweren es Google, die passende Seite zu einer Suche zu wählen; die Seiten konkurrieren miteinander.",
      "ursache": "",
      "loesung": "Geben Sie jeder Seite einen eigenen Title, der ihren konkreten Inhalt benennt.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/anfrage/",
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [
        "„Kostenloses Angebot anfragen | RTC-Service Waghäusel“ auf 2 Seiten"
      ],
      "prioritaet": 4
    },
    {
      "code": "tech.canonical_conflicts",
      "kategorie": "technical",
      "titel": "1 Seite hat ein auffälliges Canonical-Tag",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Das Canonical sagt Google, welche Adresse zählt. Zeigt es auf eine andere Seite, eine Fehlerseite oder eine fremde Domain, wird die eigene Seite nicht indexiert.",
      "ursache": "Mehrfach vorhandene, fremde oder abweichende Canonical-Ziele.",
      "loesung": "Setzen Sie das Canonical jeder Seite auf ihre eigene, absolute https-Adresse. Abweichungen nur, wenn die Seite bewusst ein Duplikat ist.",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [
        "https://rtc-service.com/anfrage/?bereich=klima: Canonical zeigt auf andere Seite https://rtc-service.com/anfrage/"
      ],
      "prioritaet": 2
    },
    {
      "code": "tech.canonical_present",
      "kategorie": "technical",
      "titel": "Alle Seiten haben ein Canonical-Tag",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.js_dependency",
      "kategorie": "technical",
      "titel": "Die Startseite enthält ihren Text bereits im HTML",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.nofollow_internal",
      "kategorie": "technical",
      "titel": "Keine eigene Seite und kein interner Link ist auf nofollow gestellt",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.redirect_chains",
      "kategorie": "technical",
      "titel": "Keine mehrstufigen Weiterleitungsketten",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Jede zusätzliche Weiterleitung kostet Ladezeit und Crawl-Budget; Google folgt langen Ketten nicht zuverlässig.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.robots_assets",
      "kategorie": "technical",
      "titel": "robots.txt lässt Stylesheets und Skripte für Google zu",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_bad_urls",
      "kategorie": "technical",
      "titel": "Alle gecrawlten Sitemap-URLs sind direkt abrufbar",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_noindex",
      "kategorie": "technical",
      "titel": "Alle geprüften Sitemap-Seiten sind indexierbar und kanonisch",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.soft_404_pages",
      "kategorie": "technical",
      "titel": "Keine Seite meldet „nicht gefunden“ mit Status 200",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.link_identical",
      "kategorie": "accessibility",
      "titel": "1 Linktext(e) führen zu verschiedenen Zielen",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Derselbe Linktext (z. B. „Mehr erfahren“) führt auf einer Seite zu mindestens drei verschiedenen Zielen. Wer Links als Liste vorgelesen bekommt oder per Tastatur springt, kann sie nicht unterscheiden (WCAG 2.4.4 / 2.4.9). Heuristik: Karten mit zugehöriger Überschrift können im Einzelfall genügen.",
      "ursache": "",
      "loesung": "Linktexte eindeutig machen („Mehr zur Heizungswartung“) oder den Zweck per aria-label ergänzen.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/leistungen/"
      ],
      "belege": [
        "„anfragen →“ führt zu 7 verschiedenen Zielen"
      ],
      "prioritaet": 21
    },
    {
      "code": "conv.form_required",
      "kategorie": "conversion",
      "titel": "Pflichtfelder: 2 von 3 sichtbar gekennzeichnet",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Pflichtfelder sind technisch gesetzt, aber für Besucher nicht gekennzeichnet. Wer erst nach dem Absenden merkt, was fehlt, bricht eher ab.",
      "ursache": "",
      "loesung": "Pflichtfelder in der Beschriftung kennzeichnen (Stern mit Erklärung \"* Pflichtfeld\").",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 20
    },
    {
      "code": "geo.answer_pages",
      "kategorie": "geo",
      "titel": "11 von 12 Seiten beginnen mit einer zitierfähigen Antwort",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Auf diesen Seiten steht oben kein Absatz (15–90 Wörter) mit Festlegung oder Zahl, den eine Antwortmaschine zitieren könnte. Heuristische Einschätzung.",
      "ursache": "",
      "loesung": "Jede Seite mit einem Absatz beginnen, der die Frage der Überschrift in zwei bis drei Sätzen beantwortet – mit einer Zahl oder klaren Festlegung.",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/preisangebot/"
      ],
      "belege": [
        "/preisangebot/"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.question_headings",
      "kategorie": "geo",
      "titel": "5 von 12 Seiten mit Fragen als Überschrift",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Kaum eine Seite formuliert Überschriften als Frage (\"Was kostet …?\"). Antwortmaschinen suchen nach der Frage, nicht nach dem Substantiv. Volle Punktzahl ab der Hälfte der Seiten.",
      "ursache": "",
      "loesung": "Zwischenüberschriften als echte Kundenfragen schreiben, direkt gefolgt von einer kurzen Antwort.",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 13
    },
    {
      "code": "geo.sameas_count",
      "kategorie": "geo",
      "titel": "sameAs verweist auf 1 Profil(e)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Mit nur ein bis zwei Profilen in sameAs können Maschinen die Firma schwerer wiedererkennen.",
      "ursache": "",
      "loesung": "Google-Unternehmensprofil, Branchenverzeichnisse und aktive Social-Media-Profile in sameAs aufnehmen.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "https://maps.google.com/?cid=2613797946885775636"
      ],
      "prioritaet": 22
    },
    {
      "code": "geo.semantic_html",
      "kategorie": "geo",
      "titel": "Semantische HTML5-Struktur: 3 von 4 Grundelementen",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Vorhanden: main, nav, footer. Es fehlt: header.",
      "ursache": "",
      "loesung": "Seitenbereiche mit <header> statt neutraler <div> auszeichnen, damit Hauptinhalt und Navigation klar trennbar sind.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 16
    },
    {
      "code": "geo.structured_content",
      "kategorie": "geo",
      "titel": "7 von 11 langen Seiten sind gegliedert",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Lange Seiten ohne Liste oder Tabelle: Antwortmaschinen übernehmen strukturierte Blöcke deutlich häufiger als Fließtext.",
      "ursache": "",
      "loesung": "Vergleiche als Tabelle, Abläufe als nummerierte Liste, Eigenschaften als Aufzählung darstellen.",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/",
        "https://rtc-service.com/leistungen/",
        "https://rtc-service.com/referenzen/",
        "https://rtc-service.com/kooperationen/"
      ],
      "belege": [],
      "prioritaet": 23
    },
    {
      "code": "mkt.analytics",
      "kategorie": "marketing",
      "titel": "Keine Webanalyse im Seitencode erkennbar",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Im HTML wurde keine Besucher-Auswertung (z. B. GA4, Matomo, Plausible) gefunden. Ohne Messung ist nicht erkennbar, welche Seiten Anfragen bringen. Eine serverseitige Auswertung oder ein bewusster Verzicht aus Datenschutzgründen ist von außen nicht sichtbar – dann ist dieser Hinweis gegenstandslos.",
      "ursache": "",
      "loesung": "Eine datensparsame Webanalyse (z. B. Plausible, Matomo oder GA4 mit Einwilligung) einrichten und Anfragen als Ziel messen.",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 7
    },
    {
      "code": "mkt.social",
      "kategorie": "marketing",
      "titel": "Social-Media-Profile verlinkt: 0",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Es wurden keine Links zu Social-Media-Profilen gefunden (Instagram, Facebook, LinkedIn, TikTok, YouTube, Xing). Das ist nur sinnvoll, wenn Sie dort aktiv sind.",
      "ursache": "",
      "loesung": "Aktive Profile im Footer sichtbar verlinken (und im Schema per sameAs).",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 17
    },
    {
      "code": "onpage.anchor_text",
      "kategorie": "onpage",
      "titel": "Linktexte sind aussagekräftig",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [
        "https://rtc-service.com/ -> „Mehr erfahren →“ (https://rtc-service.com/leistungen/)"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.content_pages",
      "kategorie": "onpage",
      "titel": "Die Website hat 21 inhaltliche Seiten",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.description_duplicate",
      "kategorie": "onpage",
      "titel": "2 Seiten teilen sich eine Meta-Description (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Gleiche Beschreibungen auf mehreren Seiten wirken austauschbar im Suchergebnis.",
      "ursache": "",
      "loesung": "Formulieren Sie für jede Seite eine eigene Beschreibung.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/anfrage/",
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [],
      "prioritaet": 15
    },
    {
      "code": "onpage.description_length",
      "kategorie": "onpage",
      "titel": "Alle Descriptions haben eine gute Länge (70–160 Zeichen)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.h1",
      "kategorie": "onpage",
      "titel": "Jede Seite hat genau eine H1-Überschrift",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.heading_hierarchy",
      "kategorie": "onpage",
      "titel": "Die Überschriften-Hierarchie ist durchgängig",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.inbound_min",
      "kategorie": "onpage",
      "titel": "1 Unterseite wird von weniger als zwei Seiten verlinkt (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Seiten mit nur einem internen Link erhalten wenig Gewicht und werden von Google seltener besucht. (Gezählt wurden nur die gecrawlten Seiten.)",
      "ursache": "",
      "loesung": "Verlinken Sie diese Seiten zusätzlich aus passenden Texten, Übersichtsseiten oder dem Fußbereich.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [
        "https://rtc-service.com/anfrage/?bereich=klima: 1 Link(s)"
      ],
      "prioritaet": 11
    },
    {
      "code": "onpage.keyword_density",
      "kategorie": "onpage",
      "titel": "Kein Wort ist im Text überstrapaziert",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.keyword_overlap",
      "kategorie": "onpage",
      "titel": "1 Hauptbegriff wird von mehreren Seiten besetzt (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Mehrere Seiten treten mit demselben Hauptbegriff in Title und H1 an. Google wählt dann eine aus – und das muss nicht die wichtigste sein („Kannibalisierung“).",
      "ursache": "",
      "loesung": "Je Begriff eine Hauptseite: Die anderen Seiten auf ein eigenes Thema ausrichten oder zusammenlegen und mit einem sprechenden Linktext auf die Hauptseite verweisen.",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/anfrage/",
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [
        "„kostenloses angebot“ auf 2 Seiten"
      ],
      "prioritaet": 12
    },
    {
      "code": "onpage.knowledge_content",
      "kategorie": "onpage",
      "titel": "Es gibt Wissensinhalte (8 Ratgeber-/Blogseiten)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/ratgeber/klimaanlage-kosten/",
        "https://rtc-service.com/ratgeber/alarmanlage-kosten/",
        "https://rtc-service.com/ratgeber/wallbox-kosten/",
        "https://rtc-service.com/ratgeber/badsanierung-kosten/",
        "https://rtc-service.com/ratgeber/elektroinstallation-kosten/",
        "https://rtc-service.com/ratgeber/klimaanlage-nachruesten/",
        "https://rtc-service.com/ratgeber/photovoltaik-kosten/",
        "https://rtc-service.com/ratgeber/waermepumpe-kosten/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.open_graph",
      "kategorie": "onpage",
      "titel": "Open-Graph-Angaben der Startseite sind vollständig",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.own_text_share",
      "kategorie": "onpage",
      "titel": "Der größte Teil jeder Seite ist eigener Inhalt",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://rtc-service.com/preisangebot/: 39 % Eigentext"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.subheadings",
      "kategorie": "onpage",
      "titel": "Lange Texte sind durch Zwischenüberschriften gegliedert",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.template_pages",
      "kategorie": "onpage",
      "titel": "Seiten gleicher Art sind einzeln geschrieben",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "/ratgeber/: 8 Seiten, im Schnitt 33 % gleiche Wörter",
        "/leistungen/: 4 Seiten, im Schnitt 27 % gleiche Wörter"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.title_h1_match",
      "kategorie": "onpage",
      "titel": "Bei 2 Seiten passen Title, H1 und Text thematisch schlecht zusammen",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Title, Hauptüberschrift und Text sollten dasselbe Thema und dieselben Begriffe nutzen. Das ist eine einfache Näherung ohne Ziel-Keyword.",
      "ursache": "",
      "loesung": "Bringen Sie den Hauptbegriff in Title, H1 und die ersten Absätze.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/datenschutz/",
        "https://rtc-service.com/agb/"
      ],
      "belege": [],
      "prioritaet": 19
    },
    {
      "code": "onpage.title_length",
      "kategorie": "onpage",
      "titel": "3 Titles zu kurz (3) oder zu lang (0) (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Zu lange Titles werden in Google abgeschnitten (ab ca. 60 Zeichen), zu kurze nutzen den Platz für Suchbegriffe nicht aus.",
      "ursache": "",
      "loesung": "Formulieren Sie den Title mit 30 bis 60 Zeichen: wichtigster Begriff vorn, Marke am Ende.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/preisangebot/",
        "https://rtc-service.com/datenschutz/",
        "https://rtc-service.com/agb/"
      ],
      "belege": [
        "https://rtc-service.com/preisangebot/: 28 Zeichen – Sofort-Angebot – RTC-Service",
        "https://rtc-service.com/datenschutz/: 25 Zeichen – Datenschutz – RTC-Service",
        "https://rtc-service.com/agb/: 17 Zeichen – AGB – RTC-Service"
      ],
      "prioritaet": 8
    },
    {
      "code": "onpage.title_pattern",
      "kategorie": "onpage",
      "titel": "Die Titles folgen nicht alle demselben Schema",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.title_stuffing",
      "kategorie": "onpage",
      "titel": "Kein Wort wird im Title gestapelt",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.topic_areas",
      "kategorie": "onpage",
      "titel": "Die Website ist in 2 Themenbereiche gegliedert",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "/ratgeber/ (8 Seiten)",
        "/leistungen/ (4 Seiten)"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.topic_overview",
      "kategorie": "onpage",
      "titel": "Jeder Themenbereich hat eine Übersichtsseite",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.cache_ttl",
      "kategorie": "performance",
      "titel": "Statische Dateien werden lange zwischengespeichert",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Bilder, Skripte und Styles bleiben lange im Browser-Cache; Folgebesuche laden schnell.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.dom_size",
      "kategorie": "performance",
      "titel": "Die Seite hat wenige Elemente",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Die gerenderte Startseite besteht aus 862 Elementen (gut: bis 1.500). Ein großer Aufbau verlangsamt Darstellung und Bedienung, besonders auf älteren Handys.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.lazy_loading",
      "kategorie": "performance",
      "titel": "Bilder weiter unten laden nicht bedarfsgerecht",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Von 32 Bildern weiter unten sind nur 3 mit loading=\"lazy\" versehen; der Rest wird unnötig sofort geladen.",
      "ursache": "",
      "loesung": "Das erste Bild ohne lazy laden, alle weiter unten liegenden mit loading=\"lazy\".",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "3 von 32 späteren Bildern lazy"
      ],
      "prioritaet": 10
    },
    {
      "code": "perf.savings",
      "kategorie": "performance",
      "titel": "Keine großen Ladezeit-Einsparungen offen",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Lighthouse findet keine Einzelmaßnahme mit nennenswertem Zeitgewinn.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.mail.dmarc_policy",
      "kategorie": "security",
      "titel": "DMARC beobachtet nur (p=none)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "p=none meldet nur, filtert aber nichts – gefälschte Mails werden zugestellt.",
      "ursache": "",
      "loesung": "Nach einigen Wochen ohne Fehlalarm in den Berichten auf p=quarantine, später p=reject stellen.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "v=DMARC1; p=none;"
      ],
      "prioritaet": 9
    },
    {
      "code": "tech.broken_anchors",
      "kategorie": "technical",
      "titel": "25 Sprungmarken führen ins Leere",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Links wie „#leistungen“ springen zu einem Abschnitt der Seite. Gibt es diesen Abschnitt (id) nicht, passiert beim Klick nichts, obwohl ein Link versprochen war.",
      "ursache": "Die id des Zielabschnitts wurde umbenannt oder entfernt; die Links nicht.",
      "loesung": "Prüfen Sie jeden genannten Link und passen Sie entweder die id am Abschnitt oder die Linkadresse an. Hinweis: Per JavaScript erzeugte Abschnitte sieht diese Prüfung nicht.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/",
        "https://rtc-service.com/anfrage/",
        "https://rtc-service.com/leistungen/",
        "https://rtc-service.com/referenzen/",
        "https://rtc-service.com/kooperationen/",
        "https://rtc-service.com/standorte/",
        "https://rtc-service.com/ueber-uns/",
        "https://rtc-service.com/preisangebot/",
        "https://rtc-service.com/datenschutz/",
        "https://rtc-service.com/ratgeber/klimaanlage-kosten/",
        "https://rtc-service.com/leistungen/elektrotechnik/",
        "https://rtc-service.com/leistungen/heizung-sanitaer/",
        "https://rtc-service.com/leistungen/klimaanlagen/",
        "https://rtc-service.com/leistungen/sicherheitstechnik/",
        "https://rtc-service.com/ratgeber/alarmanlage-kosten/",
        "https://rtc-service.com/ratgeber/wallbox-kosten/",
        "https://rtc-service.com/ratgeber/",
        "https://rtc-service.com/impressum/",
        "https://rtc-service.com/agb/",
        "https://rtc-service.com/ratgeber/badsanierung-kosten/",
        "https://rtc-service.com/ratgeber/elektroinstallation-kosten/",
        "https://rtc-service.com/ratgeber/klimaanlage-nachruesten/",
        "https://rtc-service.com/ratgeber/photovoltaik-kosten/",
        "https://rtc-service.com/ratgeber/waermepumpe-kosten/",
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [
        "https://rtc-service.com/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/anfrage/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/leistungen/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/referenzen/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/kooperationen/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/standorte/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/ueber-uns/: „#inhalt“ ohne passenden Abschnitt",
        "https://rtc-service.com/preisangebot/: „#inhalt“ ohne passenden Abschnitt"
      ],
      "prioritaet": 18
    },
    {
      "code": "tech.canonical_absolute",
      "kategorie": "technical",
      "titel": "Canonical-Tags sind absolute URLs",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.charset",
      "kategorie": "technical",
      "titel": "Der Zeichensatz ist deklariert",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.favicon",
      "kategorie": "technical",
      "titel": "Favicon und Handy-Symbol sind im HTML eingetragen",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.html_lang",
      "kategorie": "technical",
      "titel": "Alle Seiten geben ihre Sprache an (html lang)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.html_valid",
      "kategorie": "technical",
      "titel": "Der HTML-Aufbau der Seiten ist sauber",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.internal_link_redirects",
      "kategorie": "technical",
      "titel": "Interne Links führen direkt zur Zielseite",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.link_variants",
      "kategorie": "technical",
      "titel": "Jede Seite wird immer unter derselben Adresse verlinkt",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.not_found_page",
      "kategorie": "technical",
      "titel": "Die 404-Seite ist gestaltet und führt weiter",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.parameter_urls",
      "kategorie": "technical",
      "titel": "Keine indexierbaren Parameter-Adressen",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.redirect_temporary",
      "kategorie": "technical",
      "titel": "Interne Weiterleitungen sind dauerhaft (301/308)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.robots_sitemap_ref",
      "kategorie": "technical",
      "titel": "robots.txt verweist auf die Sitemap",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "Sitemap: https://rtc-service.com/sitemap.xml"
      ],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_coverage",
      "kategorie": "technical",
      "titel": "1 gecrawlte Seite fehlt in der Sitemap (im begrenzten Crawl)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Seiten, die intern verlinkt sind, aber nicht in der Sitemap stehen, werden von Google oft später entdeckt.",
      "ursache": "",
      "loesung": "Nehmen Sie diese Seiten in die Sitemap auf bzw. lassen Sie die Sitemap automatisch aus dem CMS erzeugen.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "belege": [
        "https://rtc-service.com/anfrage/?bereich=klima"
      ],
      "prioritaet": 14
    },
    {
      "code": "tech.sitemap_size",
      "kategorie": "technical",
      "titel": "Keine Sitemap-Datei ist überfüllt (unter 50.000 URLs)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.url_structure",
      "kategorie": "technical",
      "titel": "Die URLs sind sauber und lesbar",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.accessible_names_aria",
      "kategorie": "accessibility",
      "titel": "Bedienelemente mit ARIA-Rolle haben Namen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Bedienelemente mit ARIA-Rolle (Button, Eingabe, Dialog, Schalter) haben einen zugänglichen Namen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.alt_quality",
      "kategorie": "accessibility",
      "titel": "Alt-Texte beschreiben die Bilder",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Keine Alt-Texte, die nur aus Dateinamen oder Platzhalterwörtern bestehen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.aria_hidden_focus",
      "kategorie": "accessibility",
      "titel": "Versteckte Bereiche enthalten nichts Bedienbares",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "aria-hidden-Bereiche enthalten keine fokussierbaren Elemente.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.aria_required_parts",
      "kategorie": "accessibility",
      "titel": "ARIA-Rollen haben ihre Pflichtteile",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "ARIA-Rollen sind vollständig aufgebaut (Pflichtattribute, Kind- und Elternelemente).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.aria_valid",
      "kategorie": "accessibility",
      "titel": "ARIA-Angaben sind in sich stimmig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Alle ARIA-Verweise und -Rollen sind stimmig.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.autocomplete",
      "kategorie": "accessibility",
      "titel": "Persönliche Felder tragen autocomplete",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Alle erkannten persönlichen Felder haben autocomplete.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.autoplay",
      "kategorie": "accessibility",
      "titel": "Kein automatisch startendes Video mit Ton",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Kein Autoplay-Video mit Ton gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.button_names",
      "kategorie": "accessibility",
      "titel": "Buttons haben einen Namen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Alle geprüften Buttons haben Text oder ARIA-Namen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.color_contrast",
      "kategorie": "accessibility",
      "titel": "Texte haben ausreichenden Farbkontrast",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Lighthouse (axe-core) findet auf der Startseite keine Texte mit zu geringem Kontrast.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.dup_ids",
      "kategorie": "accessibility",
      "titel": "IDs sind eindeutig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine doppelten IDs gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.empty_headings",
      "kategorie": "accessibility",
      "titel": "Keine leeren Überschriften",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine leere Überschrift gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.fake_controls",
      "kategorie": "accessibility",
      "titel": "Bedienelemente sind echte Buttons und Links",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Keine Schein-Buttons (div/span mit onclick) gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.focus_visible",
      "kategorie": "accessibility",
      "titel": "Keine entfernte Fokus-Umrandung erkannt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Im Inline-CSS wurde keine entfernte Fokus-Umrandung erkannt (externe CSS-Dateien nicht geprüft).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.form_labels",
      "kategorie": "accessibility",
      "titel": "Formularfelder sind beschriftet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Alle geprüften Eingabefelder haben ein Label oder einen ARIA-Namen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.headings",
      "kategorie": "accessibility",
      "titel": "Überschriftenstruktur ist durchgängig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Jede geprüfte Seite hat eine H1 und keine übersprungenen Ebenen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.iframe_title",
      "kategorie": "accessibility",
      "titel": "Eingebettete Frames haben einen Titel",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle iframes haben einen Titel.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.img_alt",
      "kategorie": "accessibility",
      "titel": "Alle Bilder haben ein Alt-Attribut",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle geprüften <img>-Tags haben ein alt-Attribut (die Qualität der Texte ist damit nicht bewertet).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.landmarks",
      "kategorie": "accessibility",
      "titel": "Hauptbereich (<main>) vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "<main> ist vorhanden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.lang",
      "kategorie": "accessibility",
      "titel": "Seitensprache ist angegeben",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Das lang-Attribut ist gesetzt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.lang_valid",
      "kategorie": "accessibility",
      "titel": "Sprachcode ist gültig aufgebaut",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle lang-Angaben sind gültig aufgebaut.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.lighthouse.score",
      "kategorie": "accessibility",
      "titel": "Lighthouse-Barrierefreiheit: 100/100",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Google Lighthouse (axe-core) bewertet die Startseite mobil mit 100 von 100 Punkten. Darin enthalten ist u. a. die Prüfung der Farbkontraste (Audit „color-contrast“), die wir nicht selbst nachrechnen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.link_distinguishable",
      "kategorie": "accessibility",
      "titel": "Links im Fließtext sind nicht nur an der Farbe erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Links im Fließtext unterscheiden sich auch ohne Farbe (z. B. Unterstreichung).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.link_names",
      "kategorie": "accessibility",
      "titel": "Links haben einen Namen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Alle geprüften Links haben einen Namen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.lists",
      "kategorie": "accessibility",
      "titel": "Listen sind korrekt aufgebaut",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Listen bestehen aus <ul>/<ol> mit direkten <li>-Kindern.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.main_single",
      "kategorie": "accessibility",
      "titel": "Jede Seite hat höchstens einen Hauptbereich",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine Seite hat mehrere Hauptbereiche.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.manual_note",
      "kategorie": "accessibility",
      "titel": "Hinweis: Automatische Prüfung ersetzt keine manuelle WCAG-Prüfung",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Automatisierte Prüfungen ersetzen keine vollständige manuelle WCAG-Prüfung.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.meta_refresh",
      "kategorie": "accessibility",
      "titel": "Keine automatische Neuladung",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein verzögerter Meta-Refresh gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.nav_landmark",
      "kategorie": "accessibility",
      "titel": "Navigation als <nav> ausgezeichnet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "<nav> ist vorhanden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.object_alt",
      "kategorie": "accessibility",
      "titel": "Eingebettete Objekte haben einen Ersatztext",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Nicht anwendbar: auf den abgerufenen Seiten gibt es nichts, was diese Prüfung betrifft.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.skip_link",
      "kategorie": "accessibility",
      "titel": "Sprunglink „Zum Inhalt“ vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Ein Sprunglink am Seitenanfang erlaubt Tastatur-Nutzern, das Menü zu überspringen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.tabindex",
      "kategorie": "accessibility",
      "titel": "Kein positiver tabindex",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein positiver tabindex vorhanden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.table_headers",
      "kategorie": "accessibility",
      "titel": "Tabellen haben Kopfzellen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Keine Tabelle ohne Kopfzellen gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.target_size",
      "kategorie": "accessibility",
      "titel": "Tippflächen sind groß genug",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Bedienelemente haben ausreichend große Tippflächen (mindestens 24 × 24 Pixel).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.th_data_cells",
      "kategorie": "accessibility",
      "titel": "Tabellenköpfe passen zu ihren Datenzellen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Kopfzellen haben Datenzellen, headers-Verweise stimmen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.title",
      "kategorie": "accessibility",
      "titel": "Seitentitel vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle Seiten haben einen Titel.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.video_captions",
      "kategorie": "accessibility",
      "titel": "Videos mit Ton haben Untertitel",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Nicht anwendbar: auf den abgerufenen Seiten gibt es nichts, was diese Prüfung betrifft.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "a11y.zoom",
      "kategorie": "accessibility",
      "titel": "Zoomen ist erlaubt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der Viewport erlaubt Zoomen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.accessibility_statement",
      "kategorie": "conversion",
      "titel": "Erklärung zur Barrierefreiheit nicht einschlägig (kein Onlineshop erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Das Barrierefreiheitsstärkungsgesetz (BFSG) betrifft vor allem Onlineshops und Dienste für Verbraucher; Kleinstunternehmen sind ausgenommen. Bei dieser Website wurde kein Shop erkannt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.click_to_call",
      "kategorie": "conversion",
      "titel": "Telefon per Fingertipp wählbar (tel:-Link) ja",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Nummer ist als tel:-Link hinterlegt – auf dem Handy genügt ein Tipp.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "+491727528254",
        "+491727528254"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.contact_form",
      "kategorie": "conversion",
      "titel": "Kontaktformular vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Ein Formular mit E-Mail-/Nachrichtenfeld wurde gefunden (nicht abgesendet).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.contact_in_nav",
      "kategorie": "conversion",
      "titel": "Kontakt in der Navigation ja",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Im Kopfbereich gibt es einen Kontakt-/Anfrage-Link.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "📈 Sofort Angebot",
        "Jetzt anfragen"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.cookies_before_consent",
      "kategorie": "conversion",
      "titel": "Erste Antwort setzt 1 Cookie(s), davon 0 Tracking-Cookie(s)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Beim ersten Abruf der Startseite wird kein Tracking-Cookie gesetzt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "csrftoken"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.copyright_year",
      "kategorie": "conversion",
      "titel": "Urheberrechtsangabe nennt 2026",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Das Jahr im Fußbereich ist aktuell.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.early_cta",
      "kategorie": "conversion",
      "titel": "Handlungsaufforderung früh sichtbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Im oberen Viertel der Seite gibt es einen Button/Link mit klarer Aufforderung (heuristisch aus dem Quelltext).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "📋 Kontaktformular",
        "📈 Sofort Angebot"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.email",
      "kategorie": "conversion",
      "titel": "E-Mail-Adresse vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "mailto:-Link vorhanden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "info@rtc-service.com",
        "info@rtc-service.com"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.email_domain",
      "kategorie": "conversion",
      "titel": "E-Mail-Adresse auf eigener Domain",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle gefundenen Adressen gehören zur eigenen Domain.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.embeds_consent",
      "kategorie": "conversion",
      "titel": "Einbettungen nicht einschlägig (keine Videos oder Karten gefunden)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.form_inputs",
      "kategorie": "conversion",
      "titel": "Formularfelder: 5 von 5 Angaben passend",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "E-Mail-, Telefon- und Namensfelder haben den passenden Typ und autocomplete.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.form_length",
      "kategorie": "conversion",
      "titel": "Formularlänge: bis zu 3 Pflichtfelder",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Zahl der Pflichtfelder ist überschaubar.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.form_privacy",
      "kategorie": "conversion",
      "titel": "Datenschutzhinweis an 1 von 1 Formularen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Am Formular steht ein Hinweis auf Datenschutz bzw. Einwilligung.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.form_spam",
      "kategorie": "conversion",
      "titel": "Spamschutz an 1 von 1 Formularen erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Honigtopf-Feld oder Captcha erkannt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.google_fonts",
      "kategorie": "conversion",
      "titel": "Google-Schriften werden nicht von fremden Servern geladen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Es werden keine Schriften von fonts.googleapis.com oder fonts.gstatic.com geladen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.imprint",
      "kategorie": "conversion",
      "titel": "Impressum-Link vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Impressum ist verlinkt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "/impressum/"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.imprint_content",
      "kategorie": "conversion",
      "titel": "Impressum nennt 5 von 5 Grundangaben",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Name, Anschrift, E-Mail und ein zweiter Kontaktweg sind im Impressum zu finden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/impressum/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.imprint_register",
      "kategorie": "conversion",
      "titel": "Registerangaben nicht einschlägig (keine eingetragene Rechtsform erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Einzelunternehmen haben kein Registergericht – hier gibt es nichts zu prüfen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.imprint_sitewide",
      "kategorie": "conversion",
      "titel": "Impressum ist auf 25 von 25 Seiten verlinkt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der Impressum-Link steht auf allen gecrawlten Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.legal_links_footer",
      "kategorie": "conversion",
      "titel": "Impressum und Datenschutz im Fußbereich verlinkt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Impressum und Datenschutzerklärung stehen im Fußbereich, wo Besucher sie erwarten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.legal_outdated",
      "kategorie": "conversion",
      "titel": "Keine überholten Rechtshinweise gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Weder alte Gesetzesverweise (TMG/RStV) noch der entfallene OS-Plattform-Hinweis wurden gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.logo_home",
      "kategorie": "conversion",
      "titel": "Logo führt überall zur Startseite",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der Klick auf das Logo bringt Besucher zur Startseite zurück.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.messenger",
      "kategorie": "conversion",
      "titel": "WhatsApp/Messenger-Kontakt vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Ein Chat-Link wurde gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "https://wa.me/491727528254"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.navigation",
      "kategorie": "conversion",
      "titel": "Navigation vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Ein Navigationsbereich mit mindestens drei Links wurde gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.offer",
      "kategorie": "conversion",
      "titel": "Leistungen/Preise erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Die Startseite verweist auf Leistungen oder Preise.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "Klimatechnik & Service",
        "Warum RTC-Service?"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.page_cta",
      "kategorie": "conversion",
      "titel": "19 von 19 Inhaltsseiten führen zum Kontakt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Jede geprüfte Unterseite bietet im Inhalt einen Weg zu Kontakt, Telefon oder Formular.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.phone_visible",
      "kategorie": "conversion",
      "titel": "Telefonnummer sichtbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Eine Telefonnummer ist auf der Seite zu finden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [
        "0172 7528254"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.price_info",
      "kategorie": "conversion",
      "titel": "Preise oder Preisrahmen genannt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Preisangaben stehen auf 21 von 25 Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "/",
        "/anfrage/",
        "/leistungen/"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.privacy",
      "kategorie": "conversion",
      "titel": "Datenschutzerklärung-Link vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Datenschutzerklärung ist verlinkt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "/datenschutz/"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.privacy_content",
      "kategorie": "conversion",
      "titel": "Datenschutzerklärung: 6 von 6 Pflichtangaben gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Verantwortlicher, Rechtsgrundlage, Speicherdauer, Betroffenenrechte, Beschwerderecht und Hosting werden genannt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/datenschutz/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.privacy_sitewide",
      "kategorie": "conversion",
      "titel": "Datenschutz ist auf 25 von 25 Seiten verlinkt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der Datenschutz-Link steht auf allen gecrawlten Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.shop_agb",
      "kategorie": "conversion",
      "titel": "Allgemeine Geschäftsbedingungen (AGB) nicht einschlägig (kein Onlineshop erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Es wurde kein Warenkorb oder Shop-System erkannt, daher wird die Verlinkung nicht gefordert.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.shop_widerruf",
      "kategorie": "conversion",
      "titel": "Widerrufsbelehrung nicht einschlägig (kein Onlineshop erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Es wurde kein Warenkorb oder Shop-System erkannt, daher wird die Verlinkung nicht gefordert.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.slow_page",
      "kategorie": "conversion",
      "titel": "Mobile Ladeleistung 100/100",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die mobile Ladeleistung steht Anfragen nicht im Weg.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.tel_format",
      "kategorie": "conversion",
      "titel": "Telefon-Links wählen die angezeigte Nummer",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die angezeigte Telefonnummer und das Ziel des tel:-Links stimmen überein.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.tel_international",
      "kategorie": "conversion",
      "titel": "Telefonlinks mit Ländervorwahl: alle",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle tel:-Links tragen die Ländervorwahl.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.tel_sitewide",
      "kategorie": "conversion",
      "titel": "Telefon-Link auf 25 von 25 Seiten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Auf jeder gecrawlten Seite steht ein anklickbarer Telefon-Link.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.trust",
      "kategorie": "conversion",
      "titel": "Vertrauenselemente erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Erkannt: Link zu Bewertungsplattform; Vertrauensbegriffe (bewertung, geprüft, kundenstimme, referenz). ",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "https://maps.google.com/?cid=2613797946885775636&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYBCAA",
        "https://maps.google.com/?cid=2613797946885775636&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYBCAA"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.ai_search_bots",
      "kategorie": "geo",
      "titel": "KI-Suchbots dürfen die Website lesen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "OAI-SearchBot, PerplexityBot, Claude-SearchBot und ChatGPT-User sind nicht gesperrt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.ai_training_bots",
      "kategorie": "geo",
      "titel": "KI-Trainings-Crawler: nicht gesperrt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Training-Bots (GPTBot, CCBot, Google-Extended …) zu sperren ist eine Geschmacksfrage und beeinflusst die Sichtbarkeit in Antworten kaum. Nur zur Information.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.answer_first",
      "kategorie": "geo",
      "titel": "Einstiegsabsatz beantwortet Was/Wo",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Der erste Absatz nach der H1 ist knapp und nennt Leistung bzw. Ort. Heuristische Einschätzung.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "RTC-Service ist der Betrieb von Reik Schwarzjirg in Waghäusel-Kirrlach: Installateur für Klimatechnik, Elektro, Heizung…"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.article_author",
      "kategorie": "geo",
      "titel": "8 von 8 Ratgebern nennen einen Autor",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Die Ratgeber nennen, wer sie geschrieben hat.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.article_date",
      "kategorie": "geo",
      "titel": "8 von 8 Ratgebern zeigen ein Datum",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Die Ratgeber nennen sichtbar ihr Datum.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.article_fields",
      "kategorie": "geo",
      "titel": "8 von 8 Artikeln mit Überschrift, Bild und Änderungsdatum im Schema",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Artikel nennen headline, image und dateModified.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.article_schema",
      "kategorie": "geo",
      "titel": "8 von 8 Ratgebern vollständig als Article ausgezeichnet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Ratgeberseiten tragen Article-/BlogPosting-Schema mit Überschrift und Veröffentlichungsdatum.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.author_info",
      "kategorie": "geo",
      "titel": "Verantwortliche Personen erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Erkannt: Person-Schema, Über-uns/Team-Seite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.breadcrumb",
      "kategorie": "geo",
      "titel": "Brotkrumenpfad auf 19 von 19 Unterseiten ausgezeichnet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "BreadcrumbList sagt Maschinen, wo eine Seite im Haus steht.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.breadcrumb_fields",
      "kategorie": "geo",
      "titel": "22 von 22 Brotkrumenpfaden mit allen Google-Feldern",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Jeder Brotkrumenpfad hat mindestens zwei Einträge mit Position, Namen und Adresse.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.citable_facts",
      "kategorie": "geo",
      "titel": "Zitierfähige Fakten: 2 von 4 Arten gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Gefunden: Preise, Einzugsgebiet. Konkrete Zahlen, Preise und Zeiten werden von KI-Systemen bevorzugt übernommen (heuristische Textsuche).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.event_required",
      "kategorie": "geo",
      "titel": "Veranstaltungs-Schema (Google-Pflichtangaben) nicht prüfbar (kein Event-Schema)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.faq",
      "kategorie": "geo",
      "titel": "FAQ mit Schema vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "FAQPage-Auszeichnung gefunden – gut für direkte Antworten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.faq_status",
      "kategorie": "geo",
      "titel": "FAQPage-Auszeichnung: Google zeigt die FAQ-Sonderdarstellung nicht mehr",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Laut Googles Dokumentation (Eintrag vom 08.05.2026, Seite mit Einträgen bis Oktober 2026) erscheint das FAQ-Rich-Result seit 07.05.2026 nicht mehr in der Google-Suche. Die Auszeichnung bleibt gültig und schadet nicht; sichtbare Fragen mit kurzen Antworten bleiben auch für KI-Antworten nützlich. Nur ein Hinweis, keine Wertung.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/",
        "https://rtc-service.com/standorte/",
        "https://rtc-service.com/ratgeber/klimaanlage-kosten/",
        "https://rtc-service.com/leistungen/elektrotechnik/",
        "https://rtc-service.com/leistungen/heizung-sanitaer/"
      ],
      "belege": [
        "/",
        "/standorte/",
        "/ratgeber/klimaanlage-kosten/"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.faq_visible",
      "kategorie": "geo",
      "titel": "121 von 121 FAQ-Einträgen im Schema stehen sichtbar auf der Seite",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Jede ausgezeichnete Frage und Antwort steht auch im sichtbaren Text.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.feed",
      "kategorie": "geo",
      "titel": "Feed für neue Inhalte verlinkt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Ein RSS-/Atom-Feed ist im Kopfbereich verlinkt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.freshness",
      "kategorie": "geo",
      "titel": "Inhalte aktuell datiert",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Jüngstes erkennbares Datum: 02.10.2026.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.jobposting_required",
      "kategorie": "geo",
      "titel": "Stellenanzeigen-Schema (Google-Pflichtangaben) nicht prüfbar (kein JobPosting-Schema)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.llms_content",
      "kategorie": "geo",
      "titel": "llms.txt erfüllt 4 von 4 Aufbau-Merkmalen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die llms.txt hat Überschrift, Kurzbeschreibung, Abschnitte und verlinkte Kernseiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.llms_txt",
      "kategorie": "geo",
      "titel": "llms.txt vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "llms.txt gefunden. Hinweis: Das ist kein Standard, eine Wirkung auf KI-Antworten ist nicht belegt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "# RTC-Service > Handwerks- und Technikbetrieb von Reik Schwarzjirg in > Waghäus"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.logo_valid",
      "kategorie": "geo",
      "titel": "Logo im Unternehmens-Schema ist nutzbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Das Logo ist eine absolute https-Adresse in einem unterstützten Format und war abrufbar.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [
        "https://rtc-service.com/static/images/rtc_logo.webp"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.name_consistency",
      "kategorie": "geo",
      "titel": "Firmenname einheitlich",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Name in Schema, og:site_name und Seitentitel stimmt überein.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "Schema: RTC-Service",
        "og:site_name: RTC-Service"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.org_schema",
      "kategorie": "geo",
      "titel": "Unternehmens-Schema vollständig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gefunden: name, url, logo, sameAs, address/areaServed, telephone.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [
        "RTC-Service"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.person_schema",
      "kategorie": "geo",
      "titel": "1 von 1 Autoren im Schema mit Profilbezug (url oder sameAs)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die ausgezeichneten Autoren nennen neben dem Namen eine Profil-Adresse (url oder sameAs).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.price_visible",
      "kategorie": "geo",
      "titel": "Sichtbarkeit der Schema-Preise nicht prüfbar (kein Angebot mit Preis)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.product_offer",
      "kategorie": "geo",
      "titel": "Produkt-Angebote nicht prüfbar (kein Product-Schema)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.product_required",
      "kategorie": "geo",
      "titel": "Produkt-Schema (Google-Pflichtangaben) nicht prüfbar (kein Product-Schema)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.rating_visible",
      "kategorie": "geo",
      "titel": "Bewertungen im Schema nicht prüfbar (keine aggregateRating)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.recipe_required",
      "kategorie": "geo",
      "titel": "Rezept-Schema (Google-Pflichtangaben) nicht prüfbar (kein Recipe-Schema)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.review_snippet",
      "kategorie": "geo",
      "titel": "Bewertungs-Schema (Google-Vorgaben) nicht prüfbar (keine Review/AggregateRating)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.sameas_valid",
      "kategorie": "geo",
      "titel": "1 von 1 sameAs-Adressen sind gültige Profil-Adressen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle sameAs-Einträge sind absolute https-Adressen auf fremde Profile.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "https://maps.google.com/?cid=2613797946885775636"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.schema_dates",
      "kategorie": "geo",
      "titel": "Datumsangaben im Schema plausibel",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "dateModified und datePublished sind stimmig.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_entities",
      "kategorie": "geo",
      "titel": "JSON-LD frei von HTML-Entities",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Texte im JSON-LD sind sauber.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_ids",
      "kategorie": "geo",
      "titel": "100 % der Schema-Knoten tragen eine @id",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Knoten haben stabile Kennungen (z. B. …/#organisation) und lassen sich wiedererkennen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_json_pages",
      "kategorie": "geo",
      "titel": "JSON-LD der Unterseiten lesbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle JSON-LD-Blöcke der Unterseiten lassen sich lesen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_linked",
      "kategorie": "geo",
      "titel": "Schema-Knoten verweisen auf 25 von 25 Seiten aufeinander",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Knoten sind über publisher, isPartOf, about o. ä. verknüpft.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_ok",
      "kategorie": "geo",
      "titel": "Strukturierte Daten (JSON-LD) vorhanden und lesbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "2 JSON-LD-Block/Blöcke, Typen: Electrician, FAQPage, GeneralContractor, GeoCircle, HVACBusiness, Person, Plumber, Service.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "Electrician, FAQPage, GeneralContractor, GeoCircle, HVACBusiness, Person, Plumber, Service"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.schema_pages",
      "kategorie": "geo",
      "titel": "Strukturierte Daten auf 24 von 24 Unterseiten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Jede gecrawlte Unterseite trägt strukturierte Daten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_parse_types",
      "kategorie": "geo",
      "titel": "Schema-Typen und @context sind gültig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle @type-Angaben sind bekannte schema.org-Typen und jeder Block nennt schema.org als @context.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.schema_refs",
      "kategorie": "geo",
      "titel": "1050 von 1050 @id-Verweisen führen zu einem Knoten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Jeder Verweis per @id zeigt auf einen definierten Knoten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.server_rendered",
      "kategorie": "geo",
      "titel": "Hauptinhalt im HTML: 1626 Wörter",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Startseite enthält 1626 Wörter im ausgelieferten HTML.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.services",
      "kategorie": "geo",
      "titel": "Leistungen sind eindeutig erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Service/Offer-Schema gefunden. 5 Leistungsseiten verlinkt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://rtc-service.com/leistungen/",
        "https://rtc-service.com/leistungen/elektrotechnik/",
        "https://rtc-service.com/leistungen/heizung-sanitaer/"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.snippet_brake",
      "kategorie": "geo",
      "titel": "Keine Snippet-Bremse",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Weder nosnippet noch ein zu kleines max-snippet sind gesetzt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.sources",
      "kategorie": "geo",
      "titel": "Quellenangaben in Ratgebern: 7 von 8 Artikeln",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Externe Belege (Behörden, Studien, Normen) machen Ratgeber zitierfähiger. Heuristische Stichprobe über die gecrawlten Artikel.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.video_markup_present",
      "kategorie": "geo",
      "titel": "Video-Auszeichnung nicht prüfbar (keine eingebetteten Videos)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.video_required",
      "kategorie": "geo",
      "titel": "Video-Schema (Google-Pflichtangaben) nicht prüfbar (kein VideoObject)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.website_schema",
      "kategorie": "geo",
      "titel": "WebSite-Schema vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Ein WebSite-Knoten benennt den Websitenamen eindeutig.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "local.address_structured",
      "kategorie": "local",
      "titel": "Anschrift im Schema vollständig aufgeschlüsselt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Straße, PLZ, Ort und Land stehen getrennt im Schema.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "local.city_in_title",
      "kategorie": "local",
      "titel": "Ort \"Waghäusel\" in Title/H1: ja",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Title: enthält den Ort; H1: enthält den Ort.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "Haustechnik Waghäusel: Klima, Elektro, Heizung | RTC-Service",
        "Klimaanlage & Haustechnik in Waghäusel"
      ],
      "prioritaet": null
    },
    {
      "code": "local.gbp_not_connected",
      "kategorie": "local",
      "titel": "Google-Unternehmensprofil nicht verbunden",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Für eine vollständige Analyse muss das Google-Unternehmensprofil verbunden werden. Bewertungen, Kategorien, Fotos und Profilvollständigkeit sind ohne Verbindung nicht einsehbar.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "local.gbp_sameas",
      "kategorie": "local",
      "titel": "sameAs verweist auf das Google-Unternehmensprofil",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Das Schema verknüpft die Firma ausdrücklich mit ihrem Google-Profil.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://maps.google.com/?cid=2613797946885775636"
      ],
      "prioritaet": null
    },
    {
      "code": "local.hours_schema",
      "kategorie": "local",
      "titel": "Öffnungszeiten im Schema maschinenlesbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "1 Zeitangabe(n) im Schema nutzen Wochentag und Uhrzeit im erwarteten Format.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "local.hours_visible",
      "kategorie": "local",
      "titel": "Öffnungszeiten sichtbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Öffnungs- bzw. Erreichbarkeitszeiten sind im Text zu finden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "rund um die Uhr"
      ],
      "prioritaet": null
    },
    {
      "code": "local.maps",
      "kategorie": "local",
      "titel": "Google Maps eingebunden/verlinkt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kartenlink oder -einbettung gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://maps.google.com/?cid=2613797946885775636&g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAIYBCAA"
      ],
      "prioritaet": null
    },
    {
      "code": "local.nap",
      "kategorie": "local",
      "titel": "Name, Adresse, Telefon auf der Website: 3 von 3",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gefunden: Name, Adresse, Telefon.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [
        "68753 Waghäusel"
      ],
      "prioritaet": null
    },
    {
      "code": "local.nap_consistency",
      "kategorie": "local",
      "titel": "Kontaktdaten in Schema und Text stimmen überein",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Übereinstimmend: Telefon, PLZ.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "Telefon",
        "PLZ"
      ],
      "prioritaet": null
    },
    {
      "code": "local.nap_imprint",
      "kategorie": "local",
      "titel": "Kontaktdaten der Startseite stimmen mit dem Impressum überein",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Übereinstimmend: Telefon, Anschrift.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/",
        "https://rtc-service.com/impressum/"
      ],
      "belege": [
        "Telefon",
        "Anschrift"
      ],
      "prioritaet": null
    },
    {
      "code": "local.review_links",
      "kategorie": "local",
      "titel": "Link zu Bewertungsplattform vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Website verweist auf Bewertungen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://maps.google.com/",
        "https://maps.google.com/"
      ],
      "prioritaet": null
    },
    {
      "code": "local.schema",
      "kategorie": "local",
      "titel": "LocalBusiness-Schema vollständig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Vorhanden: address, geo, openingHours, areaServed.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "local.service_area",
      "kategorie": "local",
      "titel": "Einzugsgebiet konkret und auf der Seite belegt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "areaServed nennt Waghäusel, Kirrlach, Wiesental; das Gebiet steht auch im sichtbaren Text.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [
        "Waghäusel",
        "Kirrlach",
        "Wiesental"
      ],
      "prioritaet": null
    },
    {
      "code": "mkt.consent",
      "kategorie": "marketing",
      "titel": "Einwilligungs-Prüfung nicht relevant (kein einwilligungspflichtiges Tracking erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Es wurde kein Tracking erkannt, das typischerweise eine Einwilligung braucht. Consent-Manager erkannt: keiner.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.consent_reject",
      "kategorie": "marketing",
      "titel": "Ablehnen-Knopf nicht einschlägig (kein einwilligungspflichtiges Tracking erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.consent_revoke",
      "kategorie": "marketing",
      "titel": "Widerruf der Einwilligung nicht einschlägig (kein Tracking erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.conversion_events",
      "kategorie": "marketing",
      "titel": "Conversion-Tracking nicht relevant (keine Werbe-Tags)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.gtm_container",
      "kategorie": "marketing",
      "titel": "Tag-Manager- und Messkennungen sind gültig aufgebaut",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Es wurde keine Kennung für Tag Manager, GA4 oder Google Ads im Quelltext gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.newsletter_form",
      "kategorie": "marketing",
      "titel": "Newsletter-Anmeldung nennt Einwilligung und Abmeldung",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Es wurde kein Newsletter-Formular im HTML gefunden. Über Skripte nachgeladene Anmeldeformulare (z. B. von Mailchimp) sind nicht sichtbar.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.pii_in_tracking",
      "kategorie": "marketing",
      "titel": "Kontaktdaten in Ereignissen nicht prüfbar (kein Messwerkzeug erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.privacy_services",
      "kategorie": "marketing",
      "titel": "Dienste in der Datenschutzerklärung nicht einschlägig (keine Fremd-Hosts im HTML)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Im HTML werden keine Skripte, Frames oder Stylesheets von fremden Servern geladen. Was Skripte nachladen, ist von außen nicht sichtbar.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.sharing_buttons_privacy",
      "kategorie": "marketing",
      "titel": "Teilen-Schaltflächen laden nicht von Fremdservern vor dem Klick",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Es wurde kein Skript einer Teilen-Schaltfläche gefunden, das vor dem Klick von Fremdservern geladen wird (Einbettungen mit iframe: siehe conv.embeds_consent).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.tools_detected",
      "kategorie": "marketing",
      "titel": "0 Mess-/Marketing-Werkzeuge erkannt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Im Quelltext wurde kein Analyse- oder Werbe-Tag gefunden. Hinweis: Über einen Tag Manager geladene Werkzeuge sind von außen nicht sichtbar.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.tracking_duplicate",
      "kategorie": "marketing",
      "titel": "Doppelte Messwerkzeuge nicht prüfbar (kein Messwerkzeug erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.tracking_gated",
      "kategorie": "marketing",
      "titel": "Bindung der Tracking-Skripte an die Einwilligung nicht prüfbar (kein Cookie-Tool erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Ob ein Cookie-Tool fehlt oder nur nicht erkannt wird, bewertet mkt.consent.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.ua_legacy",
      "kategorie": "marketing",
      "titel": "Veralteter Universal-Analytics-Code nicht vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein veralteter UA-Code gefunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.utm_in_canonical",
      "kategorie": "marketing",
      "titel": "Canonical und Sitemap ohne Tracking-Parameter",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Canonical, og:url und Sitemap-Adressen enthalten keine Tracking-Parameter.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "mkt.utm_internal",
      "kategorie": "marketing",
      "titel": "UTM-Parameter in internen Links nicht gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Interne Links sind frei von UTM-Parametern.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.ai_phrases",
      "kategorie": "onpage",
      "titel": "Der Text enthält keine Häufung von Standardfloskeln",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.description_cta",
      "kategorie": "onpage",
      "titel": "Die Descriptions enthalten eine Handlungsaufforderung",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.h1_title_identical",
      "kategorie": "onpage",
      "titel": "H1 und Title sind unterschiedlich formuliert",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.heading_repeats",
      "kategorie": "onpage",
      "titel": "Überschriften wiederholen sich nicht innerhalb einer Seite",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.img_broken",
      "kategorie": "onpage",
      "titel": "Alle 6 geprüften Bilder sind erreichbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.img_filenames",
      "kategorie": "onpage",
      "titel": "Bilddateien haben sprechende Namen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.img_formats",
      "kategorie": "onpage",
      "titel": "100 % der Bilder nutzen moderne Formate (WebP/AVIF)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.img_size",
      "kategorie": "onpage",
      "titel": "Alle Bilder haben Breite und Höhe",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.noscript_content",
      "kategorie": "onpage",
      "titel": "Kein relevanter Text nur im noscript-Block",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.og_image_valid",
      "kategorie": "onpage",
      "titel": "Open-Graph-Bild ist absolut, sicher eingebunden und erreichbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "https://rtc-service.com/static/images/og-rtc-service.e6061d1930de.jpg"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.og_url_match",
      "kategorie": "onpage",
      "titel": "og:url stimmt mit dem Canonical überein",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.open_graph_pages",
      "kategorie": "onpage",
      "titel": "Auch Unterseiten haben Open-Graph-Titel und -Bild",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.readability",
      "kategorie": "onpage",
      "titel": "Lesbarkeit (Flesch/Amstad) im Schnitt 50: mittel",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Der Index schätzt anhand von Satz- und Wortlänge, wie leicht der Text zu lesen ist (0 schwer bis 100 leicht; Fachtexte liegen oft bei 30 bis 50).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/leistungen/",
        "https://rtc-service.com/kooperationen/"
      ],
      "belege": [
        "https://rtc-service.com/leistungen/: 24",
        "https://rtc-service.com/kooperationen/: 26"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.title_brand",
      "kategorie": "onpage",
      "titel": "Der Markenname steht einheitlich im Title",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.title_special_chars",
      "kategorie": "onpage",
      "titel": "Titles ohne störende Sonderzeichen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.twitter_card",
      "kategorie": "onpage",
      "titel": "Twitter/X-Card ist gesetzt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.asset_count",
      "kategorie": "performance",
      "titel": "Nicht zu viele Skript- und Stylesheet-Dateien",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Höchstens 7 eigene Skript- und Stylesheet-Dateien je Seite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.bfcache",
      "kategorie": "performance",
      "titel": "Seiten können im Vor-/Zurück-Cache bleiben",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Keine Seite trägt „no-store“ oder einen unload-Handler.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.blocking_scripts",
      "kategorie": "performance",
      "titel": "Keine blockierenden Skripte im Kopf der Seite",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Nicht anwendbar: keine externen Skripte im <head>.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.cdn_libs",
      "kategorie": "performance",
      "titel": "Bibliotheken kommen vom eigenen Server",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine Seite lädt Skripte oder Styles von einem öffentlichen Bibliotheks-CDN.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.console_errors",
      "kategorie": "performance",
      "titel": "Keine Fehlermeldungen der eigenen Seite in der Browser-Konsole",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die eigene Seite erzeugt keine Konsolenfehler.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.deprecations",
      "kategorie": "performance",
      "titel": "Keine veralteten Browser-Schnittstellen im eigenen Code",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der eigene Code nutzt keine veralteten Browser-Schnittstellen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.cls",
      "kategorie": "performance",
      "titel": "Cumulative Layout Shift Desktop: 0.000",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 0.000. Gut ist bis 0.100, schlecht ab 0.250 (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.fcp",
      "kategorie": "performance",
      "titel": "First Contentful Paint Desktop: 324 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 324 ms. Gut ist bis 1.8 s, schlecht ab 3.0 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.lcp",
      "kategorie": "performance",
      "titel": "Largest Contentful Paint Desktop: 401 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 401 ms. Gut ist bis 2.5 s, schlecht ab 4.0 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.score",
      "kategorie": "performance",
      "titel": "Lighthouse-Leistungswert Desktop: 100/100",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Google Lighthouse bewertet die Ladeleistung desktop mit 100 von 100 Punkten (Labormessung, simulierte Verbindung).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.si",
      "kategorie": "performance",
      "titel": "Speed Index Desktop: 642 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 642 ms. Gut ist bis 3.4 s, schlecht ab 5.8 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.tbt",
      "kategorie": "performance",
      "titel": "Total Blocking Time Desktop: 0 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 0 ms. Gut ist bis 200 ms, schlecht ab 600 ms (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.ttfb",
      "kategorie": "performance",
      "titel": "Server-Antwortzeit Desktop: 14 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 14 ms. Gut ist bis 800 ms, schlecht ab 1.8 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.duplicated_js",
      "kategorie": "performance",
      "titel": "Keine doppelten JavaScript-Module",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein nennenswerter Mehraufwand gemessen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.field.none",
      "kategorie": "performance",
      "titel": "Keine Felddaten echter Nutzer verfügbar",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Google hat für diese Website zu wenige Chrome-Besuche, um Core Web Vitals echter Nutzer auszuweisen. Angezeigt werden nur Labormessungen. Es werden keine Werte erfunden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.font_display",
      "kategorie": "performance",
      "titel": "Schriften blockieren den Text nicht",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Webschriften laden mit font-display (Text bleibt sichtbar).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.hero_priority",
      "kategorie": "performance",
      "titel": "Das erste Bild wird bevorzugt geladen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Das erste Bild trägt fetchpriority=\"high\" oder wird vorgeladen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.html_compression",
      "kategorie": "performance",
      "titel": "HTML wird komprimiert ausgeliefert",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle abgerufenen Seiten kommen gzip- bzw. brotli-komprimiert an.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.html_size",
      "kategorie": "performance",
      "titel": "HTML-Seiten haben eine vernünftige Größe",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine abgerufene Seite hat mehr als 200 KB reinen HTML-Code.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.http2",
      "kategorie": "performance",
      "titel": "Eigene Dateien über HTTP/2 oder HTTP/3",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die eigenen Dateien kommen über HTTP/2 oder HTTP/3 (mehrere Dateien parallel).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.image_delivery",
      "kategorie": "performance",
      "titel": "Bilder effizient ausgeliefert (Format, Größe, Kompression)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Bilder sind in Format, Größe und Kompression weitgehend sparsam.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.img_aspect",
      "kategorie": "performance",
      "titel": "Bilder erscheinen unverzerrt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle Bilder werden im richtigen Seitenverhältnis angezeigt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.img_srcset",
      "kategorie": "performance",
      "titel": "Bilder werden in mehreren Größen angeboten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Inhaltsbilder bieten über srcset verschiedene Größen an.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.img_weight",
      "kategorie": "performance",
      "titel": "Einzelne Bilder sind nicht übergroß",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein Bild beim Aufruf der Startseite ist übergroß.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "rtc-service.com/static/images/hero-technik-mobil.a4c822f6f759.webp (19 KB)",
        "rtc-service.com/static/images/rtc_logo_nav.2f82d787fbf0.webp (5 KB)"
      ],
      "prioritaet": null
    },
    {
      "code": "perf.inline_weight",
      "kategorie": "performance",
      "titel": "Eingebetteter CSS/JS-Code bleibt klein",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der im HTML eingebettete Code ist klein.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.lcp_discovery",
      "kategorie": "performance",
      "titel": "Das größte Bild wird früh entdeckt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Das größte sichtbare Bild ist früh im HTML auffindbar und wird bevorzugt geladen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.legacy_js",
      "kategorie": "performance",
      "titel": "Kein unnötig altes JavaScript (Polyfills)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein nennenswerter Mehraufwand gemessen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.cls",
      "kategorie": "performance",
      "titel": "Cumulative Layout Shift Mobil: 0.000",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 0.000. Gut ist bis 0.100, schlecht ab 0.250 (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.fcp",
      "kategorie": "performance",
      "titel": "First Contentful Paint Mobil: 1.1 s",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 1.1 s. Gut ist bis 1.8 s, schlecht ab 3.0 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.lcp",
      "kategorie": "performance",
      "titel": "Largest Contentful Paint Mobil: 1.7 s",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 1.7 s. Gut ist bis 2.5 s, schlecht ab 4.0 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.score",
      "kategorie": "performance",
      "titel": "Lighthouse-Leistungswert Mobil: 100/100",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Google Lighthouse bewertet die Ladeleistung mobil mit 100 von 100 Punkten (Labormessung, simulierte Verbindung).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.si",
      "kategorie": "performance",
      "titel": "Speed Index Mobil: 1.4 s",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 1.4 s. Gut ist bis 3.4 s, schlecht ab 5.8 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.tbt",
      "kategorie": "performance",
      "titel": "Total Blocking Time Mobil: 0 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 0 ms. Gut ist bis 200 ms, schlecht ab 600 ms (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.mobile.ttfb",
      "kategorie": "performance",
      "titel": "Server-Antwortzeit Mobil: 17 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 17 ms. Gut ist bis 800 ms, schlecht ab 1.8 s (Labordaten).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.page_weight",
      "kategorie": "performance",
      "titel": "Seitengröße mobil: 0.2 MB",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Beim Laden der Startseite werden 0.2 MB übertragen. Gut ist bis 2 MB, problematisch ab 5 MB – besonders im Mobilfunk (Labormessung).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.redirect_first",
      "kategorie": "performance",
      "titel": "Aufruf läuft ohne zeitraubende Weiterleitung",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Beim Aufruf der Seite gibt es keine nennenswerte Weiterleitung.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.third_party_hosts",
      "kategorie": "performance",
      "titel": "Wenige fremde Server je Seite",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine Seite lädt Ressourcen von mehr als drei fremden Servern.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.unminified",
      "kategorie": "performance",
      "titel": "CSS und JavaScript sind verkleinert",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Eigene CSS- und JavaScript-Dateien sind verkleinert (minifiziert).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.unsized_images",
      "kategorie": "performance",
      "titel": "Bilder reservieren ihren Platz (keine Layout-Sprünge)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle Bilder haben eine Größenangabe; der Browser hält den Platz frei.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.alt_host_tls",
      "kategorie": "security",
      "titel": "Zertifikat der zweiten Adressvariante (mit/ohne www) gültig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Auch die zweite Adressvariante (mit/ohne www) liefert ein gültiges Zertifikat.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.cache_sensitive",
      "kategorie": "security",
      "titel": "Seiten mit persönlichen Daten nicht zwischengespeichert",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Nicht anwendbar: keine Konto-, Bestell- oder Dankeseite unter den abgerufenen Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.clickjacking",
      "kategorie": "security",
      "titel": "Schutz vor Einbettung in fremde Seiten (Clickjacking)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Seite verbietet das Einbetten in fremde Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.cookies",
      "kategorie": "security",
      "titel": "Cookies mit Schutz-Attributen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "1 Cookie(s) mit Secure/HttpOnly/SameSite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.coop",
      "kategorie": "security",
      "titel": "Cross-Origin-Opener-Policy gesetzt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Fenster fremder Seiten sind von dieser Seite getrennt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.cors_wildcard",
      "kategorie": "security",
      "titel": "Keine Freigabe für jede fremde Herkunft (CORS)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine abgerufene Seite gibt ihren Inhalt für jede fremde Herkunft frei.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.csp",
      "kategorie": "security",
      "titel": "Content-Security-Policy gesetzt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Eine Content-Security-Policy ist aktiv.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.csp_base_uri",
      "kategorie": "security",
      "titel": "CSP legt base-uri fest",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die CSP schränkt <base>-Angaben ein.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.debug_traces",
      "kategorie": "security",
      "titel": "Keine Fehlermeldungen oder Entwicklungsspuren sichtbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Auf 26 geprüften Seiten (inkl. Fehlerseite) zeigt sich keine Entwicklungs- oder Fehlerausgabe.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.dir_listing",
      "kategorie": "security",
      "titel": "Keine Verzeichnisauflistung",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Keine der abgerufenen Seiten ist eine Dateiliste des Servers.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.form_foreign",
      "kategorie": "security",
      "titel": "Formulare senden an die eigene Herkunft",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle 2 Formulare senden an die eigene Domain.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.form_http",
      "kategorie": "security",
      "titel": "Formulare senden verschlüsselt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Kein Formular sendet seine Daten an eine http://-Adresse.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.headers_coverage",
      "kategorie": "security",
      "titel": "Sicherheits-Header auf allen Seiten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle 24 weiteren Seiten tragen dieselben Sicherheits-Header wie die Startseite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.hsts",
      "kategorie": "security",
      "titel": "HSTS aktiv",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "max-age=365 Tage",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.hsts_depth",
      "kategorie": "security",
      "titel": "HSTS mit einem Jahr Laufzeit und Unterdomänen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "HSTS gilt ein Jahr und für alle Unterdomänen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.http_redirect",
      "kategorie": "security",
      "titel": "Aufrufe über HTTP werden auf HTTPS umgeleitet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die unverschlüsselte Adresse leitet auf die verschlüsselte um.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "http://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.https",
      "kategorie": "security",
      "titel": "Website nutzt HTTPS",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Startseite wird verschlüsselt (HTTPS) ausgeliefert.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.inline_handlers",
      "kategorie": "security",
      "titel": "Keine Ereignisbehandlung direkt im HTML",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Im HTML stehen keine onclick-/onload-Angaben; eine strenge CSP wäre möglich.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.mail.apex_cname",
      "kategorie": "security",
      "titel": "Kein CNAME auf dem Hauptnamen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der Hauptname verwendet keinen CNAME.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.mail.dkim",
      "kategorie": "security",
      "titel": "DKIM-Schlüssel gefunden",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Unter 18 gängigen Selectoren wurde kein DKIM-Schlüssel gefunden. Das beweist nicht, dass DKIM fehlt: der Selector steht nur im Kopf einer Mail und kann beliebig heißen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.mail.dmarc",
      "kategorie": "security",
      "titel": "DMARC-Eintrag vorhanden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "DMARC legt fest, was mit gefälschten Mails geschieht.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "v=DMARC1; p=none;"
      ],
      "prioritaet": null
    },
    {
      "code": "sec.mail.mx",
      "kategorie": "security",
      "titel": "Domain kann E-Mail empfangen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "3 Mailserver eingetragen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "10 mx2.zoho.eu",
        "10 mx.zoho.eu",
        "10 mx3.zoho.eu"
      ],
      "prioritaet": null
    },
    {
      "code": "sec.mail.spf",
      "kategorie": "security",
      "titel": "SPF-Eintrag schützt vor gefälschten Absendern",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "SPF ist eingerichtet.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "v=spf1 include:zohomail.eu ~all"
      ],
      "prioritaet": null
    },
    {
      "code": "sec.mixed_content",
      "kategorie": "security",
      "titel": "Keine unverschlüsselten Ressourcen auf HTTPS-Seiten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Auf den geprüften Seiten werden Skripte, Styles und Bilder über HTTPS geladen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.nosniff",
      "kategorie": "security",
      "titel": "Header X-Content-Type-Options: nosniff",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Der Browser darf Dateitypen nicht „erraten“.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.outdated_js",
      "kategorie": "security",
      "titel": "Keine veralteten JavaScript-Bibliotheken erkannt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Anhand von Dateinamen und Kommentaren wurde keine bekannte verwundbare Bibliothek (jQuery, Bootstrap, AngularJS, lodash) gefunden. Die Erkennung ist nicht vollständig.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.paste_prevent",
      "kategorie": "security",
      "titel": "Einfügen in Eingabefelder nicht blockiert",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Eingabefelder erlauben das Einfügen aus der Zwischenablage.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.permission_prompts",
      "kategorie": "security",
      "titel": "Keine Berechtigungsabfrage beim Seitenaufruf",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Beim Aufruf der Startseite wird keine Berechtigung (Standort, Benachrichtigungen) abgefragt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.permissions_policy",
      "kategorie": "security",
      "titel": "Permissions-Policy gesetzt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Browser-Funktionen wie Kamera oder Standort sind eingeschränkt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.referrer_policy",
      "kategorie": "security",
      "titel": "Referrer-Policy gesetzt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Referrer-Policy: strict-origin-when-cross-origin",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://rtc-service.com/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.scope_note",
      "kategorie": "security",
      "titel": "Hinweis zum Umfang der Sicherheitsprüfung",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Geprüft werden nur öffentlich sichtbare Merkmale (Verschlüsselung, Sicherheits-Header, Seiteninhalte). Das ist kein Penetrationstest und keine vollständige Sicherheitsprüfung.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.security_txt",
      "kategorie": "security",
      "titel": "security.txt ist vorhanden und gültig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Datei /.well-known/security.txt enthält Contact und ein gültiges Ablaufdatum.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://rtc-service.com/.well-known/security.txt"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.sri",
      "kategorie": "security",
      "titel": "Fremde Bibliotheken mit Integritätsprüfung (SRI)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Nicht anwendbar: keine Bibliothek von einem öffentlichen Bibliotheks-CDN eingebunden. (Dienste wie Google Tag Manager oder Maps können technisch kein SRI tragen.)",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.target_blank",
      "kategorie": "security",
      "titel": "Externe Links in neuem Fenster mit rel=noopener",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Alle 132 externen Links mit target=\"_blank\" tragen rel=\"noopener\".",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.tls.cert",
      "kategorie": "security",
      "titel": "TLS-Zertifikat ist gültig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Aussteller Let's Encrypt, gültig bis 2027-01-03 (noch 76 Tage).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.tls.version",
      "kategorie": "security",
      "titel": "Verschlüsselungsprotokoll TLS 1.3",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Ausgehandelt wurde TLSv1.3; das gilt als sicher.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.version_disclosure",
      "kategorie": "security",
      "titel": "Keine Software-Versionen in Headern",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Server- und X-Powered-By-Header nennen keine Versionsnummern.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.wp_version",
      "kategorie": "security",
      "titel": "Keine CMS-Version im Generator-Tag",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Das HTML verrät keine WordPress-Version.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.broken_external",
      "kategorie": "technical",
      "titel": "Alle 20 geprüften externen Links sind erreichbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.broken_internal",
      "kategorie": "technical",
      "titel": "Keine defekten internen Links gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.canonical_target_indexable",
      "kategorie": "technical",
      "titel": "Canonical-Ziele sind indexierbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.charset_early",
      "kategorie": "technical",
      "titel": "Zeichensatz steht früh im Kopf",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.empty_href",
      "kategorie": "technical",
      "titel": "Keine leeren oder unbrauchbaren Linkziele",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.home_status",
      "kategorie": "technical",
      "titel": "Die Startseite antwortet mit Status 200 (OK)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Startseite lässt sich normal abrufen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.hreflang",
      "kategorie": "technical",
      "titel": "Keine hreflang-Angaben (bei einsprachigen Websites nicht nötig)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.hreflang_lang_match",
      "kategorie": "technical",
      "titel": "Sprache der Seite und hreflang (nicht zutreffend)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.hreflang_targets",
      "kategorie": "technical",
      "titel": "hreflang-Ziele (nicht zutreffend)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.http_redirect",
      "kategorie": "technical",
      "titel": "HTTP wird dauerhaft auf HTTPS weitergeleitet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "http://rtc-service.com/ -> 301 -> https://rtc-service.com/"
      ],
      "prioritaet": null
    },
    {
      "code": "tech.link_depth",
      "kategorie": "technical",
      "titel": "Alle gecrawlten Seiten liegen höchstens 3 Klicks tief",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": " Der Crawl ist begrenzt, tiefere Ebenen wurden evtl. nicht erfasst.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.links_http_external",
      "kategorie": "technical",
      "titel": "Externe Links nutzen https",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.links_per_page",
      "kategorie": "technical",
      "titel": "Seiten haben keine übermäßige Linkzahl",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.noindex_home",
      "kategorie": "technical",
      "titel": "Die Startseite ist indexierbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.not_found_status",
      "kategorie": "technical",
      "titel": "Nicht vorhandene Seiten liefern korrekt Status 404",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.orphans",
      "kategorie": "technical",
      "titel": "Keine verwaisten Seiten in der Sitemap gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": " Der Crawl war begrenzt, es wurden nur bereits gecrawlte Seiten betrachtet.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.page_size_outlier",
      "kategorie": "technical",
      "titel": "Keine Seite fällt durch ungewöhnliche Größe auf",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.pagination_canonical",
      "kategorie": "technical",
      "titel": "Seitenfolgen (nicht zutreffend)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.plugins_frames",
      "kategorie": "technical",
      "titel": "Keine veralteten Plugins oder Frames",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.response_time",
      "kategorie": "technical",
      "titel": "Antwortzeit der Startseite: 176 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Zeit bis zur vollständigen Auslieferung des HTML von unserem Prüfserver aus (inkl. Verbindungsaufbau).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.response_time_pages",
      "kategorie": "technical",
      "titel": "Typische Antwortzeit der Unterseiten: 103 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.robots_blocks",
      "kategorie": "technical",
      "titel": "robots.txt sperrt die Website nicht",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.robots_meta_conflict",
      "kategorie": "technical",
      "titel": "Meta-robots und X-Robots-Tag widersprechen sich nicht",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.robots_present",
      "kategorie": "technical",
      "titel": "robots.txt ist vorhanden und erreichbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.robots_txt_valid",
      "kategorie": "technical",
      "titel": "robots.txt ist fehlerfrei aufgebaut",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap",
      "kategorie": "technical",
      "titel": "XML-Sitemap gefunden mit 45 URLs",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://rtc-service.com/sitemap.xml (3 Einträge)",
        "https://rtc-service.com/sitemap-seiten.xml (17 Einträge)",
        "https://rtc-service.com/sitemap-leistungen.xml (10 Einträge)",
        "https://rtc-service.com/sitemap-ratgeber.xml (18 Einträge)"
      ],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_host_match",
      "kategorie": "technical",
      "titel": "Sitemap nennt nur Adressen der Hauptvariante",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_http_urls",
      "kategorie": "technical",
      "titel": "Sitemap enthält keine http-Adressen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_lastmod",
      "kategorie": "technical",
      "titel": "Sitemap pflegt lastmod glaubwürdig",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_relative_ref",
      "kategorie": "technical",
      "titel": "Sitemap-Angabe in der robots.txt ist eine vollständige Adresse",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.url_hygiene",
      "kategorie": "technical",
      "titel": "Adressen ohne Leerzeichen und doppelte Schrägstriche",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.www_consolidation",
      "kategorie": "technical",
      "titel": "www und ohne www sind zu einer Adresse zusammengeführt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://www.rtc-service.com/ -> 301 -> https://rtc-service.com/"
      ],
      "prioritaet": null
    }
  ],
  "hinweis": "Scores sind eigene, regelbasierte Bewertungen (Methodik: /methodik/). Kein offizieller Google-Wert."
}