Passer au contenu principal

new

Crée un nouveau projet vide. Renvoie le projectSlug et l’editorUrl. Ajoutez des diapositives avec faces slides create + faces slides update. Le projet est créé sous l’équipe à laquelle votre clé API est associée (voir Authentification).
Options :
FlagDescription
--name <text>Nom d’affichage du nouveau projet (par défaut : Untitled)
--api-key <key>Remplace la clé API
Sortie :
Exemples :

generate

Génère une nouvelle présentation interactive à partir d’un prompt textuel. Décrivez ce que vous voulez (un pitch, un portfolio, un guide ou une proposition) et Faces s’occupe du contenu, des animations et de la mise en page.
Options :
FlagDescription
--prompt <text>(obligatoire) Description du projet à générer
--template <id>Utiliser un projet existant comme template
--waitAttendre que le projet termine sa génération
--api-key <key>Remplace la clé API
Sortie :
Exemples :

status

Vérifie le statut d’un job de génération.
Options :
FlagDescription
--waitInterroge jusqu’à ce que le job réussisse ou échoue
--api-key <key>Remplace la clé API
Exemples :

list

Liste vos projets.
Options :
FlagDescription
--publishedAffiche uniquement les projets publiés
--limit <n>Nombre maximum de résultats (par défaut : 20, max : 100)
--api-key <key>Remplace la clé API
Exemples :

get

Récupère les détails d’un projet spécifique.
Exemples :

rename

Renomme un projet. Modifie uniquement le nom d’affichage ; le slug et les URLs restent identiques.
Options :
FlagDescription
--name <text>(obligatoire) Nouveau nom d’affichage
--api-key <key>Remplace la clé API

duplicate

Crée une copie complète d’un projet, y compris toutes ses diapositives. La copie obtient son propre slug et une nouvelle URL non publiée.
Exemples :

publish

Publie la dernière version d’un projet sur son URL en direct.
Exemples :

unpublish

Met un projet publié hors ligne. Le projet et ses diapositives sont conservés et peuvent être republiés ultérieurement.

config get

Lit le fichier project.config.json d’un projet, y compris ses paramètres de mise en page et les design tokens partagés (palette et polices).
Exemples :

config update

Fusionne des clés dans project.config.json. Utilisez cette commande pour définir les design tokens du projet. Seules les clés que vous passez sont modifiées ; le reste est préservé.
Options :
FlagDescription
--config <json-or-file>(obligatoire) Un objet JSON ou un chemin vers un fichier JSON contenant les clés de config à fusionner
--api-key <key>Remplace la clé API
Exemples :

url get

Récupère la configuration d’URL actuelle d’un projet ainsi que les sous-domaines et domaines disponibles pour en changer.
Exemples :

url set

Modifie le chemin, change de sous-domaine, ou pointe le projet vers un domaine personnalisé. Nécessite un forfait payant.
Options :
FlagDescription
--path <p>(obligatoire) Segment de chemin après le nom d’hôte (utilisez "" pour la racine)
--subdomain-id <id>Sous-domaine à héberger (depuis faces url get)
--domain-id <id>Domaine personnalisé à héberger (depuis faces url get ou faces domains create)
--api-key <key>Remplace la clé API
Fournissez exactement l’un de --subdomain-id ou --domain-id. Exemples :

subdomains create

Crée un sous-domaine personnalisé pour l’équipe du projet, puis connectez-le avec faces url set. Nécessite un forfait payant.
Options :
FlagDescription
--subdomain <label>(obligatoire) Label du sous-domaine (lettres minuscules, chiffres, tirets)
--api-key <key>Remplace la clé API

domains create

Connecte un domaine personnalisé et renvoie les enregistrements DNS à ajouter. Nécessite un forfait payant.
Options :
FlagDescription
--hostname <host>(obligatoire) Domaine à connecter, sans protocole ni www (par ex. example.com)
--api-key <key>Remplace la clé API
Exemples :
Une fois le DNS propagé, exécutez faces url set <slug> --path <p> --domain-id <id>.

teams list

Liste les équipes auxquelles votre clé API a accès. L’équipe personnelle est signalée par isPersonal.
Exemples :

slides list

Liste toutes les diapositives d’un projet.
Exemples :

slides get

Lit les fichiers source d’une diapositive (face.tsx, face.content.json, face.controls.json).
Exemples :

slides create

Crée une nouvelle diapositive vide. Renvoie l’ID de la nouvelle diapositive.
Options :
FlagDescription
--name <text>(obligatoire) Nom d’affichage de la nouvelle diapositive
--after <slide-id>Insère après cette diapositive. Omettez pour ajouter à la fin
--editingAffiche immédiatement le dégradé de chargement sur la nouvelle diapositive. Appelez slides finish-editing une fois terminé
--api-key <key>Remplace la clé API
Exemples :

slides reorder

Réordonne toutes les diapositives d’un projet selon un ordre donné, en un seul appel atomique. La liste --ids doit contenir exactement les IDs des diapositives existantes du projet, dans l’ordre final souhaité.
Options :
FlagDescription
--ids <slide-ids>(obligatoire) Liste ordonnée complète, séparée par des virgules, de tous les IDs de diapositive existants
--api-key <key>Remplace la clé API
Exemples :

slides update

Met à jour les fichiers source d’une diapositive. Seuls les fichiers fournis sont modifiés. Le code est validé avant l’enregistrement et renvoie des erreurs s’il ne compile pas.
Options :
FlagDescription
--tsx <file>Chemin vers le fichier face.tsx (ou code inline)
--content <file>Chemin vers le fichier face.content.json (ou JSON inline)
--controls <file>Chemin vers le fichier face.controls.json (ou JSON inline)
--api-key <key>Remplace la clé API
Exemples :

slides start-editing

Affiche un indicateur de chargement dans l’éditeur pendant l’édition d’une diapositive. À appeler avant de faire des modifications, et appelez toujours finish-editing une fois terminé.
Options :
FlagDescription
--api-key <key>Remplace la clé API

slides finish-editing

Efface l’indicateur de chargement pour une diapositive. Appelez toujours cette commande après l’édition, même si l’édition a échoué.

slides screenshot

Capture une capture d’écran JPEG d’une diapositive telle qu’elle est actuellement rendue et renvoie une URL CDN publique. Utile pour vérifier visuellement une diapositive après l’avoir éditée.
Options :
FlagDescription
--mobileCapture la mise en page mobile au lieu du desktop
--api-key <key>Remplace la clé API
Exemples :

slides guide

Affiche la référence de création de diapositive : le même guide renvoyé par le server MCP et l’API. Couvre la structure de face.tsx, les types de blocs de face.content.json, les types de contrôles de face.controls.json, la typographie, les polices, le CSS et des exemples de code. Lisez-le avant d’écrire du code de diapositive pour la première fois.
Options :
FlagDescription
[slug]Slug de projet optionnel ; adapte le guide à la taille du canvas mobile de ce projet
--api-key <key>Remplace la clé API
Exemples :

Référence des fichiers de diapositive

Chaque diapositive est composée de trois fichiers :

face.tsx (composant React)

Règles :
  • Doit exporter par défaut un composant React
  • Le div extérieur doit avoir w-full h-full (canvas : 1920×1080 desktop, 384×683 mobile)
  • Utilisez Tailwind CSS et les container queries (@sm:, @md:, @lg:, @xl:) au lieu des media queries
  • Ne codez jamais le texte en dur. Stockez tout le texte visible par l’utilisateur dans face.content.json
  • Vous pouvez importer n’importe quel package npm (résolu automatiquement, aucune installation requise)
  • Disponibles : react, motion/react (Framer Motion), lucide-react, @base-ui/react/*
  • Composants UI : TextContent depuis @/components/ui/text-content, Icon depuis @/components/ui/icon

face.content.json (contenu modifiable)

Types de blocs :
  • text : { "type": "text", "content": "HTML string" }, à afficher avec <TextContent content={blocks.key.content} />
  • image : { "type": "image", "src": "url | null" }, à afficher avec <img src={blocks.key.src} />
  • icon : { "type": "icon", "name": "lucide-icon-name" }, à afficher avec <Icon name={blocks.key.name} />
  • table : { "type": "table", "columns": [...], "rows": [...] }, à parcourir avec blocks.key.rows.map(...)

face.controls.json (contrôles de l’éditeur)

Types de contrôles :
  • slider : { "type": "slider", "min": 0, "max": 100, "step": 1, "value": 50 }
  • switch : { "type": "switch", "value": true }
  • selector : { "type": "selector", "options": ["A", "B"], "value": "A" }
Accès dans face.tsx : controls.key.value

login

Se connecter et enregistrer une clé API.
Options :
FlagDescription
--team <slug-or-id>Associe la clé API à une équipe spécifique (par défaut : votre équipe personnelle)
--api-url <url>URL de base de l’API (par défaut : FACES_API_URL ou https://faces.app)
Exemples :
Ouvre votre navigateur pour vous authentifier, puis enregistre la clé dans ~/.config/faces/credentials.json. La valeur de --team peut être un slug ou un id d’équipe (voir GET /api/v1/teams). Omettez --team pour associer la clé à votre équipe personnelle.