{"shared_score":{"domain":"kesko.fi","geo_score":67.1,"letter_grade":"D","full_score":{"top_fixes":[{"icon":"📄","score":0,"prompt":"Create an llms.txt file at yourdomain.com/llms.txt.\nFormat:\n  # Domain name\n  > Brief description of your site\n  ## Sections\n  - [Page title](https://domain.com/page): Description of page\n  Full spec: https://llmstxt.org/","dimension":"llms.txt","dimension_id":"llms_txt","customer_summary":{"why":"En lille fil (llms.txt) beskriver dit website for AI-tjenester. De fleste AI-crawlere læser den ikke bredt endnu — robots.txt-adgang og god indholdsstruktur vejer tungere i dag — men filen koster få minutter og gør dig klar, når standarden modnes.","what":"Filen kan laves på få minutter. Bed din webansvarlige lægge den op — eller brug vores generator, som laver den for dig.","title":"Fremtidssikr dit website med en llms.txt-fil","tech_details":"Create an llms.txt file at yourdomain.com/llms.txt.\nFormat:\n  # Domain name\n  > Brief description of your site\n  ## Sections\n  - [Page title](https://domain.com/page): Description of page\n  Full spec: https://llmstxt.org/"}},{"icon":"📊","score":20,"prompt":"Tilføj eller ret JSON-LD structured data på din hjemmeside.\nAnbefalede schema-typer: Organization, LocalBusiness, WebSite, Product (+ SoftwareApplication), Review, FAQPage, Service, BreadcrumbList.\n💡 Platform-forskel: Perplexity har en STRENG parser — ugyldig JSON-LD afvises.\n   ChatGPT tokeniserer JSON-LD som rå tekst og kan læse selv ugyldig markup.\n   → For maksimal synlighed på TVÆRS af alle platforme: altid valid JSON-LD.\nKritiske GSC-pitfalls — tjek disse 5:\n  1. Review.itemReviewed må ALDRIG bruge '@type': 'Service' — Google afviser det.\n     Brug '@type': 'Product' (eller '@id': reference til Product-blokken).\n  2. '@type': ['Organization', 'LocalBusiness'] ARRAYS BRYDER parsers — split i separate blocks.\n  3. SoftwareApplication skal have 'offers' + 'aggregateRating' for Software Apps rich results.\n  4. LocalBusiness skal have 'priceRange' + address.streetAddress (optional, men GSC advarer).\n  5. Article datePublished/dateModified = ISO 8601 med timezone ('+02:00'). author = Person med url.\n  Verificér altid med Google Search Console → Rich Results Test efter ændring.","dimension":"Structured Data","dimension_id":"structured_data","customer_summary":{"why":"Strukturerede data er små 'faktabokse' i din sides kode, som fortæller AI, hvad din virksomhed hedder, hvad I sælger, og hvor I ligger. Uden dem gætter AI — og gætter ofte forkert.","what":"Send den tekniske beskrivelse til din udvikler, eller brug vores schema-generator. Bagefter tjekker vi automatisk, at det virker.","title":"Fortæl AI præcis hvem I er (strukturerede data)","tech_details":"Tilføj eller ret JSON-LD structured data på din hjemmeside.\nAnbefalede schema-typer: Organization, LocalBusiness, WebSite, Product (+ SoftwareApplication), Review, FAQPage, Service, BreadcrumbList.\n💡 Platform-forskel: Perplexity har en STRENG parser — ugyldig JSON-LD afvises.\n   ChatGPT tokeniserer JSON-LD som rå tekst og kan læse selv ugyldig markup.\n   → For maksimal synlighed på TVÆRS af alle platforme: altid valid JSON-LD.\nKritiske GSC-pitfalls — tjek disse 5:\n  1. Review.itemReviewed må ALDRIG bruge '@type': 'Service' — Google afviser det.\n     Brug '@type': 'Product' (eller '@id': reference til Product-blokken).\n  2. '@type': ['Organization', 'LocalBusiness'] ARRAYS BRYDER parsers — split i separate blocks.\n  3. SoftwareApplication skal have 'offers' + 'aggregateRating' for Software Apps rich results.\n  4. LocalBusiness skal have 'priceRange' + address.streetAddress (optional, men GSC advarer).\n  5. Article datePublished/dateModified = ISO 8601 med timezone ('+02:00'). author = Person med url.\n  Verificér altid med Google Search Console → Rich Results Test efter ændring."}},{"icon":"⭐","score":25,"prompt":"Improve E-E-A-T signals:\n  1. Add author bios with credentials\n  2. Show certifications, memberships\n  3. Include customer cases and testimonials\n  4. Publish regular blog/articles showing expertise\n  5. Add SSL/HTTPS for trust\n  6. Show years of experience or founding year\n  7. Ekstern omtale tæller: PR, anmeldelser og branchemedier styrker autoritetsløkken — men husk at ca. halvdelen af AI-citationer i nordiske lokale brancher går til virksomhedens EGET site (målt 2026-08-14), så eget indhold er den anden halvdel\n💡 Authority loop: AI validerer dine claims ved at tjekke om de gentages på tværs af uafhængige, troværdige kilder — ét brand-ejet site er ikke nok","dimension":"E-E-A-T Content Quality","dimension_id":"eeat_quality","customer_summary":{"why":"AI-tjenester fremhæver virksomheder, der tydeligt viser erfaring og ekspertise — fx forfatternavne, 'Om os'-side og kundecases. Mangler det, vælges konkurrenten.","what":"Tilføj en fyldig 'Om os'-side, sæt navn og titel på jeres indhold, og vis kundeudtalelser eller cases.","title":"Vis hvem der står bag (troværdighed)","tech_details":"Improve E-E-A-T signals:\n  1. Add author bios with credentials\n  2. Show certifications, memberships\n  3. Include customer cases and testimonials\n  4. Publish regular blog/articles showing expertise\n  5. Add SSL/HTTPS for trust\n  6. Show years of experience or founding year\n  7. Ekstern omtale tæller: PR, anmeldelser og branchemedier styrker autoritetsløkken — men husk at ca. halvdelen af AI-citationer i nordiske lokale brancher går til virksomhedens EGET site (målt 2026-08-14), så eget indhold er den anden halvdel\n💡 Authority loop: AI validerer dine claims ved at tjekke om de gentages på tværs af uafhængige, troværdige kilder — ét brand-ejet site er ikke nok"}},{"icon":"🗂️","score":30,"prompt":"Add missing schema types:\n  1. Organization (required) with @id, sameAs (5+ platforms), knowsAbout\n  2. WebSite — publisher @id link to Organization\n  3. BreadcrumbList — vis sidestien for AI\n  4. FAQPage schema — KUN hvis siden viser en synlig FAQ (opmærkning uden synligt indhold skiller ikke; det gør spørgsmålsformen)\n  5. SoftwareApplication — med featureList for SaaS\n  6. Product schema for pricing pages\n  7. Review schema if you have testimonials\n  8. HowTo schema for 'how it works'-sider","dimension":"Schema Recommendations","dimension_id":"schema_recommendations","customer_summary":{"why":"Dit website mangler nogle af de datatyper, AI bruger til at forstå dine ydelser, anmeldelser og spørgsmål/svar. Jo flere relevante typer, jo oftere bliver du vist.","what":"Send listen over manglende typer til din udvikler, eller brug vores schema-generator til at lave koden.","title":"Tilføj de manglende 'faktabokse' (schema-typer)","tech_details":"Add missing schema types:\n  1. Organization (required) with @id, sameAs (5+ platforms), knowsAbout\n  2. WebSite — publisher @id link to Organization\n  3. BreadcrumbList — vis sidestien for AI\n  4. FAQPage schema — KUN hvis siden viser en synlig FAQ (opmærkning uden synligt indhold skiller ikke; det gør spørgsmålsformen)\n  5. SoftwareApplication — med featureList for SaaS\n  6. Product schema for pricing pages\n  7. Review schema if you have testimonials\n  8. HowTo schema for 'how it works'-sider"}},{"icon":"📝","score":31,"prompt":"Fix page metadata:\n  1. Ensure exactly ONE <h1> per page\n  2. Title tag: 10-70 characters, include primary keyword\n  3. Meta description: 120-160 characters, include call to action\n  4. Use H2-H4 for subheadings — never skip levels","dimension":"Basic Page Signals","dimension_id":"basic_page_signals","customer_summary":{"why":"Sidernes titler og overskrifter er det første, både Google og AI læser. Er de uklare eller mangler, bliver du sværere at finde og anbefale.","what":"Giv hver side én tydelig hovedoverskrift og en sigende titel. Det kan de fleste selv rette i deres website-system (fx WordPress).","title":"Ryd op i sidernes titler og overskrifter","tech_details":"Fix page metadata:\n  1. Ensure exactly ONE <h1> per page\n  2. Title tag: 10-70 characters, include primary keyword\n  3. Meta description: 120-160 characters, include call to action\n  4. Use H2-H4 for subheadings — never skip levels"}}],"dimensions":[{"id":"ai_crawler_access","icon":"🤖","name":"AI Crawler Accessibility","pass":true,"score":100,"issues":["Ingen sitemap.xml fundet — hjælper søgemaskiner og AI-crawlere med at opdage alle dine sider"],"weight":10,"fix_prompt":null},{"id":"server_side_rendering","icon":"🖥️","name":"Server-Side Rendering","pass":true,"score":100,"issues":["Content appears in HTML — SSR friendly ✓"],"weight":6,"fix_prompt":null},{"id":"llms_txt","icon":"📄","name":"llms.txt","pass":false,"score":0,"issues":["Ingen /llms.txt fundet — anbefales stærkt til AI-synlighed. Kald POST /llms-txt/generate/{customer_id} for at generere en automatisk.","Ingen /llms-full.txt — anbefalet supplement til llms.txt med fuld sideindholdsindeks. llms-full.txt øger citering på Claude og ChatGPT ved at give dem adgang til komplet kontekst."],"weight":3,"fix_prompt":"Create an llms.txt file at yourdomain.com/llms.txt.\nFormat:\n  # Domain name\n  > Brief description of your site\n  ## Sections\n  - [Page title](https://domain.com/page): Description of page\n  Full spec: https://llmstxt.org/"},{"id":"structured_data","icon":"📊","name":"Structured Data","pass":false,"score":20,"issues":["Mangler Organization/LocalBusiness schema — vigtigst for AI-entitetsgenkendelse","Mangler WebSite schema — hjælper AI med at identificere hjemmesidens rolle","Ingen JSON-LD structured data fundet"],"weight":8,"fix_prompt":"Tilføj eller ret JSON-LD structured data på din hjemmeside.\nAnbefalede schema-typer: Organization, LocalBusiness, WebSite, Product (+ SoftwareApplication), Review, FAQPage, Service, BreadcrumbList.\n💡 Platform-forskel: Perplexity har en STRENG parser — ugyldig JSON-LD afvises.\n   ChatGPT tokeniserer JSON-LD som rå tekst og kan læse selv ugyldig markup.\n   → For maksimal synlighed på TVÆRS af alle platforme: altid valid JSON-LD.\nKritiske GSC-pitfalls — tjek disse 5:\n  1. Review.itemReviewed må ALDRIG bruge '@type': 'Service' — Google afviser det.\n     Brug '@type': 'Product' (eller '@id': reference til Product-blokken).\n  2. '@type': ['Organization', 'LocalBusiness'] ARRAYS BRYDER parsers — split i separate blocks.\n  3. SoftwareApplication skal have 'offers' + 'aggregateRating' for Software Apps rich results.\n  4. LocalBusiness skal have 'priceRange' + address.streetAddress (optional, men GSC advarer).\n  5. Article datePublished/dateModified = ISO 8601 med timezone ('+02:00'). author = Person med url.\n  Verificér altid med Google Search Console → Rich Results Test efter ændring."},{"id":"basic_page_signals","icon":"📝","name":"Basic Page Signals","pass":false,"score":31,"issues":["Ingen H1-overskrift fundet — H1 er kritisk for AI-entitetsgenkendelse","Title-længde: 5 tegn (optimalt: 10-70)","Ingen meta description fundet — bruges som resumé af siden i søgeresultater og af AI","Ingen canonical-tag fundet — fortæller søgemaskiner og AI hvilken udgave af siden der er den rigtige","Manglende Open Graph / Social Sharing tags — AI-crawlere (Perplexity, ChatGPT plugins) bruger og:title og og:description til entitetsgenkendelse og uddrag. Mangler: Mangler twitter:card/twitter:title meta-tags"],"weight":7,"fix_prompt":"Fix page metadata:\n  1. Ensure exactly ONE <h1> per page\n  2. Title tag: 10-70 characters, include primary keyword\n  3. Meta description: 120-160 characters, include call to action\n  4. Use H2-H4 for subheadings — never skip levels"},{"id":"content_citability","icon":"💬","name":"Content Citability","pass":false,"score":55,"issues":["BLUF (Bottom Line Up Front) mangler — kernen bør stå i første 60 ord","Kun 0/11 overskrifter er spørgsmål (0%) — anbefal 10%+","Få fremhævede nøglebegreber — fed tekst guider AI-opmærksomhed"],"weight":8,"fix_prompt":"Improve content structure for AI extraction:\n  1. Keep paragraphs 40-60 words — no text walls >100 words\n  2. Put the core answer in the first 60 words (BLUF)\n  3. Use tables for comparative data\n  4. Add stats, numbers, prices (factual density)\n  5. Use bold for key terms — guides AI attention\n  6. Brug 'Answer-First'-mønster: placer et 40-60 ord svar DIREKTE under hver spørgende H2/H3\n  7. Optimal RAG passage-længde: 134-167 ord — den semantiske sweet spot for AI-ekstraktion"},{"id":"brand_entity","icon":"🏷️","name":"Brand Entity","pass":true,"score":100,"issues":[],"weight":8,"fix_prompt":null},{"id":"security","icon":"🔒","name":"Security","pass":true,"score":100,"issues":["Security-headers kunne ikke måles (HTTP 301, bot-beskyttelse) — ikke medregnet"],"weight":5,"fix_prompt":null},{"id":"performance","icon":"⚡","name":"Performance","pass":true,"score":85,"issues":["CLS 0.18 (denne side, rigtige brugere) — for høj; Googles grænse er 0.1"],"weight":6,"fix_prompt":null,"perf_source":"field","core_web_vitals":{"scope":"url","history":{"CLS":{"last":{"p75":0.0,"period_end":"2026-10-03"},"delta":0.0,"first":{"p75":0.0,"period_end":"2026-04-18"},"trend":"stable","weeks":25,"points":[{"p75":0.0,"period_end":"2026-04-18"},{"p75":0.0,"period_end":"2026-04-25"},{"p75":0.0,"period_end":"2026-05-02"},{"p75":0.0,"period_end":"2026-05-09"},{"p75":0.0,"period_end":"2026-05-16"},{"p75":0.0,"period_end":"2026-05-23"},{"p75":0.0,"period_end":"2026-05-30"},{"p75":0.0,"period_end":"2026-06-06"},{"p75":0.0,"period_end":"2026-06-13"},{"p75":0.0,"period_end":"2026-06-20"},{"p75":0.0,"period_end":"2026-06-27"},{"p75":0.0,"period_end":"2026-07-04"},{"p75":0.0,"period_end":"2026-07-11"},{"p75":0.0,"period_end":"2026-07-18"},{"p75":0.0,"period_end":"2026-07-25"},{"p75":0.0,"period_end":"2026-08-01"},{"p75":0.0,"period_end":"2026-08-08"},{"p75":0.0,"period_end":"2026-08-15"},{"p75":0.0,"period_end":"2026-08-22"},{"p75":0.0,"period_end":"2026-08-29"},{"p75":0.0,"period_end":"2026-09-05"},{"p75":0.0,"period_end":"2026-09-12"},{"p75":0.0,"period_end":"2026-09-19"},{"p75":0.0,"period_end":"2026-09-26"},{"p75":0.0,"period_end":"2026-10-03"}]},"INP":{"last":{"p75":98,"period_end":"2026-10-03"},"delta":4,"first":{"p75":94,"period_end":"2026-04-18"},"trend":"stable","weeks":25,"points":[{"p75":94,"period_end":"2026-04-18"},{"p75":98,"period_end":"2026-04-25"},{"p75":95,"period_end":"2026-05-02"},{"p75":93,"period_end":"2026-05-09"},{"p75":94,"period_end":"2026-05-16"},{"p75":92,"period_end":"2026-05-23"},{"p75":93,"period_end":"2026-05-30"},{"p75":93,"period_end":"2026-06-06"},{"p75":92,"period_end":"2026-06-13"},{"p75":91,"period_end":"2026-06-20"},{"p75":91,"period_end":"2026-06-27"},{"p75":92,"period_end":"2026-07-04"},{"p75":92,"period_end":"2026-07-11"},{"p75":94,"period_end":"2026-07-18"},{"p75":94,"period_end":"2026-07-25"},{"p75":95,"period_end":"2026-08-01"},{"p75":93,"period_end":"2026-08-08"},{"p75":96,"period_end":"2026-08-15"},{"p75":97,"period_end":"2026-08-22"},{"p75":97,"period_end":"2026-08-29"},{"p75":102,"period_end":"2026-09-05"},{"p75":100,"period_end":"2026-09-12"},{"p75":97,"period_end":"2026-09-19"},{"p75":96,"period_end":"2026-09-26"},{"p75":98,"period_end":"2026-10-03"}]},"LCP":{"last":{"p75":1193,"period_end":"2026-10-03"},"delta":158,"first":{"p75":1035,"period_end":"2026-04-18"},"trend":"worsened","weeks":25,"points":[{"p75":1035,"period_end":"2026-04-18"},{"p75":1016,"period_end":"2026-04-25"},{"p75":1036,"period_end":"2026-05-02"},{"p75":1045,"period_end":"2026-05-09"},{"p75":1042,"period_end":"2026-05-16"},{"p75":1048,"period_end":"2026-05-23"},{"p75":1070,"period_end":"2026-05-30"},{"p75":1087,"period_end":"2026-06-06"},{"p75":1118,"period_end":"2026-06-13"},{"p75":1105,"period_end":"2026-06-20"},{"p75":1094,"period_end":"2026-06-27"},{"p75":1113,"period_end":"2026-07-04"},{"p75":1124,"period_end":"2026-07-11"},{"p75":1184,"period_end":"2026-07-18"},{"p75":1168,"period_end":"2026-07-25"},{"p75":1160,"period_end":"2026-08-01"},{"p75":1185,"period_end":"2026-08-08"},{"p75":1223,"period_end":"2026-08-15"},{"p75":1276,"period_end":"2026-08-22"},{"p75":1260,"period_end":"2026-08-29"},{"p75":1253,"period_end":"2026-09-05"},{"p75":1179,"period_end":"2026-09-12"},{"p75":1167,"period_end":"2026-09-19"},{"p75":1223,"period_end":"2026-09-26"},{"p75":1193,"period_end":"2026-10-03"}]}},"metrics":{"CLS":{"p75":0.18,"unit":"","rating":"needs_improvement","good_threshold":0.1},"INP":{"p75":105,"unit":"ms","rating":"good","good_threshold":200},"LCP":{"p75":1552,"unit":"ms","rating":"good","good_threshold":2500}},"complete":true,"assessment":"fail","metrics_available":["CLS","INP","LCP"]}},{"id":"mobile_adaptation","icon":"📱","name":"Mobile Adaptation","pass":true,"score":100,"issues":[],"weight":6,"fix_prompt":null},{"id":"internal_links","icon":"🔗","name":"Internal Links","pass":true,"score":100,"issues":[],"weight":5,"fix_prompt":null},{"id":"eeat_quality","icon":"⭐","name":"E-E-A-T Content Quality","pass":false,"score":25,"issues":["Svag E-E-A-T profil — AI-søgemaskiner vurderer troværdighed som lav","Få troværdighedssignaler — tilføj autorbiografier, certificeringer, cases"],"weight":7,"fix_prompt":"Improve E-E-A-T signals:\n  1. Add author bios with credentials\n  2. Show certifications, memberships\n  3. Include customer cases and testimonials\n  4. Publish regular blog/articles showing expertise\n  5. Add SSL/HTTPS for trust\n  6. Show years of experience or founding year\n  7. Ekstern omtale tæller: PR, anmeldelser og branchemedier styrker autoritetsløkken — men husk at ca. halvdelen af AI-citationer i nordiske lokale brancher går til virksomhedens EGET site (målt 2026-08-14), så eget indhold er den anden halvdel\n💡 Authority loop: AI validerer dine claims ved at tjekke om de gentages på tværs af uafhængige, troværdige kilder — ét brand-ejet site er ikke nok"},{"id":"platform_optimization","icon":"🎯","name":"Platform Optimization","pass":true,"score":65,"issues":["Ingen FAQ-/spørgsmålssektion fundet på forsiden — de citerede sider besvarer typisk kundernes spørgsmål direkte i teksten","Få spørgsmål-svar mønstre — AI citerer ofte direkte svar","Kun 1/2 community-validation signaler fundet — anbefal Trustpilot, G2, cases eller LinkedIn"],"weight":7,"fix_prompt":null},{"id":"schema_recommendations","icon":"🗂️","name":"Schema Recommendations","pass":false,"score":30,"issues":["Mangler Organization/LocalBusiness schema — vigtigst for AI-entitetsgenkendelse","Mangler WebSite schema — hjælper AI med at identificere hjemmesidens rolle","Mangler FAQPage schema — FAQ citeres hyppigt i AI-svar","Mangler BreadcrumbList schema — strukturerer sidestien for AI","Ingen sameAs i Organization schema — anfør sociale platforme"],"weight":7,"fix_prompt":"Add missing schema types:\n  1. Organization (required) with @id, sameAs (5+ platforms), knowsAbout\n  2. WebSite — publisher @id link to Organization\n  3. BreadcrumbList — vis sidestien for AI\n  4. FAQPage schema — KUN hvis siden viser en synlig FAQ (opmærkning uden synligt indhold skiller ikke; det gør spørgsmålsformen)\n  5. SoftwareApplication — med featureList for SaaS\n  6. Product schema for pricing pages\n  7. Review schema if you have testimonials\n  8. HowTo schema for 'how it works'-sider"},{"id":"empirical_density","icon":"🔢","name":"Empirical Content Data","pass":true,"score":77,"issues":["Moderat empirisk tæthed (9 af 111 sætninger med konkrete tal). Mål: mindst 1 empirisk udsagn per ~8 sætninger","Intet konkret case-resultat fundet (fx 'sagsbehandlingstid fra 3 uger til 4 dage'). Kundehistorier med målbare resultater er stærkt citerbart indhold — brug kun tal, I selv har målt, og skriv gerne hvornår","Lav teknisk forklaringsdybde (0 sætninger forklarer mekanismen bag jeres løsning). AI prioriterer indhold der forklarer HVORDAN frem for HVAD ('vi bruger RAG + vektor-søgning til ...')"],"weight":7,"fix_prompt":null}],"letter_grade":"D","onpage_signals":{"country":null,"title_text":"Kesko","word_count":2775,"cert_measured":false,"reviews_shown":false,"price_measured":true,"title_measured":true,"cert_terms_found":[],"reviews_measured":true,"has_opening_hours":false,"has_explicit_price":false,"internal_links_count":302,"opening_hours_measured":true,"price_questions_measured":false,"unanswered_price_questions":[]},"overall_geo_score":67.1},"dials":{"google":{"score":76,"grade":"C","color":"#16a34a"},"ai":{"score":60,"grade":"D","color":"#d97706"}},"created_at":"2026-07-11T17:22:30.534612+00:00"},"share_url":"/geo-score/share/6dd67aa54c89","viewed_at":"2026-10-14T03:00:52.017062"}