excalidraw-diagram-generator

excalidraw-diagram-generator

熱門

從自然語言描述產生 Excalidraw 圖表。當被要求「建立圖表」、「製作流程圖」、「視覺化流程」、「繪製系統架構」、「建立心智圖」或「產生 Excalidraw 檔案」時使用。支援流程圖、關係圖、心智圖與系統架構圖。輸出可直接在 Excalidraw 中開啟的 .excalidraw JSON 檔案。

3.5萬星標
4464分支
更新於 2026/6/22
SKILL.md
readonlyread-only
name
excalidraw-diagram-generator
description

從自然語言描述產生 Excalidraw 圖表。當被要求「建立圖表」、「製作流程圖」、「視覺化流程」、「繪製系統架構」、「建立心智圖」或「產生 Excalidraw 檔案」時使用。支援流程圖、關係圖、心智圖與系統架構圖。輸出可直接在 Excalidraw 中開啟的 .excalidraw JSON 檔案。

Excalidraw 圖表產生器

這項技能可從自然語言描述產生 Excalidraw 格式的圖表,協助視覺化流程、系統、關係與想法,無需手動繪圖。

使用時機

當使用者要求以下內容時使用此技能:

  • 「建立一個圖表顯示...」
  • 「製作一個流程圖...」
  • 「視覺化...的流程」
  • 「繪製...的系統架構」
  • 「產生一個關於...的心智圖」
  • 「建立一個 Excalidraw 檔案...」
  • 「顯示...之間的關係」
  • 「圖解...的工作流程」

支援的圖表類型:

  • 📊 流程圖:循序流程、工作流程、決策樹
  • 🔗 關係圖:實體關係、系統元件、相依性
  • 🧠 心智圖:概念階層、腦力激盪結果、主題組織
  • 🏗️ 架構圖:系統設計、模組互動、資料流
  • 📈 資料流程圖 (DFD):資料流視覺化、資料轉換流程
  • 🏊 商業流程圖 (泳道圖):跨功能工作流程、以角色為基礎的流程
  • 📦 類別圖:物件導向設計、類別結構與關係
  • 🔄 序列圖:物件隨時間的互動、訊息流
  • 🗃️ ER 圖:資料庫實體關係、資料模型

前置條件

  • 清楚描述要視覺化的內容
  • 識別關鍵實體、步驟或概念
  • 了解元素之間的關係或流程

逐步工作流程

步驟 1:理解需求

分析使用者的描述以確定:

  1. 圖表類型(流程圖、關係圖、心智圖、架構圖)
  2. 關鍵元素(實體、步驟、概念)
  3. 關係(流程、連接、階層)
  4. 複雜度(元素數量)

步驟 2:選擇適當的圖表類型

使用者意圖 圖表類型 範例關鍵字
流程、步驟、程序 流程圖 「工作流程」、「流程」、「步驟」、「程序」
連接、相依、關聯 關係圖 「關係」、「連接」、「相依」、「結構」
概念階層、腦力激盪 心智圖 「心智圖」、「概念」、「想法」、「分解」
系統設計、元件 架構圖 「架構」、「系統」、「元件」、「模組」
資料流、轉換流程 資料流程圖 (DFD) 「資料流」、「資料處理」、「資料轉換」
跨功能流程、角色責任 商業流程圖 (泳道圖) 「商業流程」、「泳道」、「角色」、「責任」
物件導向設計、類別結構 類別圖 「類別」、「繼承」、「OOP」、「物件模型」
互動序列、訊息流 序列圖 「序列」、「互動」、「訊息」、「時間線」
資料庫設計、實體關係 ER 圖 「資料庫」、「實體」、「關係」、「資料模型」

步驟 3:提取結構化資訊

流程圖:

  • 循序步驟列表
  • 決策點(若有)
  • 起點與終點

關係圖:

  • 實體/節點(名稱 + 選擇性描述)
  • 實體之間的關係(從 → 到,附標籤)

心智圖:

  • 中心主題
  • 主要分支(建議 3-6 個)
  • 每個分支的子主題(選擇性)

資料流程圖 (DFD):

  • 資料來源與目的地(外部實體)
  • 流程(資料轉換)
  • 資料儲存(資料庫、檔案)
  • 資料流(箭頭表示資料移動,方向從左到右或從左上到右下)
  • 重要:不要表示流程順序,只表示資料流

商業流程圖 (泳道圖):

  • 角色/參與者(部門、系統、人員)— 顯示為標題欄
  • 流程泳道(每個角色下方的垂直泳道)
  • 流程方塊(每個泳道內的活動)
  • 流程箭頭(連接流程方塊,包括跨泳道交接)

類別圖:

  • 類別名稱
  • 屬性(含可見性 +、-、#)
  • 方法(含可見性與參數)
  • 關係:繼承(實線 + 白色三角形)、實現(虛線 + 白色三角形)、關聯(實線)、依賴(虛線)、聚合(實線 + 白色菱形)、組合(實線 + 填滿菱形)
  • 多重性標記(1、0..1、1..

序列圖:

  • 物件/角色(水平排列在頂部)
  • 生命線(每個物件的垂直線)
  • 訊息(生命線之間的水平箭頭)
  • 同步訊息(實心箭頭)、非同步訊息(虛線箭頭)
  • 回傳值(虛線箭頭)
  • 激活方塊(執行期間生命線上的矩形)
  • 時間從上到下流動

ER 圖:

  • 實體(矩形,含實體名稱)
  • 屬性(列在實體內)
  • 主鍵(底線或標記 PK)
  • 外鍵(標記 FK)
  • 關係(連接實體的線)
  • 基數:1:1(一對一)、1:N(一對多)、N:M(多對多)
  • 多對多關係的連結/關聯實體(虛線矩形)

步驟 4:產生 Excalidraw JSON

建立包含適當元素的 .excalidraw 檔案:

可用的元素類型:

  • rectangle:實體、步驟、概念的方塊
  • ellipse:強調用的替代形狀
  • diamond:決策點
  • arrow:方向性連接
  • text:標籤與註解

要設定的關鍵屬性:

  • 位置xy 座標
  • 大小widthheight
  • 樣式strokeColorbackgroundColorfillStyle
  • 字型fontFamily: 5(Excalifont — 所有文字元素必填
  • 文字:標籤的內嵌文字
  • 連接:箭頭的 points 陣列

重要:所有文字元素必須使用 fontFamily: 5(Excalifont)以保持視覺一致性。

步驟 5:格式化輸出

結構完整的 Excalidraw 檔案:

{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [
    // 圖表元素陣列
  ],
  "appState": {
    "viewBackgroundColor": "#ffffff",
    "gridSize": 20
  },
  "files": {}
}

步驟 6:儲存並提供說明

  1. 儲存為 <descriptive-name>.excalidraw
  2. 告知使用者如何開啟:

最佳實務

元素數量指南

圖表類型 建議數量 上限
流程圖步驟 3-10 15
關係圖實體 3-8 12
心智圖分支 4-6 8
心智圖每個分支的子主題 2-4 6

佈局技巧

  1. 起始位置:將重要元素置中,使用一致間距
  2. 間距
    • 水平間距:元素之間 200-300px
    • 垂直間距:行之間 100-150px
  3. 顏色:使用一致的配色方案
    • 主要元素:淺藍色 (#a5d8ff)
    • 次要元素:淺綠色 (#b2f2bb)
    • 重要/中心:黃色 (#ffd43b)
    • 警示/警告:淺紅色 (#ffc9c9)
  4. 文字大小:16-24px 以利閱讀
  5. 字型:所有文字元素務必使用 fontFamily: 5(Excalifont)
  6. 箭頭樣式:簡單流程使用直線箭頭,複雜關係使用曲線箭頭

複雜度管理

如果使用者要求包含太多元素:

  • 建議拆分成多個圖表
  • 先專注於主要元素
  • 提供建立詳細子圖表的選項

範例回應:

「您的請求包含 15 個元件。為求清晰,我建議:
1. 高層級架構圖(6 個主要元件)
2. 每個子系統的詳細圖表

您希望我先從高層級檢視開始嗎?」

範例提示與回應

範例 1:簡單流程圖

使用者:「為使用者註冊建立一個流程圖」

代理程式產生:

  1. 提取步驟:「輸入電子郵件」→「驗證電子郵件」→「設定密碼」→「完成」
  2. 建立包含 4 個矩形 + 3 個箭頭的流程圖
  3. 儲存為 user-registration-flow.excalidraw

範例 2:關係圖

使用者:「圖解 User、Post 與 Comment 實體之間的關係」

代理程式產生:

  1. 實體:User、Post、Comment
  2. 關係:User → Post(「建立」)、User → Comment(「撰寫」)、Post → Comment(「包含」)
  3. 儲存為 user-content-relationships.excalidraw

範例 3:心智圖

使用者:「關於機器學習概念的心智圖」

代理程式產生:

  1. 中心:「機器學習」
  2. 分支:監督式學習、非監督式學習、強化學習、深度學習
  3. 每個分支下的子主題
  4. 儲存為 machine-learning-mindmap.excalidraw

疑難排解

問題 解決方案
元素重疊 增加座標之間的間距
文字無法放入方塊 增加方塊寬度或縮小字型大小
元素過多 拆分成多個圖表
佈局不清楚 使用網格佈局(行/列)或放射狀佈局(心智圖)
顏色不一致 根據元素類型預先定義顏色調色盤

進階技巧

網格佈局(適用於關係圖)

const columns = Math.ceil(Math.sqrt(entityCount));
const x = startX + (index % columns) * horizontalGap;
const y = startY + Math.floor(index / columns) * verticalGap;

放射狀佈局(適用於心智圖)

const angle = (2 * Math.PI * index) / branchCount;
const x = centerX + radius * Math.cos(angle);
const y = centerY + radius * Math.sin(angle);

自動產生的 ID

使用時間戳記 + 隨機字串產生唯一 ID:

const id = Date.now().toString(36) + Math.random().toString(36).substr(2);

輸出格式

務必提供:

  1. ✅ 完整的 .excalidraw JSON 檔案
  2. 📊 建立內容的摘要
  3. 📝 元素數量
  4. 💡 開啟/編輯的說明

範例摘要:

已建立:user-workflow.excalidraw
類型:流程圖
元素:7 個矩形、6 個箭頭、1 個標題文字
總計:14 個元素

檢視方式:
1. 前往 https://excalidraw.com
2. 拖放 user-workflow.excalidraw
3. 或在 Excalidraw VS Code 擴充功能中使用「檔案 → 開啟」

驗證檢查清單

在交付圖表之前:

  • [ ] 所有元素都有唯一 ID
  • [ ] 座標避免重疊
  • [ ] 文字可讀(字型大小 16+)
  • [ ] 所有文字元素使用 fontFamily: 5(Excalifont)
  • [ ] 箭頭邏輯連接
  • [ ] 顏色遵循一致方案
  • [ ] 檔案為有效 JSON
  • [ ] 元素數量合理(<20 以保持清晰)

圖示庫(選擇性增強)

對於專業圖表(例如 AWS/GCP/Azure 架構圖),您可以使用 Excalidraw 的預製圖示庫。這提供專業、標準化的圖示,而非基本形狀。

當使用者要求圖示時

如果使用者要求 AWS/雲端架構圖或提及想要使用特定圖示:

  1. 檢查圖示庫是否存在:尋找 libraries/<library-name>/reference.md

  2. 如果圖示庫存在:繼續使用圖示(請參閱下方 AI 助理工作流程)

  3. 如果圖示庫不存在:回覆設定說明:

    若要使用 [AWS/GCP/Azure/等] 架構圖示,請依照以下步驟:
    
    1. 前往 https://libraries.excalidraw.com/
    2. 搜尋「[AWS Architecture Icons/等]」並下載 .excalidrawlib 檔案
    3. 建立目錄:skills/excalidraw-diagram-generator/libraries/[圖示集名稱]/
    4. 將下載的檔案放入該目錄
    5. 執行分割腳本:
       python skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py skills/excalidraw-diagram-generator/libraries/[圖示集名稱]/
    
    這會將圖示庫分割成單獨的圖示檔案,以便高效使用。
    設定完成後,我就可以使用實際的 AWS/雲端圖示建立您的圖表。
    
    或者,我現在可以使用簡單形狀(矩形、橢圓形)建立圖表,
    您之後可以在 Excalidraw 中手動替換為圖示。
    

使用者設定說明(詳細)

步驟 1:建立圖示庫目錄

mkdir -p skills/excalidraw-diagram-generator/libraries/aws-architecture-icons

步驟 2:下載圖示庫

  • 前往:https://libraries.excalidraw.com/
  • 搜尋您想要的圖示集(例如「AWS Architecture Icons」)
  • 點擊下載以取得 .excalidrawlib 檔案
  • 範例類別(可用性可能有所變動,請在網站上確認):
    • 雲端服務圖示
    • UI/材質圖示
    • 流程圖符號

步驟 3:放置圖示庫檔案

  • 將下載的檔案重新命名以符合目錄名稱(例如 aws-architecture-icons.excalidrawlib
  • 將其移動到步驟 1 建立的目錄中

步驟 4:執行分割腳本

python skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py skills/excalidraw-diagram-generator/libraries/aws-architecture-icons/

步驟 5:驗證設定
執行腳本後,確認存在以下結構:

skills/excalidraw-diagram-generator/libraries/aws-architecture-icons/
  aws-architecture-icons.excalidrawlib  (原始檔案)
  reference.md                          (產生的圖示查閱表)
  icons/                                (產生的個別圖示檔案)
    API-Gateway.json
    CloudFront.json
    EC2.json
    Lambda.json
    RDS.json
    S3.json
    ...

AI 助理工作流程

libraries/ 中有可用的圖示庫時:

建議做法:使用 Python 腳本(高效且可靠)

儲存庫包含可自動處理圖示整合的 Python 腳本:

  1. 建立基礎圖表結構

    • 建立包含基本佈局(標題、方塊、區域)的 .excalidraw 檔案
    • 這會建立畫布與整體結構
  2. 使用 Python 腳本加入圖示

    python skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py \
      <圖表路徑> <圖示名稱> <x> <y> [--label "文字"] [--library-path 路徑]
    
    • 預設啟用透過 .excalidraw.edit 編輯以避免覆寫問題;傳遞 --no-use-edit-suffix 可停用。

    範例:

    # 在位置 (400, 300) 加入 EC2 圖示並附帶標籤
    python scripts/add-icon-to-diagram.py diagram.excalidraw EC2 400 300 --label "Web Server"
    
    # 在位置 (200, 150) 加入 VPC 圖示
    python scripts/add-icon-to-diagram.py diagram.excalidraw VPC 200 150
    
    # 從不同圖示庫加入圖示
    python scripts/add-icon-to-diagram.py diagram.excalidraw Compute-Engine 500 200 \
      --library-path libraries/gcp-icons --label "API Server"
    
  3. 加入連接箭頭

    python skills/excalidraw-diagram-generator/scripts/add-arrow.py \
      <圖表路徑> <起點-x> <起點-y> <終點-x> <終點-y> [--label "文字"] [--style solid|dashed|dotted] [--color HEX]
    
    • 預設啟用透過 .excalidraw.edit 編輯以避免覆寫問題;傳遞 --no-use-edit-suffix 可停用。

    範例:

    # 從 (300, 250) 到 (500, 300) 的簡單箭頭
    python scripts/add-arrow.py diagram.excalidraw 300 250 500 300
    
    # 附帶標籤的箭頭
    python scripts/add-arrow.py diagram.excalidraw 300 250 500 300 --label "HTTPS"
    
    # 自訂顏色的虛線箭頭
    python scripts/add-arrow.py diagram.excalidraw 400 350 600 400 --style dashed --color "#7950f2"
    
  4. 工作流程摘要

    # 步驟 1:建立包含標題與結構的基礎圖表
    # (建立包含初始元素的 .excalidraw 檔案)
    
    # 步驟 2:加入圖示與標籤
    python scripts/add-icon-to-diagram.py my-diagram.excalidraw "Internet-gateway" 200 150 --label "Internet Gateway"
    python scripts/add-icon-to-diagram.py my-diagram.excalidraw VPC 250 250
    python scripts/add-icon-to-diagram.py my-diagram.excalidraw ELB 350 300 --label "Load Balancer"
    python scripts/add-icon-to-diagram.py my-diagram.excalidraw EC2 450 350 --label "EC2 Instance"
    python scripts/add-icon-to-diagram.py my-diagram.excalidraw RDS 550 400 --label "Database"
    
    # 步驟 3:加入連接箭頭
    python scripts/add-arrow.py my-diagram.excalidraw 250 200 300 250  # Internet → VPC
    python scripts/add-arrow.py my-diagram.excalidraw 300 300 400 300  # VPC → ELB
    python scripts/add-arrow.py my-diagram.excalidraw 400 330 500 350  # ELB → EC2
    python scripts/add-arrow.py my-diagram.excalidraw 500 380 600 400  # EC2 → RDS
    

Python 腳本方法的優點

  • 不消耗 token:圖示 JSON 資料(每個 200-1000 行)不會進入 AI 上下文
  • 準確的轉換:座標計算由確定性邏輯處理
  • ID 管理:自動產生 UUID 避免衝突
  • 可靠:無座標計算錯誤或 ID 衝突的風險
  • 快速:直接操作檔案,無解析負擔
  • 可重複使用:適用於您提供的任何 Excalidraw 圖示庫

替代方案:手動圖示整合(不建議)

僅在 Python 腳本不可用時使用:

  1. 檢查圖示庫

    列出目錄:skills/excalidraw-diagram-generator/libraries/
    尋找包含 reference.md 檔案的子目錄
    
  2. 讀取 reference.md

    開啟:libraries/<library-name>/reference.md
    此檔案輕量(通常 <300 行),列出所有可用圖示
    
  3. 尋找相關圖示

    在 reference.md 表格中搜尋符合圖表需求的圖示名稱
    範例:對於包含 EC2、S3、Lambda 的 AWS 圖表 → 在表格中尋找「EC2」、「S3」、「Lambda」
    
  4. 載入特定圖示資料(警告:大型檔案):

    僅讀取所需的圖示檔案:
    - libraries/aws-architecture-icons/icons/EC2.json(200-300 行)
    - libraries/aws-architecture-icons/icons/S3.json(200-300 行)
    - libraries/aws-architecture-icons/icons/Lambda.json(200-300 行)
    注意:每個圖示檔案為 200-1000 行 — 這會消耗大量 token
    
  5. 提取並轉換元素

    每個圖示 JSON 包含一個「elements」陣列
    計算邊界框(min_x、min_y、max_x、max_y)
    對所有 x/y 座標套用偏移
    為所有元素產生新的唯一 ID
    更新 groupIds 參考
    將轉換後的元素複製到您的圖表中
    
  6. 定位圖示並加入連接

    調整 x/y 座標以正確定位圖示
    更新 ID 以確保整個圖表的唯一性
    視需要加入連接箭頭與標籤
    

手動整合的挑戰

  • ⚠️ 高 token 消耗(每個圖示 200-1000 行 × 圖示數量)
  • ⚠️ 複雜的座標轉換計算
  • ⚠️ 若未謹慎處理,有 ID 衝突的風險
  • ⚠️ 對於包含許多圖示的圖表耗時

範例:使用圖示建立 AWS 圖表

請求:「建立一個包含 Internet Gateway、VPC、ELB、EC2 與 RDS 的 AWS 架構圖」

建議工作流程(使用 Python 腳本)

# 步驟 1:建立包含標題的基礎圖表檔案
# 建立 my-aws-diagram.excalidraw 並包含基本結構(標題等)

# 步驟 2:檢查圖示可用性
# 讀取:libraries/aws-architecture-icons/reference.md
# 確認圖示存在:Internet-gateway、VPC、ELB、EC2、RDS

# 步驟 3:使用 Python 腳本加入圖示
python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw "Internet-gateway" 150 100 --label "Internet Gateway"
python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw VPC 200 200
python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw ELB 350 250 --label "Load Balancer"
python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw EC2 500 300 --label "Web Server"
python scripts/add-icon-to-diagram.py my-aws-diagram.excalidraw RDS 650 350 --label "Database"

# 步驟 4:加入連接箭頭
python scripts/add-arrow.py my-aws-diagram.excalidraw 200 150 250 200  # Internet → VPC
python scripts/add-arrow.py my-aws-diagram.excalidraw 265 230 350 250  # VPC → ELB
python scripts/add-arrow.py my-aws-diagram.excalidraw 415 280 500 300  # ELB → EC2
python scripts/add-arrow.py my-aws-diagram.excalidraw 565 330 650 350 --label "SQL" --style dashed

# 結果:包含專業 AWS 圖示、標籤與連接的完整圖表

優點

  • 無需手動計算座標
  • 不消耗圖示資料的 token
  • 確定性、可靠的結果
  • 易於迭代與調整位置

替代工作流程(手動,若腳本不可用)

  1. 檢查:libraries/aws-architecture-icons/reference.md 存在 → 是
  2. 讀取 reference.md → 尋找 Internet-gateway、VPC、ELB、EC2、RDS 的條目
  3. 載入:
    • icons/Internet-gateway.json(298 行)
    • icons/VPC.json(550 行)
    • icons/ELB.json(363 行)
    • icons/EC2.json(231 行)
    • icons/RDS.json(類似大小)
      總計:約 2000+ 行 JSON 需要處理
  4. 從每個 JSON 提取元素
  5. 計算每個圖示的邊界框與偏移
  6. 轉換所有座標(x、y)以定位
  7. 為所有元素產生唯一 ID
  8. 加入顯示資料流的箭頭
  9. 加入文字標籤
  10. 產生最終的 .excalidraw 檔案

手動方法的挑戰

  • 高 token 消耗(約 2000-5000 行)
  • 複雜的座標計算
  • ID 衝突的風險

支援的圖示庫(範例 — 請確認可用性)

  • 此工作流程適用於您提供的任何有效 .excalidrawlib 檔案。
  • 您可能在 https://libraries.excalidraw.com/ 上找到的圖示庫類別範例:
    • 雲端服務圖示
    • Kubernetes / 基礎架構圖示
    • UI / 材質圖示
    • 流程圖 / 圖表符號
    • 網路圖示
  • 可用性與命名可能有所變動;使用前請在網站上確認確切的圖示庫名稱。

備援方案:無可用圖示

如果未設定任何圖示庫:

  • 使用基本形狀(矩形、橢圓形、箭頭)建立圖表
  • 使用顏色編碼與文字標籤區分元件
  • 告知使用者他們可以稍後加入圖示或為未來的圖表設定圖示庫
  • 圖表仍然功能完整且清晰,只是視覺上較不精緻

參考資料

請參閱隨附的參考檔案:

  • references/excalidraw-schema.md — 完整的 Excalidraw JSON 結構
  • references/element-types.md — 詳細的元素類型規格
  • templates/flowchart-template.json — 基本流程圖起手式
  • templates/relationship-template.json — 關係圖起手式
  • templates/mindmap-template.json — 心智圖起手式
  • scripts/split-excalidraw-library.py — 分割 .excalidrawlib 檔案的工具
  • scripts/README.md — 圖示庫工具的文件
  • scripts/.gitignore — 防止本機 Python 產出被提交

限制

  • 複雜曲線簡化為直線/基本曲線
  • 手繪粗糙度設定為預設值 (1)
  • 自動產生不支援內嵌圖片
  • 每個圖表建議元素上限:20 個
  • 無自動碰撞偵測(請使用間距指南)

未來增強

可能的改進:

  • 自動佈局最佳化演算法
  • 從 Mermaid/PlantUML 語法匯入
  • 範本庫擴充
  • 產生後的互動式編輯