Ghost CMS blog link preview (link card) error

Erik ChenErik Chen
5 min read

If your Ghost CMS blog link preview (link card) is no longer generating properly (e.g., on Slack, LINE, Discord, Facebook, etc.), it usually means something is broken with the Open Graph / meta tags that Ghost uses to create rich previews. Here’s a quick checklist to diagnose and fix the issue:


✅ 1. Check Open Graph Tags

Ghost automatically adds OG tags like:

<meta property="og:title" content="Your Post Title">
<meta property="og:description" content="Your excerpt or custom meta description">
<meta property="og:image" content="https://yourdomain.com/path-to-image.jpg">
<meta property="og:url" content="https://yourdomain.com/post-url">

👉 Test your blog URL in an Open Graph debugger:

If these tools return errors like Missing og:image or Can't fetch URL, then Ghost isn't outputting the correct metadata.


✅ 2. Check Post Settings in Ghost

When editing your post in Ghost Admin:

  • Make sure meta title, meta description, and feature image are all filled.

  • Feature image = og:image


✅ 3. Check Your Blog URL Setup

If you recently changed your domain or custom domain setup (e.g. from blog.neteon.ai to neteon.ai/blog), then:

  • OG og:url could be mismatched

  • Canonical URLs might be broken

  • Preview generators can't find the correct metadata

👉 Make sure the site.url in Ghost config (config.production.json) is updated to match your live domain.


✅ 4. Verify Image Accessibility

Link previews won’t render if the image URL:

  • Is behind authentication

  • Is on a non-https domain

  • Uses a broken CDN URL

Use a direct link to the image and test if it loads in incognito mode or curl.


✅ 5. Check Your CDN / Caching Layer

If you're using Cloudflare, Netlify, or other reverse proxies:

  • Clear the cache

  • Disable bot blocking (which can block link preview crawlers)


✅ 6. Force Metadata Refresh

After fixing metadata, force preview refresh via:

  • Facebook Debugger → Click “Scrape Again”

  • LinkedIn Inspector → Reanalyze


Example Fix for config.production.json:

{
  "url": "https://neteon.ai/blog",
  ...
}

Then restart Ghost with ghost restart


Method 2

Most Likely Causes & Solutions

1. Cloudflare SSL/TLS Mode

This is often the primary culprit when link previews suddenly stop working:

  • Check your SSL/TLS mode: Go to your Cloudflare dashboard → SSL/TLS → Overview

  • Recommended setting: Change to "Full (strict)" mode if you have a valid SSL certificate on your origin server

  • Alternative: If you don't have an SSL certificate on your server, use "Full" mode

  • Avoid: "Flexible" mode can cause issues with link previews as it creates a mixed content situation

2. Cloudflare Firewall Rules

Cloudflare's firewall might be blocking the requests that platforms use to generate link previews:

  • Go to Cloudflare Dashboard → Security → WAF

  • Check if any firewall rules are blocking user agents commonly used by social media platforms

  • Look for blocks on requests without referers or from specific IP ranges

  • Temporarily disable security features to test if this resolves the issue

3. Open Graph Tags Verification

First, let's verify that your Ghost blog still has the necessary meta tags:

curl -I https://yourblog.com/post-slug

Or use online tools like:

4. Cloudflare Caching Issues

Cloudflare's cache might be serving old versions without proper meta tags:

  • Clear Cloudflare cache: Go to Caching → Configuration → Purge Cache → Purge Everything

  • Check cache rules: Ensure your HTML pages aren't being cached for too long

  • Bypass cache: Add ?cf_clear=1 to your URL when testing

Additional Troubleshooting Steps

5. Ghost CMS Theme Issues

Your theme might have been updated or modified:

  • Switch to a default Ghost theme temporarily to test

  • Check your current theme's default.hbs file for Open Graph tags

  • Ensure your theme includes the Ghost {{ghost_head}} helper

6. DNS and Proxy Settings

Verify your DNS and proxy configuration:

  • Ensure your DNS records are properly configured (A/AAAA or CNAME)

  • Check that the proxy status (orange cloud) is enabled for your domain

  • Verify there are no recent DNS changes

7. Server-Side Checks

Investigate potential server issues:

  • Check your server error logs for any issues

  • Verify your SSL certificate is valid and not expired

  • Ensure your server isn't blocking requests from social media platforms

8. Test with Different Platforms

Test your links across different platforms to see if it's platform-specific:

  • Facebook

  • Twitter/X

  • LinkedIn

  • Discord

  • Slack

Quick Diagnostic Commands

Run these commands to diagnose potential issues:

# Check HTTP headers and response
curl -I https://yourblog.com/post-slug

# Check if Open Graph tags are present
curl -s https://yourblog.com/post-slug | grep -i og:

# Test with different user agents
curl -A "facebookexternalhit/1.1" -I https://yourblog.com/post-slug
curl -A "Twitterbot" -I https://yourblog.com/post-slug

If All Else Fails

If none of these solutions work, consider:

  1. Temporarily pause Cloudflare: Point your DNS directly to your server to isolate if Cloudflare is the issue

  2. Check Ghost CMS version: Ensure you're running a recent, stable version

  3. Contact Ghost support: They may have insights into recent changes

  4. Review recent changes: Think about any updates or changes made around the time the issue started

The most common solution is usually adjusting the Cloudflare SSL/TLS mode or clearing the cache. Start with those steps and work your way through the list. Would you like me to elaborate on any specific part of this troubleshooting process?


Let me know if you want me to test a link for you, or if you changed domains recently — I can help pinpoint what’s broken.

0
Subscribe to my newsletter

Read articles from Erik Chen directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Erik Chen
Erik Chen