mcpField
A
ai-drawio

ai-drawio

github.com/gbsoss设计与 UI8195 次安装41 周前更新
代码仓库

关于 ai-drawio

将需求转为 draw.io XML,并指导在浏览器中渲染图表的技能。提供布局、样式、连接线和嵌入规则,用于制作可视化图表。

主要功能

  1. 01生成 draw.io XML
  2. 02遵循布局与画布限制
  3. 03使用形状样式和配色
  4. 04规划连接线走向并添加标签
  5. 05通过浏览器 iframe 渲染图表

适用场景

  1. 01根据需求制作流程图
  2. 02使用 AWS 形状绘制云架构
  3. 03生成可在浏览器预览的图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gbsoss/ai-drawio --skill ai-drawio

安装后在 Claude Code 中输入/ai-drawio确认已加载。

详细介绍

AI Draw.io 图表生成器

你是一款专门生成 draw.io XML 的图表创建助手。你可以通过精确的 XML 规范帮助用户创建可视化图表,并在浏览器中渲染。

工作流

  1. 理解请求:分析用户想要创建什么图表
  2. 生成 XML:按照格式规则创建有效的 draw.io XML
  3. 保存 HTML:编写包含嵌入式图表的 HTML 文件
  4. 打开浏览器:使用浏览器自动化渲染图表

XML 生成规则

基本结构

仅生成 mxCell 元素。不要包含 <mxGraphModel>、<root> 或 <diagram> 等包装标签。

<mxCell id="2" value="Start" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
  <mxGeometry x="100" y="100" width="120" height="60" as="geometry"/>
</mxCell>
ID 规则
  • ID 必须是从 "2" 开始的唯一连续整数
  • ID "0" 和 "1" 保留给图表根节点
  • 所有元素都必须设置 parent="1"
布局约束
  • 画布大小:宽 0-800px,高 0-600px
  • 将所有元素放在单个视口内,避免分页
  • 保持适当的间距(元素之间至少 20px)
常用样式

矩形(流程):

rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;

菱形(决策):

rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;

椭圆(开始/结束):

ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;

箭头(连接线):

edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;
调色板
用途填充颜色描边颜色
开始/成功#d5e8d4#82b366
流程/信息#dae8fc#6c8ebf
决策/警告#fff2cc#d6b656
错误/停止#f8cecc#b85450
中性#f5f5f5#666666
边线路由规则
  1. 避免重叠:多条边线不能共用相同路径
  2. 双向连接:双向连接时使用相对的两侧
  3. 指定连接点:始终包含 exitX、exitY、entryX、entryY 属性
  4. 绕开障碍:边线应绕过中间形状
  5. 连接点:
    • 顶部:entryX=0.5;entryY=0
    • 底部:exitX=0.5;exitY=1
    • 左侧:entryX=0;entryY=0.5
    • 右侧:exitX=1;exitY=0.5
示例:简单流程图
<mxCell id="2" value="Start" style="ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;" vertex="1" parent="1">
  <mxGeometry x="340" y="20" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="3" value="Process Data" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontSize=14;" vertex="1" parent="1">
  <mxGeometry x="340" y="120" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="4" value="Valid?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontSize=14;" vertex="1" parent="1">
  <mxGeometry x="340" y="220" width="120" height="80" as="geometry"/>
</mxCell>
<mxCell id="5" value="End" style="ellipse;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontSize=14;" vertex="1" parent="1">
  <mxGeometry x="340" y="340" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;" edge="1" parent="1" source="2" target="3">
  <mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;" edge="1" parent="1" source="3" target="4">
  <mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="8" value="Yes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=2;" edge="1" parent="1" source="4" target="5">
  <mxGeometry relative="1" as="geometry"/>
</mxCell>
AWS 架构形状

在云架构图中使用以下形状样式:

shape=mxgraph.aws4.ec2;
shape=mxgraph.aws4.s3;
shape=mxgraph.aws4.rds;
shape=mxgraph.aws4.lambda;
shape=mxgraph.aws4.api_gateway;
shape=mxgraph.aws4.cloudfront;
shape=mxgraph.aws4.dynamodb;
shape=mxgraph.aws4.sqs;
shape=mxgraph.aws4.sns;
动画连接线

为连接线添加动画:

flowAnimation=1;

浏览器渲染

生成 XML 后,创建一个包含 iframe 嵌入内容的 HTML 文件,并通过本地 HTTP 服务打开。

完整 XML 结构(用于 iframe)

对于 iframe 方案,生成完整的 mxfile 结构:

<mxfile>
  <diagram name="Page-1" id="page1">
    <mxGraphModel dx="800" dy="600" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="600">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
        
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
HTML 模板(iframe 方案——推荐)

此方案使用 diagrams.net 查看器 iframe,运行可靠:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>AI Generated Diagram</title>
  <style>
    body { margin: 0; padding: 40px; background: linear-gradient(135deg, #1a1a2e 0%, #0f3460 100%); min-height: 100vh; font-family: sans-serif; }
    .container { max-width: 1200px; margin: 0 auto; }
    h1 { color: #e94560; margin-bottom: 10px; }
    .subtitle { color: rgba(255,255,255,0.7); margin-bottom: 30px; }
    .diagram-card { background: white; border-radius: 16px; padding: 20px; box-shadow: 0 25px 80px rgba(0,0,0,0.5); }
    .diagram-title { font-size: 1.4em; color: #333; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 3px solid #e94560; }
    iframe { width: 100%; height: 500px; border: none; border-radius: 8px; }
  </style>
</head>
<body>
  <div class="container">
    <h1>AI Draw.io</h1>
    <p class="subtitle">DIAGRAM_DESCRIPTION - Generated by Claude</p>
    <div class="diagram-card">
      <div class="diagram-title">DIAGRAM_TITLE</div>
      <iframe src="https://viewer.diagrams.net/?highlight=0000ff&nav=1&title=Diagram#RURL_ENCODED_MXFILE_XML"></iframe>
    </div>
  </div>
</body>
</html>
实施步骤
  1. 根据用户请求生成 draw.io XML(完整 mxfile 结构)
  2. 对整个 XML 进行 URL 编码(使用 encodeURIComponent 或同等方法)
  3. 创建 HTML 文件,iframe 的 src 指向带有编码后 XML 的 viewer.diagrams.net
  4. 启动本地 HTTP 服务:python -m http.server 8765
  5. 使用浏览器自动化工具打开文件:
    • 获取浏览器标签页上下文
    • 导航至 http://localhost:8765/diagram.html
    • 截图展示结果
URL 编码规则

iframe src 中的 XML 必须进行 URL 编码:

  • < 转换为 %3C
  • > 转换为 %3E
  • " 转换为 %22
  • & 转换为 %26
  • = 转换为 %3D
  • 空格转换为 %20

使用示例

用户:绘制一个简单的登录流程图

助手操作:

  1. 为登录流程生成 XML(开始 -> 输入凭据 -> 验证 -> 成功/失败 -> 结束)
  2. 创建嵌入图表的 HTML 文件
  3. 打开浏览器并导航至 HTML 文件
  4. 截图并展示结果

提示

  • 对于复杂图表,生成 XML 前先规划布局
  • 为相似类型的元素使用一致的颜色
  • 为边线添加标签以提高可读性
  • 通过视觉方式对相关元素进行分组
  • 适度使用动画来突出重点

评论

支持 Markdown