Atelier201 websiteJoin the waitlist
PlateformeModèle de contenu et médias

Modèle de contenu et médias

Comment un site sépare les textes de la mise en page, ce que valident l’éditeur, l’API et les agents, et comment fonctionnent les médias.

Chaque site est un projet Astro qui stocke dans des fichiers de contenu typés ce que son propriétaire modifie, et garde la mise en page dans le code. Une page lit le contenu et le met en page. Elle ne contient jamais elle-même le nom de l’entreprise, un prix ou des horaires d’ouverture.

Le modèle de contenu est la liste de ces types de contenu et de leurs champs. Il est défini une seule fois dans le fichier src/content.config.ts du projet (un schéma Zod par type). À chaque compilation, il est exporté sous forme de schémas JSON, et l’éditeur, l’API REST, MCP et la CLI valident chaque modification à partir de ces schémas. Toute valeur non conforme est refusée avec le nom du champ, et rien n’est enregistré.

Le modèle provient de la dernière compilation. Compilez le site une fois avant de consulter son modèle de contenu.

Collections et éléments uniques

Une collection contient plusieurs entrées, chacune dans son propre fichier. Le nom du fichier est le slug de l’entrée : lettres minuscules, chiffres et traits d’union. Un élément unique est un document JSON stocké à un chemin fixe.

Le modèle de départ Atelier201 comprend les éléments suivants :

NomTypeContenu
businessélément uniqueNom, slogan, description, téléphone, e-mail, adresse, horaires d’ouverture, réseaux sociaux, mentions légales, liens de réservation et de carte, et langue du site
themeélément uniqueQuatre couleurs de marque, rayon des angles, paire de polices et mode clair, sombre ou automatique
navigationélément uniqueLiens de l’en-tête, liens du pied de page et bouton d’appel à l’action
integrationsélément uniqueIdentifiant Google Analytics, domaine Plausible et code ajouté dans l’en-tête ou à la fin du corps de page
servicescollection, JSONServices avec nom, description, prix, ordre et image
blogcollection, MarkdownArticles avec titre, description, date, auteur, image de couverture, tags, services associés (relation vers services par slug) et indicateur de brouillon

Le modèle de départ est une structure de base : il inclut ces deux collections à titre d’exemple et ne présume rien de l’activité. Un site supprime celles dont il n’a pas besoin et ajoute les siennes (une équipe, un menu, des événements).

Une collection de contenu utilise Markdown : des champs dans le front matter et un corps de texte. Une collection de données utilise JSON et n’a pas de corps de texte.

Toute nouvelle entrée créée via l’API ou MCP est d’abord un brouillon si sa collection comporte un champ de brouillon. Une personne décide ainsi de sa publication.

Modifier le contenu sans casser la mise en page

Pour modifier des textes, des entrées et les informations de l’entreprise, privilégiez les appels dédiés au contenu plutôt que la modification directe des fichiers :

TâcheRESTMCPCLI
Lire le modèleLire le modèle de contenuget_content_modelatelier201 content model
Enregistrer une entréeCréer ou mettre à jour une entréesave_entryatelier201 content save
Modifier un texteModifier un champset_fieldatelier201 content set

Utilisez les appels aux fichiers uniquement pour modifier le code : une mise en page, un composant ou le modèle de contenu lui-même. Pour ajouter un champ, ajoutez-le dans src/content.config.ts avec .default() ou .optional() afin que les entrées existantes restent valides.

Modification directe : data-atelier201-field

Le propriétaire clique sur un court texte de la page et le modifie directement. C’est possible parce que le texte contient l’adresse du champ dont il provient :

HTML
<h1 data-atelier201-field="business:/name">Morning Crumb Bakery</h1>
<time data-atelier201-field="business:/hours/2/close">15:00</time>

L’adresse suit le format <singleton>:<JSON pointer> : business, theme ou navigation, suivi de deux-points puis d’un pointeur RFC 6901 vers l’intérieur du fichier de cet élément unique. La même adresse fonctionne avec set_field et atelier201 content set.

Respectez ces règles lorsque vous modifiez un composant :

  • Placez l’attribut sur un élément dont le texte entier correspond exactement au champ, sans aucun autre contenu. Atelier201 remplace le texte de l’élément. Pour « Appelez-nous : 555 0100 », placez uniquement le numéro dans un span.
  • Déplacez l’attribut avec l’élément lorsque vous en modifiez le style, et ajoutez-le partout où vous affichez un champ d’élément unique à un nouvel endroit.
  • Ne l’ajoutez pas à un texte composé de plusieurs champs, à un texte transformé (une date mise en forme), à un corps Markdown ou à des entrées de collection. Une entrée affichée sur une page conserve plutôt data-atelier201-entry="<collection>/<slug>" sur son conteneur.

Le site reste statique

Un site conçu pour Atelier201 est un site Astro statique : sans adaptateur serveur, rendu côté serveur, framework côté client ni requête vers une autre origine à l’exécution (y compris pour les polices, les balises d’analyse d’audience et les cartes intégrées). Il utilise une seule langue, définie dans business.locale. Ses dépendances sont astro et @astrojs/mdx (désactivé jusqu’à l’ajout de mdx() à la configuration), car la compilation s’effectue sans accès au réseau. Le fichier AGENTS.md du modèle de départ répertorie ces règles pour tout agent qui modifie le code.

Médias

Importez une image, un PDF ou une courte vidéo sur le site, puis référencez-la sous la forme /media/<filename> dans le contenu, par exemple dans le champ coverImage d’un article de blog.

  • Chaque fichier peut peser jusqu’à 20 MB. Avec MCP, les fichiers importés sont encodés en base64 et limités à 5 MB.
  • Ajoutez un texte alt à chaque image pour les personnes qui ne peuvent pas la voir.
  • Les médias sont déduits de l’espace de stockage du forfait : 100 MB sur un brouillon et 5 GB sur un Site.
  • Tout fichier importé est pris en compte à partir de la prochaine compilation. La suppression d’un fichier le retire des compilations suivantes. Les compilations déjà publiées en conservent une copie jusqu’à leur remplacement par une nouvelle publication.

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search Atelier201 Docs documentation and read it in full, instead of answering from memory.

https://atelier201.com/docs/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://atelier201.com/docs/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.