mathruffian-dot/opencode-lazy-packs/02-file-toolkit
Claude Code and agent skill by mathruffian-dot/opencode-lazy-packs
- community
Checking that the SKILL.md file is still in the repository.
安裝 agent 的內部工具包三合一——A 文件處理(Word/Excel/PPT/PDF/圖片/QR/轉 Markdown 的 Python 標配 10 套件)、B 影音工具(yt-dlp/FFmpeg/deno)、C 語音(Edge-TTS 讓 agent 開口說話)。說「裝內部工具包」「裝教學檔案處理工具包」「裝 Python 檔案工具」「裝 yt-dlp」「裝影音下載工具」「讓 agent 會說話」「裝 Edge-TTS」「裝語音」時載入。
Install
npx vskill@latest install mathruffian-dot/opencode-lazy-packs/02-file-toolkitSKILL.md
內部工具包 三合一(文件/影音/語音)
研習六「作品階梯」的內部工具級:不是給學生用的網頁作品,而是讓 agent 長出手腳的一組工具。裝好之後,你對 OpenCode 說一句人話,它就能真的幫你產出獎狀、成績表、簡報、PDF、QR Code,也能下載影片抽字幕,還能開口把結論唸給你聽。
這一包裝三類工具,各自解決什麼
| 段 | 裝什麼 | 解決什麼問題 | 今天用得到嗎 | |
|---|---|---|---|---|
| 標配 A:文件處理 | Python 10 套件(uv 裝進專案 .venv) | 讀 PDF 生教案、套印獎狀、算成績、做簡報、生 QR Code | ✅ 今天下午就用 | |
| 標配 B:影音工具 | yt-dlp/FFmpeg/deno(系統工具,winget/brew) | 下載影片、抽字幕、轉 mp3 餵 AI | ⏭️ 今天不會用到,第二、三天的影片剪輯會 | |
| 標配 C:語音 | edge-tts(Python 模組,微軟雲端語音、免金鑰) | 讓 agent 用台灣中文把結論唸出來 | ✅ 今天就用,裝完 30 秒內聽得到 |
🔀 三段彼此獨立,任一段失敗不影響其他兩段。每段都有自己的驗證步驟與成功訊號。研習現場如果進度落後,先裝 A 和 C(今天要用),B 留課後自己補——B 沒裝完全不影響 A、C 能不能用。
這一份是懶人包入口。A 段實際的安裝腳本與驗證程式放在另一個 repo:https://github.com/mathruffian-dot/ai-agent-ep03(預設分支是master,不是main)本文件只負責:這是什麼、怎麼裝、怎麼驗、卡住怎麼辦。細部腳本以那個 repo 為準。
這包能幹嘛(裝完就能對 agent 說的話)
A 段(文件)
| 你想做的事 | 裝完後直接說 | |
|---|---|---|
| 套印獎狀/通知單 | 「讀這份名單 Excel,套進這個獎狀 Word 模板,每人產一份」 | |
| 成績計算+標紅 | 「算總分與排名,不及格標紅,各班平均放最後一列」 | |
| 大綱變簡報 | 「把這份教材大綱,每個重點做成一頁投影片」 | |
| PDF 合併/抽頁/浮水印 | 「把這些 PDF 合併,第 5~8 頁另存,每頁加淡灰浮水印」 | |
| 連結變 QR Code | 「把這 5 個連結各生一張 QR Code」 | |
| 課本轉乾淨文字餵 AI | 「把這份 PDF 轉成 Markdown」 |
B 段(影音)
| 你想做的事 | 裝完後直接說 | |
|---|---|---|
| 抓公開影片的字幕當逐字稿 | 「幫我抓這支影片的中文字幕,轉成 SRT」 | |
| 只要聲音餵給 AI 摘要 | 「把這支影片下載成 mp3」 | |
| 下載素材影片來剪 | 「用最高畫質下載這支影片」 |
C 段(語音)
| 你想做的事 | 裝完後直接說 | |
|---|---|---|
| 讓 agent 唸結論 | 「把剛剛的結論用語音唸給我聽」 | |
| 生一段旁白音檔 | 「把這段課程說明存成 mp3,我要放進影片」 |
先備條件
共同
- [ ] 網路連線(三段都需要:A 抓套件、B 抓影片、C 走微軟雲端語音)
A 段/C 段
- [ ]
uv已安裝(沒有的話先跑00-env-setup) - [ ] Python ≥ 3.11(見下方版本下限說明)
B 段
- [ ] Windows:
winget可用(winget --version有輸出) - [ ] macOS:
brew可用/Linux:apt或官方安裝腳本
⛔ 給 Agent 的七條規則(安裝前先讀,這幾條是防呆用的)
使用者說「裝內部工具包」「裝教學檔案處理工具包」時,逐條遵守:
- 只在專案資料夾內工作 — A 段以
ai-agent-ep03資料夾為根,不要去掃其他磁碟或其他 agent 的目錄。 - 只裝三段標配(A 的 10 個套件、B 的三個系統工具、C 的 edge-tts) — 下方 A 段「選配」與「其他系統工具」一律不裝,除非使用者明確點名用途。
> 📌 v2 起 `edge-tts` 與 `yt-dlp` 已從「選配」升級為標配 B/C,這是本次擴充的刻意變更,不是誤裝。舊版文件把這兩個列在「預設不要裝」,以本文件為準。
- 禁止全域 `pip install` — A 段一律裝進該資料夾的
.venv,C 段用uv tool install(獨立隔離環境),都不要污染使用者原有的 Python。 - 禁止逐項上網研究 — 版本解析交給
uv,不要為每個套件開網頁、寫長篇計畫或重複說明。 - 最多重試一次 — 失敗就回報原始錯誤訊息與建議,不要反覆改指令、重裝、或自行提權。
- 不自動切換執行環境 — Windows、WSL、Docker、沙盒是不同環境,不要為了裝成功就自己跳去 WSL 或換 agent。
- 三段各自獨立、各自回報 — A/B/C 任一段失敗,繼續把其他兩段做完,最後在成功訊號裡分段標示,不要整份中斷、也不要用「裝別段」來補救失敗那段。
🟢 標配 A:文件處理(Python 10 套件)
✅ 今天下午就會用到。 裝好之後 agent 才有辦法讀 PDF 生教案、套印獎狀、做簡報。這一段完全不需要 B、C 段的任何東西。
A 段步驟
A1. 取得工具包
⚠️ 預設分支是master。不要硬指定-b main,會失敗。
A2. 確認版本釘選是最新的
打開 requirements-core.txt,確認內容如下(`matplotlib` 要是 `3.11.1`,舊版檔案可能還寫 3.11.0,請改掉):
A3. 安裝
Windows(有現成腳本,走這條)
在 ai-agent-ep03 資料夾內執行:
腳本會依序:找 uv(沒有就用 WinGet 裝官方 astral-sh.uv)→ 建 .venv → 依 requirements-core.txt 安裝 → 執行 verify_core.py。
🔒 沒有管理員權限時(學校電腦常見):腳本內建的winget install --id astral-sh.uv可能被擋。先自己跑一次使用者範圍安裝,再重跑腳本:```powershellwinget install --id astral-sh.uv --exact --scope user --accept-source-agreements --accept-package-agreements```還是不行就用官方腳本備案:powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
macOS / Linux / WSL(原 repo 沒有腳本,用這組等價手動步驟)
install_windows.ps1寫死 Python 3.12 且只認 3.12 的既有.venv。手動這條同樣建議用 3.12(最穩),但 3.11~3.14 都可行。
A4. 驗證 A 段(不需要 B、C 段)
verify_core.py 不只 import,還會真的產一份 docx/xlsx/pptx/pdf/png/QR/圖表,再用 MarkItDown 轉回文字比對。判讀方式:
| 結果 | 標準輸出 | Exit code | |
|---|---|---|---|
| ✅ 成功 | CORE_OK: 10/10 imports and file smoke tests (Python 3.x.y) | 0 | |
| ❌ 套件缺漏 | CORE_FAIL: n/10 + 逐項錯誤 | 1 | |
| ❌ 匯入過了但實際操作失敗 | CORE_SMOKE_FAIL: <錯誤類型>: <訊息> | 1 |
只有看到 `CORE_OK: 10/10` 且 exit code 為 `0`,才算安裝成功。
A5. 告訴 agent 用哪個 Python
裝完之後,所有 Python 程式都要用這個直譯器跑,不要用系統的 python:
- Windows:
.\.venv\Scripts\python.exe - macOS / Linux / WSL:
.venv/bin/python
A 段標配 10 個(預設就裝這些)
已在 Windows + Python 3.14 實測全數安裝成功,verify_core.py 輸出 CORE_OK: 10/10。
| 套件 | 用途 | |
|---|---|---|
python-docx | 生成/讀寫 Word | |
openpyxl | 讀寫與格式化 Excel | |
python-pptx | 生成/改寫 PowerPoint | |
pypdf | PDF 合併、拆分、浮水印 | |
PyMuPDF | PDF 抽文字、抽頁、轉圖片 | |
reportlab | 生成 PDF 與浮水印圖層 | |
Pillow | 圖片裁切、去白邊、合成 | |
matplotlib | 產生統計圖表 | |
qrcode[pil] | 產生 QR Code | |
markitdown[pdf,docx,pptx,xlsx] | PDF/Word/PPT/Excel 轉 Markdown |
`markitdown` 一定要帶 extras。 只裝裸的markitdown不會啟用各文件格式,pdf,docx,pptx,xlsx四組才符合示範用途。`PyMuPDF` 的 import 名稱: 1.28.0 起官方新名稱是import pymupdf,但舊寫法import fitz仍然可用,兩者皆可,不必改既有程式碼。
版本下限:Python 3.11(不是只有 3.12 能跑)
原文件只提 3.12,但依相依關係實際推算:標配裡卡最緊的是 matplotlib 3.11.1(requires_python >=3.11),其次 PyMuPDF/Pillow/markitdown 要 ≥3.10。所以:
| Python | 結果 | |
|---|---|---|
| 3.10 以下 | ❌ 解析失敗(uv 會直接報 matplotlib 不支援) | |
| 3.11 | ✅ 可裝(實質下限) | |
| 3.12 | ✅ 安裝腳本預設值,最穩 | |
| 3.13 / 3.14 | ✅ 可裝,3.14 已實測 CORE_OK: 10/10 |
🟡 A 段選配(預設不要裝)
| 套件 | 為什麼不是標配 | |
|---|---|---|
pandas | 已由 `markitdown[xlsx]` extras 自動帶入,不需另裝。 要做大量資料分析時本來就已經在了。 | |
pdfplumber | 已由 `markitdown[pdf]` extras 自動帶入,不需另裝。 精準擷取 PDF 表格時直接用即可。 | |
xlsxwriter | 已由 `python-pptx` 相依自動帶入,不需另裝。 | |
docxcompose | 只有「合併多份 Word」才需要。 | |
pdf2image | 需另裝 Poppler;PDF 轉圖用 PyMuPDF 就夠。 | |
fpdf2 | 與標配的 reportlab 功能重疊。 | |
ocrmypdf | 需 Tesseract(+Windows 可能還要 Ghostscript),不適合研習現場全自動安裝。 | |
docx2pdf | 只支援 Windows/macOS,且本機必須有 Microsoft Word。 | |
pywin32 | 只有 Windows Office COM 自動化才需要。 | |
| 已升級為標配 C,見下方「標配 C:語音」。不要在這裡裝。 | ||
已升級為標配 B,見下方「標配 B:影音工具」。B 段用 winget/brew 裝系統版,不要用 pip 裝進 .venv。 | ||
youtube-transcript-api | 只有抓 YouTube 既有字幕時需要;無字幕影片無法處理。標配 B 的 `yt-dlp` 已能抓字幕,通常不必再裝這個。 |
前三項(pandas、pdfplumber、xlsxwriter)裝完標配後就已經在 `.venv` 裡了,這是相依關係自動帶進來的,不是誰裝錯。不要為了「清乾淨」去 uninstall,會把markitdown或python-pptx弄壞。其餘項目使用者日後明確點名任務時,再由 agent 裝進同一個.venv。不要一次把整張表裝完。
⚙️ A 段用不到的其他系統工具(不是 pip 套件,預設不要裝)
| 系統工具 | 何時才需要 | 限制 | |
|---|---|---|---|
| Tesseract OCR | 掃描 PDF/圖片 OCR | 繁體中文還要 chi_tra 語言資料 | |
| Ghostscript | OCRmyPDF 部分 PDF/A 流程 | Windows 安裝可能需管理員 | |
| Poppler | 使用 pdf2image | 標配已用 PyMuPDF 轉圖,可不裝 | |
| 已升級為標配 B,見下方「標配 B:影音工具」 | |||
| Microsoft Office | docx2pdf、pywin32 COM | 沒有 Word/PowerPoint 就不能用 |
不要因為讀到這張表就去跑 `winget install`(唯一例外是已升級為標配 B 的 ffmpeg,照 B 段步驟裝)。
🎬 標配 B:影音工具(yt-dlp/FFmpeg/deno)
⏭️ 今天不會用到,第二、三天的影片剪輯與逐字稿會用到。現場時間不夠可以整段跳過,回家再補;跳過完全不影響 A 段與 C 段。這一段裝的是系統工具(不是 Python 套件),不進.venv,跟 A 段的環境無關。
B 段裝什麼、為什麼
| 工具 | 用途 | 為什麼要 | |
|---|---|---|---|
| yt-dlp | 下載影音平台的影片、音訊、字幕 | 抓公開影片當教材、抓字幕當逐字稿 | |
| FFmpeg | 影音格式轉換、把音訊和影片合併 | yt-dlp 下載高畫質時,影音是分開的兩軌,要靠 FFmpeg 合起來 | |
| deno | JavaScript 執行環境 | yt-dlp 解析 YouTube 新格式時需要,隨 yt-dlp 自動安裝,不必自己裝 |
⚠️ FFmpeg 有兩套,不要重複裝
這是最容易多花 20 分鐘的地方:
| 版本 | 從哪來 | 要不要自己裝 | |
|---|---|---|---|
yt-dlp 專用版(yt-dlp.FFmpeg) | 裝 yt-dlp 時自動帶入 | ❌ 不用,裝 yt-dlp 就有了 | |
系統版(Gyan.FFmpeg) | winget install Gyan.FFmpeg | 🟡 只有你想在別的地方直接用 ffmpeg 指令(剪片、轉檔)才裝 |
兩者可以並存,不會互相打架。 但如果你只是要下載影片和字幕,裝完 yt-dlp 就夠了,不需要再裝系統版。
B 段步驟
B1. 安裝 yt-dlp(會自動帶 FFmpeg 與 deno)
Windows
🔒 沒有管理員權限時(學校電腦常見):```powershellwinget install --id yt-dlp.yt-dlp -e --scope user --accept-source-agreements --accept-package-agreements```兩個都失敗就用 Python 版備案(不需要管理員):uv tool install yt-dlp
macOS
Linux(Debian / Ubuntu)
🍎🐧 macOS / Linux 的 deno 不會自動裝。 「裝 yt-dlp 順便帶 deno」是 Windows winget 的行為。mac/Linux 要等實際下載遇到「需要 JS 執行環境」的錯誤時再補:brew install deno(macOS)/curl -fsSL https://deno.land/install.sh | sh(Linux)
B2. (選用)安裝系統版 FFmpeg
只有你要直接用 ffmpeg 指令剪片、轉檔才需要。單純下載影片/字幕請跳過這步。
Windows
🔒 沒有管理員權限:winget install --id Gyan.FFmpeg -e --scope user --accept-source-agreements --accept-package-agreements
macOS:brew install ffmpeg Linux:sudo apt install -y ffmpeg
B3. 🚨 重開終端機(這一步跳過就會誤以為裝失敗)
裝完之後,已經開著的終端機讀不到新的 PATH,打 yt-dlp 一定說「找不到」——不是沒裝好,是視窗太舊。
做法:關掉目前的 PowerShell/終端機,開一個新的。
不想關視窗的話,Windows 可以就地刷新 PATH:
macOS / Linux:source ~/.zshrc(或 source ~/.bashrc)。
B4. 驗證 B 段(不需要 A、C 段)
Windows(PowerShell 用 `;` 不要用 `&&`)
macOS / Linux
這裡刻意用;不用&&:&&會在第一個缺的工具就中斷,你會看不到後面兩個到底有沒有裝好。
| 結果 | 長相 | |
|---|---|---|
| ✅ 成功 | yt-dlp 印出日期型版本(如 2026.xx.xx)、ffmpeg 印出 ffmpeg version … | |
| ❌ 失敗 | 出現「無法辨識」/command not found → 九成是沒重開終端機,回 B3 |
deno沒有也不算失敗——它是 yt-dlp 遇到 YouTube 新格式時才用到的相依工具。只要 `yt-dlp --version` 有輸出,B 段就算通過;deno缺了等實際下載失敗再補。
yt-dlp 常用指令備忘(第二、三天會回來查這張表)
| 想做的事 | 指令 | |
|---|---|---|
| 先看這支影片有沒有字幕 | yt-dlp --list-subs <網址> | |
| 下載中文字幕轉成 SRT | yt-dlp --skip-download --write-subs --sub-langs "zh-Hant,zh-TW,zh" --convert-subs srt <網址> | |
| 人工字幕+自動字幕一起抓 | yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs "zh-Hant,zh-TW,zh,en" --convert-subs srt <網址> | |
| 只下載音訊成 mp3(餵 NotebookLM 用) | yt-dlp -x --audio-format mp3 <網址> | |
| 下載整段影片(最高畫質) | yt-dlp -f "bv*+ba/b" <網址> | |
| 自我更新(YouTube 一改格式就跑這個) | yt-dlp -U |
📌 不是每支影片都有字幕。 很多官方宣導頻道既沒上字幕、也沒開自動字幕,下載前先用 `--list-subs` 確認。真的沒有字幕,就要走「下載 mp3 → 語音轉文字」那條路(09-groq-api)。
⚠️ B 段兩個一定要知道的坑
坑 1:`--print` 會偷偷變成「只模擬、不下載」
--print 這個參數會隱含 simulate 模式。也就是說,你以為自己下的是「印出標題並且下載字幕」:
實際上 yt-dlp 只會印字幕、一個檔案都不會存。要邊印邊下載,必須同時加 `--no-simulate`:
🩹 這個坑實測踩過:一次批次處理 76 部影片,因為少了--no-simulate,76 部全部誤報「沒有字幕」——其實字幕都在,只是根本沒下載。看到「整批都沒字幕」這種太整齊的結果,先回頭檢查有沒有
坑 2:重開終端機 PATH 才生效
見 B3。這是新裝完當下最常見的假失敗,指令沒錯、東西也裝好了,只是視窗太舊。
🔊 標配 C:語音(Edge-TTS)
✅ 今天就會用到,而且裝完 30 秒內就聽得到聲音。這一段跟 A、B 段完全無關,A 段沒裝完也可以先裝這段。
Edge-TTS 是走 Edge 瀏覽器「大聲朗讀」背後的微軟雲端語音:不用申請金鑰、不用付費、聲音很自然。裝好之後 agent 就能把結論唸給你聽。
C 段步驟
C1. 安裝 edge-tts
所有平台通用(用 `00-env-setup` 裝好的 `uv`,不需要先做完 A 段)
uv tool install 會把 edge-tts 裝進一個獨立的隔離環境並加到 PATH,不會污染系統 Python,也不會動到 A 段的 .venv。
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/02-file-toolkit/SKILL.md
Popularity
- Repository stars
- 63
- Repository forks
- 30
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/mathruffian-dot/opencode-lazy-packs/02-file-toolkit)