Claude AI 驅動全端開發工作流(第一堂)
概览
多 Skill 整合的 AI 教學內容工作坊。 一個 repo,把 、、 都封裝成可重複使用的 Agent Skills,AI 對話一句話就能完成。 每次備課、接案、剪片,總是要重複做同一套工作流:把一份原始素材轉成「能直接給觀眾看的成品」。 本專案把這些重複動作拆解成幾個**,AI 看到關鍵字就會自動串起來: - 給主題或講稿 → 自動產出** + OG 縮圖 - 給課綱 → 自動套版型輸出** - 給音檔 → 自動產出 、、 不再每次都從零開始 vibe coding,而是「給我這份內容,請幫我跑這條 pipeline」。 :產出物(index.html、.srt、-提案.pdf、assets/og-*.jpg)一律就地寫回對應的工作區,不要分散到根目錄。 每個 Skill 的 SKILL.md 都有完整的 workflow、I/O 規格、品質檢查清單。AI 會依 description 自動判斷觸發時機。 course-page-generator 與 proposal-writer 是獨立 pipeline,不依賴其他 Skill。 .agents/commands/ 放的是 :把多個 Skill 依固定順序串成一條 pipeline,讓使用者一句指令跑完整流程。
README
tibame-lesson1
多 Skill 整合的 AI 教學內容工作坊。 一個 repo,把 講稿 → 課程網頁、課綱 → 內訓提案 PDF、音檔 → 字幕 → 字卡 → 社群文案 都封裝成可重複使用的 Agent Skills,AI 對話一句話就能完成。
為什麼是這個專案
每次備課、接案、剪片,總是要重複做同一套工作流:把一份原始素材轉成「能直接給觀眾看的成品」。 本專案把這些重複動作拆解成幾個單一職責的 Agent Skill,AI 看到關鍵字就會自動串起來:
- 給主題或講稿 → 自動產出單檔課程網頁 + OG 縮圖
- 給課綱 → 自動套版型輸出企業內訓提案 PDF
- 給音檔 → 自動產出 SRT 字幕、字卡標註、社群平台文案
不再每次都從零開始 vibe coding,而是「給我這份內容,請幫我跑這條 pipeline」。
專案架構
tibame-lesson1/
├── README.md # 你正在看的這份
├── package.json # 統一暴露各 Skill 的 npm script 入口
├── .agents/ # AI Agent 的 Skills 與 Commands(Claude Code / Codex 共用)
│ ├── skills/ # ↳ 每個子資料夾 = 一個 Skill(含 SKILL.md)
│ │ ├── course-page-generator/ # 講稿 → 單檔 HTML 課程頁 + OG 縮圖
│ │ ├── proposal-writer/ # 課綱 → 企業內訓提案 PDF
│ │ ├── audio-to-srt/ # 音檔 → SRT 字幕
│ │ ├── srt-enhancer/ # 用原稿比對、修正 SRT 錯字與排版
│ │ ├── srt-card-annotator/ # 在 SRT 加上重點字卡標註
│ │ └── srt-social-summary/ # SRT → FB / Threads / YouTube 文案
│ └── commands/ # ↳ slash command:把多個 Skill 串成一條 pipeline
│ └── video-srt-card-des.md
│
├── course/ # 課程網頁的工作區
│ ├── README.md # 課程內容(範例:本專案的設計逐字稿)
│ └── config/ # ★ 全域 config 預設位置(course-page-generator 會自動讀到)
│ ├── global.yaml # 講者資訊、社群連結、頁尾、SEO 預設值
│ └── assets/ # 講師頭像等共用素材
│
├── proposal/ # 企業內訓提案的工作區
│ ├── config.yaml # 講師介紹、品牌色(所有提案共用)
│ └── README.md # 範例提案
│
├── audio/ # 音檔工作區(audio-to-srt / srt-* 系列 Skill 的輸入)
│ ├── audio-example.m4a
│ └── origin.md # 原稿(給 srt-enhancer 比對用)
│
├── files/ # 原始素材(簡報、文件、會議記錄等)
├── images/ # 課程網頁要用到的圖
└── .claude/ # Claude Code 本機設定(settings.local.json)
約定:產出物(
index.html、*.srt、*-提案.pdf、assets/og-*.jpg)一律就地寫回對應的工作區,不要分散到根目錄。
Skills 全集
| Skill | 觸發時機(口語關鍵字) | 主要產出 |
|---|---|---|
| course-page-generator | 「幫我做課程頁」「把講稿轉成網頁」「設計講義網站」 | index.html(單檔內嵌 CSS/JS 與 base64 圖片) + assets/og-*.jpg |
| proposal-writer | 「寫一份課程提案」「把課綱整理成提案」「企業內訓提案 PDF」 | /README.md(六大區塊版型) + -提案.pdf |
| audio-to-srt | 「把音檔轉成字幕」「generate subtitles from audio」「轉逐字稿」 | origin.srt(含 timestamp 的字幕檔) |
| srt-enhancer | 「優化 SRT」「比對原稿修正字幕」「修正字幕錯字」 | enhanced.srt(修正錯字、補上英數空格) |
| srt-card-annotator | 「在字幕加字卡」「annotate srt with cards」「設計字卡」 | reference-cards.srt(在字幕下方插入 [字卡] 標註) |
| srt-social-summary | 「生成影片介紹」「根據逐字稿寫 FB/YT 貼文」「social media summary」 | summary.md(FB / Threads / YouTube 三個版本的平台文案) |
每個 Skill 的 SKILL.md 都有完整的 workflow、I/O 規格、品質檢查清單。AI 會依 description 自動判斷觸發時機。
Skill 之間的關係
┌──────────────────────┐
音檔 ───→ │ audio-to-srt │ ──→ origin.srt
└──────────────────────┘
│
▼
┌──────────────────────┐
原稿 ───→ │ srt-enhancer │ ──→ enhanced.srt
└──────────────────────┘
│
┌──────────┴──────────┐
▼ ▼
┌──────────────────┐ ┌──────────────────────┐
│ srt-card-annotator│ │ srt-social-summary │
└──────────────────┘ └──────────────────────┘
│ │
▼ ▼
reference-cards.srt summary.md
course-page-generator 與 proposal-writer 是獨立 pipeline,不依賴其他 Skill。
Commands
.agents/commands/ 放的是 slash command:把多個 Skill 依固定順序串成一條 pipeline,讓使用者一句指令跑完整流程。
| Command | 用途 | 串接的 Skill |
|---|---|---|
| /video-srt-card-des | 一鍵把音檔變成「乾淨字幕 + 字卡 + 三平台貼文」 | audio-to-srt → srt-enhancer → srt-card-annotator → srt-social-summary |
Command 與 Skill 的差異:
- Skill = 一個技能單元,由 AI 自動依關鍵字觸發
- Command = 一條 pipeline,由使用者明確輸入
/來啟動
要新增 command,在 .agents/commands/ 加一個 .md,frontmatter 寫 description:,內文用 STEP 1 / STEP 2 ... 描述要呼叫的 Skill。
Quick Start
0. 安裝
npm install # 主要是 puppeteer(OG 縮圖 / 提案 PDF 需要)
Node.js 需要 18 以上(build script 用了 ES module 與較新的 fs API)。
1. 課程網頁
# 開發模式(自動 rebuild + live reload)
npm run dev -- course/
# 一次性 build
npm run build -- course/
# 產生 OG 縮圖(build 完一定要接著跑這個,不然社群分享預覽會空白)
npm run og -- course/
實務上不需要記指令 —— 在 AI 對話直接說「幫我把這份講稿做成課程網頁」即可,course-page-generator 會自動跑完三步。
Config 怎麼放:
- 預設集中放在
course/config/global.yaml(不管課程在course/、lecture/還是其他資料夾,都會自動讀到) - 想為某個課程單獨覆蓋,在該課程父層另建一份
config/global.yaml即可(會優先於預設) - 也可用
COURSE_GLOBAL_CONFIG=/path/to/global.yaml環境變數明確指定
2. 企業內訓提案
# 把 proposal///README.md 編譯成 PDF
npm run proposal -- proposal/todo/
對 AI 說:「幫我把這份課綱寫成提案,客戶是 XX」,proposal-writer 會自動建立資料夾、套版型、產 PDF。
3. 音檔 → 字幕 → 字卡 → 文案
四個 SRT 系列 Skill 沒有 npm script(不是純 Node script,需要 Python 與 AI 協作)。直接對 AI 說:
/video-srt-card-des
來源:audio/audio-example.m4a
原稿:audio/origin.md
或拆開單獨呼叫:「用 audio-to-srt 把這個檔案轉成字幕」、「用 srt-enhancer 優化這份字幕」。
開發約定
- 每個 Skill 自帶
scripts/與references/:可單獨複製到別的 repo 也能跑,不依賴外部設定。 - 產出物寫回工作區:
course//index.html、proposal//-提案.pdf、audio/enhanced.srt等,不要散到根目錄。 config/global.yaml走深合併(deep merge):陣列欄位(如socials)會整個取代,物件欄位才會合併。- 新增 Skill 時:在
.agents/skills//SKILL.md寫好name/description/ workflow,AI 就能自動發現並依關鍵字觸發。 - 新增 Command 時:在
.agents/commands/.md寫好 frontmatter 與步驟,使用者輸入/即可啟動。
延伸閱讀
- 各 Skill 的詳細規格 →
.agents/skills//SKILL.md - 課程網頁的元件對照 →
.agents/skills/course-page-generator/reference/components.md - 提案版型範本 →
.agents/skills/proposal-writer/references/template.md
推荐工具
换一个关键词,或者移除筛选条件。
安装
npx skillfish add deancourse/tibame-lesson1