Excalidraw CLI

用文本 DSL、JSON 或 Graphviz DOT 生成可编辑的 Excalidraw 图表,适合 agent 与脚本使用。

Star 数
★ 315
最近更新
今天
License
MIT
主语言
TypeScript

30 秒速览

运行形态
命令行工具Agent 插件 / 技能代码库 / SDK
可在哪里用
通用 · 跨平台Codex · Claude Code
费用
免费,无需付费服务
上手难度
低 · 几分钟可跑通
开始前需要
Node.js >=20.19.0Shell / 命令行网络访问本地文件系统
典型场景
开发者从 CLI 或脚本中用一行 DSL 快速生成流程图,再在 Excalidraw 中微调。
不适合
  • 需要在浏览器中手动拖拽绘制或实时协作画图的用户
  • 无法安装 Node.js 20.19+ 的运行环境

这个 Agent 能做什么,适合哪些场景?

excalidraw-cli 是一个基于 Node.js 的命令行工具,把文本 DSL、JSON 或 Graphviz DOT 转换成可编辑的 .excalidraw 文件。它内置 ELK.js 自动布局,支持 TB、BT、LR、RL 四种流向,并能把已有文件导出为 PNG 或 SVG。除了 CLI,它还提供 createFlowchartFromDSL、createFlowchartFromJSON、convertToSVG、convertToPNG 等编程 API。项目附带 Claude Code、Codex、Cursor 的 skill,以及 Gemini CLI 扩展和 Claude Code 插件,方便 agent 调用。产出文件可以在 Excalidraw 或 Obsidian 的 Excalidraw 插件中打开继续编辑。

执行 excalidraw-cli create 时,工具读取文件、--inline 字符串或 stdin,解析 DSL、JSON 或 DOT 输入,构建节点与边图,再调用 ELK.js 计算布局,最终写出 .excalidraw 文件。DSL 支持 [Label] 矩形、{Label} 菱形、(Label) 椭圆、[[Label]] 数据库、![path] 图片节点,以及 ->、<-、<->、--> 等箭头和带引号标签。@direction、@spacing 指令和 @node 样式块可配置流向、间距与填充样式。convert 子命令把已有 .excalidraw 文件导出为 PNG 或 SVG,支持 --scale、--dark、--no-export-background。parse 子命令只解析并打印图结构,不生成文件。

  1. 开发者从 CLI 或脚本中用一行 DSL 快速生成流程图,再在 Excalidraw 中微调。
  2. Claude Code、Codex 或 Cursor 用户安装 skill 后,让 agent 根据代码结构自动产出架构图。
  3. 需要把 Graphviz DOT 现有图表迁移为可编辑 Excalidraw 文件的团队。
  4. 在 CI 或文档流水线中把 .excalidraw 批量导出为 PNG 或 SVG 的工程团队。
  5. 在 TypeScript 项目中通过 createFlowchartFromJSON 以编程方式生成图表的应用开发者。

如何安装或部署这个 Agent?

需要 Node.js >=20.19.0。

通过 npm 全局安装:

npm install -g @swiftlysingh/excalidraw-cli

或通过 Homebrew 安装(会自动安装 Node.js):

brew install swiftlysingh/tap/excalidraw-cli

不全局安装也可直接运行:

npx --yes @swiftlysingh/excalidraw-cli create --inline "[A] -> [B]" -o diagram.excalidraw

从源码构建:

git clone https://github.com/swiftlysingh/excalidraw-cli.git
cd excalidraw-cli
npm install
npm run build
npm link

为 agent 安装 skill:

npx skills add swiftlysingh/excalidraw-cli

Claude Code 插件:

/plugin marketplace add swiftlysingh/excalidraw-cli
/plugin install excalidraw-cli@excalidraw-cli

如何使用这个 Agent?

从内联 DSL 创建:

excalidraw-cli create --inline "(Start) -> [Process] -> {Decision?}" -o flow.excalidraw

从文件或 stdin 创建:

excalidraw-cli create flowchart.dsl -o diagram.excalidraw
echo "[A] -> [B] -> [C]" | excalidraw-cli create --stdin -o diagram.excalidraw

从 DOT 创建:

excalidraw-cli create --format dot --inline 'digraph { A [label="Start"]; B [label="Process"]; A -> B; }' -o flow.excalidraw

导出为 PNG 或 SVG:

excalidraw-cli convert diagram.excalidraw --format png --scale 2 --dark
excalidraw-cli convert diagram.excalidraw --format svg --no-export-background

JSON 输入示例:

{
  "nodes": [
    { "id": "start", "type": "ellipse", "label": "Start" },
    { "id": "process", "type": "rectangle", "label": "Process" },
    { "id": "end", "type": "ellipse", "label": "End" }
  ],
  "edges": [
    { "from": "start", "to": "process" },
    { "from": "process", "to": "end" }
  ],
  "options": { "direction": "TB", "nodeSpacing": 50 }
}

编程调用:

import { createFlowchartFromDSL } from '@swiftlysingh/excalidraw-cli';
const json = await createFlowchartFromDSL('(Start) -> [Process] -> (End)');

这个 Agent 有哪些优点和局限?

优点
  • 内置 ELK.js 自动布局,无需手动摆放节点即可得到整齐的图。
  • 同一套 CLI 同时接受 DSL、JSON 和 Graphviz DOT 三种输入,迁移成本低。
  • 除 .excalidraw 外还能直接导出 PNG/SVG,支持暗色模式、缩放与内边距。
  • 提供 Claude Code、Codex、Cursor 的 skill 和 Claude Code 插件,agent 集成路径明确。
  • 以 MIT 许可证发布,并提供 npm 包与 Homebrew tap,安装方式多样。
局限
  • 必须安装 Node.js >=20.19.0,旧版 Node 18 已不再支持。
  • 仅支持本地图片节点,![path] 不指向远程 URL。
  • DOT 子图会被扁平化,复杂 Graphviz 属性未必完全保留。
  • 边缘标签必须使用完整的 [A] -> "label" -> [B] 形式,混合写法会被拒绝。
  • 没有仓库内的 AGENTS.md 或额外集成指南,agent 侧能力以 README 描述为准。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Excalidraw CLI 当前 67 · 存在缺口 命令行工具免费 ★ 315 今天 TypeScript Codex · Claude Code
Microsoft Learn MCP Server 43 · 缺口较多 MCP 服务器免费 ★ 2k 6 天前 TypeScript ChatGPT · Codex · Claude Code · Claude.ai
CC Workflow Studio 50 · 缺口较多 IDE 插件免费 + 模型费 ★ 5.4k 3 个月前 TypeScript ChatGPT · Codex · Claude Code
Deep Code CLI 49 · 缺口较多 命令行工具免费 + 模型费 ★ 2.2k 今天 TypeScript —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
67/ 100 五分制 3.4 / 5
信任安全 14/29
可靠稳定 11/14
适用触发 14/18
规范维护 14/18
有效结果 10/13
证据核验 4/8
查看各维度的扣分理由
信任安全14 / 29 · 2.4/5

本地 CLI 工具,默认只读写用户指定的文件,权限面较小(least_privilege 2);但 create/convert 直接写文件、无覆盖确认或 dry-run(user_confirmation 1),也无回滚机制(rollback 1)。数据流基本透明:输入来自文件/内联/stdin,输出到指定路径或 stdout(data_flow_transparency 2)。图片节点仅限本地文件,但 README 未说明敏感数据处理策略(sensitive_data_handling 1)。依赖含 jsdom、@resvg/resvg-js、elkjs 等,无锁文件审计或漏洞扫描证据(dependency_security 1)。外部副作用限于本地文件写入,无网络外发(external_effects 2)。来源归属在 README/package.json 中明确作者与仓库(source_attribution 2)。

可靠稳定11 / 14 · 3.9/5

README 的 CLI 参考、DSL 语法与测试用例相互一致(self_consistency 2)。依赖均为公开 npm 包且版本范围明确,Node 引擎约束清晰(dependency_availability 2)。测试显示对无效选项、未闭合 DSL、错误输出扩展名给出明确错误信息(failure_messages 3)。

适用触发14 / 18 · 3.9/5

面向 agent、脚本与开发者,覆盖 DSL/JSON/DOT 多输入与 PNG/SVG 导出,场景覆盖充分(audience_and_scenarios 3)。能力边界有说明(DOT 子图扁平化、图片仅本地),但部分高级特性指向 man page 而非内联说明(capability_boundaries 2)。触发精度依赖文件扩展名与 --format 覆盖,规则清晰但混合形式被拒的边界需读者推断(trigger_precision 2)。环境适配限于 Node>=20.19.0,Homebrew 自动装 Node,但无 Windows 等平台说明(environment_fit 2)。

规范维护14 / 18 · 3.9/5

README 结构清晰,含安装、快速开始、CLI 参考、API、示例(information_architecture 3)。npm/Homebrew/源码/npx 多种安装方式说明详尽(install_notes 3)。命名与版本在 package.json 与 README 一致,但版本策略仅靠 release 工作流,无显式语义化承诺(naming_stability 2)。示例丰富含 DSL、JSON、导出(examples_and_faq 3)。已知限制仅零散提及,无专门章节(known_limitations 1)。MIT 许可证文件完整(license 3)。有 release 工作流与版本号,但无 CHANGELOG 文件(versioning_changelog 2)。维护责任由单一作者承担,发布流程自动化但无治理说明(maintenance_responsibility 2)。

有效结果10 / 13 · 3.8/5

输出为可编辑 .excalidraw 及 PNG/SVG,可直接在 Excalidraw/Obsidian 使用(output_usability 3)。对 agent 生成图表有实际价值,但同类工具存在,边际价值中等(marginal_value 2)。安装与使用成本低,但依赖较重(jsdom、resvg)(cost_benefit 2)。

证据核验4 / 8 · 2.5/5

README 声明与测试、工作流可部分对应(claim_traceability 2)。测试与 CI 工作流相互印证部分行为(cross_source_corroboration 2)。但 README 中部分能力(如 scatter 指令、man page 内容)未在提供的文件中体现,事实与推断边界不够清晰(fact_inference_separation 1)。

风险与缓解建议
  • create/convert 直接写文件,无覆盖确认或 dry-run,误覆盖风险需用户自行防范。
  • 依赖较重(jsdom、@resvg/resvg-js、elkjs),未提供锁文件审计或漏洞扫描证据,建议安装前核查依赖。
  • README 提及的 scatter 指令、man page 内容等未在提供的文件中体现,部分能力声明无法静态核实。
  • 无 CHANGELOG,版本变更需依赖 release 工作流与 GitHub Releases 推断。
  • 发布者身份未经 FollowAgents 企业注册表验证,维护责任集中于单一作者。
证据充分度:低 评估于 2026年11月5日 审查版本 913349475eb7
查看完整评分方法 →

常见问题

它需要调用外部 LLM 或付费 API 吗?
不需要。布局由本地 ELK.js 完成,工具本身不调用任何模型 API;费用仅取决于你使用的 agent 是否另行收费。
生成的文件能在哪些工具里打开?
生成的 .excalidraw 文件可直接在 Excalidraw 网页版打开,也能导入 Obsidian 的 Excalidraw 插件继续编辑。
Graphviz DOT 支持到什么程度?
DOT 子图会被扁平化,支持的属性与形状映射以 man excalidraw-cli 手册为准,复杂属性可能无法完整保留。
PNG 导出有哪些限制?
未指定背景时使用文件的 appState.viewBackgroundColor,缺失则回退到 #ffffff;PNG 缩放值会被限制在 0.1 到 10 之间。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents