Le partage LinkedIn ne montre pas l'image de l'article, alors que Facebook fonctionne correctement.
LinkedIn est très strict sur les métadonnées Open Graph :
<!-- ❌ NE FONCTIONNE PAS -->
<meta property="og:image" content="/static/image.jpg">
<!-- ✅ FONCTIONNE -->
<meta property="og:image" content="https://www.duhaz.fr/static/image.jpg">
<meta property="og:title" content="Titre de l'article">
<meta property="og:description" content="Description...">
<meta property="og:image" content="https://www.duhaz.fr/image.jpg">
<meta property="og:url" content="https://www.duhaz.fr/article">
<meta property="og:type" content="article">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Description de l'image">
<meta property="og:image:type" content="image/jpeg">
Démarrez votre serveur :
cd /Users/duhaz/projets/blog-duhaz
./start.sh
Ouvrez un article dans votre navigateur
Faites clic droit → Afficher le code source
Recherchez les balises <meta property="og: et vérifiez :
og:image contient une URL complète commençant par https://LinkedIn fournit un outil de débogage : https://www.linkedin.com/post-inspector/
Symptôme : LinkedIn affiche un texte mais pas d'image
Solution : Assurez-vous que vos images font au moins 1200x630 pixels
Dans votre admin Django, lors de l'ajout d'une image (b_description_img), utilisez des images qui respectent ces dimensions.
Symptôme : L'image ne s'affiche nulle part
Vérification dans le code :
# Dans /blog/seo_helpers.py, ligne ~40
def get_image_url(self, image_field):
if not image_field:
return self.default_image
# Vérifie si l'URL est déjà absolue
if image_field.startswith(('http://', 'https://')):
return image_field
# Sinon, construire l'URL absolue
if image_field.startswith('/'):
return f"{self.site_url}{image_field}"
else:
return f"{self.site_url}/{image_field}"
✅ Votre code est correct, il transforme déjà les URLs relatives en absolues.
Symptôme : Vous avez corrigé mais LinkedIn montre toujours l'ancienne version
Solution : LinkedIn met en cache les métadonnées. Utilisez l'outil Post Inspector pour forcer la mise à jour :
Actuellement, votre code ne spécifie pas le type MIME de l'image. Ajoutons-le :
/blog/seo_helpers.pyLigne ~85, dans la fonction get_blog_metadata(), ajoutez :
# Open Graph (Facebook)
'og': {
'type': 'article',
'title': article.b_titre,
'description': description,
'url': article_url,
'image': image_url,
'image_alt': image_alt,
'image_width': '1200',
'image_height': '630',
'image_type': 'image/jpeg', # ← AJOUTER CETTE LIGNE
'site_name': self.site_name,
'locale': 'fr_FR',
# ... reste du code
},
/blog/templates/read.htmlLigne ~27, ajoutez :
<meta property="og:image" content="{{ page.seo.og.image }}">
<meta property="og:image:alt" content="{{ page.seo.image_alt }}">
<meta property="og:image:width" content="{{ page.seo.og.image_width }}">
<meta property="og:image:height" content="{{ page.seo.og.image_height }}">
<meta property="og:image:type" content="{{ page.seo.og.image_type }}"> <!-- AJOUTER -->
<meta property="og:site_name" content="{{ page.seo.og.site_name }}">
Avant de partager sur LinkedIn :
Créez ce script pour tester vos métadonnées :
# test_og_meta.py
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'duhaz_blog.settings')
django.setup()
from blog.models import Blog
from blog.seo_helpers import SEOMetadata
from django.test import RequestFactory
# Créer une fausse requête
factory = RequestFactory()
request = factory.get('/')
# Récupérer un article
article = Blog.objects.filter(b_publier=True).first()
if article:
# Générer les métadonnées
seo_helper = SEOMetadata(request, article)
metadata = seo_helper.get_blog_metadata(article)
print("=" * 60)
print("MÉTADONNÉES OPEN GRAPH")
print("=" * 60)
print(f"Titre: {metadata['og']['title']}")
print(f"Description: {metadata['og']['description']}")
print(f"URL: {metadata['og']['url']}")
print(f"Image: {metadata['og']['image']}")
print(f"Dimensions: {metadata['og']['image_width']}x{metadata['og']['image_height']}")
print("=" * 60)
# Vérifications
print("\nVÉRIFICATIONS:")
# URL absolue
if metadata['og']['image'].startswith('https://'):
print("✅ Image URL est absolue")
else:
print("❌ Image URL doit être absolue (https://)")
# Dimensions
if int(metadata['og']['image_width']) >= 1200:
print("✅ Largeur suffisante pour LinkedIn")
else:
print(f"❌ Largeur insuffisante: {metadata['og']['image_width']}px (minimum 1200px)")
if int(metadata['og']['image_height']) >= 627:
print("✅ Hauteur suffisante pour LinkedIn")
else:
print(f"❌ Hauteur insuffisante: {metadata['og']['image_height']}px (minimum 627px)")
else:
print("Aucun article publié trouvé")
Exécutez-le :
cd /Users/duhaz/projets/blog-duhaz
source venv/bin/activate
python test_og_meta.py
Si vous voulez corriger immédiatement :
Prochaine étape : Testez avec LinkedIn Post Inspector et dites-moi ce qu'il affiche ! 🎯