Use Cases (Mis à jour: 02/06/2026)

Créer un CMS de blog avec Claude Code : Astro MDX, SEO multilingue, QA et monétisation

Avec Claude Code et Astro MDX, créez un CMS de blog avec schéma, localisation, SEO, QA et CTA revenus.

Créer un CMS de blog avec Claude Code : Astro MDX, SEO multilingue, QA et monétisation

Un CMS de blog doit organiser la publication jusqu’à la conversion

Un blog technique peut publier souvent sans générer de ventes, de demandes de formation ou de missions de conseil. Le problème vient rarement d’un seul paragraphe. Il vient plutôt du système autour de l’article : structure des données, relecture, traduction, aperçu, SEO, RSS, sitemap et CTA.

Ici, CMS signifie Content Management System, ou système de gestion de contenu. Avec Astro Content Collections et MDX, un CMS peut rester basé sur des fichiers tout en imposant de vraies règles. Claude Code devient alors un agent d’opérations éditoriales : il aide à rédiger, localiser, vérifier le code, contrôler les métadonnées et améliorer le chemin vers le produit ou la consultation.

Pour compléter, consultez Claude Code et Contentful CMS, l’audit de funnel de contenu, l’implémentation RSS et la génération de sitemap. Les références officielles sont Astro Content Collections, Astro MDX integration et Astro Sitemap integration.

Découper les responsabilités

Une demande comme “crée un CMS de blog” est trop vague pour Claude Code. Il faut préciser les fichiers, les règles et les vérifications. Pour un site Astro MDX, les responsabilités principales sont les suivantes.

ZoneRôleTâche adaptée à Claude Code
content schemaDéfinir les champs frontmatter et leurs typesÉcrire content.config.ts
articles MDXGérer texte, tableaux, code et CTARéécrire et enrichir les brouillons
localisationGarder le même slug par langueDétecter les manques et localiser naturellement
aperçuVérifier l’affichage avant publicationLancer le serveur local et tester les liens
SEOGérer title, description, OGP et sitemapAuditer les métadonnées
QA gateBloquer les erreurs avant publicationAjouter scripts Node et checks ciblés
monétisationRelier article, produit, formation, conseilRevoir l’emplacement du CTA

Trois cas d’usage concrets

Premier cas : un créateur indépendant vend des templates. Un article Claude Code peut mener vers un starter kit, une bibliothèque de prompts ou une mini-formation. Le CMS doit donc contenir ctaLabel, ctaUrl, relatedPosts, updatedDate et heroImage.

Deuxième cas : un blog d’entreprise. Le risque principal est de publier un exemple convaincant mais faux : API obsolète, extrait non testé, version française à jour mais version anglaise ancienne, image OGP absente. Claude Code doit servir de garde-fou éditorial.

Troisième cas : SEO multilingue. Le même slug doit exister dans les dix collections. Le titre peut être localisé, mais l’exemple technique, l’intention du CTA et la promesse éditoriale doivent rester cohérents.

site/src/content/blog/claude-code-blog-cms.mdx
site/src/content/blog-en/claude-code-blog-cms.mdx
site/src/content/blog-zh/claude-code-blog-cms.mdx
site/src/content/blog-ko/claude-code-blog-cms.mdx
site/src/content/blog-es/claude-code-blog-cms.mdx
site/src/content/blog-fr/claude-code-blog-cms.mdx
site/src/content/blog-de/claude-code-blog-cms.mdx
site/src/content/blog-pt/claude-code-blog-cms.mdx
site/src/content/blog-hi/claude-code-blog-cms.mdx
site/src/content/blog-id/claude-code-blog-cms.mdx

Schéma Astro copiable

Un schéma est une règle exécutable sur les données. Il empêche un article sans date de mise à jour ou avec une description trop longue de passer silencieusement.

// src/content.config.ts
import { defineCollection, z } from "astro:content";
import { glob } from "astro/loaders";

const blogSchema = z.object({
  title: z.string().min(20).max(80),
  description: z.string().min(40).max(120),
  pubDate: z.coerce.date(),
  updatedDate: z.coerce.date(),
  category: z.enum(["getting-started", "tips-and-tricks", "use-cases", "comparison", "advanced"]),
  tags: z.array(z.string()).min(2).max(8),
  heroImage: z.string().startsWith("/images/"),
  draft: z.boolean().default(false),
  requireAllLocales: z.boolean().default(false),
  lang: z.enum(["ja", "en", "zh", "ko", "es", "fr", "de", "pt", "hi", "id"]),
  ctaLabel: z.string().max(40).optional(),
  ctaUrl: z.string().url().optional(),
});

const makeBlogCollection = (base: string) =>
  defineCollection({
    loader: glob({ pattern: "**/*.{md,mdx}", base }),
    schema: blogSchema,
  });

export const collections = {
  blog: makeBlogCollection("./src/content/blog"),
  "blog-en": makeBlogCollection("./src/content/blog-en"),
  "blog-zh": makeBlogCollection("./src/content/blog-zh"),
  "blog-ko": makeBlogCollection("./src/content/blog-ko"),
  "blog-es": makeBlogCollection("./src/content/blog-es"),
  "blog-fr": makeBlogCollection("./src/content/blog-fr"),
  "blog-de": makeBlogCollection("./src/content/blog-de"),
  "blog-pt": makeBlogCollection("./src/content/blog-pt"),
  "blog-hi": makeBlogCollection("./src/content/blog-hi"),
  "blog-id": makeBlogCollection("./src/content/blog-id"),
};

Frontmatter MDX avec CTA

MDX est du Markdown qui peut utiliser des composants. Le frontmatter est la fiche de l’article pour les listes, l’OGP, le RSS, le sitemap et le CTA.

---
title: "Créer un CMS de blog avec Claude Code : Astro MDX, SEO multilingue, QA et monétisation"
description: "Avec Claude Code et Astro MDX, créez un CMS de blog avec schéma, localisation, SEO, QA et CTA revenus."
pubDate: "2025-12-22"
updatedDate: "2026-06-02"
category: "use-cases"
tags: ["Claude Code", "CMS", "blog", "Astro", "MDX"]
heroImage: "/images/hero/hero-036.png"
lang: "fr"
ctaLabel: "Réserver un audit contenu Claude Code"
ctaUrl: "https://example.com/consulting"
---

## Première section

Cet article relie rédaction, localisation, SEO, QA et CTA de monétisation dans un même flux.

Script Node de validation

Enregistrez ce fichier dans scripts/validate-blog-cms.mjs, puis lancez node scripts/validate-blog-cms.mjs claude-code-blog-cms.

// scripts/validate-blog-cms.mjs
import fs from "node:fs";
import path from "node:path";

const slug = process.argv[2];
if (!slug) {
  console.error("Usage: node scripts/validate-blog-cms.mjs <slug>");
  process.exit(1);
}

const locales = [["blog", "ja"], ["blog-en", "en"], ["blog-zh", "zh"], ["blog-ko", "ko"], ["blog-es", "es"], ["blog-fr", "fr"], ["blog-de", "de"], ["blog-pt", "pt"], ["blog-hi", "hi"], ["blog-id", "id"]];
const root = path.join(process.cwd(), "src", "content");
const failures = [];

function readFrontmatter(source) {
  const match = source.match(/^---\n([\s\S]*?)\n---/);
  if (!match) return {};
  return Object.fromEntries(match[1].split("\n").flatMap((line) => {
    const index = line.indexOf(":");
    if (index === -1) return [];
    return [[line.slice(0, index).trim(), line.slice(index + 1).trim().replace(/^"|"$/g, "")]];
  }));
}

for (const [dir, lang] of locales) {
  const file = path.join(root, dir, `${slug}.mdx`);
  const source = fs.existsSync(file) ? fs.readFileSync(file, "utf8") : "";
  const data = readFrontmatter(source);
  if (!source) failures.push(`${dir}: missing file`);
  if (data.lang !== lang) failures.push(`${dir}: wrong lang`);
  if (!data.updatedDate) failures.push(`${dir}: missing updatedDate`);
  if ((data.description || "").length > 120) failures.push(`${dir}: description too long`);
  if (!/https:\/\/docs\.astro\.build/.test(source)) failures.push(`${dir}: missing official docs`);
  if (!/\]\(\/blog\/claude-code-/.test(source)) failures.push(`${dir}: missing internal link`);
  if (!/(CTA|consultation|formation|consult)/i.test(source)) failures.push(`${dir}: missing CTA`);
  if ((source.match(/`{3}/g) || []).length < 6) failures.push(`${dir}: fewer than three code blocks`);
}

if (failures.length) {
  console.error(failures.map((item) => `- ${item}`).join("\n"));
  process.exit(1);
}
console.log(`OK: ${slug} passed localized CMS checks.`);

Prompt de publication

Rewrite the article for slug <slug> as a production-ready Astro MDX blog post.
- Edit only the localized files for this slug.
- Keep heroImage and category.
- Add updatedDate: "2026-06-02".
- Keep description within 120 characters.
- Include 3 real use cases, concrete pitfalls, runnable code, official Astro docs, internal links, and a monetization CTA.
- Report changed files and focused check results.

Pièges et résultat vérifié

Les pièges classiques sont la mise à jour d’une seule langue, un périmètre d’écriture trop large pour Claude Code, du code non exécutable, un CTA trop commercial et l’oubli du RSS ou du sitemap. Un bon parcours propose d’abord une ressource gratuite, puis un template, une formation et enfin une consultation.

J’ai testé ce flux dans un petit projet Astro. Le schéma a bloqué les dates manquantes et le script a détecté les descriptions trop longues, l’absence de liens officiels, de liens internes et de CTA. La qualité du français et la pertinence commerciale demandent encore une vraie relecture humaine avant publication.

#Claude Code #CMS #blog #Astro #MDX
Gratuit

PDF gratuit: cheatsheet Claude Code

Saisissez votre email et téléchargez une page avec commandes, habitudes de review et workflow sûr.

Nous protégeons vos données et n'envoyons pas de spam.

Masa

À propos de l'auteur

Masa

Ingénieur spécialisé dans les workflows pratiques avec Claude Code.