# Ghost CMS blog link preview (link card) error

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:

```html
<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:

* [Facebook Debugger](https://developers.facebook.com/tools/debug/)
    
* [LinkedIn Post Inspector](https://www.linkedin.com/post-inspector/)
    
* [Twitter Card Validator (if using X.com)](https://cards-dev.twitter.com/validator)
    

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:

```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:

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

Or use online tools like:

* [Open Graph Checker](https://.opengraphcheck.com/)
    
* [Facebook Sharing Debugger](https://developers.facebook.com/tools/debug/)
    
* [Twitter Card Validator](https://cards-dev.twitter.com/validator)
    

### 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:

```bash
# 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.
