開會時在白板上畫了一張流程圖,大家討論得很熱烈,結果會後要整理成文件的時候,還得打開 Draw.io 或 Visio 一個一個方塊慢慢拖、慢慢對齊,光是畫圖就花掉半小時。更痛苦的是,需求一改、流程一調,整張圖又得重拉,如果能以文字來描述圖表,文字格式的圖表不但可以放進 Git 做版本控制、方便團隊協作 code review,更重要的是——可以直接請 AI 幫忙生成和修改圖表。跟 AI 說「幫我畫一個使用者登入的循序圖」,幾秒鐘就能拿到結果,比自己拖拉快太多了。
而在文字圖表的工具中,Mermaid 是目前最主流的選擇。GitHub、GitLab、Notion、HackMD 都原生支援,直接在 Markdown 裡面寫就能渲染成圖,不需要額外安裝任何東西。這篇文章會從零開始帶大家認識 Mermaid 的各種圖表語法,學完之後不管是畫流程圖、循序圖、甘特圖,都能用幾行文字搞定。
什麼是 Mermaid
Mermaid 是一個用 JavaScript 打造的圖表渲染引擎,讓我們用類似 Markdown 的純文字語法來描述圖表,然後自動渲染成 SVG 圖片。它的設計理念很簡單:畫圖不該是一件麻煩的事,用寫的比用拖的快。
舉個例子,要畫一個「開始 → 處理 → 結束」的流程圖,只需要這樣寫:
flowchart LR
開始 --> 處理 --> 結束
就這麼簡單,Mermaid 會自動幫忙排版、對齊、畫箭頭。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S01
哪些平台支援 Mermaid
Mermaid 已經被很多主流平台原生支援,不需要安裝外掛就能直接在 Markdown 文件裡渲染:
| 平台 | 支援方式 |
|---|---|
| GitHub | 在 Markdown 的 ```mermaid 區塊自動渲染 |
| GitLab | 同 GitHub,Markdown 原生支援 |
| Notion | Code block 選擇 Mermaid 語言 |
| HackMD | Markdown 原生支援 |
| VS Code | 安裝 Mermaid 預覽擴充套件 |
| Obsidian | 內建 Mermaid 支援 |
在哪裡練習
學語法最快的方式就是邊寫邊看結果。推薦使用我做的 Mermaid 即時編輯工具 ,左邊寫語法、右邊即時預覽,還能匯出成 SVG 或 PNG 圖片。如果語法寫錯了,工具內建的 AI 語法修正功能可以快速幫忙找出問題並修復,非常方便(但我使用免費的 AI Token,如果出現無法執行可能是當天的額度用完了😅)。
Flowchart 流程圖
流程圖是 Mermaid 最基本也最常用的圖表類型,適合描述任何「從 A 到 B」的流程,像是審核流程、系統架構、決策判斷等等。
基本語法
流程圖的第一行要宣告圖表類型和方向。flowchart 後面接方向:TD(上到下)、LR(左到右)是最常用的兩種。
flowchart TD
A[開始] --> B[處理資料]
B --> C{是否成功?}
C -->|是| D[儲存結果]
C -->|否| E[顯示錯誤]
D --> F[結束]
E --> F
這裡有幾個重點:
A[文字]:方括號 = 方形節點C{文字}:大括號 = 菱形節點(用來表示判斷)-->:箭頭連線-->|文字|:帶標籤的箭頭,可以在連線上加說明
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S11
節點形狀
Mermaid 提供多種節點形狀,根據不同情境選用:
| 語法 | 形狀 | 常見用途 |
|---|---|---|
A[文字] | 方形 | 一般步驟、動作 |
A(文字) | 圓角方形 | 一般步驟(較柔和) |
A{文字} | 菱形 | 判斷、條件分支 |
A([文字]) | 體育場形 | 開始/結束 |
A((文字)) | 圓形 | 連接點 |
A[[文字]] | 子程序 | 子流程、函式 |
連線類型
除了基本的箭頭,Mermaid 也支援多種連線樣式:
| 語法 | 說明 |
|---|---|
A --> B | 實線箭頭 |
A --- B | 實線無箭頭 |
A -.-> B | 虛線箭頭 |
A ==> B | 粗線箭頭 |
A -->|文字| B | 帶標籤的箭頭 |
節點樣式(style)
預設的節點都是同一種顏色,如果想要讓特定節點有不同的視覺效果,可以用 style 語法來自訂填充色、邊框色、文字色等屬性:
flowchart LR
A[開始] --> B[處理中] --> C[完成]
style A fill:#e1f5fe,stroke:#0288d1,color:#01579b
style B fill:#fff3e0,stroke:#ef6c00,color:#e65100
style C fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20
style 節點ID 後面接 CSS 屬性,常用的有 fill(填充色)、stroke(邊框色)、color(文字色)、stroke-width(邊框粗細)。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S12
樣式類別(classDef)
如果有很多節點要套用同一種樣式,一個一個寫 style 會很冗長。這時候可以用 classDef 先定義樣式類別,再用 class 一次套用到多個節點:
flowchart TD
A([開始]) --> B[驗證輸入]
B --> C{格式正確?}
C -->|是| D[儲存資料]
C -->|否| E[顯示錯誤]
D --> F([結束])
E --> F
classDef success fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20
classDef danger fill:#ffebee,stroke:#c62828,color:#b71c1c
classDef normal fill:#e3f2fd,stroke:#1565c0,color:#0d47a1
class A,F normal
class D success
class E danger
classDef 類別名稱 定義樣式,class 節點ID 類別名稱 套用樣式,多個節點可以用逗號隔開。也可以在定義節點時直接用 ::: 語法套用,例如 A([開始]):::normal。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S13
實際範例:文章審核流程
假設要畫一個文章發佈的審核流程給團隊看:
flowchart TD
A([作者提交文章]) --> B[編輯初審]
B --> C{內容是否合格?}
C -->|合格| D[主編複審]
C -->|需修改| E[退回作者修改]
E --> A
D --> F{是否通過?}
F -->|通過| G[排程發佈]
F -->|不通過| E
G --> H([文章上線])
classDef start fill:#e3f2fd,stroke:#1565c0,color:#0d47a1
classDef process fill:#f3e5f5,stroke:#7b1fa2,color:#4a148c
classDef decision fill:#fff3e0,stroke:#ef6c00,color:#e65100
classDef reject fill:#ffebee,stroke:#c62828,color:#b71c1c
classDef success fill:#e8f5e9,stroke:#2e7d32,color:#1b5e20
class A,H start
class B,D process
class C,F decision
class E reject
class G success
這段文字丟到任何支援 Mermaid 的平台上,就會自動渲染成一張清楚的流程圖,完全不需要手動排版。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S14
Sequence Diagram 循序圖
循序圖適合描述多個角色或系統之間的互動順序,像是 API 呼叫流程、使用者操作步驟、微服務之間的通訊等。如果要跟工程師溝通「這個功能前後端怎麼互動」,循序圖是最好的工具。
基本語法
sequenceDiagram
participant 使用者
participant 前端
participant 後端
participant 資料庫
使用者->>前端: 輸入帳號密碼
前端->>後端: POST /api/login
後端->>資料庫: 查詢使用者資料
資料庫-->>後端: 回傳使用者資料
後端-->>前端: 回傳 JWT Token
前端-->>使用者: 登入成功,跳轉首頁
幾個語法重點:
participant:宣告參與者,會依照宣告順序排列->>:實線箭頭(請求)-->>:虛線箭頭(回應)- 冒號後面是訊息內容
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S21
進階語法:條件與迴圈
循序圖還支援 alt(條件分支)和 loop(迴圈)語法,可以表達更複雜的邏輯:
sequenceDiagram
participant 用戶
participant 伺服器
用戶->>伺服器: 登入請求
alt 帳號密碼正確
伺服器-->>用戶: 登入成功
else 密碼錯誤
伺服器-->>用戶: 密碼錯誤,請重試
end
loop 每 30 秒
用戶->>伺服器: 心跳檢查
伺服器-->>用戶: 連線正常
end
alt 和 else 用來表示「如果…否則…」的情況,loop 用來表示重複執行的動作,最後都要用 end 結尾。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S22
Class Diagram 類別圖
類別圖用來描述資料之間的結構和關聯,不只工程師在設計系統架構時會用到,PM 在規劃資料模型、或是跟團隊討論「這些資料之間的關係是什麼」的時候也很實用。
基本語法
classDiagram
class 使用者 {
+String 姓名
+String 信箱
+登入()
+登出()
}
class 訂單 {
+int 訂單編號
+Date 建立日期
+String 狀態
+計算金額()
}
class 商品 {
+String 名稱
+int 價格
+int 庫存
}
使用者 "1" --> "*" 訂單 : 建立
訂單 "*" --> "*" 商品 : 包含
語法重點:
class 名稱 { }:定義一個類別,裡面放屬性和方法+表示公開、-表示私有"1" --> "*":表示一對多關聯,*代表多個- 冒號後面是關聯的說明文字
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S31
State Diagram 狀態圖
狀態圖用來描述一個東西在不同狀態之間怎麼轉換,很適合用在訂單狀態、工單流程、任務管理等情境。
基本語法
stateDiagram-v2
[*] --> 待付款
待付款 --> 已付款 : 完成付款
待付款 --> 已取消 : 取消訂單
已付款 --> 準備出貨 : 開始處理
準備出貨 --> 已出貨 : 寄出商品
已出貨 --> 已送達 : 買家簽收
已送達 --> 已完成 : 確認收貨
已送達 --> 退貨中 : 申請退貨
退貨中 --> 已退貨 : 退貨完成
已完成 --> [*]
已取消 --> [*]
已退貨 --> [*]
語法重點:
[*]:代表起始或結束狀態狀態A --> 狀態B : 事件:狀態轉換和觸發條件- 使用
stateDiagram-v2可以啟用新版語法,支援更多功能
像這樣一張訂單狀態圖,如果用拖拉工具畫可能要十幾分鐘,但用 Mermaid 寫不到一分鐘就搞定。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S41
Gantt Chart 甘特圖
甘特圖是專案管理的經典工具,用來呈現任務的時程安排。Mermaid 的甘特圖語法直覺好懂,很適合在技術文件或提案中快速列出專案排程。
基本語法
gantt
title 網站改版專案時程
dateFormat YYYY-MM-DD
section 規劃階段
需求訪談 :a1, 2026-04-01, 5d
wireframe 設計 :a2, after a1, 3d
section 開發階段
前端開發 :b1, after a2, 10d
後端 API 開發 :b2, after a2, 8d
資料庫設計 :b3, after a2, 4d
section 測試與上線
整合測試 :c1, after b1, 5d
UAT 使用者驗收 :c2, after c1, 3d
正式上線 :milestone, after c2, 0d
語法重點:
title:圖表標題dateFormat:日期格式section:用來分群組- 任務格式:
任務名稱 :id, 開始日期, 持續天數 after a1:表示在某任務之後才開始milestone:里程碑,不佔時間
甘特圖特別適合放在專案提案或週報裡,一目了然。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S51
ER Diagram 實體關聯圖
實體關聯圖(Entity-Relationship Diagram)是資料庫設計的基本工具,用來描述資料表之間的關聯。不管是在規劃新系統的資料庫、還是要跟團隊說明現有的資料結構,ER 圖都是最直覺的方式。
基本語法
erDiagram
CUSTOMER ||--o{ ORDER : "下單"
ORDER ||--|{ ORDER_ITEM : "包含"
PRODUCT ||--o{ ORDER_ITEM : "被購買"
CUSTOMER {
int id PK
string name
string email
date created_at
}
ORDER {
int id PK
int customer_id FK
date order_date
string status
}
ORDER_ITEM {
int id PK
int order_id FK
int product_id FK
int quantity
decimal price
}
PRODUCT {
int id PK
string name
decimal price
int stock
}
語法重點:
erDiagram:宣告圖表類型- 每個實體用
名稱 { }定義欄位,可以標記PK(主鍵)和FK(外鍵) - 關聯用特殊符號表示,冒號後面是關聯說明
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S61
關聯符號對照表
ER 圖的關聯符號一開始可能不太好記,整理成對照表會比較清楚:
| 符號 | 意義 |
|---|---|
||--|| | 一對一 |
||--o{ | 一對零或多 |
||--|{ | 一對一或多 |
}o--o{ | 零或多對零或多 |
左邊的符號代表左側實體的數量,右邊代表右側實體的數量。o 表示「零個也可以」,| 表示「至少一個」,{ 表示「多個」。
Pie Chart 圓餅圖
圓餅圖用來呈現比例分配,語法非常簡單,幾行就能畫出來。適合在文件裡快速展示預算分配、使用比例、問卷結果等數據。
基本語法
pie title 專案時間分配
"開發" : 45
"測試" : 25
"會議" : 15
"文件撰寫" : 10
"其他" : 5
語法重點:
pie:宣告圓餅圖,後面可以接title設定標題- 每一行是
"標籤" : 數值,Mermaid 會自動計算百分比 - 數值不需要加總到 100,Mermaid 會依照比例分配
圓餅圖是所有 Mermaid 圖表裡語法最簡單的,幾乎不需要學就能上手。
點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S71
Mind Map 心智圖
心智圖用來展開一個主題的各種面向,很適合腦力激盪、知識整理、或是學習筆記。Mermaid 的心智圖語法用縮排來表示層級關係,寫起來非常直覺。
基本語法
mindmap
root((網站開發))
前端
HTML
CSS
JavaScript
React
Vue
後端
Node.js
Python
Java
Spring Boot
資料庫
MySQL
PostgreSQL
MongoDB
部署
Docker
AWS
GCP
語法重點:
mindmap:宣告心智圖- 第一個節點是根節點,用
root((文字))可以設定圓形樣式 - 用縮排(空格)來表示階層關係,子節點比父節點多縮排幾格
- 不需要手動畫連線,Mermaid 會依照縮排自動連接
心智圖最大的優點就是跟手寫筆記一樣直覺,只要把想到的東西用縮排排好就行了。點此觀看執行結果:https://ai.klab.tw/mermaid/01KNPB9A0S81
搭配 AI 使用 Mermaid
Mermaid 用文字描述圖表的特性,跟 AI 簡直是天作之合。不需要記住所有語法,只要用自然語言描述想要的圖表,AI 就能幫忙生成。
讓 AI 幫忙畫圖
舉個例子,可以直接跟 ChatGPT、Claude 或任何 AI 說:
幫我用 Mermaid 畫一個使用者註冊的循序圖,
流程是:使用者填寫表單 → 前端驗證格式 → 送到後端 →
後端檢查 email 是否已存在 → 如果已存在回傳錯誤,
如果不存在就建立帳號並寄驗證信
AI 會直接給一段可以渲染的 Mermaid 語法,再複製到 Mermaid 編輯器 裡預覽和微調就好。比自己從零開始寫快很多,特別是畫複雜的圖表時。
修改與迭代
AI 生成的圖表如果不完全符合需求,因為 Mermaid 是純文字格式,可以:
- 直接自己改文字(加個節點、改個箭頭方向)
- 把現有的 Mermaid 語法丟給 AI,請它幫忙調整特定部分
- 用 AI 把一種圖表轉換成另一種(例如流程圖轉狀態圖)
這種「AI 生成初版 → 人工微調」的工作流程,比傳統拖拉畫圖的效率高出很多,也是為什麼文字格式的圖表在 AI 時代特別有價值。如果語法不確定有沒有寫對,Mermaid 編輯器 內建的 AI 語法修正功能可以自動偵測並修復常見錯誤,省去自己除錯的時間。
常用語法速查表
最後整理一張快速對照表,方便隨時查閱:
| 圖表類型 | 關鍵字 | 適合場景 |
|---|---|---|
| 流程圖 | flowchart TD/LR | 流程、決策、系統架構 |
| 循序圖 | sequenceDiagram | API 互動、系統通訊 |
| 類別圖 | classDiagram | 資料模型、系統設計 |
| 狀態圖 | stateDiagram-v2 | 狀態流轉、工單流程 |
| 甘特圖 | gantt | 專案時程、排程規劃 |
| ER 圖 | erDiagram | 資料庫設計、資料關聯 |
| 圓餅圖 | pie | 比例分配、數據呈現 |
| 心智圖 | mindmap | 腦力激盪、知識整理 |
Mermaid 的語法不難,但真正的價值在於它改變了畫圖的方式。當圖表變成文字,它就能被版控、被搜尋、被 AI 生成和修改。不管是工程師、PM、還是技術寫作者,花個十分鐘學會 Mermaid,之後每次畫圖都能省下大量時間。打開 Mermaid 編輯器 ,把文章裡的範例貼上去動手試試看吧!