Bonsoir Jiti,
J'ai réalisé un plugin qui permet d'affiner le SEO pour Flatboard Pro (en cours de dev) et voilà ce q'u'il fait pour le moment :
Présentation
FlatSEO remplace la couche SEO native de Flatboard par une boîte à outils complète, pilotable entièrement depuis l'administration. Il fonctionne exclusivement via le système de hooks de Flatboard — aucun fichier template ni fichier cœur n'est modifié.
En un coup d'œil :
| Domaine | Ce que FlatSEO fait |
|---|
| Titres | Format global, surcharge accueil, gabarit par catégorie, surcharge par page |
| Meta | Contrôle de la description à chaque niveau |
| Réseaux sociaux | Open Graph, Twitter/X Cards, Facebook App ID |
| Données structurées | JSON-LD : WebSite, Organization, BreadcrumbList, DiscussionForumPosting, QAPage, ProfilePage |
| Sitemap | Sitemap XML multi-fichiers, invalidation automatique sur changement de contenu |
| Robots.txt | Éditeur complet en texte libre |
| Redirections | 301/302/307/308, support regex, compteur de clics |
| Analytics | Google Analytics 4, Google Tag Manager |
| Vérification | Google, Bing, Yandex, Pinterest |
| Indexation | Règles noindex pour recherche, profils, pages de tags |
| Audit | Score SEO automatisé sur toutes les discussions |
| Suivi positions | Historique manuel des positions par mot-clé avec graphique |
Référence des fonctionnalités
1. Gestion des titres
Admin → FlatSEO → Onglet Général
Contrôle la construction de la balise <title> pour les pages de discussion et les autres pages standard.
Formats disponibles :
| Format | Exemple de résultat |
|---|
{title} {sep} {site_name} | Ma Discussion \| Mon Forum |
{site_name} {sep} {title} | Mon Forum \| Ma Discussion |
{title} | Ma Discussion |
Séparateur — caractère(s) entre les deux parties. Courants : | - · ›
Ce format s'applique aux pages de discussion et à toute page qui ne dispose pas d'une surcharge plus spécifique (voir ci-dessous).
2. SEO de la page d'accueil
Admin → FlatSEO → Onglet Général → Section Page d'accueil
Permet de définir un titre et une description pour la page d'accueil qui sont totalement indépendants de la tagline du forum configurée dans les paramètres généraux.
| Champ | Rôle |
|---|
| Titre SEO de l'accueil | Texte libre. Remplace la tagline du forum dans la balise <title>. Optimal : 30–60 caractères. |
| Meta description de l'accueil | Texte libre. Apparaît dans les résultats Google. Optimal : 120–160 caractères. |
Exemple concret :
Tagline du forum (dans les paramètres) : "Le forum de l'association Machin"
Titre SEO de l'accueil : "Forum des passionnés de trucs et choses en Bretagne"
→ Google voit le second ; la tagline reste inchangée partout ailleurs.
Laissez les deux champs vides pour conserver le comportement par défaut (tagline comme titre, description du forum comme meta description).
3. Gabarits pour les catégories
Admin → FlatSEO → Onglet Général → Section Catégories
Applique un gabarit global à toutes les pages de catégorie automatiquement, sans qu'il soit nécessaire de configurer chaque catégorie individuellement.
Token disponible : {category} — remplacé au moment de l'affichage par le nom lisible de la catégorie.
| Champ | Valeur exemple | Résultat pour la catégorie "Photographie" |
|---|
| Gabarit de titre | Forum {category} — Discussions en Bretagne | Forum Photographie — Discussions en Bretagne |
| Gabarit de description | Rejoignez les passionnés bretons autour de {category}. Partagez et progressez. | Rejoignez les passionnés bretons autour de Photographie. Partagez et progressez. |
Priorité : Une surcharge par page (voir ci-dessous) est toujours prioritaire sur le gabarit global. Utilisez les gabarits pour le cas général, les surcharges pour les exceptions.
Laissez les deux champs vides pour utiliser le format de titre global (section 1) et la description native de la catégorie.
4. Surcharges par page
Admin → FlatSEO → Onglet Surcharges par page
Contrôle SEO complet pour n'importe quelle page individuelle : titre, description, URL canonique, image OG, titre/description sociaux, directive robots et mot-clé principal.
Mode d'emploi
- Saisissez la clé de page dans le champ de saisie et cliquez sur Charger.
- Modifiez les champs qui apparaissent.
- Cliquez sur Enregistrer la surcharge.
Format des clés de page
| Type de page | Format de clé | Exemple |
|---|
| Discussion | discussion:{id} | discussion:42 |
| Catégorie | category:{slug} | category:photographie |
| Page EasyPages | easypages:{slug} | easypages:a-propos |
| Page d'accueil | homepage | homepage |
| Profil utilisateur | user:{username} | user:alice |
| Résultats de recherche | search | search |
| Page de tag | tag:{slug} | tag:php |
Champs disponibles par page
| Champ | Description |
|---|
| Titre SEO | <title> personnalisé. Laissez vide pour utiliser le gabarit/défaut. Max 120 caractères. |
| Meta description | Balise description personnalisée. Optimal : 120–160 caractères. |
| URL canonique | Surcharge le lien canonique (utile pour le contenu dupliqué). |
| URL de l'image OG | Image personnalisée pour les aperçus Facebook/Twitter sur cette page. |
| Titre OG | Titre social, différent du titre SEO si nécessaire. |
| Description OG | Description sociale, différente de la meta description. |
| Robots | noindex, follow / index, nofollow / noindex, nofollow — surcharge par page. |
| Mot-clé principal | Mots-clés séparés par des virgules. Utilisés par l'analyseur de score SEO. |
Score SEO en direct
Cliquez sur Analyser le SEO après avoir renseigné les champs pour obtenir un score instantané (0–100) avec une note (A–F) et une liste de contrôles détaillée :
- Longueur du titre (optimal : 30–60 caractères)
- Longueur de la description (optimal : 120–160 caractères)
- Nombre de mots dans le contenu (optimal : 300+ mots)
- Mot-clé principal dans le titre
- Mot-clé principal dans la description
- Densité du mot-clé (optimal : 1–3 %)
- Attributs alt des images
5. Open Graph & cartes sociales
Admin → FlatSEO → Onglet Réseaux sociaux & OG
Contrôle l'affichage des pages lors d'un partage sur les réseaux sociaux.
Twitter / X Cards
| Paramètre | Options |
|---|
| Type de carte | summary_large_image (grande bannière, recommandé) / summary (miniature) |
| Pseudo Twitter | Pseudo Twitter/X de votre forum (sans @) |
Facebook
| Paramètre | Description |
|---|
| App ID Facebook | Active Facebook Insights pour votre domaine. À récupérer dans Meta for Developers. |
Profils sociaux
URLs enregistrées comme propriétés sameAs dans le schéma JSON-LD Organization. Réseaux supportés : Facebook, Twitter/X, LinkedIn, GitHub, YouTube, Instagram, Mastodon.
Image OG par défaut
Admin → FlatSEO → Onglet Général
Image de repli utilisée quand une page n'a pas d'image spécifique. Taille recommandée : 1200 × 630 px.
6. Données structurées — JSON-LD
Admin → FlatSEO → Onglet Schema / JSON-LD
Chaque type de schéma peut être activé ou désactivé indépendamment.
| Type de schéma | Pages | Ce qu'il fait |
|---|
| WebSite + SearchAction | Page d'accueil uniquement | Active le champ de recherche Google Sitelinks |
| Organization | Page d'accueil uniquement | Déclare votre forum comme organisation avec les liens sociaux (sameAs) |
| BreadcrumbList | Toutes les pages | Fil d'Ariane dans les résultats de recherche |
| DiscussionForumPosting | Pages de discussion | Marque les discussions comme contenu de forum pour les rich snippets |
| QAPage | Discussions avec une meilleure réponse | Schéma Q&A complet avec réponse acceptée |
| ProfilePage | Pages de profil utilisateur | Schéma Person/ProfilePage pour les profils membres |
Tous les schémas sont injectés dans <head> via le hook seo.meta.after.
7. Sitemap XML
Admin → FlatSEO → Onglet Sitemap
FlatSEO remplace la route native /sitemap.xml de Flatboard et génère un sitemap XML multi-fichiers.
Structure
| URL | Contenu |
|---|
/sitemap.xml | Index du sitemap listant tous les sous-sitemaps |
/sitemap-discussions.xml | Toutes les pages de discussion indexées |
/sitemap-categories.xml | Pages de catégorie |
/sitemap-pages.xml | Pages statiques EasyPages |
/sitemap-users.xml | Profils utilisateurs (optionnel) |
Configuration
| Paramètre | Description |
|---|
| Inclure les discussions | Active/désactive les discussions dans le sitemap |
| Inclure les catégories | Active/désactive les pages de catégorie |
| Inclure les tags | Active/désactive les pages de tags |
| Inclure EasyPages | Active/désactive les pages statiques (nécessite le plugin EasyPages) |
| Inclure les profils | Active/désactive les profils utilisateurs (désactivé par défaut) |
| Priorité des discussions | Défaut : 0.8 (0.0 – 1.0) |
| Priorité des catégories | Défaut : 0.6 |
| Fréquence de modification | always / hourly / daily / weekly / monthly / yearly / never |
Invalidation automatique
Le cache du sitemap est automatiquement vidé à chaque création, modification ou suppression d'une discussion. Un bouton Régénérer maintenant est également disponible manuellement.
8. Éditeur robots.txt
Admin → FlatSEO → Onglet Robots.txt
Éditeur texte complet pour votre fichier robots.txt. Les modifications sont enregistrées dans le répertoire de données du plugin et dans public/robots.txt pour l'accès direct par le serveur web.
Contenu par défaut généré par FlatSEO :
User-agent: *
Allow: /
# Zones sensibles
Disallow: /stockage/
Disallow: /app/
Disallow: /admin/
Disallow: /api/
Disallow: /uploads/temp/
# SEO — éviter le contenu dupliqué
Disallow: /search
# Sitemap
Sitemap: https://votresite.com/sitemap.xml
Un guide de référence rapide (directives courantes, noms de bots connus) est affiché à côté de l'éditeur.
9. Redirections
Admin → FlatSEO → Onglet Redirections
Créez et gérez des redirections d'URL sans toucher aux fichiers de configuration du serveur.
Créer une redirection
| Champ | Description |
|---|
| Chemin source | Chemin relatif ou motif regex à correspondre |
| Destination | Chemin cible ou URL complète |
| Code HTTP | 301 (permanent) / 302 (temporaire) / 307 / 308 |
| Regex ? | Active le traitement de la source comme expression régulière |
| Actif | Active ou met en pause la redirection sans la supprimer |
Support des expressions régulières
Quand le mode regex est activé, les références arrière ($1, $2…) peuvent être utilisées dans la destination :
Source : ^/ancienne-categorie/(.+)$
Destination : /c/$1
Compteur de clics
Chaque redirection compte le nombre de fois qu'elle a été déclenchée. Utile pour identifier les anciennes URLs encore actives.
10. Analytics & vérification
Admin → FlatSEO → Onglet Analytics
Google Analytics 4
Renseignez votre Measurement ID (G-XXXXXXXXXX) pour injecter automatiquement le snippet GA4 avant </body>.
Google Tag Manager
Renseignez votre Container ID (GTM-XXXXXXX). GTM est prioritaire sur GA4 — si les deux sont configurés, seul GTM est injecté.
Vérification des moteurs de recherche
| Service | Balise meta injectée |
|---|
| Google Search Console | <meta name="google-site-verification" …> |
| Bing Webmaster Tools | <meta name="msvalidate.01" …> |
| Yandex Webmaster | <meta name="yandex-verification" …> |
| Pinterest | <meta name="p:domain_verify" …> |
Toutes les balises de vérification sont injectées dans <head> via le hook seo.meta.after.
11. Règles noindex
Admin → FlatSEO → Onglet Avancé
Règles globales qui ajoutent automatiquement noindex, follow à des types de pages entiers. Les pages individuelles peuvent toujours surcharger ce comportement via un paramètre robots par page.
| Règle | Pages concernées | Défaut |
|---|
| Noindex pages de recherche | /search et toutes les URLs de recherche | ✅ Activé |
| Noindex profils utilisateurs | /user/* et /u/* | ❌ Désactivé |
| Noindex pages de tags | /tag/* et /tags/* | ❌ Désactivé |
12. Audit SEO
Admin → FlatSEO → Onglet Audit SEO
Analyse toutes les discussions et produit un score pour chacune d'elles.
Lancer un audit
Cliquez sur Lancer l'audit. FlatSEO récupère toutes les discussions, les analyse une par une et met les résultats en cache. Sur les forums importants (500+ discussions), cela peut prendre quelques secondes.
Système de notation
Chaque discussion est notée sur 100 et reçoit une note alphabétique :
| Note | Plage de score |
|---|
| A | 80 – 100 |
| B | 60 – 79 |
| C | 40 – 59 |
| D | 20 – 39 |
| F | 0 – 19 |
Contrôles effectués
- Longueur du titre (optimal : 30–60 caractères)
- Longueur de la meta description (optimal : 120–160 caractères)
- Nombre de mots dans le contenu (optimal : 300+ mots)
- Mot-clé principal présent dans le titre
- Mot-clé principal présent dans la description
- Densité du mot-clé dans le contenu (optimal : 1–3 %)
- Images avec attributs alt
- Statut noindex
- Présence de meta personnalisées
Tableau de bord récapitulatif
Le haut de la page d'audit affiche :
- Nombre total de discussions analysées
- Décompte des pages Bon / Correct / Faible / noindex
- Score moyen sur l'ensemble des discussions
Filtres
Filtrez les résultats par : Tous / Bon / Correct / Faible / noindex / Sans méta. Recherche textuelle par titre ou mot-clé.
Export
Téléchargez l'audit complet en CSV pour l'exploiter dans un tableur ou un outil de reporting.
Modification rapide
Chaque ligne dispose d'un bouton de modification qui ouvre le panneau de surcharge par page pré-rempli avec les données de cette discussion, permettant des corrections immédiates.
13. Suivi des positions
Admin → FlatSEO → Onglet Suivi des positions
Un tracker de positions léger et manuel. Le scraping automatisé des SERPs n'étant pas disponible, les positions sont enregistrées manuellement.
Ajouter un mot-clé
| Champ | Description |
|---|
| Mot-clé | Le terme de recherche à suivre. Séparez plusieurs mots-clés par une virgule pour les ajouter tous en une fois. |
| URL cible | Optionnel. La page spécifique que vous espérez voir classée pour ce mot-clé. |
| Moteur de recherche | Google / Bing / DuckDuckGo / Autre |
| Notes | Notes internes optionnelles |
Enregistrer une position
Cliquez sur le bouton + d'un mot-clé suivi, saisissez la position observée dans les résultats de recherche, sélectionnez la date et enregistrez. L'historique des positions est ajouté chronologiquement.
Graphique d'historique
Cliquez sur l'icône graphique pour afficher un graphique en courbe de l'historique des positions dans le temps. L'axe Y est inversé (position #1=haut=meilleur). Les points sont colorés : vert pour le top 3, bleu pour le top 10, jaune pour le top 30.
Badges de position
La position actuelle est affichée avec un badge coloré :
| Couleur | Plage |
|---|
| 🟢 Vert | Position 1–3 |
| 🔵 Bleu | Position 4–10 |
| 🟡 Jaune | Position 11–30 |
| ⚫ Gris | Position 31+ |
Règles de priorité
Quand plusieurs sources peuvent définir le titre ou la description d'une page, FlatSEO applique cet ordre de priorité strict :
1. Surcharge par page (la plus haute — gagne toujours)
2. Titre/description global de l'accueil (accueil uniquement)
3. Gabarit global de catégorie avec token {category} (pages de catégorie uniquement)
4. Format de titre global title_format (toutes les autres pages)
5. Défaut Flatboard (aucune intervention de FlatSEO)
La même cascade s'applique aux meta descriptions.
Référence des clés de page
| Motif d'URL | Clé | Type |
|---|
/ ou /forums | homepage | Page d'accueil |
/d/{id}-{slug} | discussion:{id} | Discussion |
/c/{slug} | category:{slug} | Catégorie |
/u/{username} | user:{username} | Profil utilisateur |
/page/{slug} | easypages:{slug} | EasyPages |
/search | search | Résultats de recherche |
/tag/{slug} | tag:{slug} | Page de tag |