Le CMS basé sur git pour les sites MDX multilingues
Votre contenu en anglais se trouve dans des fichiers MDX de votre dépôt. Les traductions IA sont stockées dans un fichier SQLite à leurs côtés. Zod valide le tout, et un environnement d'exécution typé lit chaque élément à la compilation. Aucun serveur CMS, aucun appel réseau lors des requêtes.
pnpm add scribe-cms zod better-sqlite3Fonctionnement
- 1
Définition d'un schéma
Les types de contenu correspondent à des schémas Zod. Indiquez quels champs traduire, lesquels doivent rester en anglais et comment les documents sont liés entre eux.
// scribe.config.ts defineContentType({ id: "blog", path: "/blog/{slug}", slugStrategy: "localized", schema: z.object({ title: field.translatable(z.string().min(1)), description: field.translatable(z.string().min(50)), author: field.relation("author"), heroImage: field.structural(z.string().optional()), }), }); - 2
Rédaction du contenu
Chaque document correspond à un fichier MDX versionné dans votre dépôt. Son nom définit le slug en anglais. L'en-tête (frontmatter) est validé selon votre schéma.
--- title: "Hello, world" description: "A first post that says hello to the world." author: jane publishedAt: "2026-01-15" --- The body is MDX. **Markdown** and <Components /> both work. - 3
Traduction des changements
Le contenu traduisible est haché pour n'envoyer que les pages manquantes ou obsolètes à Gemini, via l'API Batch qui divise par deux le coût des jetons. Le prompt est optimisé pour la transcréation afin d'obtenir un texte qui semble rédigé directement dans la langue cible. Le résultat est analysé comme du MDX avant stockage. Une mauvaise réponse fait échouer l'exécution locale, pas votre site.
export GEMINI_API_KEY=... npx scribe translate --locale fr de --dry-run # show the worklist npx scribe translate --locale fr de # translate, validate, store git add .scribe/store.sqlite # translations live in git - 4
Lecture typée
L'environnement d'exécution déduit les types de documents depuis votre configuration. Les listes, recherches, relations, balises hreflang et entrées de sitemap sont entièrement typées à leur retour.
const scribe = createScribe(config); const posts = scribe.blog.list("fr"); // BlogDoc[] const { document } = scribe.blog.resolve(slug, "fr"); // EN fallback built in const author = scribe.blog.related(document!, "author"); // AuthorDoc const hreflang = scribe.blog.alternates(document!);
Ce qui est inclus
Traduction incrémentielle
Les traductions sont associées à un hachage de leur source en anglais. La modification d'un paragraphe entraîne uniquement la retraduction de ce document. Une simulation préalable affiche le coût estimé.
L'impression d'un texte natif
Le prompt est conçu pour la transcréation. Il reproduit le style d'un rédacteur natif et adapte les expressions idiomatiques sans jamais traduire mot à mot.
Validation avant stockage
Chaque traduction est analysée en tant que MDX et vérifiée par rapport à votre schéma Zod avant d'être sauvegardée. Les erreurs du modèle font échouer la commande, pas la mise en production.
Un typage de bout en bout
Des schémas Zod, des types de documents déduits, et aucune génération de code. Les relations sont résolues et entièrement typées.
Jetons intégrés (tokens)
Les liens, ressources et chaînes non traduisibles s'intègrent directement dans le texte. La modification d'un jeton met à jour toutes les langues instantanément sans nécessiter de nouvelle traduction.
SEO natif
Balises hreflang, sitemaps avec x-default, URL canoniques, balises noindex, règles de redirection JSON et chaînes de repli linguistique.
Tout est dans git
Des fichiers MDX accompagnés d'une base SQLite versionnée. Des instantanés (snapshots) conservent la source de chaque traduction. L'historique scribe retrace toutes les évolutions.
Sans serveur
Tout est lu depuis le disque lors de la compilation. Compatible avec Next.js, Astro ou toute autre pile Node. Un studio local permet de naviguer, rechercher et visualiser la couverture des traductions d'un coup d'œil.
Conçu pour l'IA
Les agents lisent et modifient le MDX avec les mêmes outils que pour le code, et chaque modification produit un diff que vous vérifiez. Aucune API intermédiaire ne s'interpose entre le modèle et vos textes.
Développement ouvert
scribe-cms est sous licence MIT et développé sur GitHub. Ce site l'utilise pour fonctionner. Chaque page que vous y voyez est un contenu scribe, adossée à une base SQLite versionnée prenant en charge dix langues. Parcourez le code source, ouvrez une issue ou proposez une pull request.