This site is MDX files and a few TypeScript helpers. articleJsonLd reads the post. If the frontmatter is wrong, the schema is wrong. I do not maintain a parallel CMS object.
One source
Two titles already exist: title on the page, seoTitle in the SERP. JSON-LD uses the same dates and description. Breadcrumbs too.
No special AI markup
Google said AI Overviews do not need extra markup. I checked what we send in that post.
If I add a field
I add it to frontmatter and the helper, not to a one-off script on one URL. Same discipline as drafts out of the sitemap.