{
  "produkt": "Website-Check Scherzinger",
  "analyse_id": "56518e5c-87a2-4c0e-8232-4c9d637b296d",
  "url": "https://www.wvm-it.tech/",
  "erstellt": "2026-10-18T17:57:33.060857+00:00",
  "gesamtscore": 98,
  "datenabdeckung": 0.943,
  "kategorien": {
    "geo": {
      "note": "",
      "grade": "sehr gut",
      "label": "KI-Bereitschaft (GEO)",
      "score": 99,
      "capped": false,
      "failed": 5,
      "passed": 30,
      "status": "heuristic",
      "category": "geo",
      "checks_total": 52,
      "checks_evaluated": 35
    },
    "local": {
      "note": "",
      "grade": "sehr gut",
      "label": "Lokale Sichtbarkeit",
      "score": 90,
      "capped": false,
      "failed": 1,
      "passed": 10,
      "status": "heuristic",
      "category": "local",
      "checks_total": 13,
      "checks_evaluated": 11
    },
    "onpage": {
      "note": "",
      "grade": "sehr gut",
      "label": "Inhalte & Onpage",
      "score": 99,
      "capped": false,
      "failed": 3,
      "passed": 39,
      "status": "heuristic",
      "category": "onpage",
      "checks_total": 43,
      "checks_evaluated": 42
    },
    "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": 95,
      "capped": false,
      "failed": 2,
      "passed": 32,
      "status": "heuristic",
      "category": "security",
      "checks_total": 39,
      "checks_evaluated": 34
    },
    "marketing": {
      "note": "",
      "grade": "kritisch",
      "label": "Marketing & Tracking",
      "score": 42,
      "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": 97,
      "capped": false,
      "failed": 1,
      "passed": 57,
      "status": "heuristic",
      "category": "technical",
      "checks_total": 60,
      "checks_evaluated": 58
    },
    "conversion": {
      "note": "",
      "grade": "sehr gut",
      "label": "Kundenfreundlichkeit",
      "score": 98,
      "capped": false,
      "failed": 1,
      "passed": 32,
      "status": "heuristic",
      "category": "conversion",
      "checks_total": 40,
      "checks_evaluated": 33
    },
    "performance": {
      "note": "",
      "grade": "sehr gut",
      "label": "Ladegeschwindigkeit",
      "score": 100,
      "capped": false,
      "failed": 1,
      "passed": 38,
      "status": "heuristic",
      "category": "performance",
      "checks_total": 44,
      "checks_evaluated": 39
    },
    "accessibility": {
      "note": "",
      "grade": "sehr gut",
      "label": "Barrierefreiheit",
      "score": 100,
      "capped": false,
      "failed": 1,
      "passed": 35,
      "status": "heuristic",
      "category": "accessibility",
      "checks_total": 38,
      "checks_evaluated": 36
    }
  },
  "zusammenfassung": {
    "notes": [],
    "home_ms": 28,
    "problems": 16,
    "sitemaps": [
      {
        "url": "https://www.wvm-it.tech/sitemap.xml",
        "urls": 5,
        "index": true,
        "status": 200
      },
      {
        "url": "https://www.wvm-it.tech/sitemap-kern.xml",
        "urls": 94,
        "index": false,
        "status": 200
      },
      {
        "url": "https://www.wvm-it.tech/sitemap-leistungen.xml",
        "urls": 42,
        "index": false,
        "status": 200
      },
      {
        "url": "https://www.wvm-it.tech/sitemap-silos.xml",
        "urls": 99,
        "index": false,
        "status": 200
      },
      {
        "url": "https://www.wvm-it.tech/sitemap-ratgeber.xml",
        "urls": 54,
        "index": false,
        "status": 200
      },
      {
        "url": "https://www.wvm-it.tech/sitemap-video.xml",
        "urls": 2,
        "index": false,
        "status": 200
      }
    ],
    "final_url": "https://www.wvm-it.tech/",
    "redirects": [],
    "crawl_limit": 25,
    "home_status": 200,
    "links_total": 2376,
    "checks_total": 337,
    "pages_failed": 0,
    "sitemap_urls": 271,
    "crawl_limited": true,
    "pages_crawled": 25,
    "robots_status": 200,
    "checks_katalog": 343,
    "links_internal": 2245,
    "checks_bewertet": 296,
    "external_checked": 11,
    "blocked_by_robots": 0
  },
  "befunde": [
    {
      "code": "geo.price_visible",
      "kategorie": "geo",
      "titel": "106 von 118 Schema-Preisen stehen sichtbar",
      "bestanden": false,
      "schwere": "high",
      "datenstatus": "heuristic",
      "beschreibung": "Preise im Schema, die auf der Seite nicht zu finden sind, gelten als irreführende Auszeichnung (derselbe Verstoß wie eine unsichtbare FAQ).",
      "ursache": "",
      "loesung": "Schema-Preise aus denselben Werten erzeugen wie den sichtbaren Preis – oder das Angebot aus dem Schema nehmen.",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://www.wvm-it.tech/",
        "https://www.wvm-it.tech/en/",
        "https://www.wvm-it.tech/ro/"
      ],
      "belege": [
        "890",
        "690",
        "690"
      ],
      "prioritaet": 1
    },
    {
      "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": "Keine Unterseite ist auf „noindex“ gestellt",
      "bestanden": true,
      "schwere": "high",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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.trust",
      "kategorie": "conversion",
      "titel": "Vertrauenselemente erkennbar",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "Erkannt: Vertrauensbegriffe (geprüft, referenz). ",
      "ursache": "",
      "loesung": "Echte Kundenstimmen, Referenzen und Bewertungsplattform (z. B. Google) sichtbar auf der Startseite zeigen.",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 2
    },
    {
      "code": "local.city_in_title",
      "kategorie": "local",
      "titel": "Ort \"Lenzing\" in Title/H1: nein",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "Title: ohne Ort; H1: ohne Ort. Für lokale Suchanfragen sollte der Ort in Seitentitel oder Hauptüberschrift stehen.",
      "ursache": "",
      "loesung": "\"Lenzing\" in Seitentitel und/oder H1 der Startseite aufnehmen, sofern Sie dort Kunden bedienen.",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "EDV- & IT-Betreuung Oberösterreich/Salzburg ab 29 € | WVM-IT",
        "IT-Betreuung für Ihren Betrieb, persönlich und aus einer Hand. Vom Zwei-Mann-Büro bis zum Betrieb mit 200 Arbeitsplätze…"
      ],
      "prioritaet": 3
    },
    {
      "code": "onpage.description_present",
      "kategorie": "onpage",
      "titel": "Alle Seiten haben eine Meta-Description",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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": "Alle inhaltlichen Seiten haben ausreichend Text (300+ Wörter)",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.title_duplicate",
      "kategorie": "onpage",
      "titel": "Alle Titles sind einzigartig",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.mail.dmarc",
      "kategorie": "security",
      "titel": "Kein DMARC-Eintrag für wvm-it.tech",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Ohne DMARC-Eintrag entscheidet jeder Empfänger selbst, ob eine Mail im Namen Ihrer Domain echt ist; Sie erfahren auch nicht, wenn jemand Ihren Namen missbraucht.",
      "ursache": "",
      "loesung": "TXT-Eintrag auf _dmarc.<Domain> setzen, zum Start: v=DMARC1; p=none; rua=mailto:dmarc@<Domain> – später auf p=quarantine bzw. p=reject schärfen.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 6
    },
    {
      "code": "sec.mail.spf",
      "kategorie": "security",
      "titel": "Kein SPF-Eintrag für wvm-it.tech",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Ohne SPF-Eintrag kann jeder im Namen Ihrer Domain E-Mails verschicken, die Empfänger nicht von echten unterscheiden können; Ihre echten Mails landen eher im Spam.",
      "ursache": "",
      "loesung": "TXT-Eintrag auf der Domain setzen, z. B. v=spf1 include:<Ihr Mailanbieter> ~all (den include-Teil nennt der Anbieter). Wird keine Mail versendet: v=spf1 -all.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 5
    },
    {
      "code": "tech.canonical_conflicts",
      "kategorie": "technical",
      "titel": "Canonical-Tags sind widerspruchsfrei",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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.hreflang",
      "kategorie": "technical",
      "titel": "hreflang-Angaben sind korrekt",
      "bestanden": true,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.hreflang_targets",
      "kategorie": "technical",
      "titel": "Alle geprüften hreflang-Ziele antworten direkt",
      "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": "tech.www_consolidation",
      "kategorie": "technical",
      "titel": "Die Seite ist unter www und ohne www doppelt erreichbar",
      "bestanden": false,
      "schwere": "medium",
      "datenstatus": "measured",
      "beschreibung": "Beide Adressen liefern denselben Inhalt aus, ohne dass eine auf die andere weiterleitet. Google sieht dann doppelte Seiten und verteilt Signale.",
      "ursache": "https://wvm-it.tech/ antwortet eigenständig mit Status 200.",
      "loesung": "Wählen Sie eine bevorzugte Variante und leiten Sie die andere per 301 darauf um.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://wvm-it.tech/"
      ],
      "belege": [],
      "prioritaet": 4
    },
    {
      "code": "a11y.link_identical",
      "kategorie": "accessibility",
      "titel": "3 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://www.wvm-it.tech/",
        "https://www.wvm-it.tech/en/",
        "https://www.wvm-it.tech/ro/"
      ],
      "belege": [
        "„eigene zahl ausrechnen“ führt zu 3 verschiedenen Zielen",
        "„calculate your own figure“ führt zu 3 verschiedenen Zielen",
        "„calculați cifra dumneavoastră“ führt zu 3 verschiedenen Zielen"
      ],
      "prioritaet": 11
    },
    {
      "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://www.wvm-it.tech/en/"
      ],
      "belege": [
        "/en/"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.breadcrumb",
      "kategorie": "geo",
      "titel": "Brotkrumenpfad auf 20 von 22 Unterseiten ausgezeichnet",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Ohne BreadcrumbList zeigt Google statt des Pfades die nackte URL und kann die Seite schlechter einordnen.",
      "ursache": "",
      "loesung": "BreadcrumbList-JSON-LD auf jeder Unterseite ausgeben.",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [
        "https://www.wvm-it.tech/en/",
        "https://www.wvm-it.tech/ro/"
      ],
      "belege": [],
      "prioritaet": 15
    },
    {
      "code": "geo.sameas_count",
      "kategorie": "geo",
      "titel": "sameAs verweist auf 2 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://www.google.com/maps?cid=4953433262951163842",
        "https://firmen.wko.at/florin-feier/ober%C3%B6sterreich/?firmaid=671d0876-e03a-4704-8110-0044c664ccfc"
      ],
      "prioritaet": 13
    },
    {
      "code": "geo.structured_content",
      "kategorie": "geo",
      "titel": "11 von 12 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://www.wvm-it.tech/einrichten/"
      ],
      "belege": [],
      "prioritaet": 14
    },
    {
      "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 (+1 nur im Schema)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Nur im Schema (sameAs), nicht sichtbar verlinkt: LinkedIn.",
      "ursache": "",
      "loesung": "Aktive Profile im Footer sichtbar verlinken (und im Schema per sameAs).",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [
        "https://www.linkedin.com/in/florin-feier-186bb0425/"
      ],
      "prioritaet": 9
    },
    {
      "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": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.content_pages",
      "kategorie": "onpage",
      "titel": "Die Website hat 258 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": "Alle Descriptions sind einzigartig",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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.heading_repeats",
      "kategorie": "onpage",
      "titel": "Auf 1 Seite wiederholt sich dieselben Überschriften mehrfach",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "Dieselbe Zwischenüberschrift steht mindestens dreimal auf einer Seite. Das macht die Gliederung für Besucher, Screenreader und Suchmaschinen unklar.",
      "ursache": "Kopierte Bausteine oder Karten, bei denen der Überschriftstext nicht angepasst wurde.",
      "loesung": "Geben Sie jedem Abschnitt eine eigene, aussagekräftige Überschrift. Reine Gestaltungstexte können Sie als normalen Absatz statt als Überschrift auszeichnen.",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://www.wvm-it.tech/it-notfall/"
      ],
      "belege": [
        "https://www.wvm-it.tech/it-notfall/: „was sie jetzt nicht tun sollten“ 9×"
      ],
      "prioritaet": 12
    },
    {
      "code": "onpage.inbound_min",
      "kategorie": "onpage",
      "titel": "Jede Unterseite wird von mindestens zwei anderen Seiten verlinkt",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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": "Jede Seite besetzt einen eigenen Hauptbegriff",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "onpage.knowledge_content",
      "kategorie": "onpage",
      "titel": "Es gibt Wissensinhalte (48 Ratgeber-/Blogseiten)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "high",
      "betroffene_urls": [
        "https://www.wvm-it.tech/aktuelles/alte-windows-version-im-betrieb/",
        "https://www.wvm-it.tech/aktuelles/aufbewahrungsfristen-oesterreich/",
        "https://www.wvm-it.tech/aktuelles/backup-3-2-1-kleine-firma/",
        "https://www.wvm-it.tech/aktuelles/buero-umzug-it-planen/",
        "https://www.wvm-it.tech/aktuelles/datensicherung-richtig-pruefen/",
        "https://www.wvm-it.tech/aktuelles/drucker-druckt-nicht/",
        "https://www.wvm-it.tech/aktuelles/edv-betreuung-kleinbetriebe-oberoesterreich/",
        "https://www.wvm-it.tech/aktuelles/email-postfach-gehackt/",
        "https://www.wvm-it.tech/aktuelles/fernwartung-was-sieht-der-dienstleister/",
        "https://www.wvm-it.tech/aktuelles/homeoffice-sicher-anbinden/"
      ],
      "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.subheadings",
      "kategorie": "onpage",
      "titel": "1 lange Seite hat zu wenige Zwischenüberschriften (Stichprobe: begrenzter Crawl)",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "Auf Seiten mit über 300 Wörtern sollte etwa alle 250 Wörter eine Überschrift stehen. Ohne sie lesen Besucher nur quer, und Suchmaschinen sowie KI-Antworten finden keine zitierfähigen Abschnitte.",
      "ursache": "",
      "loesung": "Gliedern Sie Fließtext mit <h2>/<h3>-Überschriften, die Fragen oder Themen benennen.",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://www.wvm-it.tech/datenschutz/"
      ],
      "belege": [
        "https://www.wvm-it.tech/datenschutz/: 1 statt 6 Überschriften"
      ],
      "prioritaet": 8
    },
    {
      "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": [
        "/leistungen/: 12 Seiten, im Schnitt 30 % gleiche Wörter"
      ],
      "prioritaet": null
    },
    {
      "code": "onpage.title_h1_match",
      "kategorie": "onpage",
      "titel": "Bei 6 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://www.wvm-it.tech/ro/",
        "https://www.wvm-it.tech/leistungen/",
        "https://www.wvm-it.tech/leistungen/webseite-erstellen/",
        "https://www.wvm-it.tech/ueber-uns/",
        "https://www.wvm-it.tech/kontakt/",
        "https://www.wvm-it.tech/leistungen/it-sicherheit/"
      ],
      "belege": [],
      "prioritaet": 10
    },
    {
      "code": "onpage.title_length",
      "kategorie": "onpage",
      "titel": "Alle Titles haben eine gute Länge (30–60 Zeichen)",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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 9 Themenbereiche gegliedert",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "high",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "/it-service/ (60 Seiten)",
        "/leistungen/ (42 Seiten)",
        "/aktuelles/ (34 Seiten)",
        "/einrichten/ (30 Seiten)",
        "/branchen/ (18 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 1044 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.opp.unused-css-rules",
      "kategorie": "performance",
      "titel": "Einsparpotenzial: Nicht verwendetes CSS reduzieren",
      "bestanden": false,
      "schwere": "low",
      "datenstatus": "estimated",
      "beschreibung": "Lighthouse schätzt bis zu 0.1 s Ladezeitersparnis (Mobil). Geschätzte Einsparung von 20 KiB",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": 16
    },
    {
      "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": [
        "Nicht verwendetes CSS reduzieren: 150 ms"
      ],
      "prioritaet": null
    },
    {
      "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.hreflang_lang_match",
      "kategorie": "technical",
      "titel": "Seitensprache (lang) und hreflang stimmen überein",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "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://www.wvm-it.tech/sitemap.xml"
      ],
      "prioritaet": null
    },
    {
      "code": "tech.sitemap_coverage",
      "kategorie": "technical",
      "titel": "Alle gecrawlten Seiten stehen in der Sitemap",
      "bestanden": true,
      "schwere": "low",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "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://www.wvm-it.tech/"
      ],
      "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": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Alle Videos sind stumm oder haben Untertitel.",
      "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": [
        "+436763808501",
        "+436763808501"
      ],
      "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": [
        "",
        "Kontakt"
      ],
      "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": [
        "Rückruf hinterlassen",
        "Kontakt"
      ],
      "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": [
        "support@wvm-it.tech",
        "support@wvm-it.tech"
      ],
      "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: 11 von 11 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 4 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 3 von 3 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_required",
      "kategorie": "conversion",
      "titel": "Pflichtfelder: 9 von 9 sichtbar gekennzeichnet",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Pflichtfelder sind für Besucher erkennbar (Stern oder Hinweis).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.form_spam",
      "kategorie": "conversion",
      "titel": "Spamschutz an 3 von 3 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-Grundangaben nicht prüfbar",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Die Impressumsseite gehört nicht zu den gecrawlten Seiten, ihr Inhalt konnte nicht gelesen werden.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "conv.imprint_register",
      "kategorie": "conversion",
      "titel": "Impressum-Registerangaben nicht prüfbar",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Die Impressumsseite gehört nicht zu den gecrawlten Seiten, ihr Inhalt konnte nicht gelesen werden.",
      "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": "Überholte Rechtshinweise nicht prüfbar",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Die Impressumsseite gehört nicht zu den gecrawlten Seiten.",
      "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/436763808501"
      ],
      "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": [
        "Festes Angebot",
        "Wie funktioniert die kostenlose Beispiel-Website?"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.page_cta",
      "kategorie": "conversion",
      "titel": "20 von 20 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://www.wvm-it.tech/"
      ],
      "belege": [
        "+43 676 3808501"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.price_info",
      "kategorie": "conversion",
      "titel": "Preise oder Preisrahmen genannt",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Preisangaben stehen auf 22 von 25 Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "high",
      "betroffene_urls": [],
      "belege": [
        "/",
        "/it-notfall/",
        "/en/"
      ],
      "prioritaet": null
    },
    {
      "code": "conv.price_vat",
      "kategorie": "conversion",
      "titel": "22 von 22 Seiten mit Preisen nennen die Steuer",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Bei den Preisen steht, ob Umsatzsteuer enthalten ist (bzw. § 19 UStG).",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "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://www.wvm-it.tech/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 99/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": "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": [
        "Für Betriebe in Lenzing und Umgebung: laufende Betreuung ab 29 € je Arbeitsplatz im Monat, Hilfe ohne Vertrag, Webseite…"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.article_author",
      "kategorie": "geo",
      "titel": "Autor der Ratgeber nicht prüfbar (keine Ratgeberseiten erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.article_date",
      "kategorie": "geo",
      "titel": "Sichtbares Datum der Ratgeber nicht prüfbar (keine Ratgeberseiten erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.article_fields",
      "kategorie": "geo",
      "titel": "Artikel-Schema (Titel, Bild, Änderungsdatum) nicht prüfbar (kein Article-Schema)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.article_schema",
      "kategorie": "geo",
      "titel": "Article-Auszeichnung der Ratgeber nicht prüfbar (keine Ratgeberseiten erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "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, author-Meta, Über-uns/Team-Seite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "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: 3 von 4 Arten gefunden",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Gefunden: Preise, Öffnungszeiten, 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://www.wvm-it.tech/",
        "https://www.wvm-it.tech/it-notfall/",
        "https://www.wvm-it.tech/en/",
        "https://www.wvm-it.tech/ro/",
        "https://www.wvm-it.tech/leistungen/"
      ],
      "belege": [
        "/",
        "/it-notfall/",
        "/en/"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.faq_visible",
      "kategorie": "geo",
      "titel": "129 von 129 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 nicht prüfbar (keine Ratgeberseiten erkannt)",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "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: 16.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": [
        "# WVM-IT , EDV und IT-Betreuung für Betriebe > WVM-IT (Inhaber Florin Feier) be"
      ],
      "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://www.wvm-it.tech/"
      ],
      "belege": [
        "https://www.wvm-it.tech/static/img/wvm_mark.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: WVM-IT",
        "og:site_name: WVM-IT"
      ],
      "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://www.wvm-it.tech/"
      ],
      "belege": [
        "WVM-IT"
      ],
      "prioritaet": null
    },
    {
      "code": "geo.person_schema",
      "kategorie": "geo",
      "titel": "Autoren-Schema (Profilbezug) nicht prüfbar (kein Autor als Person im Schema)",
      "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.question_headings",
      "kategorie": "geo",
      "titel": "7 von 12 Seiten mit Fragen als Überschrift",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Mindestens jede zweite Seite stellt Fragen, die Besucher wirklich tippen, als Überschrift.",
      "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": "2 von 2 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://www.google.com/maps?cid=4953433262951163842",
        "https://firmen.wko.at/florin-feier/ober%C3%B6sterreich/?firmaid=671d0876-e03a-4704-8110-0044c664ccfc"
      ],
      "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": "1 JSON-LD-Block/Blöcke, Typen: FAQPage, Person, ProfessionalService, WebPage, WebSite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "FAQPage, Person, ProfessionalService, WebPage, WebSite"
      ],
      "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": "363 von 363 @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.semantic_html",
      "kategorie": "geo",
      "titel": "Semantische HTML5-Struktur: 4 von 4 Grundelementen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Vorhanden: main, nav, header, footer, article.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.server_rendered",
      "kategorie": "geo",
      "titel": "Hauptinhalt im HTML: 2409 Wörter",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Die Startseite enthält 2409 Wörter im ausgelieferten HTML.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://www.wvm-it.tech/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "geo.services",
      "kategorie": "geo",
      "titel": "Leistungen sind eindeutig erkennbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Service/Offer-Schema gefunden. 66 Leistungsseiten verlinkt.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://www.wvm-it.tech/angebot/",
        "https://www.wvm-it.tech/angebot/?paket=it_basis",
        "https://www.wvm-it.tech/angebot/?paket=it_server"
      ],
      "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": "Keine Ratgeber-Artikel zum Prüfen von Quellenangaben",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "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": "1 von 1 Videos mit den Pflichtangaben von Google",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Jedes VideoObject nennt Namen, Vorschaubild und Veröffentlichungsdatum. Empfohlen sind zusätzlich contentUrl oder embedUrl, description und duration.",
      "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.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://www.google.com/maps?cid=4953433262951163842"
      ],
      "prioritaet": null
    },
    {
      "code": "local.hours_schema",
      "kategorie": "local",
      "titel": "Öffnungszeiten im Schema maschinenlesbar",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "3 Zeitangabe(n) im Schema nutzen Wochentag und Uhrzeit im erwarteten Format.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://www.wvm-it.tech/"
      ],
      "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": [
        "Montag bis Donnerstag von 7:30"
      ],
      "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://www.google.com/maps?cid=4953433262951163842"
      ],
      "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://www.wvm-it.tech/"
      ],
      "belege": [
        "4860 Lenzing"
      ],
      "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": "Abgleich mit dem Impressum nicht möglich",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Die Impressumsseite gehört nicht zu den gecrawlten Seiten.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "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://www.google.com/maps"
      ],
      "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 Österreich, Oberösterreich, Salzburg; das Gebiet steht auch im sichtbaren Text.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [
        "https://www.wvm-it.tech/"
      ],
      "belege": [
        "Österreich",
        "Oberösterreich",
        "Salzburg"
      ],
      "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": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Das Newsletter-Formular enthält eine Einwilligungs-Checkbox oder einen Hinweis auf Datenschutz bzw. Abmeldung.",
      "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.img_broken",
      "kategorie": "onpage",
      "titel": "Alle 12 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": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Keine Seite enthält einen nennenswerten noscript-Text.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "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://www.wvm-it.tech/static/img/hero_bg.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 61: gut lesbar",
      "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": [],
      "belege": [],
      "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: 323 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 323 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: 467 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 467 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://www.wvm-it.tech/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "perf.desktop.si",
      "kategorie": "performance",
      "titel": "Speed Index Desktop: 363 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 363 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: 6 ms",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 6 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": [
        "www.wvm-it.tech/static/img/foto_web_480.webp (18 KB)",
        "www.wvm-it.tech/static/img/foto_betreuung_480.webp (15 KB)",
        "www.wvm-it.tech/static/img/foto_branche_480.webp (13 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.lazy_loading",
      "kategorie": "performance",
      "titel": "Bilder laden bedarfsgerecht (Lazy-Loading)",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "Das erste Bild lädt sofort, spätere Bilder erst bei Bedarf.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "33 von 36 späteren Bildern lazy"
      ],
      "prioritaet": null
    },
    {
      "code": "perf.lcp_discovery",
      "kategorie": "performance",
      "titel": "Das größte Bild wird früh entdeckt",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Lighthouse hat das Ladeverhalten des größten Elements nicht ausgewertet (kein Bild als größtes Element oder nicht geliefert).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "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.4 s",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 1.4 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: 2.0 s",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Gemessen: 2.0 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: 99/100",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Google Lighthouse bewertet die Ladeleistung mobil mit 99 von 100 Punkten (Labormessung, simulierte Verbindung).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "high",
      "betroffene_urls": [
        "https://www.wvm-it.tech/"
      ],
      "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: 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.page_weight",
      "kategorie": "performance",
      "titel": "Seitengröße mobil: 0.3 MB",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "Beim Laden der Startseite werden 0.3 MB übertragen. Gut ist bis 2 MB, problematisch ab 5 MB – besonders im Mobilfunk (Labormessung).",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [
        "https://www.wvm-it.tech/"
      ],
      "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://www.wvm-it.tech/"
      ],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.cookies",
      "kategorie": "security",
      "titel": "Cookies mit Schutz-Attributen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "2 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://www.wvm-it.tech/"
      ],
      "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://www.wvm-it.tech/"
      ],
      "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 53 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://www.wvm-it.tech/"
      ],
      "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://www.wvm-it.tech/"
      ],
      "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_policy",
      "kategorie": "security",
      "titel": "DMARC weist Fälschungen nicht nur beobachtend ab",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Kein DMARC-Eintrag – der Mangel steht bei „DMARC-Eintrag vorhanden“.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "sec.mail.mx",
      "kategorie": "security",
      "titel": "Domain kann E-Mail empfangen",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "1 Mailserver eingetragen.",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "10 mail.wvm-it.tech"
      ],
      "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://www.wvm-it.tech/"
      ],
      "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://www.wvm-it.tech/"
      ],
      "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://www.wvm-it.tech/"
      ],
      "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://www.wvm-it.tech/.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 104 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 2026-12-08 (noch 50 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_anchors",
      "kategorie": "technical",
      "titel": "Sprungmarken führen zu vorhandenen Abschnitten",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "heuristic",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "low",
      "nutzen": "low",
      "betroffene_urls": [],
      "belege": [],
      "prioritaet": null
    },
    {
      "code": "tech.broken_external",
      "kategorie": "technical",
      "titel": "Alle 11 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 zeigt auf eine indexierbare Seite",
      "bestanden": null,
      "schwere": "info",
      "datenstatus": "unavailable",
      "beschreibung": "Kein Canonical verweist auf eine andere, gecrawlte Seite.",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "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.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://www.wvm-it.tech/ -> 301 -> https://www.wvm-it.tech/"
      ],
      "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: 28 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: 41 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 291 URLs",
      "bestanden": true,
      "schwere": "info",
      "datenstatus": "measured",
      "beschreibung": "",
      "ursache": "",
      "loesung": "",
      "aufwand": "medium",
      "nutzen": "medium",
      "betroffene_urls": [],
      "belege": [
        "https://www.wvm-it.tech/sitemap.xml (5 Einträge)",
        "https://www.wvm-it.tech/sitemap-kern.xml (94 Einträge)",
        "https://www.wvm-it.tech/sitemap-leistungen.xml (42 Einträge)",
        "https://www.wvm-it.tech/sitemap-silos.xml (99 Einträge)",
        "https://www.wvm-it.tech/sitemap-ratgeber.xml (54 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
    }
  ],
  "hinweis": "Scores sind eigene, regelbasierte Bewertungen (Methodik: /methodik/). Kein offizieller Google-Wert."
}