1.2k stars · Apache-2.0 · v2.0.0 (2026-03-23)
Typed JSON-LD for the Schema.org vocabulary — structured data the compiler can check.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Google's TypeScript type definitions for the whole Schema.org vocabulary, so a JSON-LD block becomes a typed object instead of a hand-written blob of JSON. Wrong property names and wrong shapes become build errors.
Why it matters
geo-optimizer-skill (Ed. 1 #8, repeated Ed. 8 #3) keeps returning the same finding: search engines and answer engines cannot reliably tell what your pages are. llms-txt (Ed. 2 #7) was one half of the answer; SoftwareApplication, FAQPage, VideoObject and Organization markup is the other, and it is what puts your tutorials into rich results and your product into an AI answer with a name attached. Your Astro site is TypeScript, so this is an hour that then never rots — a mistyped property fails the build instead of failing silently for a year, which is the normal fate of hand-written JSON-LD. It was verified yesterday for Edition 11 and set aside only for lack of room on the page; it is here today so it does not sit twice.
- Errors surface at build time instead of as a quietly missing rich result.
- From Google, and generated from the actual vocabulary rather than someone's summary of it.
- Types only — nothing ships to the browser except the JSON-LD you meant to write.
- TypeScript only, so pages rendered by FastAPI get no help from it.
- The types are strict and Schema.org is loose; some legitimate markup needs a cast.
- Structured data makes you understood. It does not create demand, and it will not rescue a page nobody wants.
Your Astro site is TypeScript, so this is an hour that then never rots — a mistyped property fails the build instead of failing silently for a year, which is the normal fate of hand-written JSON-LD.
npm i -D schema-dts

