GMO Connect 的永田。
提案書的製作是不是很痛苦呢?😇
特別是針對官公廳的提案書,依據評估項目的不同,頁數可達數十甚至數百頁,這在所難免。若要使用 PowerPoint 製作,會面臨這樣的苦痛:
提案書_v3_最終版_真正的最終版_修訂2.pptx作為工程師,老實說,這是最不想做的工作之一。
如果只需 撰寫 Markdown,就能自動統一設計,並能透過 git diff 進行檢視,那會是怎樣?
本文將介紹如何利用 Slidev + Claude Opus 4.6 實現此功能,並附上純 Markdown 到完成幻燈片的前後對比。
首先直接告訴你結論。
這次建立的模板的規模感:
| 指標 | 數值 |
|---|---|
| Vue 元件數 | 15 個 |
| 佈局數 | 6 種 |
| CSS 變數(設計代幣) | 20+ |
| 撰寫者需要接觸的文件 | 僅有 slides.md 這一個文件 |
Slidev 是一個基於 Markdown 的簡報框架。它建立在 Vue 3 + Vite 上,具備以下特點:
layouts/、components/、styles/ 的 Vue 文件被自動註冊關於 Slidev 的一般介紹,以下文章提供了詳盡的內容。本文將專注於「提案書製作」的具體用例。
作為簡報生成的選擇之一,還有 PptxGenJS。這是一個用 JavaScript 生成 .pptx 的庫,也被 Claude 的 Cowork 功能等使用。
| 比較面向 | PptxGenJS | Slidev |
|---|---|---|
| 輸出格式 | .pptx(原生 PowerPoint) | PDF / PNG / PPTX / SPA |
| 內容描述 | 呼叫 JavaScript API | Markdown + Vue 元件標籤 |
| 撰寫者的前提知識 | JavaScript | Markdown |
| 設計統一 | 逐元素指定樣式(統一需自我管理) | CSS 變數 + Vue 元件全頁自動統一 |
| 版本管理 | 二進位 .pptx(不支持 diff) | 純文本 Markdown(完全支持 diff) |
| 熱重載 | 無(生成 → 開啟文件) | 有(Vite HMR 立即反映) |
| 與 LLM 的親和性 | 生成 JS 代碼(易出現語法錯誤) | 生成 Markdown(LLM 擅長的領域) |
當需要 .pptx 原生輸出的時候,PptxGenJS 是最適合的選擇。而對於重視開發體驗(DX)和 Git 管理的情況下,Slidev 更適合。
在本次項目中,由於希望能對 Claude 生成的內容進行 diff 檢視,因此選擇了基於 Markdown 的 Slidev。
此次建立的模板目錄結構如下。
Slidev 的元件不是手動創建的,而是讓 Claude Opus 4.6 對過去的提案書影像進行解析,自動生成的😊
slidev-template/
├── styles/theme.css # CSS 變數 20+(設計代幣)
├── layouts/ # 6 種佈局
│ ├── cover.vue # 封面
│ ├── section.vue # 章節分隔
│ ├── eval-top.vue # 評估標準表(上部)+ 全幅內容
│ ├── eval-top-2p.vue # 2 評估項目的同時顯示
│ ├── eval.vue # 2 段式(側邊面板 + 主面板)
│ └── default.vue # 全幅 + 標頭列
└── components/ # 15 個元件
├── DataTable.vue # 陣列驅動表格(69 行)
├── CompareCards.vue # A/B/C 比較卡片(31 行)
├── PolicyTagMap.vue # CSS 網格卡片圖(24 行)
├── StepFlow.vue # 流程圖(29 行)
├── KpiHighlight.vue # 大型數字高亮(18 行)
├── ChallengeBox.vue # 題目框型佈局
├── PointCallout.vue # 主要信息強調
└── ... 其他 8 個
設計的統一透過 CSS 變數(設計代幣)進行管理:
:root {
--c-navy: #1B3A5C; /* 標頭、強調文本 */
--c-accent: #B22234; /* KPI、標籤、徽章 */
--c-accent-light: #F2D4D7; /* 評估面板背景 */
--c-bg-light: #F5F7FA; /* 卡片背景 */
--font-main: "Meiryo UI", "Yu Gothic UI", sans-serif;
}
重點: 撰寫者只需接觸 slides.md 這一個文件。若更改 --c-accent 的一行,所有幻燈片的 PolicyTag、ChallengeBox、徽章顏色將會一起更新。
這是本文章最想傳達的重點。我們來看看實際的工作流程分為三個步驟。
工程師使用 普通的 Markdown 撰寫提案內容。無需特別知識。只需以括號或關鍵字提供元件的提示即可。
## 【幻燈片 N】傳統型瀑布模型的問題和階段性轉型
**佈局**: default
### 傳統型瀑布模型的三大問題透過階段性轉型來解決
**傳統的問題**(ChallengeBox):
傳統的一次性轉型方法存在以下結構性問題:
- 一次性切換所有功能,故障發生時影響範圍廣泛
- 沒有並行運行的時間,撤回判斷的猶豫期極短
- 移轉演練次數有限,本番環境中仍然存在未檢驗的風險
#### 本提案的對應方針
| 問題 | 本提案的做法 | 期待效果 |
|------|--------------|----------|
| **影響範圍擴大** | 依功能群進行階段性轉型以局部化影響 | 限制故障時的影響範圍至 **1/4 以下** |
| **撤回猶豫不足** | 設定 1 個月的並行運行期 | 確保撤回判斷有 **充分的評估期間** |
| **未檢驗的風險** | 在與生產環境相同的環境下進行 2 次移轉演練 | 在正式移轉前 **檢驗所有步驟** |
**重點**: 透過階段性轉型將故障影響局限於 1/4 以下,並透過並行運行 + 兩次演練排除未檢驗風險。
如你所見,這是普通的 Markdown。僅需撰寫元件名稱的提示,如 (ChallengeBox) 及列舉項目、Markdown 表格。完全不需要了解 Vue 元件知識。
在讓 Claude 讀入 GUIDE.md(Slidev 模板的使用指南,由 ClaudeOpus 4.6 生成)的狀態下,把上述純 Markdown 傳遞給它,然後它生成以下的 Slidev Markdown:
---
layout: default
section: "組合 1. 問題 → 解決方案模式"
evalBadge: 組合範例
---
### 傳統型瀑布模型的三大問題透過階段性轉型來解決
<ChallengeBox
lead="傳統的一次性轉型方法存在以下結構性問題:"
:items="[
'一次性切換所有功能,故障發生時影響範圍廣泛',
'沒有並行運行的時間,撤回判斷的猶豫期極短',
'移轉演練次數有限,本番環境中仍然存在未檢驗的風險',
]"
/>
<DataTable
:cols="['問題', '本提案的做法', '期待效果']"
:colWidths="['20%', '48%', '32%']"
:boldCols="[0]"
:accentCols="[2]"
:rows="[
['影響範圍擴大', '依功能群進行階段性轉型以局部化影響', '限製故障時的影響範圍至 <span><b></span>1/4以下<span></b></span>'],
['撤回猶豫不足', '設定 1 個月的並行運行期', '確保撤回判斷有 <span><b></span>充分的評估期間<span></b></span>'],
['未檢驗的風險', '在與生產環境相同的環境下進行 2 次移轉演練', '在正式移轉前 <span><b></span>檢驗所有步驟<span></b></span>'],
]"
/>
<PointCallout text="透過階段性轉型將故障影響局限於 <b>1/4 以下</b>,並透過並行運行 + 兩次演練排除 <b>未檢驗風險</b>." />
發生了什麼事呢:
layout: default、section(標頭)、evalBadge(右上角徽章)<ChallengeBox> 元件(問題框型佈局)<DataTable> 元件(透過 boldCols 指定粗體列,透過 accentCols 指定紅色列)**重點**: → 轉換為 <PointCallout> 元件(關鍵信息的強調帶)Claude 參考 GUIDE.md 判斷該使用哪些元件、props 應傳遞什麼值。工程師只需在純 Markdown 中寫上元件名稱提示,轉換精度便可提高。

只需撰寫普通 Markdown,便能產生有海軍藍標頭列、紅色徽章、問題框型佈局、裝飾表格和強調信息帶的自動生成幻燈片。
首先是工程師撰寫的普通 Markdown:
### 3 方式的比較研究,選定雲原生運行
比較評估 3 種運行方式,選定在成本、可用性及運行負載的綜合評價下最適合的方式。
#### 比較表(CompareCards,推薦=雲原生)
| | 傳統型本地運行 | 混合運行 | 雲原生(推薦) |
|---|---|---|---|
| 運行成本 | 年間 1,800 萬日圓 | 年間 1,100 萬日圓 | 年間 580 萬日圓 |
| 故障回應時間 | 平均 4 小時 | 平均 2 小時 | 平均 30 分鐘 |
| 可擴展性 | 手動・2~3 個月 | 部分自動・1 週 | 全自動・即時 |
| 運行人員 | 5 名常駐 | 3 名常駐 | 1 名 + 自動化 |
**KPI**: 運行成本削減效果 → 年間減少 1,220 萬日圓(68%)(約 3.6 人月相當)
這是普通的 Markdown 表格。只是在 (CompareCards,推薦=雲原生) 上給了一些提示。
這經過 Claude + Slidev 後,變成:

自動格式化為三列的卡片,推薦方式顯示海軍藍框 + ★,下方則有大型的 KPI 突出顯示。由 Markdown 表格所想像的外觀大相徑庭。
recommended: true 會自動附加海軍藍框 + ★,KpiHighlight 則自動渲染為大型字體大小的數字和紅色高亮註解。
接下來是提案書中最常使用的「回答摘要」頁面。工程師撰寫的普通 Markdown 如下:
## 【幻燈片 2】評估標準・回答摘要
**佈局**: eval-top
**評估項目**: 24(加分・10 分)
**評估細節**: 從數據遷移計畫的制定到執行,確保現有數據的整合性,同時將遷移風險降到最低的提案。
**提案的要點**:
- 透過三階段的逐步遷移最小化停機時間
- 使用差分同步確保整合性(實現 RPO=0)
- 透過 2 次遷移演練來排除風險
### 將評估基準的關鍵詞分解,列出對應的回答
| 評估關鍵詞 | 本提案的對應 | 詳細幻燈片 |
|---|---|---|
| **遷移計畫** | 制定三階段的逐步遷移計畫 | 幻燈片 1-2 |
| **數據整合性** | 透過 AWS DMS 的差分同步實現 RPO=0 | 幻燈片 1-3 |
| **遷移風險** | 在生產等效環境中進行二次演練 | 幻燈片 1-4 |
**PolicyTagMap**:
| 關鍵詞 | 詳細幻燈片 | 摘要 |
|---|---|---|
| **逐步遷移** | 幻燈片 1-2 | 透過三階段最小化停機時間 |
| **差分同步** | 幻燈片 1-3 | 確保 RPO=0 的數據整合性 |
| **遷移演練** | 幻燈片 1-4 | 透過兩次演練排除風險 |
僅需通過 **佈局**: eval-top 指定所需的佈局,並以上述 Markdown 表格寫下評估項目信息。**PolicyTagMap**: 則是提示「這個表格需要以卡片型顯示」。
經由 Claude + Slidev 後則變為:

上方顯示評估標準表(自動生成於 YAML frontmatter),中部顯示關鍵詞分解表,下方則是卡片式導航。純 Markdown 的信息量與完成的幻燈片間的視覺差異非常大呢😊
這張幻燈片是透過三層機制達成的:
boldCols、accentCols 指定列的裝飾slides.md,便能在 localhost:3030 即時顯示。無需 PowerPoint 的「保存 → 關閉 → 重新開啟」canvasWidth: 680、aspectRatio: 210/297 + 插入 <PortraitPrint /> 元件即可同時支援螢幕顯示及印刷輸出npx slidev export slides.md --output proposal.pdf 一鍵完成使用 Slidev + ClaudeOpus 4.6,我們建立了提案書的「設計系統」。
然而,也有一些限制:
適合的團隊: 有經常需要以一致格式反覆製作提案書的組織。只要建立一次模板,後續的提案只需撰寫 Markdown 即可。
最後,GMO Connect 提供從服務開發支援到技術支援的廣泛服務,如果有任何需求,請隨時與我們聯繫。
聯繫方式: https://gmo-connect.jp/contactus/