Ghost Schema.org + Open Graph: Beyond Social Sharing
Ghost generates Schema.org structured data and Open Graph tags automatically, out of one Handlebars helper: {{ghost_head}}. On every post that helper emits Article JSON-LD for search engines and og: tags for social platforms — no plugins, no manual markup. This guide covers what Ghost ships by default, the fields you must fill for it to work, and how to add the schema types (FAQ, HowTo) that Ghost won't generate on its own.
Does Ghost add Schema.org structured data automatically?
Yes. Since the platform added native structured-data support, any theme that includes the standard {{ghost_head}} helper outputs JSON-LD describing your content. On a post you get Article schema with the headline, feature image, publish date, and author. The homepage gets WebSite and Organization. Navigation gets BreadcrumbList. Ghost builds all of it from the post metadata you already enter — you never write the JSON by hand.
The same helper also emits your Open Graph and Twitter Card tags. That's the key mental model: one helper, two audiences.
Schema.org vs Open Graph: what each one does
They're often confused because Ghost emits both together, but they target different machines.
| Open Graph | Schema.org (JSON-LD) | |
|---|---|---|
| Audience | Social platforms (Facebook, LinkedIn, X) | Search engines + AI answer engines |
| Format | <meta property="og:..."> tags | <script type="application/ld+json"> |
| Controls | How a shared link looks | Rich results, eligibility for AI citation |
| Ghost emits | og:title, og:image, og:description, Twitter cards | Article, WebSite, Organization, BreadcrumbList |
| Key field | og:image (1200×630, absolute HTTPS URL) | headline, image, datePublished, author |
Open Graph is what makes your link look good in a feed; Schema.org is what makes it eligible for a rich snippet or an AI Overview citation. You want both, and Ghost gives you both — but only the social side is visually obvious, so the structured-data side is the one that quietly rots.
Why structured data is worth the attention
Structured data isn't decorative. It's how machines understand a page well enough to feature it.
The Open Graph half pays off the moment someone shares the link:
og:image controls. — CXL, click-through benchmarksAnd freshness is a ranking input on its own. Ghost stamps datePublished and dateModified into the Article schema automatically, but only if you actually re-save the post when you update it.
Which post fields does Ghost actually read?
The JSON-LD is only as good as the metadata behind it. Fill these in the post settings panel:
- Feature image → becomes
og:imageand the Article schemaimage. Use a 1200×630 asset; an absolute HTTPS URL is mandatory. See the social media image size cheat sheet for the full per-platform specs. - Meta title / meta description → feed
og:title,og:description, and the Articleheadline. Leave them blank and Ghost falls back to the post title and excerpt. - Facebook & Twitter card fields (in post settings) → override the social titles and images per network when you need a different framing than search gets.
- Publish date →
datePublished. Re-saving an edited post updatesdateModified.
Empty fields don't break the page; they produce thin or fallback markup that's far less likely to win a rich result. For the social-tag side specifically, the Ghost Open Graph setup guide walks through each field.
How do I add FAQ or HowTo schema to Ghost?
Ghost generates Article, WebSite, Organization, and BreadcrumbList — and stops there. It will not emit FAQPage, HowTo, Recipe, or Product schema. For those you add JSON-LD yourself.
The cleanest place is the post's code injection footer. Paste a hand-written block:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Does Ghost add structured data automatically?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes — every theme using the {{ghost_head}} helper emits Article, WebSite, and Organization JSON-LD."
}
}]
}
</script>
The one rule Google enforces: the markup must match the visible content. A FAQPage block whose questions don't appear on the page is a structured-data violation and can earn a manual action. Keep the JSON-LD a faithful mirror of what the reader sees.
Validate it, then keep validating it
Structured data fails silently, so verification is non-negotiable. Two free tools parse your live URL:
- Google Rich Results Test (
search.google.com/test/rich-results) — tells you which rich-result types your page qualifies for. - Schema Markup Validator (
validator.schema.org) — the general-purpose linter; catches malformed JSON-LD.
Re-run them after every theme deploy. Custom themes are the most common cause of dropped {{ghost_head}} output, and the failure is invisible to you. When a preview won't render at all, work through why your link preview is broken — the same {{ghost_head}} gap is often the culprit.
The takeaway
Ghost hands you Article schema and Open Graph tags for free through {{ghost_head}} — your job is to feed it good metadata, validate the output, and hand-add the FAQ or HowTo schema Ghost skips. The one input that breaks most often is the feature image: it must be a branded, correctly-sized, absolute-HTTPS card on every post. Generating that card automatically for every Ghost post — sized at 1200×630, branded, and never broken — is exactly what Social Card Studio and its one-line Ghost setup do.
Frequently asked questions
Does Ghost add Schema.org structured data automatically?
Yes. Every Ghost theme using the standard {{ghost_head}} helper outputs JSON-LD structured data — Article schema on posts, WebSite and Organization on the homepage, and BreadcrumbList for navigation. You don't write the markup; Ghost generates it from post metadata.
What's the difference between Schema.org and Open Graph in Ghost?
Open Graph tags (og:title, og:image) control how a link looks when shared on social platforms. Schema.org JSON-LD describes your content to search engines for rich results and AI Overviews. Ghost emits both from the same {{ghost_head}} helper, but they serve different audiences — social scrapers versus search crawlers.
How do I validate Ghost's structured data?
Paste your post URL into Google's Rich Results Test (search.google.com/test/rich-results) or the Schema Markup Validator (validator.schema.org). Both parse the live page and flag missing or invalid fields. Re-check after theme edits, since custom themes can drop the {{ghost_head}} output.
Can I add FAQ or HowTo schema to a Ghost post?
Yes, but not through the default editor. Add a JSON-LD script block via a post's code injection field or a custom HTML card. Ghost won't generate FAQPage or HowTo markup for you — only Article, WebSite, Organization, and BreadcrumbList come built in.