Le SEO d’un blog technique repose d’abord sur la structure: balises propres, contenus utiles et URLs stables.
On va implémenter un socle SEO qui tient en production sans complexité inutile.
Objectif d’apprentissage
Mettre en place un SEO technique robuste article par article, sans sur-optimisation marketing.
Ce que tu vas pratiquer aujourd’hui
- Meta
titleetdescriptiondynamiques. - Balise
canonicalpropre. - Open Graph et Twitter Cards.
- JSON-LD
Articlecôté Twig.
1. Préparer les données SEO dans le controller
Construis un petit tableau SEO plutôt que de disperser la logique dans plusieurs templates.
Cela rend la maintenance plus simple.
$seo = [
'title' => $post->getSeoTitle() ?: $post->getTitle(),
'description' => $post->getMetaDescription() ?: $post->getExcerpt(),
'canonical' => $request->getUri(),
'ogTitle' => $post->getOgTitle() ?: $post->getTitle(),
'ogDescription' => $post->getOgDescription() ?: $post->getExcerpt(),
];
2. Rendre les balises meta dans Twig
Centralise les balises dans le layout pour éviter les oublis.
Évite les titres dupliqués ou vides.
<title>{{ seo.title }}</title>
<meta name="description" content="{{ seo.description }}">
<link rel="canonical" href="{{ seo.canonical }}">
<meta property="og:title" content="{{ seo.ogTitle }}">
<meta property="og:description" content="{{ seo.ogDescription }}">
<meta property="og:type" content="article">
<meta name="twitter:card" content="summary_large_image">
3. Ajouter un JSON-LD Article minimal
Le JSON-LD aide les moteurs à comprendre le contexte de l’article.
Garde un schéma simple, propre et valide.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "{{ post.title|e('js') }}",
"datePublished": "{{ post.publishedAt ? post.publishedAt|date('c') : '' }}",
"author": {"@type": "Person", "name": "{{ post.authorName|e('js') }}"}
}
</script>
Checklist de fin de session
- Title et description dynamiques.
- Canonical présent.
- Open Graph présent.
- JSON-LD article valide.
Erreurs fréquentes à éviter
- Sauter la vérification finale parce que “ça marche chez moi”.
- Mélanger trop de logique dans le
controllerau lieu de garder un flux clair. - Oublier la cohérence entre la donnée, le
templateTwig et le comportement en production.
Pourquoi cette étape compte en conditions réelles
Dans un vrai projet client, chaque étape technique doit rester compréhensible par l’équipe, duplicable sur un autre environnement et fiable dans le temps. Ici, l’objectif est de transformer la théorie en un flux de travail concret, avec des décisions simples que tu peux défendre en revue de code.
Si tu appliques sérieusement les points du jour (meta title et description dynamiques.), tu réduis la dette technique dès le départ et tu facilites la suite: SEO, publication, maintenance et déploiement. C’est exactement la différence entre un blog “démo” et un blog exploitable en production.
Mini plan de révision
- Reprends ce point et explique-le à voix haute comme si tu faisais un
code review: Metatitleetdescriptiondynamiques. - Reprends ce point et explique-le à voix haute comme si tu faisais un
code review: Balisecanonicalpropre. - Reprends ce point et explique-le à voix haute comme si tu faisais un
code review: Open Graph et Twitter Cards.
Exercice rapide
Ajoute une meta robots conditionnelle noindex pour les brouillons preview.
Et demain ?
Demain, on accélère le blog avec cache, images optimisées et bonnes pratiques Core Web Vitals.