Excalidraw CLI : faire dessiner un agent IA dans Obsidian

Un bras de traceur mécanique trace au cuivre une flèche d’un schéma dessiné à la main, relié à trois fiches de notes posées à côté.

Depuis la version 2.29.0 du plugin Excalidraw pour Obsidian, publiée le 12 octobre 2026, un agent IA qui tourne sur votre ordinateur peut créer, relire, modifier et exporter des dessins Excalidraw dans votre coffre, en passant par la ligne de commande d’Obsidian. Le plugin écrit lui-même le fichier, l’agent n’a plus à le fabriquer : le dessin reste modifiable à la main et ses liens vers vos notes fonctionnent. Il faut Obsidian Desktop, avec sa ligne de commande activée.

Le 14 octobre 2026, Claude Code a piloté cette CLI sous ma direction, dans un coffre de test. Mon verdict : utile si vous voulez des schémas reliés à vos notes, à condition d’exiger de l’agent le tracé exact de chaque flèche et de regarder l’image exportée. Un dessin peut paraître valide à l’agent alors que ses flèches sont fausses.

Pour les bases du plugin, dessin à la main compris, voyez le guide Excalidraw dans Obsidian. Pour décider ce qu’un agent a le droit de faire dans votre coffre, le guide Obsidian et agents IA détaille les garde-fous.

Testé le 14 octobre 2026 : Windows 11, Obsidian 1.14.4, Excalidraw 2.29.0, coffre de test. Agent : Claude Code, d’abord avec l’aide intégrée de la CLI et le kit officiel, puis avec mes propres consignes et un petit script d’appel, écrits pendant ces tests à partir des pièges décrits plus bas. Réussi : dessins avec liens vers des notes, schéma de 67 éléments, corrections ciblées, exports PNG, reconstruction d’une infographie générée par une IA. Non testé : macOS et Linux, un autre agent pour piloter la CLI, un agent sans consignes, un coffre de production.

Un exemple de résultat, détaillé plus bas : une infographie générée par une IA, reconstruite par Claude Code en dessin Excalidraw modifiable.

À gauche, l’infographie générée par Codex, avec un robot, un terminal, une gemme violette et une loupe ; à droite, la même chaîne reconstruite en formes Excalidraw modifiables.
À gauche, l’image générée par Codex, montrée telle quelle ; à droite, sa reconstruction en 66 éléments Excalidraw natifs après trois passes. Restent deux écarts : titre non gras, robot simplifié.
Sommaire 16 sections
  1. Ce que Claude Code a fait pendant les tests
  2. Comment ça marche
  3. Avant de commencer
  4. Étape 1 : vérifier que la CLI répond
  5. Étape 2 : demander un premier dessin relié à vos notes
  6. Étape 3 : faire vérifier le résultat, puis le regarder
  7. Étape 4 : faire corriger un dessin existant
  8. Les pièges rencontrés pendant les tests
  9. Les garde-fous, dans les cas testés
  10. Recréer une infographie générée par une IA
  11. CLI ou MCP Excalidraw : que choisir ?
  12. Verdict
  13. Questions fréquentes
  14. Protocole de test et limites
  15. Sources
  16. Et ensuite

Ce que Claude Code a fait pendant les tests

Tous ces travaux ont eu lieu dans le coffre de test :

  • un schéma de processus : trois colonnes, 21 étapes et 67 éléments, dont 7 étapes reliées à leur note ;
  • des corrections sur des dessins qu’il avait créés : couleur, texte, position ; une flèche mal tracée se supprime puis se recrée ;
  • la reconstruction d’une image générée par une IA en dessin modifiable, comme ci-dessus.

Comment ça marche

Une CLI (interface en ligne de commande) permet de piloter un logiciel par des commandes tapées dans un terminal. Claude Code sait lancer des commandes, et c’est par là qu’il atteint le plugin : il envoie une commande, la ligne de commande d’Obsidian la transmet au plugin Excalidraw, et le plugin crée ou modifie le dessin dans votre coffre. Dans cet article, « la CLI Excalidraw » désigne ces commandes du plugin, qui portent toutes le préfixe obsidian-excalidraw-plugin:.

Avant cette version, un agent devait fabriquer lui-même le fichier .excalidraw.md, ou dessiner dans une application de dessin séparée, puis convertir le résultat. Désormais, le plugin écrit le fichier au format qu’Obsidian attend.

Vous ne taperez pas ces commandes vous-même, mais savoir lesquelles écrivent dans votre coffre aide à suivre ce que fait l’agent.

CommandeCe qu’elle faitÉcrit dans le coffre ?
help, status, schemaVérifie que la CLI répond et décrit chaque commandeNon
list, readListe les dessins, lit leur contenu élément par élémentNon
openOuvre un dessin dans ObsidianNon, mais peut lancer les scripts associés au dessin
createCrée un nouveau dessin, sans jamais écraser un fichier existantOui
applyModifie un dessin ouvert : ajouter, déplacer, relier, grouperOui
exportProduit une image PNG ou SVG du dessinOui (le fichier image)
scriptExécute un script Excalidraw que vous avez autoriséOui, sans retour arrière automatique
resultRetrouve le résultat d’une commande dont la réponse s’est perdueNon

Avant de commencer

  1. Mettez à jour Obsidian et Excalidraw. Le plugin demande Obsidian 1.12.2 ou plus récent. La ligne de commande demande en plus un installeur 1.12.7 ou plus récent : sa version s’affiche en haut de Réglages, onglet Général, à côté de celle de l’application. S’il est trop ancien, téléchargez Obsidian depuis obsidian.md/download et installez-le par-dessus, sans désinstaller (voir l’aide d’Obsidian sur les mises à jour). Excalidraw doit être en 2.29.0 ou plus récent.
  2. Activez la ligne de commande d’Obsidian. Dans Réglages, onglet Général, activez « Command line interface », puis suivez l’invite pour l’enregistrer (voir l’aide d’Obsidian sur la ligne de commande).
  3. Redémarrez votre terminal, ou la session de votre agent. Sous Windows, l’enregistrement ajoute Obsidian à votre variable PATH, ce qui ne prend effet qu’au redémarrage du terminal. Il installe aussi Obsidian.com à côté d’Obsidian.exe : c’est ce petit relais qui renvoie les réponses d’Obsidian au terminal. Sur macOS, la commande arrive dans /usr/local/bin/obsidian (droits administrateur requis) ; sur Linux, dans ~/.local/bin/obsidian.
  4. Préparez un coffre de test, ou faites une sauvegarde : l’agent écrit de vrais fichiers.
  5. Vérifiez votre agent. Il doit pouvoir lancer des commandes sur votre ordinateur, comme Claude Code. Un assistant qui tourne seulement dans le navigateur ne voit pas votre machine.
  6. Donnez-lui les consignes officielles. Dans Obsidian, la commande « Excalidraw: Show CLI and agent instructions » affiche les consignes du plugin. Zsolt Viczián, l’auteur du plugin, publie aussi un kit pour agents, le dépôt obsidian-excalidraw-cli : des instructions et des exemples à donner à votre agent. Attention à l’homonyme : le dépôt excalidraw/cli sur GitHub est un autre outil, lié au service Excalidraw+, ni requis ni utilisé ici.

La consigne prête à copier se trouve dans la section « Verdict ».

Étape 1 : vérifier que la CLI répond

Demandez à l’agent de lancer, en remplaçant « Mon coffre » par le nom de votre coffre :

obsidian vault="Mon coffre" obsidian-excalidraw-plugin:status

Le nom du coffre se place toujours avant la commande. Si Obsidian est fermé, cette première commande le lance.

La réponse est un objet JSON (un format texte structuré) : cherchez "ready": true et la version du plugin. Si la commande échoue, le message indique la cause :

  • le terminal ne reconnaît pas obsidian : la ligne de commande n’est pas enregistrée, ou le terminal n’a pas été redémarré depuis ;
  • Obsidian répond Command "obsidian-excalidraw-plugin:status" not found : le plugin est antérieur à la 2.29.0, ou désactivé.

Sous Windows, si la commande s’exécute mais ne renvoie aucun texte, demandez à l’agent d’utiliser le chemin complet de Obsidian.com, dans le dossier d’installation d’Obsidian, à la place de obsidian.

Étape 2 : demander un premier dessin relié à vos notes

Décrivez le dessin à l’agent : les formes, leurs textes, les notes à relier. Ajoutez toujours une consigne sur les flèches : créée sans ses points, une flèche reste reliée aux deux formes mais garde un tracé par défaut, faux. Par exemple : « Avec la CLI Excalidraw, crée le dessin “Schémas/Premier schéma” : deux rectangles l’un sous l’autre, “Idée de départ” lié à ma note “Ma note”, puis “Action”, et une flèche de l’un à l’autre. Donne les points de la flèche. »

L’agent traduit cette demande en une requête JSON, que vous n’avez pas à écrire. À titre d’illustration :

{"apiVersion":1,"command":"create","requestId":"premier-schema-1",
 "path":"Schémas/Premier schéma.excalidraw.md",
 "elements":[
  {"id":"a","type":"rectangle","x":0,"y":0,"width":220,"height":80,
   "link":"[[Ma note]]","label":{"text":"Idée de départ"}},
  {"id":"b","type":"rectangle","x":0,"y":160,"width":220,"height":80,
   "label":{"text":"Action"}},
  {"id":"f","type":"arrow","x":110,"y":80,"points":[[0,0],[0,80]],
   "start":{"id":"a"},"end":{"id":"b"}}]}

Le champ link pose le lien vers la note. Le champ points donne le tracé de la flèche : elle part du milieu du bas du rectangle a et descend de 80 pixels jusqu’au rectangle b. Le champ requestId est un identifiant choisi par l’agent ; il sert à retrouver une réponse perdue. Dans sa réponse, la CLI renvoie les identifiants réels des formes : pour toute modification, l’agent doit les utiliser à la place de a, b et f.

Pour un grand schéma, la requête s’allonge. Au-delà d’environ 4 Ko, passée directement dans la commande, elle fait planter la ligne de commande d’Obsidian. L’agent doit alors l’enregistrer dans un fichier JSON du coffre et passer son chemin, relatif à la racine du coffre, avec input=. Par prudence, mon script d’appel bascule sur le fichier au-delà de 3 000 octets. Ce fichier reste dans le coffre : supprimez-le une fois le dessin créé.

create ne remplace jamais un fichier existant : si le chemin est pris, la commande échoue avec ALREADY_EXISTS.

Dessin Excalidraw créé par un agent : un rectangle, un losange et un rectangle reliés par deux flèches ; dans le losange, le guillemet fermant se retrouve seul sur sa ligne.
Premier dessin créé par Claude Code le 14 octobre 2026, export PNG sans retouche. Les liens vers les notes ne s’affichent pas dans l’image : ils sont stockés dans le dessin.

Ce que vous vérifiez : ouvrez « Ma note », le dessin doit apparaître dans ses rétroliens. Dans les tests, les liens posés par link apparaissaient dans le fichier et Obsidian les reconnaissait. Les accents et les tirets longs passaient sans problème. En revanche, le retour à la ligne automatique a isolé un guillemet fermant sur sa ligne : placez des espaces insécables à l’intérieur des guillemets français.

Étape 3 : faire vérifier le résultat, puis le regarder

Une commande réussie ne prouve pas que le dessin est bon. Demandez à l’agent de relire le fichier, puis d’exporter une image et de la regarder avant de conclure. Il lancera des commandes de ce type :

obsidian vault="Mon coffre" obsidian-excalidraw-plugin:read path="Schémas/Premier schéma.excalidraw.md" source=disk detail=elements
obsidian vault="Mon coffre" obsidian-excalidraw-plugin:export path="Schémas/Premier schéma.excalidraw.md" source=disk out="Schémas/Premier schéma.png" requestId="export-1"

source=disk lit le fichier tel qu’il est enregistré. export refuse de remplacer une image existante sans overwrite=true. Pour vérifier la lisibilité en mode sombre, demandez un export avec theme=dark. Un grand dessin se lit en plusieurs fois, par pages de 200 éléments au maximum.

Ce que vous vérifiez : ouvrez l’image vous-même, elle est enregistrée dans le coffre à côté du dessin. Dans les tests, seule l’image exportée montrait les flèches fausses ; les vérifications de structure passaient.

Étape 4 : faire corriger un dessin existant

Demandez la correction en nommant le dessin : « Dans “Schémas/Premier schéma”, passe le rectangle “Idée de départ” en bleu clair. »

L’agent ouvre le dessin, lit sa révision en cours, puis applique la modification avec apply en citant cette révision. Si quelqu’un, vous ou l’agent, a modifié le dessin entre-temps, la commande refuse avec STALE_REVISION au lieu d’écraser le travail : l’agent relit et recommence.

apply sait ajouter des formes, changer leur style, leur texte ou leur position, en supprimer, les relier (connect), les grouper et insérer une image du coffre. Il prévoit aussi des formules LaTeX : dans le coffre de test, l’appel a été refusé (DEPENDENCY_UNAVAILABLE), faute de l’extension MathJax, et leur rendu n’est donc pas testé.

En revanche, apply ne modifie pas le tracé d’une flèche existante. Pour une flèche mal tracée entre deux formes voisines, l’agent la supprime (delete) puis la recrée avec connect. Pour une flèche longue ou coudée, faites recréer le dessin sous un nouveau chemin, avec des points exacts ; l’ancien reste en place, puisque create n’écrase rien, et c’est à vous de le supprimer. Vous pouvez aussi retracer la flèche à la main dans Excalidraw, une option que je n’ai pas testée ici.

Ce que vous vérifiez : demandez un nouvel export et regardez-le. Je n’ai pas testé l’annulation d’une modification faite par apply : raison de plus pour commencer dans un coffre de test.

Les pièges rencontrés pendant les tests

Sur le schéma de 67 éléments et pendant les essais des autres fonctions, sept problèmes sont apparus. Chaque parade a été vérifiée par un nouvel essai, sauf mention contraire. Trois concernent tout le monde :

Ce qu’on observeCause observéeParade
Les flèches sont reliées aux bonnes formes, mais tracées à l’horizontale sous la forme de départCréées sans points, elles gardent leur tracé par défautDonner les points de chaque flèche dès la création
Une flèche entre deux colonnes traverse tout le schéma en diagonaleconnect n’a pas respecté le côté de départ demandé (constaté au départ d’une ellipse)Pour les flèches longues ou coudées, tracer les points à la création
Obsidian affiche « A JavaScript error occurred in the main process » et la commande ne répond rienUn argument d’environ 4 Ko ou plus fait planter la ligne de commande d’ObsidianPasser les grosses requêtes par un fichier, avec input=
Deux versions du même schéma : à gauche, des flèches tracées à l’horizontale sous chaque étape ; à droite, des flèches verticales qui relient les étapes et une flèche en pointillés entre les colonnes.
Même schéma, deux créations : sans les points des flèches (à gauche), puis avec (à droite). Les contrôles de structure passaient dans les deux cas. Extrait des deux premières colonnes, exports sans retouche.

Les quatre autres touchent surtout ceux qui écrivent leurs propres consignes d’agent :

  • Une flèche entre deux cadres Excalidraw (frames) n’apparaît qu’en bout de course : le plugin la rattache au cadre d’arrivée, qui la coupe. Parade vérifiée : détacher la flèche du cadre par un script relu. Piste non testée : éviter les cadres pour des zones reliées entre elles.
  • Erreur « Unsupported field » sur la couleur d’un texte de forme : le champ label de la CLI n’accepte que le texte, la taille et la police. Parade : poser un élément texte séparé par-dessus la forme.
  • Un modèle de dessin (fichier de départ passé avec template) est refusé avec une erreur générique : il avait été écrit par un script avec des fins de ligne Windows (CRLF). Parade : l’enregistrer avec des fins de ligne Unix (LF).
  • L’insertion par image refuse une échelle numérique : la description renvoyée par schema ne correspond pas au comportement de la 2.29.0. Parade : insérer l’image sans scale.

Les garde-fous, dans les cas testés

La CLI Excalidraw protège surtout contre l’écrasement. À ma demande, Claude Code a déclenché exprès chaque protection, et chacune a refusé l’opération :

  • create sur un fichier existant : ALREADY_EXISTS.
  • apply avec une révision dépassée : STALE_REVISION.
  • export vers une image existante sans overwrite=true : refusé.
  • script sans trusted=true : TRUST_REQUIRED.
  • Un identifiant de requête réutilisé pour un contenu différent : refusé.

Deux mécanismes aident aussi l’agent après une coupure : renvoyer exactement la même requête, avec le même identifiant, est accepté sans erreur, et result retrouve une réponse perdue grâce à cet identifiant ; status indique une conservation de 15 minutes.

Ces garde-fous ne font pas de la CLI un environnement isolé. Un script autorisé peut exécuter n’importe quel code dans Obsidian, sans retour arrière automatique, et ouvrir un dessin peut lancer les scripts qui lui sont associés. Réservez script à du code que vous avez relu.

Recréer une infographie générée par une IA

C’est le cas que montre Zsolt Viczián dans sa vidéo de présentation : une infographie produite par ChatGPT devient un dessin Excalidraw modifiable.

J’ai fait générer par Codex, avec son outil de génération d’images, une infographie de 1 536 × 1 024 pixels sur le thème « Agent → CLI → Obsidian → Dessin ». Claude Code l’a ensuite reconstruite en 66 éléments Excalidraw natifs (formes, lignes, flèches et textes), dans un dessin distinct du schéma de processus. Il lui a fallu trois passes : une première version, puis deux corrections ciblées sur l’espacement du titre et le texte du terminal. La comparaison placée sous l’introduction montre le résultat.

Chaque élément du résultat reste modifiable, texte et couleur compris. Des écarts restent visibles : le titre n’est pas en gras, le robot est plus simple que l’original. Pour caler les textes, l’agent a changé leur taille, relu les largeurs mesurées par le plugin, puis les a repositionnés ; dans ce test, estimer les dimensions d’une police n’a pas suffi.

Pour reproduire l’exercice, donnez l’image à l’agent, demandez une première version puis des corrections ciblées, exigez qu’il cale les textes sur les largeurs mesurées par le plugin, et comparez l’export à l’original, en vous attendant à des écarts.

CLI ou MCP Excalidraw : que choisir ?

Un serveur MCP (Model Context Protocol) donne des outils à un client d’IA, comme Claude Code. Plusieurs serveurs MCP savent faire dessiner un agent, mais ils n’écrivent pas au même endroit que la CLI.

ApprocheOù vit le dessinQui écrit le fichier ObsidianLiens vers vos notes
CLI native du plugin (2.29.0)Dans votre coffreLe plugin ExcalidrawOui, posés à la création
Serveur MCP avec sa propre zone de dessin, par exemple mcp_excalidrawDans une application de dessin séparée, puis exportéUn convertisseurÀ reposer à la conversion
Skill (jeu d’instructions chargé par l’agent) qui écrit le fichier lui-mêmeDans votre coffreL’agentSelon la skill

Avant cette version, les schémas que je faisais produire par un agent passaient surtout par mcp_excalidraw, puis par un convertisseur. La conversion vers Obsidian était l’étape fragile : textes invisibles, liens à reposer, fichiers recompressés par le plugin.

Si vous cherchez plutôt à brancher votre agent sur vos notes, le tutoriel connecter Obsidian à Claude, Codex ou ChatGPT explique la marche à suivre, et le comparatif des MCP Obsidian aide à choisir un serveur.

Verdict

À l’issue de ces tests, je passe à la CLI par défaut pour les schémas que je fais produire par un agent. Je garde le MCP pour deux cas : un agent qui n’a pas accès à Obsidian sur la même machine, ou un dessin destiné à vivre hors d’Obsidian.

Pour vous, la CLI Excalidraw vaut la peine si vous voulez des schémas reliés à vos notes, que vous pourrez reprendre à la main, et si Obsidian tourne sur la même machine que l’agent. Commencez dans un coffre de test, donnez à l’agent les consignes officielles, et imposez-lui de tracer chaque flèche et de regarder l’image exportée avant de conclure. Regardez-la aussi vous-même avant de garder le dessin. La CLI est toute récente et peut encore changer d’une version à l’autre.

Pour démarrer, remplacez « Mon coffre » par le nom de votre coffre de test, et les notes par les vôtres :

Dans le coffre « Mon coffre », vérifie la CLI Excalidraw avec status, puis lis schema action=create.
Crée « Schémas/Mon processus.excalidraw.md » : 5 étapes verticales, liées à [[Note 1]], [[Note 2]], [[Note 3]], [[Note 4]] et [[Note 5]].
Donne les points de chaque flèche. Exporte un PNG, regarde-le et corrige avant de conclure.

schema action=create donne à l’agent la description des champs qu’attend create.

Questions fréquentes

Faut-il qu’Obsidian reste ouvert ?

Pas besoin de l’ouvrir à l’avance : si l’application est fermée, la première commande la lance. Elle doit en revanche se trouver sur la même machine que l’agent ; un agent qui tourne dans le cloud, sans accès à votre ordinateur, ne peut pas utiliser la CLI.

Est-ce que cela fonctionne avec Codex ?

Non testé ici. La CLI est conçue pour tout agent capable de lancer des commandes sur votre ordinateur, ce qui rend l’usage avec Codex plausible. Dans ces tests, Codex a seulement généré l’image de la reconstruction ; c’est Claude Code qui a piloté la CLI.

L’agent peut-il abîmer mes dessins ?

Il peut écrire de mauvais éléments. Les garde-fous empêchent surtout d’écraser un fichier ou une version plus récente. Travaillez sur un coffre de test au début, et n’autorisez pas les scripts sans les relire.

Les dessins restent-ils modifiables à la main ?

Oui. Ce sont des dessins Excalidraw ordinaires : vous pouvez déplacer, recolorer, grouper ou ajouter des éléments à votre bibliothèque.

Protocole de test et limites

  • Essais menés par Claude Code, sous ma direction : création avec liens et accents, schéma de 67 éléments, corrections par apply, lecture paginée, exports en thème clair et sombre, déclenchement volontaire des garde-fous, insertion d’une image et d’un élément de bibliothèque par script, reconstruction d’une infographie générée par Codex.
  • Outillage de l’agent : l’aide intégrée de la CLI et le kit officiel, puis mes propres consignes et un petit script d’appel, écrits pendant ces tests à partir des pièges rencontrés.
  • Limites : une seule machine, un seul agent pilote, aucun agent sans consignes, aucun coût mesuré, aucune comparaison de vitesse ; formules LaTeX refusées faute de MathJax ; annulation d’un apply non testée.
  • Prochaine revue : 13 novembre 2026, ou plus tôt si une nouvelle version change la CLI.

Sources

Sources contrôlées le 14 octobre 2026 ; essais menés le même jour par Claude Code, sous ma direction.

Et ensuite

Avant d’ouvrir un coffre réel à votre agent, décidez quels dossiers il peut modifier et comment vous relirez ses écritures : c’est l’objet du guide Obsidian et agents IA.

La lettre Optimike

Ce que je teste sur Obsidian et l’IA, avant que ça devienne un guide.

Ce qui marche, ce qui casse. Premier envoi en novembre. Vous vous désinscrivez quand vous voulez.

Votre email sert uniquement à l’envoi de la lettre d’Optimike. Données personnelles