Excalidraw CLI : faire dessiner un agent IA dans Obsidian

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.

Sommaire 16 sections
- Ce que Claude Code a fait pendant les tests
- Comment ça marche
- Avant de commencer
- Étape 1 : vérifier que la CLI répond
- Étape 2 : demander un premier dessin relié à vos notes
- Étape 3 : faire vérifier le résultat, puis le regarder
- Étape 4 : faire corriger un dessin existant
- Les pièges rencontrés pendant les tests
- Les garde-fous, dans les cas testés
- Recréer une infographie générée par une IA
- CLI ou MCP Excalidraw : que choisir ?
- Verdict
- Questions fréquentes
- Protocole de test et limites
- Sources
- 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.
| Commande | Ce qu’elle fait | Écrit dans le coffre ? |
|---|---|---|
help, status, schema | Vérifie que la CLI répond et décrit chaque commande | Non |
list, read | Liste les dessins, lit leur contenu élément par élément | Non |
open | Ouvre un dessin dans Obsidian | Non, mais peut lancer les scripts associés au dessin |
create | Crée un nouveau dessin, sans jamais écraser un fichier existant | Oui |
apply | Modifie un dessin ouvert : ajouter, déplacer, relier, grouper | Oui |
export | Produit une image PNG ou SVG du dessin | Oui (le fichier image) |
script | Exécute un script Excalidraw que vous avez autorisé | Oui, sans retour arrière automatique |
result | Retrouve le résultat d’une commande dont la réponse s’est perdue | Non |
Avant de commencer
- 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.
- 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).
- 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. - Préparez un coffre de test, ou faites une sauvegarde : l’agent écrit de vrais fichiers.
- 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.
- 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ôtexcalidraw/clisur 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.

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 observe | Cause observée | Parade |
|---|---|---|
| Les flèches sont reliées aux bonnes formes, mais tracées à l’horizontale sous la forme de départ | Créées sans points, elles gardent leur tracé par défaut | Donner les points de chaque flèche dès la création |
| Une flèche entre deux colonnes traverse tout le schéma en diagonale | connect 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 rien | Un argument d’environ 4 Ko ou plus fait planter la ligne de commande d’Obsidian | Passer les grosses requêtes par un fichier, avec input= |

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
labelde 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
imagerefuse une échelle numérique : la description renvoyée parschemane correspond pas au comportement de la 2.29.0. Parade : insérer l’image sansscale.
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 :
createsur un fichier existant :ALREADY_EXISTS.applyavec une révision dépassée :STALE_REVISION.exportvers une image existante sansoverwrite=true: refusé.scriptsanstrusted=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.
| Approche | Où vit le dessin | Qui écrit le fichier Obsidian | Liens vers vos notes |
|---|---|---|---|
| CLI native du plugin (2.29.0) | Dans votre coffre | Le plugin Excalidraw | Oui, posés à la création |
| Serveur MCP avec sa propre zone de dessin, par exemple mcp_excalidraw | Dans 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ême | Dans votre coffre | L’agent | Selon 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
applynon testée. - Prochaine revue : 13 novembre 2026, ou plus tôt si une nouvelle version change la CLI.
Sources
- Excalidraw pour Obsidian : note de version 2.29.0 (12 octobre 2026) et demande d’intégration #2988
- Kit pour agents « obsidian-excalidraw-cli » (version du 12 octobre 2026)
- Aide d’Obsidian : la ligne de commande et mettre à jour Obsidian
- Vidéo de présentation par Zsolt Viczián
- mcp_excalidraw (yctimlin)
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.