{
    "version": 2,
    "url": "https://ullrutvikling.no",
    "final_url": "https://ullrutvikling.no",
    "redirects": [],
    "mode": "full",
    "language": "no",
    "scanned_at": "2026-10-13T11:30:44+02:00",
    "duration_ms": 2770.75,
    "overall_score": 72.6,
    "category_scores": {
        "bot_access": 98.6,
        "content": 88.9,
        "technical": 76.7,
        "structured_data": 0,
        "meta": 43.8,
        "performance": 93.8
    },
    "checks": [
        {
            "id": "robots_txt",
            "category": "bot_access",
            "title": "robots.txt",
            "status": "warning",
            "severity": "info",
            "value": "Ingen robots.txt – alle boter har tilgang.",
            "recommendation": "Legg til en robots.txt i roten av domenet. Den gir deg kontroll over hvilke boter som får tilgang, og bør peke til sitemap (Sitemap: https://…/sitemap.xml).",
            "duration_ms": 1669.4,
            "data": []
        },
        {
            "id": "bot_oai_searchbot",
            "category": "bot_access",
            "title": "OAI-SearchBot · OpenAI (ChatGPT search)",
            "status": "pass",
            "severity": "critical",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "OAI-SearchBot",
                "vendor": "OpenAI (ChatGPT search)",
                "purpose": "search",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_claude_searchbot",
            "category": "bot_access",
            "title": "Claude-SearchBot · Anthropic (Claude)",
            "status": "pass",
            "severity": "critical",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Claude-SearchBot",
                "vendor": "Anthropic (Claude)",
                "purpose": "search",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_perplexitybot",
            "category": "bot_access",
            "title": "PerplexityBot · Perplexity",
            "status": "pass",
            "severity": "critical",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "PerplexityBot",
                "vendor": "Perplexity",
                "purpose": "search",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_googlebot",
            "category": "bot_access",
            "title": "Googlebot · Google (Search, AI Overviews, Gemini)",
            "status": "pass",
            "severity": "critical",
            "value": "robots.txt: tillatt · server: ikke testet",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Googlebot",
                "vendor": "Google (Search, AI Overviews, Gemini)",
                "purpose": "search",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "not_tested",
                "server_detail": ""
            }
        },
        {
            "id": "bot_bingbot",
            "category": "bot_access",
            "title": "Bingbot · Microsoft (Bing + Copilot)",
            "status": "pass",
            "severity": "critical",
            "value": "robots.txt: tillatt · server: ikke testet",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Bingbot",
                "vendor": "Microsoft (Bing + Copilot)",
                "purpose": "search",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "not_tested",
                "server_detail": ""
            }
        },
        {
            "id": "bot_applebot",
            "category": "bot_access",
            "title": "Applebot · Apple (Siri/Spotlight)",
            "status": "pass",
            "severity": "critical",
            "value": "robots.txt: tillatt · server: ikke testet",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Applebot",
                "vendor": "Apple (Siri/Spotlight)",
                "purpose": "search",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "not_tested",
                "server_detail": ""
            }
        },
        {
            "id": "bot_chatgpt_user",
            "category": "bot_access",
            "title": "ChatGPT-User · OpenAI (ChatGPT)",
            "status": "pass",
            "severity": "warning",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "ChatGPT-User",
                "vendor": "OpenAI (ChatGPT)",
                "purpose": "user",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_claude_user",
            "category": "bot_access",
            "title": "Claude-User · Anthropic (Claude)",
            "status": "pass",
            "severity": "warning",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Claude-User",
                "vendor": "Anthropic (Claude)",
                "purpose": "user",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_perplexity_user",
            "category": "bot_access",
            "title": "Perplexity-User · Perplexity",
            "status": "pass",
            "severity": "warning",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Perplexity-User",
                "vendor": "Perplexity",
                "purpose": "user",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_gptbot",
            "category": "bot_access",
            "title": "GPTBot · OpenAI",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "GPTBot",
                "vendor": "OpenAI",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_claudebot",
            "category": "bot_access",
            "title": "ClaudeBot · Anthropic",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "ClaudeBot",
                "vendor": "Anthropic",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_google_extended",
            "category": "bot_access",
            "title": "Google-Extended · Google (Gemini training)",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: ikke testet",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Google-Extended",
                "vendor": "Google (Gemini training)",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "not_tested",
                "server_detail": ""
            }
        },
        {
            "id": "bot_applebot_extended",
            "category": "bot_access",
            "title": "Applebot-Extended · Apple (Apple Intelligence training)",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: ikke testet",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Applebot-Extended",
                "vendor": "Apple (Apple Intelligence training)",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "not_tested",
                "server_detail": ""
            }
        },
        {
            "id": "bot_ccbot",
            "category": "bot_access",
            "title": "CCBot · Common Crawl",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "CCBot",
                "vendor": "Common Crawl",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_meta_externalagent",
            "category": "bot_access",
            "title": "Meta-ExternalAgent · Meta",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Meta-ExternalAgent",
                "vendor": "Meta",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_amazonbot",
            "category": "bot_access",
            "title": "Amazonbot · Amazon",
            "status": "pass",
            "severity": "info",
            "value": "robots.txt: tillatt · server: svarer normalt (HTTP 200)",
            "recommendation": null,
            "duration_ms": 1942.61,
            "data": {
                "bot": "Amazonbot",
                "vendor": "Amazon",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "ok",
                "server_detail": "HTTP 200"
            }
        },
        {
            "id": "bot_bytespider",
            "category": "bot_access",
            "title": "Bytespider · ByteDance",
            "status": "info",
            "severity": "info",
            "value": "robots.txt: tillatt · server: blokkert (HTTP 403)",
            "recommendation": "Serveren avviser Bytespider selv om robots.txt kan tillate den. Sjekk brannmur/CDN: Cloudflare (Security → Bots / \"Block AI bots\"), Wordfence, Imunify360, ModSecurity eller Plesk-brannmur. Merk: noen brannmurer blokkerer bare falske boter (sjekker IP), så bekreft i brannmurloggen at ekte trafikk fra Bytespider slipper gjennom.",
            "duration_ms": 1942.61,
            "data": {
                "bot": "Bytespider",
                "vendor": "ByteDance",
                "purpose": "training",
                "robots": "allowed",
                "robots_has_own_group": false,
                "server": "blocked",
                "server_detail": "HTTP 403"
            }
        },
        {
            "id": "indexing_directives",
            "category": "bot_access",
            "title": "Indekseringsdirektiver (meta robots / X-Robots-Tag)",
            "status": "pass",
            "severity": "critical",
            "value": "Ingen blokkerende direktiver (<meta name=\"robots\"> = \"max-image-preview:large\").",
            "recommendation": null,
            "duration_ms": 18.62,
            "data": {
                "found": [
                    {
                        "source": "<meta name=\"robots\">",
                        "scope": "*",
                        "directives": [
                            "max-image-preview:large"
                        ]
                    }
                ]
            }
        },
        {
            "id": "sitemap_present",
            "category": "technical",
            "title": "Sitemap",
            "status": "fail",
            "severity": "warning",
            "value": "Fant ingen sitemap (sjekket robots.txt, /sitemap.xml, /sitemap_index.xml og /wp-sitemap.xml).",
            "recommendation": "Lag en XML-sitemap (i WordPress: Yoast/Rank Math, eller innebygd /wp-sitemap.xml) og oppgi den i robots.txt med \"Sitemap: https://…\".",
            "duration_ms": 33.34,
            "data": []
        },
        {
            "id": "tech_https",
            "category": "technical",
            "title": "HTTPS",
            "status": "warning",
            "severity": "info",
            "value": "Siden bruker HTTPS. http:// omdirigeres til https://. Mangler HSTS-header.",
            "recommendation": "HSTS (Strict-Transport-Security) sier til nettleseren at siden alltid skal åpnes med https. Kan slås på under SSL/TLS-sertifikater i Plesk.",
            "duration_ms": 1758.14,
            "data": []
        },
        {
            "id": "tech_host_variant",
            "category": "technical",
            "title": "www / uten www",
            "status": "pass",
            "severity": "warning",
            "value": "www.ullrutvikling.no sendes videre til ullrutvikling.no.",
            "recommendation": null,
            "duration_ms": 1758.14,
            "data": []
        },
        {
            "id": "tech_mixed_content",
            "category": "technical",
            "title": "Blandet innhold",
            "status": "pass",
            "severity": "warning",
            "value": "Ingen ressurser lastes over usikker http.",
            "recommendation": null,
            "duration_ms": 1758.14,
            "data": []
        },
        {
            "id": "tech_viewport",
            "category": "technical",
            "title": "Mobilvisning (viewport)",
            "status": "pass",
            "severity": "critical",
            "value": "viewport=\"width=device-width,initial-scale=1\"",
            "recommendation": null,
            "duration_ms": 1758.14,
            "data": []
        },
        {
            "id": "tech_images_alt",
            "category": "technical",
            "title": "Alt-tekst på bilder",
            "status": "warning",
            "severity": "info",
            "value": "10 bilder: 0 uten alt-attributt, 8 med tom alt (pynt). 8 av bildene med tom alt ser ut som innholdsbilder.",
            "recommendation": "8 bilder fra mediebiblioteket har tom alt (alt=\"\"). Det betyr «ren pynt», men bilder av ansatte, eiendommer og produkter er innhold og bør ha en kort beskrivelse, f.eks. navnet på personen. Legg inn alt-tekst i mediebiblioteket, eller sjekk at temaet faktisk bruker den.",
            "duration_ms": 1758.14,
            "data": {
                "lists": [
                    {
                        "key": "empty_alt_content",
                        "label": "Tom alt, men ser ut som innholdsbilder (8)",
                        "items": [
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/08/eiendommer-01-uai-776x1165.jpg",
                                "note": ""
                            },
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/07/N3_01-uai-1600x1280.jpg",
                                "note": ""
                            },
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/07/NK2a_01-uai-1920x1120.jpg",
                                "note": ""
                            },
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/08/ullr-eiendom-7-uai-1600x1280.jpg",
                                "note": ""
                            },
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/07/Ringveien_01-uai-853x1280.jpg",
                                "note": ""
                            },
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/10/ullr-forside-kvadratisk-komprimert.mp4",
                                "note": ""
                            },
                            {
                                "url": "https://ullrutvikling.no/wp-content/uploads/2026/08/ullr-scaled.png",
                                "note": "brukt 2 ganger"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "id": "tech_images_dimensions",
            "category": "technical",
            "title": "Bildestørrelse i HTML",
            "status": "pass",
            "severity": "info",
            "value": "0 av 10 bilder mangler width/height.",
            "recommendation": null,
            "duration_ms": 1758.14,
            "data": {
                "lists": []
            }
        },
        {
            "id": "tech_links_internal",
            "category": "technical",
            "title": "Interne lenker",
            "status": "pass",
            "severity": "warning",
            "value": "28 interne og 1 eksterne lenker.",
            "recommendation": null,
            "duration_ms": 1758.14,
            "data": []
        },
        {
            "id": "tech_links_text",
            "category": "technical",
            "title": "Lenketekster",
            "status": "warning",
            "severity": "info",
            "value": "Uklare lenketekster: \"les mer\" ×2. 5 lenker uten tekst.",
            "recommendation": "Lenketeksten forteller søkemotorer og AI hva målsiden handler om. Bruk f.eks. «Se priser på baderom» i stedet for «Les mer». Lenker med bare ikon trenger aria-label.",
            "duration_ms": 1758.14,
            "data": []
        },
        {
            "id": "llms_txt",
            "category": "bot_access",
            "title": "llms.txt",
            "status": "info",
            "severity": "info",
            "value": "llms.txt finnes ikke.",
            "recommendation": "Valgfritt: /llms.txt er et forslag til standard (llmstxt.org) der du oppsummerer nettstedet og lenker til viktigste sider i Markdown. Foreløpig begrenset effekt, men lite arbeid.",
            "duration_ms": 1670.04,
            "data": []
        },
        {
            "id": "content_raw_html",
            "category": "content",
            "title": "Innhold uten JavaScript",
            "status": "pass",
            "severity": "critical",
            "value": "Hovedinnhold: 175 ord (hele siden: 333 ord, tekstandel 2,2 %).",
            "recommendation": null,
            "duration_ms": 62.47,
            "data": {
                "main_words": 175,
                "all_words": 333,
                "text_ratio": 0.022,
                "spa_signals": []
            }
        },
        {
            "id": "heading_h1_count",
            "category": "content",
            "title": "H1-overskrift",
            "status": "pass",
            "severity": "warning",
            "value": "Én H1: \"Eiendom & samfunnsverdi\"",
            "recommendation": null,
            "duration_ms": 23.25,
            "data": []
        },
        {
            "id": "heading_order",
            "category": "content",
            "title": "Overskriftshierarki",
            "status": "warning",
            "severity": "info",
            "value": "Hopp i nivå: h2 → h4",
            "recommendation": "Bruk overskriftsnivåene i rekkefølge (H2 under H1, H3 under H2). Det gjør det lettere for AI å dele innholdet i meningsfulle avsnitt.",
            "duration_ms": 23.25,
            "data": []
        },
        {
            "id": "language_html_lang",
            "category": "content",
            "title": "Språk (lang-attributt)",
            "status": "pass",
            "severity": "warning",
            "value": "Språk: nb-NO",
            "recommendation": null,
            "duration_ms": 21.89,
            "data": []
        },
        {
            "id": "language_hreflang",
            "category": "content",
            "title": "hreflang",
            "status": "info",
            "severity": "info",
            "value": "Ingen hreflang (helt greit for nettsteder med ett språk).",
            "recommendation": null,
            "duration_ms": 21.89,
            "data": []
        },
        {
            "id": "content_freshness",
            "category": "content",
            "title": "Oppdateringsdato",
            "status": "warning",
            "severity": "info",
            "value": "Fant ingen dato for publisering eller oppdatering.",
            "recommendation": "Oppgi dateModified/datePublished i JSON-LD (gjøres automatisk av Yoast/Rank Math på innlegg). AI-tjenester foretrekker innhold de kan se er oppdatert.",
            "duration_ms": 21.55,
            "data": []
        },
        {
            "id": "meta_title",
            "category": "meta",
            "title": "Sidetittel (<title>)",
            "status": "warning",
            "severity": "warning",
            "value": "Tittelen er 4 tegn: \"ULLR\"",
            "recommendation": "Bruk en unik, beskrivende tittel på 10–60 tegn.",
            "duration_ms": 37.55,
            "data": []
        },
        {
            "id": "meta_description",
            "category": "meta",
            "title": "Metabeskrivelse",
            "status": "fail",
            "severity": "critical",
            "value": "Mangler metabeskrivelse.",
            "recommendation": "Skriv en beskrivelse på 50–160 tegn som oppsummerer siden.",
            "duration_ms": 37.55,
            "data": []
        },
        {
            "id": "meta_canonical",
            "category": "meta",
            "title": "Canonical",
            "status": "pass",
            "severity": "warning",
            "value": "Peker til seg selv: https://ullrutvikling.no/",
            "recommendation": null,
            "duration_ms": 37.55,
            "data": []
        },
        {
            "id": "meta_og_tags",
            "category": "meta",
            "title": "Open Graph",
            "status": "warning",
            "severity": "info",
            "value": "Mangler: og:title, og:description, og:image",
            "recommendation": "Legg til Open Graph-tagger. De brukes ved deling og av mange AI-agenter som henter forhåndsvisning.",
            "duration_ms": 37.55,
            "data": []
        },
        {
            "id": "schema_org_present",
            "category": "structured_data",
            "title": "JSON-LD",
            "status": "fail",
            "severity": "critical",
            "value": "Ingen JSON-LD på siden.",
            "recommendation": "Legg til strukturerte data, minst Organization (eller LocalBusiness) og WebSite. Yoast/Rank Math gjør det meste automatisk når firmainfo er fylt ut.",
            "duration_ms": 0.01,
            "data": []
        },
        {
            "id": "performance_response_time",
            "category": "performance",
            "title": "Responstid",
            "status": "pass",
            "severity": "critical",
            "value": "Serveren svarte på 398 ms.",
            "recommendation": null,
            "duration_ms": 21.18,
            "data": []
        },
        {
            "id": "performance_html_size",
            "category": "performance",
            "title": "HTML-størrelse",
            "status": "pass",
            "severity": "warning",
            "value": "HTML: 103,2 KB",
            "recommendation": null,
            "duration_ms": 21.18,
            "data": []
        },
        {
            "id": "performance_compression",
            "category": "performance",
            "title": "Komprimering",
            "status": "pass",
            "severity": "warning",
            "value": "Komprimert med gzip.",
            "recommendation": null,
            "duration_ms": 21.18,
            "data": []
        },
        {
            "id": "performance_resource_count",
            "category": "performance",
            "title": "Antall ressurser",
            "status": "warning",
            "severity": "info",
            "value": "27 ressurser: 13 JS, 5 CSS og 9 bilder (6 av bildene lastes først ved scrolling). 21 hentes ved første visning.",
            "recommendation": "13 JavaScript-filer, hvorav 13 blokkerer visningen (uten async/defer). Fjern tillegg som ikke brukes, og slå sammen/utsett skript (f.eks. med LiteSpeed Cache, WP Rocket eller Autoptimize).",
            "duration_ms": 21.18,
            "data": {
                "js": 13,
                "js_blocking": 13,
                "css": 5,
                "images_eager": 3,
                "images_lazy": 6,
                "initial": 21
            }
        }
    ],
    "page_meta": {
        "title": "ULLR",
        "description": "",
        "h1": "Eiendom & samfunnsverdi",
        "lang": "nb-NO",
        "canonical": "https://ullrutvikling.no/",
        "hreflang": [],
        "words": 175,
        "simhash": "d98651da20f962d8",
        "links_internal": [
            "https://ullrutvikling.no/",
            "https://ullrutvikling.no/?page_id=81",
            "https://ullrutvikling.no/?page_id=79",
            "https://ullrutvikling.no/?page_id=83",
            "https://ullrutvikling.no/?portfolio=gardermoen-naeringspark-fkn2",
            "https://ullrutvikling.no/?portfolio=gardermoen-naeringspark-n3",
            "https://ullrutvikling.no/?portfolio=gardermoen-naeringspark-nk2a",
            "https://ullrutvikling.no/?portfolio=gamle-nordkisa-skole",
            "https://ullrutvikling.no/?portfolio=ringveien",
            "https://ullrutvikling.no/?p=1634",
            "https://ullrutvikling.no/?p=1415"
        ],
        "links_external": [
            "https://ohmy.no/"
        ]
    },
    "id": "ullrutvikling.no__20261013-113044-1b34c26cc9e44e66"
}