陳乃誠 · 大乃老師

2026-05-25 · AI 工具與工作流

看完彭智標老師那篇,我用 AI 試做了一遍:三天蓋出試卷題庫整理器

看到彭智標老師寫的試卷題庫整理器構想,我跟 Claude Code 試做了一遍。三天、八階段、五個坑、柯維七習慣對應——這就是現在做老師的人能做的事。

我看到彭智標老師寫了一篇「試卷題庫整理器」的構想——當天晚上,我決定自己跟 AI 試做一遍。三天,從零蓋到上線。

靈感來源:彭智標老師原始構想

我的實作版本:quiz-bank-organizer.vercel.app

起點:那篇文章打中我了

那天滑 FB 看到彭智標老師寫的「試卷題庫整理器」——他說,老師長期靠書商題庫光碟,各校還要規定「與廠商光碟題目重複率不得高於 OO%」。他想做的是:把老師每一次出題的成果累積成「可再利用」的教學資產。用 Google Sheets 當題庫、Apps Script 串接、未來接 Gemini 拆題。

我看完心裡一震。

這正是我這幾年一直想做的事,但每次都卡在「我又不會寫程式」。彭老師那篇給了我一個衝動——如果我有 Claude Code,我為什麼不自己試試?

把概念圖貼給 AI 那一刻

那天我打開 Claude Code,把彭老師那張系統概念圖截下來貼進去。

我跟他說:「我要這個。網頁版。」他回我一句:「我懂了,先確認幾個技術選擇。」

三天之後,這個工具上線了。

我沒抄彭老師的程式碼(他也還沒公開),我抄的是他的「思考結構」——那張流程圖把問題拆成五層:題庫來源、AI 輔助、整理審題、組卷輸出、回饋分析。有了這個骨架,剩下的就是跟 AI 講清楚每一層要長什麼樣。

為什麼後端用 Google Sheets,不是資料庫?

第一個決定是「給誰用」。彭老師的判斷我完全同意——這個工具是要給「老師」用,不是給工程師。

所以後端用 Google Sheets。三張表:questions(題庫)、papers(試卷)、responses(作答紀錄)。Apps Script 當 API 層。老師打開試算表就看得到題庫,要改隨時改、要帶走隨時帶走。

前端 Next.js + shadcn/ui,部署到 Vercel。AI 用 Gemini 2.5——Flash 拆題、Pro 跑迷思診斷。

整套架構核心邏輯只有一句話:「老師看得懂、改得動、帶得走。」

八個階段,三天跑完

第一天搭骨架,CRUD——題庫列表、新增、編輯、刪除。

真正震撼是第二天的 Stage 3:AI 批次匯入。我貼了兩題段考原文,沒有任何結構、就是純文字。Gemini 在三秒內,把題幹、四個選項、正確答案、Bloom 認知層次(理解/應用/分析)全部拆好放進待審佇列。

我盯著螢幕看了三十秒——「我過去十年,每次出題都在手動做這件事。」

接著是 Stage 5 組卷引擎(難度分配、近期排除、使用次數追蹤 + A/B 卷)、Stage 6 一鍵輸出三份 Google Docs + PDF、Stage 7 一鍵生成 Google Forms 線上測驗(學生用手機作答)、Stage 8 分析儀表板——每題答對率、鑑別度、易錯選項分布 + Gemini 迷思概念診斷。

最後加碼:通關密碼門禁 + 深色科技風美化。

過程中踩的五個坑(寫給後面想試的老師)

一、Apps Script Web App 不能讀 HTTP header。 本來把 secret 放 header,結果根本看不到。改用 URL query param 才通。

二、中文「八年級」生不出 ID。 我們用「年級+編號」當題目 ID,結果「八年級」沒有阿拉伯數字,正則抓不到。加一張中文數字對應表(一→1、八→8)才解決。

三、Apps Script 新增 API 要重新授權。 加了 DriveApp、DocumentApp、FormApp 之後,第一次呼叫就跳「沒有權限」。建一個 testAuth() 函式手動觸發 OAuth 才過。

四、Vercel 環境變數從 Python stdin 進去會吃到 \n。 密碼後面被加一個換行,登入永遠失敗。改用 file-based stdin(先寫 /tmp 再 pipe)才乾淨。

五、iCloud 不能放 node_modules。 專案丟 ~/Developer/,只有設計文件放 iCloud。

每一個坑都卡至少半小時。沒有 Claude 在旁邊一邊查一邊試,我會卡更久。

拉回教學現場:剛好對應柯維七習慣

寫到這裡突然發現,這三天的開發節奏,剛好是「自我領導力七習慣」走一遍。

Stage 1–3 骨架到 AI 匯入,是習慣一「主動積極」——我沒等學校給工具、沒等彭老師開源,我自己動手做。

Stage 4–5 審題到組卷,是習慣二「以終為始」+ 習慣三「要事第一」——組卷之前先想清楚「要組什麼卷」、先做高槓桿的批次抽題。

Stage 6–7 輸出 Docs 跟 Forms,是習慣四「雙贏思維」——老師省時間,學生用手機作答更方便。

Stage 8 分析儀表板,是習慣五「知彼解己」——答對率、易錯選項、迷思概念,都是「先理解學生」。

美化收尾,是習慣六「綜效」+ 習慣七「不斷更新」

我以前跟學生講七習慣總覺得「以終為始」太抽象。這次跑一遍才真的懂——以終為始,就是你連一行程式碼還沒寫,就要先想清楚「最後要長什麼樣」。而這次的「終」,是彭老師那張概念圖給我的。

我的結論

這篇文章不是要展示「我做了什麼」,而是想說一件事——

看到別人寫了一個好概念,我們不一定要等他做完。我們可以自己跟 AI 試做一遍。

彭智標老師寫了那篇,等於把問題定義清楚了。問題定義清楚,就成功一半。剩下那一半,是 AI 幫你蓋的。

我做的這版一定有缺漏,彭老師的版本一定有我沒想到的細節。但這就是現在做老師的人能做的事——看到好概念,自己動手把它跑通,跑通了再去學原作者怎麼想得更深。

這幾年我一直在跟同事說:老師最該培養的不是學寫程式,是「給 AI 下指令的能力」。你不需要會寫 Next.js,你需要會描述你要什麼。你不需要懂 Apps Script,你需要懂自己工作的流程在哪裡卡住。

學會跟 AI 一起做事,就像柯維說的——「先理解別人,再被理解」。你要先讓 AI 理解你的目標,他才能給你對的東西。而我這次的目標,是彭老師幫我定義的。


再次感謝彭智標老師那篇好文。好的概念值得被自己再做一遍。

標籤:#AI教學#ClaudeCode#GoogleAppsScript#柯維七習慣#題庫管理#教育科技
← 回部落格