DEV Community

Daniel Igel
Daniel Igel

Posted on

Add JSON-LD structured data in 10 minutes to get cited by AI search

AI search engines extract structured signals, not raw text. Without JSON-LD, a crawler guesses your page type, author, and topic from prose — which makes citations inconsistent and attribution wrong. With the right markup it takes 10 minutes to fix.

Three Schema.org types cover most developer pages:

Organization — who publishes this. Required for brand attribution in AI-generated answers.
Article with datePublished/dateModified — marks content as citable with a freshness signal AI engines weigh heavily.
FAQPage or HowTo — the highest-value signal: Q&A markup maps directly to how AI assistants answer questions, and these blocks get quoted disproportionately.

Minimal JSON-LD for a blog or docs page

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "name": "Your Brand",
      "url": "https://example.com"
    },
    {
      "@type": "Article",
      "headline": "Your page title",
      "author": { "@type": "Organization", "name": "Your Brand" },
      "datePublished": "2026-01-01",
      "dateModified": "2026-07-11"
    }
  ]
}
</script>
Enter fullscreen mode Exit fullscreen mode

For Q&A content, append a FAQPage block — each question + answer pair becomes a separately citable passage.

Check all five JSON-LD signals in one call

curl -X POST https://citeready-api.sprytools.com/v1/audit \
  -H "content-type: application/json" \
  -d '{"url":"https://yoursite.com"}'
Enter fullscreen mode Exit fullscreen mode

The structured_data category reports jsonld_present, jsonld_valid, jsonld_org_or_website, jsonld_content_type, and jsonld_faq_howto — pass/warn/fail with the exact fix to apply for each.

const res = await fetch('https://citeready-api.sprytools.com/v1/audit', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({ url: 'https://yoursite.com' }),
});
const { categories } = await res.json();
const sd = categories.find(c => c.id === 'structured_data');
console.log(sd.score, sd.checks);
Enter fullscreen mode Exit fullscreen mode

Free at https://citeready.sprytools.com — 3 checks/day, no signup.

Which Schema.org type were you missing when you first ran the audit?

Top comments (0)