---
title: Optimisation SEO
description: Contrôlez les titres, descriptions et balises méta pour les moteurs de recherche et les aperçus sociaux. Jamdesk génère automatiquement les sitemaps et les images Open Graph.
---

Optimisez votre documentation pour les moteurs de recherche et les aperçus sociaux en définissant les titres, descriptions et métadonnées dans le frontmatter.

## Ce que Jamdesk fait automatiquement

<Columns cols={3}>
  <Card title="Balises méta" icon="tags">
    Le titre et la description du frontmatter deviennent des balises méta.
  </Card>
  <Card title="Open Graph" icon="share">
    Des images de partage social sont générées pour chaque page.
  </Card>
  <Card title="Sitemap & Robots" icon="sitemap">
    Le sitemap XML et le fichier robots.txt sont générés à chaque build.
  </Card>
  <Card title="JSON-LD" icon="code">
    Des données structurées Schema.org sont ajoutées à chaque page pour les résultats enrichis.
  </Card>
  <Card title="IndexNow" icon="bolt">
    Les URL modifiées sont soumises aux moteurs de recherche après chaque build.
  </Card>
  <Card title="Endpoints IA" icon="robot" href="/fr/ai/overview">
    `llms.txt` et serveur MCP pour que les outils IA puissent lire votre documentation.
  </Card>
</Columns>

## Optimiser votre contenu

### Rédiger un frontmatter efficace

```yaml
---
title: User Authentication    # Under 60 characters
description: Set up OAuth, JWT, and session-based authentication  # 120-160 characters
---
```

<Tip>
**Placez les mots-clés en début de titre.** « Configuration de l'authentification » est préférable à « Comment configurer l'authentification. »
</Tip>

### Titres de page

- Limitez-les à 60 caractères pour éviter la troncature dans les résultats de recherche
- Incluez votre mot-clé principal en début de titre
- Rendez chaque titre unique dans toute votre documentation

### Descriptions

- Visez 120 à 160 caractères
- Résumez ce que le lecteur va apprendre
- Intégrez les mots-clés pertinents de façon naturelle

<Note>
**Fallback auto-généré.** Lorsque `description` est absent du frontmatter, Jamdesk extrait automatiquement le premier paragraphe de prose du contenu de la page (jusqu'à 155 caractères). Les titres, blocs de code, images et composants MDX sont ignorés. Ce texte est utilisé pour `<meta name="description">`, Open Graph et les cartes Twitter. Il est tout de même recommandé de rédiger une description explicite pour de meilleurs résultats.
</Note>

## Contrôler l'indexation

### Paramètres globaux du site

Dans votre `docs.json`, configurez le comportement par défaut des robots :

```json docs.json
{
  "seo": {
    "metatags": {
      "robots": "index, follow"
    }
  }
}
```

### Contrôle par page

Remplacez l'indexation pour des pages spécifiques dans le frontmatter :

```yaml
---
title: Internal Notes
noindex: true
---
```

Utilisez `noindex` pour :
- Les pages en brouillon ou en cours de rédaction
- La documentation interne
- Le contenu obsolète que vous conservez à titre de référence

## URL canoniques

Si votre documentation est accessible via plusieurs URL, définissez une URL canonique :

```yaml
---
title: Getting Started
canonical: https://docs.example.com/getting-started
---
```

Vous pouvez également définir une base canonique globale dans `docs.json`. Jamdesk y ajoute le chemin de chaque page, ce qui donne une URL canonique correcte par page :

```json docs.json
{
  "seo": {
    "metatags": {
      "canonical": "https://docs.acme.com"
    }
  }
}
```

## Aperçus sociaux & Open Graph

Jamdesk génère automatiquement une carte sociale 1200×630 pour chaque page. Vous pouvez remplacer n'importe quelle balise sociale dans le frontmatter, en utilisant des **clés plates de premier niveau** ou un bloc **`seo:`** imbriqué. Les deux fonctionnent ; si la même clé est définie des deux façons, la valeur plate de premier niveau prend la priorité.

<CodeGroup>
```yaml Flat (top-level)
---
title: API Reference
description: REST API endpoints and authentication
"og:title": API Reference — Acme
"og:description": Everything you need to call the Acme API
"og:image": /images/api-social-card.png
"twitter:card": summary_large_image
"twitter:creator": "@acme"
keywords: ["api", "rest", "authentication"]
canonical: https://docs.acme.com/api-reference
---
```

```yaml Nested (seo block)
---
title: API Reference
description: REST API endpoints and authentication
seo:
  "og:title": API Reference — Acme
  "og:image": /images/api-social-card.png
  "twitter:card": summary_large_image
  x-custom-tag: any custom meta value
---
```
</CodeGroup>

### Balises prises en charge

| Groupe | Balises |
|--------|---------|
| Open Graph | `og:title`, `og:description`, `og:image`, `og:image:width`, `og:image:height`, `og:image:alt`, `og:url`, `og:type`, `og:site_name`, `og:locale`, `og:video`, `og:audio` |
| Article | `og:type: article` avec `article:published_time`, `article:modified_time`, `article:author`, `article:section`, `article:tag` |
| Twitter / X | `twitter:card`, `twitter:title`, `twitter:description`, `twitter:image`, `twitter:image:alt`, `twitter:site`, `twitter:creator`, `twitter:player`, balises app-card |
| Autres | `keywords`, `author`, `robots`, `googlebot`, `google-site-verification`, `theme-color`, ainsi que toute balise personnalisée (placez les balises personnalisées sous `seo:`) |

<Note>
**Dimensions d'image OG personnalisée.** Lorsque vous définissez un `og:image` personnalisé, ajoutez également `og:image:width`
et `og:image:height` pour que les robots d'exploration l'affichent correctement. La carte auto-générée est toujours
1200×630.
</Note>

<Note>
**Balises personnalisées.** Les balises méta arbitraires (ex. `x-pinterest`) sont émises en `<meta name="...">`.
Placez-les sous le bloc `seo:`. Seules les clés SEO reconnues sont prises en compte lorsqu'elles sont placées à plat.
</Note>

### Image par défaut à l'échelle du site

Définissez une image sociale de secours pour toutes les pages dans `docs.json`. Toute page qui définit son propre `og:image` remplace cette valeur :

```json docs.json
{
  "seo": {
    "metatags": {
      "og:image": "https://docs.acme.com/images/default-card.png"
    }
  }
}
```

<Tip>
**Prévisualisez avant de publier.** Après un build, collez l'URL de la page dans un outil de preview Open Graph (comme [opengraph.xyz](https://www.opengraph.xyz)) pour vérifier le rendu de la carte sur chaque plateforme.
</Tip>

## Sitemap & Robots.txt

Chaque site Jamdesk génère automatiquement `sitemap.xml` et `robots.txt` à chaque build.

| Fichier | Rôle |
|---------|------|
| `sitemap.xml` | Répertorie toutes les pages avec leur date de dernière modification pour les moteurs de recherche |
| `robots.txt` | Autorise tous les robots et les redirige vers le sitemap |

### Où les trouver

Les URL dépendent de si votre documentation se trouve à la racine d'un domaine ou sous un sous-chemin `/docs` :

<Tabs>
  <Tab title="Domaine racine">
    Si votre documentation est à la racine de votre domaine (ex. `docs.acme.com` ou `acme.jamdesk.app`) :

    ```bash
    https://docs.acme.com/sitemap.xml
    https://docs.acme.com/robots.txt
    ```
  </Tab>
  <Tab title="Sous-chemin /docs">
    Si votre documentation est sous `/docs` sur votre site principal (comme ce site sur `jamdesk.com/docs`) :

    ```bash
    https://jamdesk.com/docs/sitemap.xml
    https://jamdesk.com/docs/robots.txt
    ```
  </Tab>
</Tabs>

### Contenu du sitemap

- Toutes les pages publiées (à l'exclusion de celles avec le frontmatter `noindex` ou `hidden`)
- Les dates de dernière modification issues du frontmatter lorsqu'elles sont disponibles
- Fréquence de modification hebdomadaire

### Exclure des pages du sitemap

Ajoutez `noindex` dans le frontmatter pour exclure une page à la fois du sitemap et des moteurs de recherche :

```yaml
---
title: Internal Notes
noindex: true
---
```

Les pages avec `hidden: true` sont également exclues automatiquement.

## Données structurées JSON-LD

Chaque page inclut automatiquement des données structurées [schema.org](https://schema.org) sous forme de balise `<script type="application/ld+json">` avec deux schémas :

- `WebSite` : le nom de votre site, l'URL et la description (issus de `docs.json`).
- `BreadcrumbList` : le chemin de navigation de la page d'accueil à la page courante, dérivé de votre configuration `navigation`.

Aucune configuration requise. Les moteurs de recherche utilisent ces données pour les résultats enrichis, comme les fils d'Ariane dans les listes de recherche.

<Tip>
**Vérifiez votre balisage.** Collez n'importe quelle URL de page dans le [Test des résultats enrichis de Google](https://search.google.com/test/rich-results) pour confirmer que les données structurées sont détectées.
</Tip>

## IndexNow

Après chaque build, Jamdesk soumet automatiquement les URL de pages modifiées à [IndexNow](https://www.indexnow.org) pour une indexation plus rapide par les moteurs de recherche. Cela notifie Bing, Yandex et les autres moteurs participants de vos modifications de contenu sans attendre leur prochain cycle d'exploration.

- Se déclenche après chaque build réussi
- Ne soumet que les pages réellement modifiées
- Non bloquant, n'allonge jamais la durée du build
- Aucune configuration requise

## Bonnes pratiques

Parcourez cette liste de contrôle avant de publier :

<Columns cols={2}>
  <Card title="Titres uniques" icon="heading">
    Chaque page a un titre distinct et descriptif de moins de 60 caractères.
  </Card>
  <Card title="Descriptions précises" icon="align-left">
    Les descriptions résument la page en 120 à 160 caractères.
  </Card>
  <Card title="Titres logiques" icon="list-tree">
    Les titres suivent une hiérarchie claire : un H1, puis H2 → H3.
  </Card>
  <Card title="Liens descriptifs" icon="link">
    Les liens internes utilisent un texte d'ancre significatif, jamais « cliquez ici ».
  </Card>
  <Card title="Texte alternatif des images" icon="image">
    Chaque image possède un texte alternatif pour l'accessibilité et la recherche d'images.
  </Card>
  <Card title="Image sociale" icon="share-nodes">
    Définissez un `og:image` personnalisé sur les pages clés, ou utilisez la carte auto-générée.
  </Card>
</Columns>

## Articles associés

<Columns cols={2}>
  <Card title="Référence frontmatter" icon="file-lines" href="/fr/content/frontmatter">
    Toutes les options de frontmatter disponibles
  </Card>
  <Card title="Référence docs.json" icon="gear" href="/fr/config/docs-json-reference">
    Options de configuration à l'échelle du site
  </Card>
</Columns>
