1 / 22

Vibe Coding 1 小時工作坊講義

主題:用 AI 把「計畫書」做成單頁活動頁

(含共用設計指引、圖片與表單串接)

請按 [空白鍵] 或 [方向鍵 ↓] 繼續

0. 這堂課要做出什麼成果

一小時結束時,每位同仁要學到兩樣東西:


補充:講義裡用到的「Vibe Coding」指的是用自然語言引導 AI 產碼、再用你的人腦做目標、規格、測試與修正。這個詞最早是 Andrej Karpathy 在 2025 年提出的說法。

清楚定義:不是所有 AI 輔助寫程式都等於「完全不看程式碼」。我們今天採用的是「看得懂、能維護」的做法。

1. 一小時流程

時間 你要做的事 產出
0:00–0:05 開場:今天只做「單頁活動頁」,先求能用、再求漂亮 共識與範圍
0:05–0:15 目標設定:受眾、來源、要他做什麼(只有一個主要 CTA) 目標句 + CTA
0:15–0:25 先「線框」再「產碼」:把計畫書轉成網頁規格(4–5 段落) 網頁規格表
0:25–0:40 產出乾淨 HTML/CSS(先白底、先不加特效)+基本 RWD 檢查 第一版 HTML
0:40–0:50 做共用設計指引:配色、字體、按鈕、間距、圖片規格 設計指引草案
0:50–0:58 表單策略:Google Forms vs Google Sheets(Apps Script) 選方案 + 下一步
0:58–1:00 收尾:檢核清單、怎麼避免 AI 聊到後面變笨 帶走清單

2. 核心觀念先講完

2.1 目標設定:先把「誰」跟「要做什麼」搞清楚

你做的是活動頁(Landing Page),重點是「單一目標」。頁面上可以有很多資訊,但主要行動只保留一個(例如:報名、索取簡章、加入候補)。

因為:活動頁如果塞太多路徑,轉換率通常會變差。

核心 Prompt 句型(後面都會用到):

「給【誰】看,從【哪裡來】,看完要做【一件事】,完成後我們要給他【什麼】。」

例:給「企業主」看,從「FB/EDM」來,看完要「填表索取簡章」,填完就「拿到課表 PDF」。

2.2 CTA 文案不要太空泛

CTA 很常被 AI 寫成「立即開始」「了解更多」這種萬用詞,但 UX 研究指出這種字眼容易誤導、資訊氣味不足。

建議改成「動作 + 回饋」

2.3 先線框(wireframe)再產碼

「先做 landing page 線框/骨架,再把內容填進去」。

流程固定成:
計畫書 →(AI)網頁規格表/線框 →(AI)乾淨 HTML/CSS →(人)檢查與修正 →(AI)套用設計指引再輸出一次

2.4 RWD 與 2.5 可讀性

RWD (響應式設計):

無障礙 (可讀性):

3. 實作流程

Step 1:準備你的「輸入材料」

每位同仁先準備以下四樣(不完整也沒關係):

  1. 一份正在進行中的計畫書(或招生簡章文字)
  2. 受眾一句話(誰)
  3. CTA 一句話(要做什麼)
  4. 單位/活動 Logo(沒有也先用文字版)

Step 2:建立專案資料夾

/活動頁專案/2026-xx-xx_某某課程/
    index.html
    assets/  (放圖片)
    copy/    (放計畫書文字、CTA 文案)
    spec/    (放設計指引與規格表)

目的:圖片路徑、檔案路徑會一致,之後換人接手也不會迷路。

Step 3:用 AI 先產「網頁規格表」(先不要叫它寫整頁 HTML)

Prompt(可直接複製改字): 「你是我們的網頁規格開發師。我要做一個單頁活動頁(白底、先不做動畫),目標受眾是:【___】。使用者來源是:【___】。唯一主要 CTA 是:【___】。

請把計畫書內容整理成『單頁活動頁規格表』,規格表至少要有:
(1) 區塊名稱(最多 5 個主區塊)
(2) 這一區要達成的目的
(3) 需要放的文字(用台灣常見用語、不要官腔)
(4) 需要的素材清單(Logo、照片、圖示、PDF 連結等)
(5) CTA 在哪裡出現(建議重複幾次、每次文案要一致)

另外請提醒我:哪些資訊缺了會影響轉換(例如時間、費用、地點、對象、名額)。」

你會拿到一份「可檢查、可討論」的規格表。

Step 4:把規格表壓成「4–5 段落」的單頁結構

常見的活動頁骨架(給沒有設計背景的人用):

  1. Hero 首屏:課程一句話價值 + 主要 CTA
  2. 課程亮點:你為誰解決什麼問題(2–4 點就好)
  3. 課程資訊:時間、地點、費用、名額、適合誰
  4. 信任元素:講師/單位、學員回饋、合作單位
  5. FAQ/注意事項 + 再一次 CTA

原則:首屏要清楚、CTA 要醒目、避免把人帶走。

Step 5:再叫 AI 產「乾淨 HTML/CSS」(先求能用)

Prompt: 「請依照你剛剛給的單頁規格表,輸出一份乾淨的 index.html ,要求:
1. 只有 HTML + CSS(可放在 <style> ),不使用任何外部框架(先不要 Tailwind/Bootstrap)
2. 白色底色、字要好讀
3. 有正確的 viewport
4. 區塊用語意化標籤(header/section/footer)
5. 每個圖片位置先放 placeholder(例如 <img> 但用假連結或註解標記),之後我會換成真圖
6. 版面要有基本 RWD:手機寬度下字不會超出、按鈕好點
7. CTA 按鈕文案請用【___】(全頁一致)

輸出時只給我一份可以直接存成 index.html 的完整內容。」

Step 6:第一次檢視(這一步要用「人腦」)

請照這 4 個點檢查:

  1. 能不能正常開啟(桌機 Chrome/Edge 任一個)
  2. 內容順序跟段落有沒有怪怪的怪的怪的(有怪怪的怪的就回去改規格表,不要硬修 CSS)
  3. 圖片預留位子看起來順不順(比例、大小、位置)
  4. 手機看起來是否一致(用瀏覽器的裝置模擬即可)

注意:圖片如果會撐爆版面,通常是少了「讓圖片縮放」的做法。

4. 風格與共用設計指引

今天要做出一份「我們的共識」。

4.1 為什麼要做「資產管理」

同一個單位如果每次活動頁都長得不一樣,長期會累積兩個成本:

最小可行版本:把 Logo、顏色、字體、按鈕、圖片規格訂出來。

4.2 用 AI 產出「可重複使用」的設計規格清單

Prompt: 「我現在要建立我們單位的『單頁活動頁設計指引 v0.1』。我會提供 Logo(或品牌色)。請你輸出一份可重複使用的規格清單,內容至少包含:

1. 色彩:主色、輔色、文字色、背景色、分隔線色(請給 HEX),並說明各自用途
2. 字體與字級:標題/內文/註解的字級建議(用 px 或 rem),行高建議
3. 間距系統:區塊上下間距、段落間距、按鈕 padding 建議
4. 元件:按鈕(主/次)、卡片、區塊標題的樣式規則
5. 圖片:建議比例(例如 16:9、1:1)、建議大小與壓縮提醒

輸出時請用『設計 Token(CSS 變數)』方式呈現,讓我可以直接貼進 CSS 裡。」

4.3 合併規格,再輸出第二版 HTML

先修內容、再出排版規範、再合併重產 HTML。

Prompt: 「以下是我們單位的設計指引(含 CSS Tokens)。請你把它套用到目前的 index.html 。要求:
1. 不改動原本內容結構(區塊順序不變)
2. 只調整字體、顏色、間距、按鈕樣式、卡片樣式
3. 仍然保持白底、乾淨、可讀
4. 保留圖片 placeholder 與連結 placeholder
請輸出更新後的完整 index.html 。」

5. 圖片怎麼放:兩條路都講清楚

5.1 放在同一個資料夾(相對路徑)- 最建議

assets/hero.jpg
assets/logo.png

優點:檔案小、瀏覽器快取有效、換圖容易、部署最穩。


5.2 用 Base64(data URL)內嵌

把圖片變成 data: URL 塞進 img src

適合:很小的圖示、少量小圖(例如 icon)。

不適合:大圖、很多圖、影片(檔案會暴增、載入慢)。

6. 表單新增:Google Forms vs Sheets

方案 適合情境 優點 代價/風險
Google Forms 先求快、先求穩;資料欄位不複雜 最省事、權限跟防護較省心;同仁也熟 外觀客製有限;流程比較「像表單」
Google Sheets + Apps Script 需要自訂 UI、想要「像你自己的網站」的表單 外觀完全可控;資料直接進 Sheets 權限、安全與維護成本較高;易遇 CORS 問題

如果要「最快上線」:用 Google Forms(嵌入或連結)。

6.3 Apps Script 寫入第一個工作表(範例碼)

如果你要「自訂表單寫入 Sheets」,這是比 Active Tab 更穩的做法。

const SPREADSHEET_ID = "把你的試算表 ID 放這裡";
const TOKEN = "簡單的共享密鑰,避免被亂灌";

function doPost(e) {
  try {
    const data = e.parameter; // 適合 x-www-form-urlencoded
    
    if (data.token !== TOKEN) {
      return ContentService.createTextOutput("unauthorized");
    }

    const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
    const sheet = ss.getSheets()[0]; // 不怕分頁改名
    
    sheet.appendRow([
      new Date(),
      data.name || "",
      data.email || "",
      data.phone || "",
      data.role || "",
      data.note || ""
    ]);

    return ContentService.createTextOutput("ok");
  } catch (err) {
    return ContentService.createTextOutput("error");
  }
}

注意:A) 初階用 HTML form action 直接 POST;B) 進階用 fetch 但避免 application/json (會觸發預檢)。

7. AI 變笨、變慢、甚至開始亂掰:怎麼處理

討論串太長時,模型容易「忘記前面你定過的規格」,這時候硬聊只會更糟。

標準動作:

  1. 先把目前定案的東西整理成「一頁摘要」
    • 目標受眾、來源、主要 CTA
    • 五個區塊名稱與順序
    • 設計指引(CSS tokens)
    • 不能改的規則
  2. 開新對話,把「一頁摘要」貼上,然後再繼續做下一版。

如果用 ChatGPT,建議直接用 Projects 管理。

8. 附錄 A:可直接複製的 Prompt 套件

A1 網頁規格表(必用)

「你是網頁規格開發師。目標受眾:【】;來源:【】;唯一主要 CTA:【】。請把以下內容整理成單頁活動頁規格表(最多 5 區塊),並列出每區目的、放哪些文字、需要哪些素材、CTA 放哪裡。文字用台灣常見說法,不要官腔。內容如下:【貼計畫書】」

A2 乾淨 HTML(第一版)

「請依照規格表輸出 index.html :白底、無特效、語意化標籤、圖片 placeholder、CTA 文案全頁一致,並有基本 RWD(手機不爆版)。只輸出完整 HTML。」

A3 設計指引(CSS tokens)

「請基於 Logo/品牌色,輸出設計指引 v0.1:主色/輔色/文字色/背景色(HEX)、字級與行高、間距規則、按鈕樣式、卡片樣式、圖片比例建議。用 CSS 變數呈現,並說明用途。」

A4 套版重產(第二版)

「以下是設計指引(CSS tokens)+目前 HTML。請保留內容結構不變,只調整視覺樣式並維持 RWD。輸出更新後完整 index.html 。」

9. 附錄 B:上線前 60 秒檢核

(再三確認)

10. 附錄 C:用語快修

避免 AI/陸式語感,改成台灣常用說法:

避免 (AI/陸式) 建議 (台灣)
用戶使用者
項目專案
渠道管道/通路
落地上路/實作/推動
視頻影片
程序 (software)程式
物料素材/圖片/檔案
立刻/立即現在 / (刪除)