Ghost SEO Settings — Meta Titles, Descriptions, Canonical URLs and Structured Data
In this tutorial, you'll learn how to configure SEO settings in Ghost — setting meta titles and descriptions per post, managing canonical URLs, understanding Ghost's built-in structured data, and optimizing content for search engines without plugins.
What You'll Learn
- Ghost's built-in SEO features vs plugin-based SEO in WordPress
- Setting meta titles and meta descriptions per post/page
- Configuring canonical URLs for syndicated content
- Ghost's automatic JSON-LD structured data
- Open Graph and Twitter card settings
- SEO settings in the admin dashboard
- Bulk SEO management strategies
- Using the SEO activity bar in the editor
- Best practices for Ghost SEO
Why It Matters
Search engines are the primary source of traffic for most content sites. Ghost has excellent built-in SEO features — you do not need a plugin like Yoast or Rank Math. But you must use them correctly. An empty meta description is a missed opportunity to rank. A missing canonical URL can cause duplicate content penalties. Ghost does the heavy lifting (clean URLs, structured data, sitemaps), but the metadata decisions are yours.
Real-World Use
A food blog publishes recipes twice a week. Each post gets a custom meta title ("Easy Vegan Pasta Recipe — 20-Minute Meal") and a meta description ("This quick vegan pasta recipe takes just 20 minutes and uses pantry staples. Perfect for busy weeknights."). The blog uses canonical URLs when recipes are syndicated on other platforms. Open Graph images are set per post for attractive social sharing previews. Result: 60% of traffic comes from organic search.
Learning Path
flowchart LR A["Headless Ghost"] --> B["SEO Settings
You are here"]:::current B --> C["Sitemaps & Robots"] C --> D["Structured Data"] classDef current fill:#38bdf8,color:#0f172a,stroke-width:2px
Ghost's Built-in SEO
Ghost handles many SEO fundamentals automatically:
| SEO Feature | Ghost Handling |
|---|---|
| Clean URLs | Automatic — /post-slug/ format |
| Meta tags | Auto-generated from title + excerpt |
| JSON-LD structured data | Automatic for articles and pages |
| XML sitemap | Automatic at /sitemap.xml |
| robots.txt | Automatic at /robots.txt |
| Canonical URLs | Set per post (optional) |
| Noindex for tags/pages | Configurable in code injection |
| Responsive design | Theme-dependent |
| Page speed | Server-rendered, minimal JavaScript |
What Ghost does NOT do automatically:
- Meta descriptions (you must write them)
- Custom meta titles (you can override)
- Keyword research
- Backlink building
- Content Strategy
Per-Post SEO Settings
Each post in Ghost has a settings panel with SEO options.
Accessing SEO Settings
- Open a post in the editor.
- Click the settings icon (gear) in the top right.
- Scroll to the "SEO" section.
Meta Title
Meta Title: Custom title for search results
Default: Post title
Recommended length: 50-60 characters
The meta title appears in search result snippets and browser tabs. If you do not set one, Ghost uses the post title.
Best practices:
- Put the primary keyword near the beginning
- Keep it under 60 characters (Google truncates longer titles)
- Make it compelling — it is the first thing searchers see
- Include your brand name at the end (e.g., " — My Blog")
Meta Description
Meta Description: Custom description for search snippets
Default: Auto-generated from excerpt or first paragraph
Recommended length: 150-160 characters
The meta description is a short summary that appears below the title in search results.
Best practices:
- Write a complete sentence that summarizes the content
- Include the primary keyword naturally
- Include a call to action ("Learn how", "Discover", "Read more")
- Match the searcher's intent
- Do not just repeat the first paragraph
Canonical URLs
A canonical URL tells search engines which version of a post is the original. Use it when content appears on multiple URLs or platforms.
When to Use Canonical URLs
- Syndicated content: You publish on Medium and your own site — set the canonical to your site
- Cross-posting: Same content on Ghost and a partner site
- Printer-friendly versions: If you have a separate print URL
- Multiple domains: If content appears on multiple domains
Setting Canonical URL
In the post SEO settings:
Canonical URL: https://example.com/original-post-url/
If the canonical URL is different from the post URL, Ghost adds a <link rel="canonical"> tag pointing to the original source.
Structured Data (JSON-LD)
Ghost automatically generates JSON-LD structured data for every post and page.
Article Schema
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Post Title",
"description": "Post excerpt or meta description",
"image": "https://yoursite.com/feature-image.jpg",
"datePublished": "2024-01-15T10:00:00.000Z",
"dateModified": "2024-01-20T14:30:00.000Z",
"author": {
"@type": "Person",
"name": "Author Name"
},
"publisher": {
"@type": "Organization",
"name": "Site Name",
"logo": {
"@type": "ImageObject",
"url": "https://yoursite.com/logo.png"
}
}
}
</script>
This structured data helps search engines understand your content and enables rich results in search.
Open Graph and Social Sharing
Ghost automatically generates Open Graph tags for Facebook and Twitter Cards.
Default Open Graph
Ghost generates these automatically from the post title, excerpt, and feature image:
<meta property="og:title" content="Post Title" />
<meta property="og:description" content="Post excerpt" />
<meta property="og:image" content="https://yoursite.com/feature-image.jpg" />
<meta property="og:url" content="https://yoursite.com/post-slug/" />
<meta property="og:type" content="article" />
Custom Social Images
Override the defaults in the post SEO settings:
Facebook Title: Custom Open Graph title
Facebook Description: Custom Open Graph description
Facebook Image: Custom image for Facebook shares
Twitter Title: Custom Twitter Card title
Twitter Description: Custom Twitter Card description
Twitter Image: Custom image for Twitter shares
Custom social images are important because:
- The feature image may not be square (Twitter uses 2:1, Facebook uses 1.91:1)
- You may want different text overlay on social images
- The post title may be too long for social snippets
SEO Activity Bar
In the Ghost editor, an SEO activity bar shows live previews of how your post appears in search results and social shares.
Search Engine Preview
Shows the title, URL, and description as they would appear in Google search results:
Post Title — Site Name
https://yoursite.com/post-slug/
Post description or meta description text...
Social Share Previews
Shows how the post appears when shared on Facebook and Twitter.
The activity bar updates in real time as you edit the SEO settings, helping you optimize before publishing.
Site-Level SEO Settings
In Settings > General:
Title and Description
Site Title: My Blog
Site Description: A blog about technology and programming
The site title appears in:
- Browser tab title (combined with page title)
- Default OG site name
- Search results for the homepage
- RSS feed title
Publication Language
Publication Language: en
Set this to your content's language code (en, es, fr, de, etc.). This helps search engines serve your content to the right audience.
SEO Best Practices for Ghost
Content Structure
- Use descriptive, keyword-rich titles
- Write unique meta descriptions for every post
- Use headings (H2, H3) to structure content
- Include internal links to related posts
- Optimize images with alt text and descriptive filenames
URL Structure
- Keep URLs short and descriptive
- Use hyphens between words
- Avoid dates in URLs (they become outdated)
- Ghost's default /slug/ format is excellent
Image SEO
- Use descriptive filenames (not IMG_1234.jpg)
- Set alt text on every image
- Optimize image file sizes
- Use WebP format when possible
Common Mistakes
Not setting meta descriptions: Ghost auto-generates descriptions from the excerpt or first paragraph. But auto-generated descriptions are rarely optimized. Always write a custom meta description for every post.
Using the same meta description on all posts: Each post needs a unique meta description. Duplicate descriptions confuse search engines and reduce click-through rates.
Ignoring Open Graph images: Without custom social images, shares look generic. You can set per-post social images that differ from the feature image.
Setting overly long meta titles: Titles over 60 characters get truncated in search results. Keep them concise. Put the most important information (and keyword) in the first 50 characters.
Forgetting about featured images and SEO: The feature image is used as the Open Graph image by default. If your feature image is not suitable for social sharing (wrong aspect ratio, contains text that will be cropped), set a custom social image.
Practice Questions
What SEO metadata does Ghost generate automatically? Answer: Ghost automatically generates clean URLs, meta titles (from post title), JSON-LD structured data (Article schema), Open Graph tags (from post title, excerpt, feature image), Twitter Cards, XML sitemaps, and robots.txt. Meta descriptions are auto-generated from the excerpt but should be customized.
When would you use a canonical URL in Ghost? Answer: Use a canonical URL when content is syndicated on other platforms (like Medium) to tell search engines which version is the original. Also use it if the same content appears on multiple URLs or if you cross-post to partner sites.
What is the recommended length for meta titles and descriptions? Answer: Meta titles should be 50-60 characters. Meta descriptions should be 150-160 characters. Longer content is truncated in search results. The primary keyword should appear near the beginning of the title.
Challenge: Audit the SEO settings of a Ghost site. Review 10 posts and check: every post has a unique meta title and meta description, canonical URLs are correctly set, Open Graph images are optimized for social sharing, and JSON-LD structured data is valid. Report the issues you find and fix them.
FAQ
Mini Project
Your task: Perform a complete SEO audit and optimization of a Ghost site.
- Review every post on the site and ensure each has a unique meta title and meta description.
- Check that all images have descriptive alt text.
- Verify canonical URLs are set for syndicated content.
- Test Open Graph previews for the 5 most important posts using the Facebook Sharing Debugger.
- Validate JSON-LD structured data using Google's Rich Results Test.
- Check the sitemap at /sitemap.xml and ensure all pages are listed.
- Document all issues found and create an SEO optimization checklist.
This exercise gives you a repeatable SEO audit Process for any Ghost site.
What's Next
Now that SEO settings are configured, learn about sitemaps and robots:
Continue to Lesson 31: Sitemaps and Robots — Built-in sitemap, robots.txt, and crawler control.
Related lessons:
- Structured Data — JSON-LD and schema markup
- Performance Optimization — Cache and CDN setup
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro