Generates Excalidraw diagrams from text in Obsidian .md, standard .excalidraw JSON, or animated formats with draw order. Auto-triggers on 'diagram', 'flowchart' keywords.
From claude-toolkitnpx claudepluginhub luistheabysswalker/claude-toolkitThis skill uses the workspace's default tool permissions.
references/excalidraw-schema.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides slash command development for Claude Code: structure, YAML frontmatter, dynamic arguments, bash execution, user interactions, organization, and best practices.
Create Excalidraw diagrams from text content with multiple output formats.
根据用户的触发词选择输出模式:
| 触发词 | 输出模式 | 文件格式 | 用途 |
|---|---|---|---|
Excalidraw、画图、流程图、思维导图 | Obsidian(默认) | .md | 在 Obsidian 中直接打开 |
标准Excalidraw、standard excalidraw | Standard | .excalidraw | 在 excalidraw.com 打开/编辑/分享 |
Excalidraw动画、动画图、animate | Animated | .excalidraw | 拖到 excalidraw-animate 生成动画 |
严格按照以下结构输出,不得有任何修改:
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
%%
## Drawing
\`\`\`json
{JSON 完整数据}
\`\`\`
%%
关键要点:
tags: [excalidraw]%% 标记包围excalidraw-plugin: parsed 以外的其他 frontmatter 设置.md直接输出纯 JSON 文件,可在 excalidraw.com 打开:
{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw.com",
"elements": [...],
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
},
"files": {}
}
关键要点:
source 使用 https://excalidraw.com(不是 Obsidian 插件).excalidraw与 Standard 格式相同,但每个元素添加 customData.animate 字段控制动画顺序:
{
"id": "element-1",
"type": "rectangle",
"customData": {
"animate": {
"order": 1,
"duration": 500
}
},
...其他标准字段
}
动画顺序规则:
order: 动画播放顺序(1, 2, 3...),数字越小越先出现duration: 该元素的绘制时长(毫秒),默认 500order 的元素同时出现使用方法:
.excalidraw 文件文件扩展名:.excalidraw
选择合适的图表形式,以提升理解力与视觉吸引力。
| 类型 | 英文 | 使用场景 | 做法 |
|---|---|---|---|
| 流程图 | Flowchart | 步骤说明、工作流程、任务执行顺序 | 用箭头连接各步骤,清晰表达流程走向 |
| 思维导图 | Mind Map | 概念发散、主题分类、灵感捕捉 | 以中心为核心向外发散,放射状结构 |
| 层级图 | Hierarchy | 组织结构、内容分级、系统拆解 | 自上而下或自左至右构建层级节点 |
| 关系图 | Relationship | 要素之间的影响、依赖、互动 | 图形间用连线表示关联,箭头与说明 |
| 对比图 | Comparison | 两种以上方案或观点的对照分析 | 左右两栏或表格形式,标明比较维度 |
| 时间线图 | Timeline | 事件发展、项目进度、模型演化 | 以时间为轴,标出关键时间点与事件 |
| 矩阵图 | Matrix | 双维度分类、任务优先级、定位 | 建立 X 与 Y 两个维度,坐标平面安置 |
| 自由布局 | Freeform | 内容零散、灵感记录、初步信息收集 | 无需结构限制,自由放置图块与箭头 |
fontFamily: 5(Excalifont 手写字体)" 替换为 『』() 替换为 「」lineHeight: 1.25estimatedWidth = text.length * fontSize * 0.5(CJK 字符用 * 1.0)x = centerX - estimatedWidth / 2estimatedWidth = 5 * 20 * 0.5 = 50 → x = 300 - 25 = 275文字颜色(strokeColor for text):
| 用途 | 色值 | 说明 |
|---|---|---|
| 标题 | #1e40af | 深蓝 |
| 副标题/连接线 | #3b82f6 | 亮蓝 |
| 正文文字 | #374151 | 深灰(白底最浅不低于 #757575) |
| 强调/重点 | #f59e0b | 金色 |
形状填充色(backgroundColor, fillStyle: "solid"):
| 色值 | 语义 | 适用场景 |
|---|---|---|
#a5d8ff | 浅蓝 | 输入、数据源、主要节点 |
#b2f2bb | 浅绿 | 成功、输出、已完成 |
#ffd8a8 | 浅橙 | 警告、待处理、外部依赖 |
#d0bfff | 浅紫 | 处理中、中间件、特殊项 |
#ffc9c9 | 浅红 | 错误、关键、告警 |
#fff3bf | 浅黄 | 备注、决策、规划 |
#c3fae8 | 浅青 | 存储、数据、缓存 |
#eebefa | 浅粉 | 分析、指标、统计 |
区域背景色(大矩形 + opacity: 30,用于分层图表):
| 色值 | 语义 |
|---|---|
#dbe4ff | 前端/UI 层 |
#e5dbff | 逻辑/处理层 |
#d3f9d8 | 数据/工具层 |
对比度规则:
#757575,否则不可读#15803d,不用 #22c55e)#b0b0b0、#999)出现在白底上参考:references/excalidraw-schema.md
Obsidian 模式:
{
"type": "excalidraw",
"version": 2,
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin",
"elements": [...],
"appState": { "gridSize": null, "viewBackgroundColor": "#ffffff" },
"files": {}
}
Standard / Animated 模式:
{
"type": "excalidraw",
"version": 2,
"source": "https://excalidraw.com",
"elements": [...],
"appState": { "gridSize": null, "viewBackgroundColor": "#ffffff" },
"files": {}
}
Each element requires these fields (do NOT add extra fields like frameId, index, versionNonce, rawText -- they may cause issues on excalidraw.com. boundElements must be null not [], updated must be 1 not timestamps):
{
"id": "unique-id",
"type": "rectangle",
"x": 100, "y": 100,
"width": 200, "height": 50,
"angle": 0,
"strokeColor": "#1e1e1e",
"backgroundColor": "transparent",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": {"type": 3},
"seed": 123456789,
"version": 1,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
}
strokeStyle values: "solid"(实线,默认)| "dashed"(虚线)| "dotted"(点线)。虚线适合表示可选路径、异步流、弱关联等。
Text elements add:
{
"text": "显示文本",
"fontSize": 20,
"fontFamily": 5,
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "显示文本",
"autoResize": true,
"lineHeight": 1.25
}
Animated 模式额外添加 customData 字段:
{
"id": "title-1",
"type": "text",
"customData": {
"animate": {
"order": 1,
"duration": 500
}
},
...其他字段
}
See references/excalidraw-schema.md for all element types.
## Text Elements 部分在 Markdown 中必须留空,仅用 %% 作为分隔符id(可以是字符串,如「title」「box1」等)IMPORTANT: Do NOT include frameId, index, versionNonce, or rawText fields. Use boundElements: null (not []), and updated: 1 (not timestamps).
{
"id": "unique-identifier",
"type": "rectangle|text|arrow|ellipse|diamond",
"x": 100, "y": 100,
"width": 200, "height": 50,
"angle": 0,
"strokeColor": "#color-hex",
"backgroundColor": "transparent|#color-hex",
"fillStyle": "solid",
"strokeWidth": 2,
"strokeStyle": "solid|dashed|dotted",
"roughness": 1,
"opacity": 100,
"groupIds": [],
"roundness": {"type": 3},
"seed": 123456789,
"version": 1,
"isDeleted": false,
"boundElements": null,
"updated": 1,
"link": null,
"locked": false
}
文本元素 (type: "text") 需要额外属性(do NOT include rawText):
{
"text": "显示文本",
"fontSize": 20,
"fontFamily": 5,
"textAlign": "center",
"verticalAlign": "middle",
"containerId": null,
"originalText": "显示文本",
"autoResize": true,
"lineHeight": 1.25
}
"appState": {
"gridSize": null,
"viewBackgroundColor": "#ffffff"
}
"files": {}
x 是左边缘,不是中心。必须用居中公式手动计算,否则文字会偏到一边#757575,有色文字用深色变体当生成 Excalidraw 图表时,必须自动执行以下步骤:
根据输出模式选择文件扩展名:
| 模式 | 文件名格式 | 示例 |
|---|---|---|
| Obsidian | [主题].[类型].md | 商业模式.relationship.md |
| Standard | [主题].[类型].excalidraw | 商业模式.relationship.excalidraw |
| Animated | [主题].[类型].animate.excalidraw | 商业模式.relationship.animate.excalidraw |
{current_directory}/[filename].md必须按以下格式生成(不能有任何修改):
---
excalidraw-plugin: parsed
tags: [excalidraw]
---
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
# Excalidraw Data
## Text Elements
%%
## Drawing
\`\`\`json
{完整的 JSON 数据}
\`\`\`
%%
fontFamily: 5" 替换为 『』() 替换为 「」idappState 和 files: {} 字段向用户报告:
Obsidian 模式:
Excalidraw 图已生成!
保存位置:商业模式.relationship.md
使用方法:
1. 在 Obsidian 中打开此文件
2. 点击右上角 MORE OPTIONS 菜单
3. 选择 Switch to EXCALIDRAW VIEW
Standard 模式:
Excalidraw 图已生成!
保存位置:商业模式.relationship.excalidraw
使用方法:
1. 打开 https://excalidraw.com
2. 点击左上角菜单 → Open → 选择此文件
3. 或直接拖拽文件到 excalidraw.com 页面
Animated 模式:
Excalidraw 动画图已生成!
保存位置:商业模式.relationship.animate.excalidraw
动画顺序:标题(1) → 主框架(2-4) → 连接线(5-7) → 说明文字(8-10)
生成动画:
1. 打开 https://dai-shi.github.io/excalidraw-animate/
2. 点击 Load File 选择此文件
3. 预览动画效果
4. 点击 Export 导出 SVG 或 WebM