Contenu

Articles de blog

Les articles sont des fichiers .mdx dans le dossier content/blog/. Chaque fichier correspond à une page. Le nom du fichier devient automatiquement le slug de l'URL.

Créer un article

Créez un nouveau fichier dans content/blog/ et renseignez le frontmatter YAML en début de fichier :

content/blog/mon-article.mdx
---
title: "Titre de mon article"
description: "Résumé visible dans les cards et le SEO"
date: "2026-04-05"
category: "tutoriels"
tags: ["nextjs", "mdx"]
author: "Votre Nom"
published: true
---

Le contenu de l'article commence ici...

Champs du frontmatter

ChampRequisDescription
titleOuiTitre de l'article
descriptionOuiRésumé court — utilisé dans les cards et la balise meta
dateOuiDate de publication (format YYYY-MM-DD)
categoryOuiDoit correspondre à une catégorie dans site.config.ts
tagsOuiTableau de mots-clés
authorOuiNom de l'auteur
publishedOuitrue pour publier, false pour brouillon
imageNonImage de couverture — chemin depuis /public

Image de couverture

Ajoutez le champ optionnel image avec le chemin de l'image depuis le dossier public/ :

Frontmatter
image: "/images/mon-image.jpg"

Placez vos images dans public/images/. Le composant de card blog affichera automatiquement l'image si le champ est renseigné.

Brouillons

Mettez published: false pour passer un article en brouillon. Il sera exclu du build de production, de la liste des articles, du sitemap et du flux RSS — mais reste accessible en développement local.

Gérer les catégories

Les catégories disponibles sont définies dans site.config.ts :

site.config.ts
blog: {
  categories: ["tutoriels", "actualites", "guides"],
}
La catégorie d'un article doit correspondre exactement à une valeur de ce tableau. Un article avec une catégorie inconnue sera quand même affiché, mais ne sera pas filtrable depuis la page blog.

Optimisation pour les LLMs (GEO)

Le GEO (Generative Engine Optimization) est l'équivalent du SEO pour les moteurs d'IA — ChatGPT, Perplexity, Gemini. Ces systèmes fragmentent votre contenu en blocs sémantiques, les vectorisent, et citent les passages les plus directement extractibles. Voici comment structurer vos articles pour maximiser les citations.

Champ tldr

Ajoutez un champ tldr dans le frontmatter. Onyx affiche automatiquement un bloc “En résumé” en tête d'article — le premier élément lu et indexé par les crawlers RAG. Rédigez-le comme une réponse autonome : sans pronom vague, avec des chiffres précis, en une à trois phrases.

Frontmatter
tldr: "Next.js génère des pages statiques servies depuis un CDN. Résultat : TTFB sous 50ms, score Lighthouse 95-100, zéro base de données exposée. Déploiement gratuit sur Vercel."

Règles rédactionnelles

RèglePourquoi
Paragraphes de 40–60 motsLes LLMs fragmentent le texte en chunks — un paragraphe = un chunk extractible
Réponse en premierMettre la conclusion dans les 150 premiers mots, sans préambule ni historique
Éviter les pronoms vagues"Il", "cela", "cette solution" isolés d'un chunk rendent le fragment inutilisable
Titres H2/H3 interrogatifs"Pourquoi X ?" ou "Comment faire Y ?" — les LLMs les utilisent comme réponses directes
Données chiffréesPages avec 19+ points de données = 5,4x plus de citations (vs 2,8 sans données)
Mise à jour trimestrielleLa fraîcheur surpasse l'ancienneté dans les LLMs — rafraîchir les stats relance les citations de 15–20 %
Onyx génère automatiquement un fichier llms.txt à la racine du site (accessible sur /llms.txt) et autorise explicitement tous les crawlers IA majeurs dans robots.txt — GPTBot, ClaudeBot, PerplexityBot, Google-Extended. Le JSON-LD FAQPage est déjà injecté sur la page d'accueil. Ces signaux techniques sont en place par défaut ; la qualité rédactionnelle reste votre levier principal.

Commentaires

Onyx ne gère pas les commentaires nativement — c'est un choix délibéré. Stocker des commentaires requiert une base de données, de la modération et des considérations RGPD. Si vous en avez besoin, voici les options recommandées selon votre cas.

Option recommandée : Giscus

Giscus utilise les GitHub Discussions comme backend. Zéro base de données, zéro cookie par défaut, open source, dark mode natif. Idéal pour un site technique dont l'audience a un compte GitHub.

Terminal
# 1. Activez GitHub Discussions sur votre repo
# 2. Installez l'app Giscus : https://github.com/apps/giscus
# 3. Générez votre config : https://giscus.app

npm install @giscus/react
src/components/blog/comments.tsx
"use client";

import Giscus from "@giscus/react";
import { useTheme } from "next-themes";

export function Comments() {
  const { resolvedTheme } = useTheme();

  return (
    <Giscus
      repo="votre-user/votre-repo"
      repoId="R_votre_repo_id"
      category="Comments"
      categoryId="DIC_votre_category_id"
      mapping="pathname"
      theme={resolvedTheme === "dark" ? "dark" : "light"}
      lang="fr"
    />
  );
}

Intégrez ensuite le composant dans src/app/blog/[slug]/page.tsx, après le contenu de l'article.

Autres options

SolutionBackendCookiesNotes
GiscusGitHub DiscussionsNonRecommandé — open source, dark mode
UtterancesGitHub IssuesNonPlus simple que Giscus, moins de fonctionnalités
DisqusServeurs DisqusOuiDéconseillé — lourd, publicités, RGPD
CusdisSelf-hosted / cloudNonLéger, privacy-first, interface admin
Quelle que soit la solution choisie, si elle dépose des cookies, elle doit être bloquée jusqu'au consentement RGPD. Le cookie banner d'Onyx gère déjà Google Analytics — étendez le même mécanisme pour les commentaires si nécessaire.

Flux RSS

Un flux RSS est généré automatiquement à l'adresse /flux.xml. Il inclut tous les articles publiés, ordonnés par date décroissante. Aucune configuration nécessaire.