一行指令,把 NTU COOL 整門課PDF、上課簡報、上課影片下載下來。
開啟powershell,輸入以下指令:
pip install get-class-material
ntu-cool-gcm不確定要不要更新? 直接跑這行就對了 —— 已經是最新版的話它什麼都不會做,不會弄壞任何東西:
pip install --upgrade get-class-material就是安裝指令多加
--upgrade。建議偶爾跑一次拿最新修正。 (0.2.18 以後的版本啟動時會自動提醒你有沒有新版;但如果你現在是更舊的版本,看不到提醒是正常的 —— 跑上面那行更新一次就會開始有提醒了。)
期中期末考前,你想把整學期的講義跟錄影影片整理一份在本機,丟給 AI 幫你做摘要、複習、出考古題?
這個工具會自動:
- 用你自己的台大帳號登入 NTU COOL(只在瀏覽器登入頁輸入密碼,程式不會看到)
- 把你選的課程整門搬下來:PDF 講義、Page 文字內容、YouTube 連結影片、NTU 上課錄影
之後你可以:
- 直接拖 PDF 到 ChatGPT / Gemini 問問題
- 把
.md文字貼進 NotebookLM 做筆記
- 台大學生,有自己 NTU COOL 帳號,想要把整門課的教材下載卻不想一個一個檔案手動下載
Python 是這個工具運作所需的程式語言環境。
打開 PowerShell(往下兩段教怎麼打開),貼上這行按 Enter:
python --version如果看到類似 Python 3.13.x,而且 3 後面那個數字 ≥ 11,就跳到第 3 步。
如果看到「找不到」、「無法辨識的指令」,或顯示的版本是 3.10 以下,先做第 2 步。
到 https://www.python.org/downloads/ 下載最新版,執行安裝程式。
⚠ 非常重要: 安裝畫面第一頁的最下面有個小勾選 「Add Python to PATH」 或 「Add python.exe to PATH」,請勾起來。沒勾的話 PowerShell 之後找不到 python,就要重裝。
裝完之後關掉所有 PowerShell 視窗,再開一次新的(這樣才會吃到新的 PATH 設定)。再跑一次第 1 步確認。
PowerShell 是 Windows 內建的「黑黑的命令列視窗」。
最快的開法:
- 按鍵盤
Win鍵(就是有 Windows 標誌那顆) - 直接打
PowerShell - 按 Enter
或是用滑鼠:開始選單 → 搜尋 PowerShell → 點開。
開啟後你會看到一個藍色或黑色的視窗,最後一行是類似 PS C:\Users\你的名字> 的字。游標在那邊閃。
從現在起,所有「貼上指令」都是貼到這個視窗裡然後按 Enter。
在 PowerShell 貼上:
pip install get-class-material按 Enter,等它跑完(會看到一堆 Collecting...、Downloading...、Installing...)。最後看到 Successfully installed ... 就 OK。
pip是什麼? 它是 Python 內建的「套件下載器」。安裝 Python 時會跟著一起裝。如果這行說「找不到 pip」,通常代表 Python 沒裝好或沒勾「Add Python to PATH」,回到第 2 步重裝。
ntu-cool-gcm第一次跑會花幾分鐘,因為它會幫你裝幾個額外的東西:
- Chromium 瀏覽器(讓工具能幫你登入,大約 200MB)
- ffmpeg(合併 YouTube 影片用,大約 240MB,Windows 用
winget自動裝) - Node.js(處理 YouTube 影片用,Windows 用
winget自動裝)
如果跳出「使用者帳戶控制」要求權限,點「是」(因為 winget 在裝系統工具)。
如果你看到 winget 不存在,工具會印出手動安裝的指令給你。Windows 11 大多有內建 winget。
裝完後,工具會跳出一個 Chromium 瀏覽器視窗,自動連到 NTU COOL 登入頁。用平常的學號密碼登入。
🔒 密碼安全提醒:
- 密碼只輸入在這個瀏覽器登入頁,跟你平常用 Chrome 登入一樣
- 工具本身從來不會看到密碼(它只在登入完拿瀏覽器的 cookie)
- 不要把密碼貼在 PowerShell、聊天室、或任何其他地方
登入完成後,不要關閉瀏覽器視窗,工具會自己處理。
登入完成後,工具要連線 NTU COOL 抓你的課程清單。這時你會看到一個會轉的小橫槓:
- 連線 NTU COOL 中…
| 讀取課程清單中…
這是正常的,代表它正在跟伺服器要資料(網路慢的話會轉久一點),不是當掉。轉完就會列出你的課程,像這樣:
找到 5 門課程:
1) 日文一下 Japanese (Ⅰ) (2)
2) 作業管理 Operations Management
3) 音樂、演化與大腦 Music, Evolution and the Brain
4) 組織行為學 Organizational Behavior
5) 管理科學模式 Management Science Model
選擇課程 (1-5 可空格多選如 "1 3 5", h = 過去課程, a = 下載全部, en = English, q = 離開)
>
可以這樣輸入:
| 你輸入 | 結果 |
|---|---|
3 |
下載第 3 門 |
1 3 5 |
一次下載第 1、3、5 門(空格分隔) |
1,2,4 |
也可以用逗號 |
a |
下載全部 5 門 |
h |
進入過去學期的選單,選舊課程 |
en |
切換成英文介面 |
q |
離開 |
按 Enter 後,工具就會開始幫你抓檔案。檔案大的影片會看到進度條:
[##########----] 47% 12.3 / 26.1 MB 3-1 演化的證據.mp4
跑完會看到:
完成。
PDF: 新增 6、跳過 0、失敗 0
Page: 新增 3、跳過 0、失敗 0
YouTube: 新增 7、跳過 0、失敗 0
上課影片: 新增 4、跳過 0、失敗 0
檔案存放位置:
C:\Users\你\Documents\ntu-cool-gcm_material\音樂、演化與大腦 Music, Evolution and the Brain (57544)
最後那行就是你的檔案放在哪。 用檔案總管打開就能看到。
之後會問你:
下一個動作: c = 繼續下載別的 / a = 下載全部 / h = 過去課程 / en = English / q = 離開
>
要再下載另一門就 c,要結束就 q(會自動關閉 PowerShell 視窗)。
下載到的目錄結構長這樣:
C:\Users\你\Documents\ntu-cool-gcm_material\
└── 音樂、演化與大腦 Music, Evolution and the Brain (57544)\
├── course_overview.md ← 這份課程的目錄索引(可以餵給 AI)
├── week1\
│ ├── SYLBS_班次1.pdf
│ └── 1-1 生物音樂學簡介.mp4
├── week2\
│ ├── 2-1-1 伊甸園外的生命長河.pdf
│ └── 2-3-2 緊拉慢唱的妙用.md
└── week3\
└── ...
.pdf— 老師上傳的講義,原始檔.md— Page 文字內容(VS Code、Typora、Obsidian 都能讀).mp4— YouTube 影片 + NTU 上課錄影,都用人看得懂的中文標題course_overview.md— 整門課的目錄索引,列出每週有什麼、檔案放在哪。直接拖到 AI 就可以叫它幫你做學習計畫
直接拖到 ChatGPT、Gemini、Claude 的對話框,然後問:
- 「幫我整理這份講義的重點」
- 「出 5 題選擇題」
- 「這份跟我之前丟的那份有什麼差別?」
- NotebookLM: 把整個
.md檔當「來源」上傳,可以一次餵很多份 - ChatGPT / Gemini: 用文字編輯器開,複製貼上即可
影片本身大多 AI 工具不能直接吃,要先轉成文字:
- 用 MacWhisper(Mac)、Whisper Desktop(Windows)、或 OpenAI 線上 Whisper
- 轉好的逐字稿再丟給 AI 做摘要
把整個課程資料夾的 course_overview.md 跟幾份重點 PDF 一起拖到 NotebookLM,叫它「根據這些教材幫我做考試重點摘要」。
ntu-cool-gcm只要登入沒過期(通常一兩天內),不用任何額外動作。已經抓過的檔案會自動跳過,只補新增的。
多數情況你不用做任何事 — 直接跑 ntu-cool-gcm,工具會在連線時自動發現登入過期,並馬上幫你開瀏覽器重新登入(你會看到「登入已過期,開啟瀏覽器重新登入…」)。
如果想手動強制重新登入,也可以加:
ntu-cool-gcm --refresh-sessionntu-cool-gcm --skip-youtube --skip-cool-videos可以混搭:--skip-pdfs、--skip-pages、--skip-youtube、--skip-cool-videos。
ntu-cool-gcm --out D:\我的課程預設是在你的「文件 / Documents」資料夾底下的 ntu-cool-gcm_material/。
如果你的目前資料夾已經有舊版建立的 ntu-cool-gcm_material/,工具會沿用那個資料夾,避免把舊檔案拆散。
預設會全部下載:Word、PowerPoint、Excel、Zip、圖片、影音等檔案會保留原本的副檔名(.docx / .pptx / .xlsx / .zip …),可以直接雙擊打開。只有「本來就是 PDF」或「副檔名不明」的檔案才會統一存成 .pdf,方便後續餵給 AI 工具。
如果你想連那些 PDF / 不明副檔名的檔案也保留原始副檔名,可以加:
ntu-cool-gcm --all-file-typesntu-cool-materials download-course --course-id 57544(例如 https://cool.ntu.edu.tw/courses/57544 裡的 57544)
ntu-cool-materials doctor會列出 Python、瀏覽器、ffmpeg 等等的安裝狀態。
如果有缺,加上 --fix 嘗試自動修:
ntu-cool-materials doctor --fixntu-cool-gcm --versiondoctor 的最上面也會印出版本號。回報問題時附上版本,會比較好幫你查。
工具每次啟動時也會自動檢查有沒有新版(一天最多查一次,離線就跳過,不會拖慢速度)。如果有新版會提醒你:
💡 有新版本 0.2.18(你目前 0.2.17)。更新指令: pip install --upgrade get-class-material
照著跑那行 pip install --upgrade get-class-material 就更新好了。
大部分 NTU 老師的 YouTube 影片是「不公開 (unlisted)」,這種不需要登入就能抓,工具會直接下載。
只有真正設「私人 / 限齡 / 會員限定」的影片才需要你的 YouTube 登入。這時工具不用你另外登入——它會在有影片失敗時問你一次:
有 2 個 YouTube 影片下載失敗。
如果是私人 / 限齡 / 會員影片,需要你的 YouTube 登入狀態才能抓。
要用你瀏覽器裡已登入的 YouTube 帳號重試嗎? [y/N]
按 y,工具就會直接讀取你平常用的瀏覽器(Chrome / Edge / Firefox …)裡已經登入的 YouTube 帳號來重試——你不用再登入一次。
💡 為什麼是讀瀏覽器、不是跳出來登入? Google 會擋「被程式控制的瀏覽器」登入(會顯示「這個瀏覽器可能不安全」),所以直接讀你平常瀏覽器裡的登入狀態最穩。
⚠ 如果你用 Chrome / Edge,重試前請先完全關掉那個瀏覽器——瀏覽器開著的時候 cookie 檔會被鎖住,讀不到。Firefox 通常不用關。
前提是你平常那個瀏覽器有登入會看到這些影片的 Google 帳號(通常就是你的台大 Google 或個人帳號)。
在 PowerShell 跑這行:
pip install --upgrade get-class-material已經是最新版的話它不會做任何事,所以隨時都可以放心跑。想確認自己現在哪一版,打 ntu-cool-gcm --version。
代表你還沒裝 Python,或者裝的時候沒勾「Add Python to PATH」。
解法: 重裝一次,這次記得勾那個選項。然後關掉 PowerShell 重開。
跟上一題一樣,通常是 Python 沒裝好。重裝 Python 並勾「Add Python to PATH」。
這是 Windows 的安全設定。打開 PowerShell 以系統管理員身份(右鍵點 PowerShell 圖示 → 以系統管理員身份執行),貼上:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser按 Y 確認。然後關掉視窗,正常開一個新的就 OK。
winget 是 Windows 11 內建的應用程式安裝工具。Windows 10 比較舊版可能沒有。
解法: 到 Microsoft Store 搜尋「應用程式安裝程式」(App Installer),點安裝,重開 PowerShell。
或者直接手動安裝 ffmpeg 跟 Node.js:
- ffmpeg: https://www.gyan.dev/ffmpeg/builds/(下載
ffmpeg-release-essentials.zip) - Node.js: https://nodejs.org/(下載 LTS 版)
裝完關掉 PowerShell 重開,再跑 ntu-cool-gcm。
直接再跑一次 ntu-cool-gcm 就好 — 工具會自動發現過期並開瀏覽器讓你重新登入。要手動強制的話可以加 --refresh-session:
ntu-cool-gcm --refresh-session最常見原因:
- 是私人 / 限齡 / 會員影片 — 需要你的 YouTube 登入。工具下載失敗時會問你「要用瀏覽器裡已登入的帳號重試嗎?」,按
y即可(用 Chrome/Edge 的話記得先關掉瀏覽器再重試) - 沒裝 ffmpeg / Node.js — 跑
ntu-cool-materials doctor確認 - 影片有 DRM 保護 — 罕見但會發生,這種真的抓不下來
跑 ntu-cool-materials doctor 看有沒有缺東西。
直接再跑一次 ntu-cool-gcm 即可。
- 已下載完的檔案會跳過
- 大檔影片會從中斷的地方續傳(不用重抓)
預設在你的「文件 / Documents」資料夾底下,叫 ntu-cool-gcm_material/。
常見位置像這樣:
C:\Users\你\Documents\ntu-cool-gcm_material\
如果你以前已經在目前資料夾建立過 ntu-cool-gcm_material/,工具會優先沿用那個舊資料夾。
每次跑完工具最後一行也會印「檔案存放位置:」+ 完整路徑。
可以:
ntu-cool-gcm --skip-pages --skip-youtube --skip-cool-videos可以:
ntu-cool-gcm --out D:\我的課程資料夾YouTube 影片畫質取決於老師上傳的原檔。多數 NTU 老師上傳的是 480p,工具會自動抓最高畫質,所以你看到的就是來源最高解析度。
NTU 上課影片(cool-video)畫質維持來源原檔。
這個工具只下載你自己有權限看到的課程教材 — 跟你平常用瀏覽器一個個下載的權限一模一樣,不繞過任何權限系統。
但是:
- 下載下來的教材仍然受老師、出版社、原作者的版權保護
- 僅限自己學習使用,不要公開散播、不要上傳到網路、不要分享給校外人士
- 老師同意才能在合理範圍內分享給同班同學
簡單說:自己讀沒問題,公開散播違法。
- 密碼只輸入在工具跳出來的瀏覽器登入頁(就是 NTU COOL 的官方登入頁面)
- 工具本身從來不會看到密碼
- 不要把密碼複製貼上到 PowerShell、聊天室、Email 或任何其他地方
工具會在你執行的目錄下建一個 .secrets/ 資料夾,裡面存:
- 你登入後的 cookie(等同於登入狀態)
- YouTube 的 cookie
這個資料夾等同於你的登入憑證。請:
- ❌ 不要分享給別人,連同學也不要
- ❌ 不要上傳到 GitHub、雲端硬碟、Discord
- ❌ 不要截圖貼到聊天室
- ✅ 換電腦就重新跑
ntu-cool-gcm --refresh-session重新登入即可
預設它是隱藏資料夾(Windows 用 dir 看不到,要在檔案總管開「顯示隱藏檔」才看得到)。
不要公開散播。詳見上面的版權問答。
如果你只想看可見課程清單,不下載:
ntu-cool-materials courses --refresh-session抓某課的公告:
ntu-cool-materials announcements --course-id 57544 --refresh-session --print完整指令清單請看 --help:
ntu-cool-materials --help
ntu-cool-gcm --help給開發者 / 從原始碼安裝
git clone https://github.com/jabir95tsai/get_class_material.git
cd get_class_material
pip install -e .
python -m playwright install chromium
python -m unittest discover -s tests架構說明見 CLAUDE.md。
- PyPI: https://pypi.org/project/get-class-material/
- GitHub: https://github.com/jabir95tsai/get_class_material
- License: MIT — 見 LICENSE
支援的 Python 版本:3.11+。Playwright + yt-dlp + ffmpeg + Node.js 為下載 YouTube 影片所需,工具會在第一次執行時嘗試自動安裝。