Missing structured data (JSON-LD) in Svelte
Answer engines and rich-result crawlers pull entities, facts, and answers out of schema.org JSON-LD — an author, a price, a rating, a FAQ. Without it they fall back to guessing from your prose, which is lossy and easy to get wrong. As AI assistants become how people find things, a page with no machine-readable summary is one they’re more likely to skip or misquote.
Symptoms
How VibeCheck catches it
In your widget · Problems
No structured data (JSON-LD)
To your coding agent · MCP
agent › get_detected_issues
→ { detector: "aeo", issue: "No structured data (JSON-LD)", threshold: "No <script type="application/ld+json"> present on the page" }
The same string in your widget and in your agent’s context — no screenshot, no copy-paste.
Root causes
The fix for Svelte
Place the JSON-LD in <svelte:head>; SvelteKit renders it server-side so crawlers see it.
<svelte:head>
{@html '<script type="application/ld+json">' + JSON.stringify(jsonLd) + '<\/script>'}
</svelte:head>Steps
- Pick the
schema.orgtype that matches the page (Article,Product,FAQPage, …) - Emit a
JSON-LDscript with@context"https://schema.org"and the key fields - Validate with Google’s Rich Results Test and
schema.orgvalidator
FAQ
- Which
schema.orgtype should I use? - Match the page:
Article/TechArticle/BlogPostingfor content,Productfor a product,FAQPagefor Q&A,Organization/WebSitefor the site itself. You can include several types on one page. - Does
JSON-LDhelp with AI answer engines specifically? - Yes. Assistants like ChatGPT, Perplexity, and Google’s AI Overviews extract structured facts far more reliably than prose. Clean
JSON-LDmakes your page easier to cite accurately. JSON-LD, Microdata, or RDFa?- Google recommends
JSON-LD— it’s a single script block separate from your markup, so it’s the easiest to add and maintain, and it’s what VibeCheck checks for.