You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Organization schema (site-structured-data.tsx): add brand and
contactPoint.url (verified against the real /contact route); all other
fields were already correct and verified against the Footer's sameAs
links. foundingDate/legalName/address omitted — not verifiable from
anything in this repo.
- CollectionPage (blog + library index): buildCollectionPageJsonLd now
takes the real posts list (same getAllPostMeta() the index page already
renders from) and emits a mainEntity ItemList of BlogPosting stubs
instead of omitting mainEntity entirely.
- BlogPosting + TechArticle (post detail template): Google's Article
rich-result eligibility only recognizes Article/NewsArticle/BlogPosting
— a bare TechArticle type isn't in that allowlist. buildArticleJsonLd
now emits a multi-type @type array (["BlogPosting","TechArticle"]) for
genuinely technical posts, and "BlogPosting" alone for posts that are
general announcements, via a new `technical` frontmatter flag (defaults
true; set to false on the series-a funding-announcement post, the one
post with no technical content). Also fixed a real markup/schema
mismatch: the article's `speakable.cssSelector` referenced
`[itemprop="description"]`, but no element carried that itemProp —
added it to the description paragraph. TechArticle/BlogPosting image
URLs are now made absolute (previously relative paths, invalid for
crawlers).
- FAQPage: audited every LandingFAQ usage (/models, /models/[provider],
/models/[provider]/[model], /integrations, /integrations/[slug],
/comparison, /comparison/[provider]) — all already emit matching
FAQPage JSON-LD sourced from the same data passed to LandingFAQ; no
gaps found, no changes needed.
0 commit comments