vibecheck0.3.0
AI readinessaeostructured-data-missingwarning

Missing structured data (JSON-LD) in Next.js

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

  • No rich results (FAQ, breadcrumb, product, article) in Google
  • AI assistants summarise the page inaccurately or not at all
  • Google’s Rich Results Test reports "No items detected"
  • Competitors with the same content show richer search snippets

How VibeCheck catches it

In your widget · Problems

warningaeoNo 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

  • No JSON-LD was ever added to the templates
  • Relying on Open Graph/meta tags alone, which don’t describe entities
  • A CMS or generator that outputs prose but no schema

The fix for Next.js

Render the JSON-LD as a <script> in the component tree (Server Component). Next streams it into the HTML so crawlers see it without running JS. Build the object in TypeScript and stringify it.

tsx
export default function Page() {
  const jsonLd = {
    '@context': 'https://schema.org',
    '@type': 'Article',
    headline: 'How to fix CLS',
  }
  return (
    <>
      <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }} />
      <article>…</article>
    </>
  )
}

Next.js docs →

Steps

  1. Pick the schema.org type that matches the page (Article, Product, FAQPage, …)
  2. Emit a JSON-LD script with @context "https://schema.org" and the key fields
  3. Validate with Google’s Rich Results Test and schema.org validator

See the general, framework-agnostic fix →

FAQ

Which schema.org type should I use?
Match the page: Article/TechArticle/BlogPosting for content, Product for a product, FAQPage for Q&A, Organization/WebSite for the site itself. You can include several types on one page.
Does JSON-LD help 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-LD makes 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.