automate-this

automate-this

熱門

分析人工操作的螢幕錄影,並生成具針對性且可實際執行的自動化腳本。從影片檔案中擷取畫面與語音旁白,重構一步步的操作流程,並善用使用者電腦中已安裝的工具,提供不同複雜度的自動化方案。

3.7萬星標
4701分支
更新於 2026/8/3
SKILL.md
唯讀
名稱
automate-this
描述

分析人工操作的螢幕錄影,並生成具針對性且可實際執行的自動化腳本。從影片檔案中擷取畫面與語音旁白,重構一步步的操作流程,並善用使用者電腦中已安裝的工具,提供不同複雜度的自動化方案。

Automate This

分析人工操作的螢幕錄影,並為其建置可運作的自動化方案。

使用者只需錄下自己重複或繁瑣的操作過程並提供影片檔案,你就能推算出他們在做什麼、原因為何,以及如何用腳本取代這些人工操作。

依賴工具檢查

在分析任何錄影前,先確認所需的工具是否可用。請靜默執行以下檢查,僅在發現問題時提示使用者:

command -v ffmpeg >/dev/null 2>&1 && ffmpeg -version 2>/dev/null | head -1 || echo "NO_FFMPEG"
command -v whisper >/dev/null 2>&1 || command -v whisper-cpp >/dev/null 2>&1 || echo "NO_WHISPER"
  • 必須安裝 ffmpeg。 若缺少,請提示使用者安裝:macOS 請用 brew install ffmpeg,其他作業系統請使用對應的套件管理工具。
  • Whisper 為可選工具。 僅在錄影包含語音旁白時才需要。若缺少 Whisper 且錄影帶有音訊軌,請建議使用者安裝:pip install openai-whisperbrew install whisper-cpp。若使用者拒絕,則僅進行視覺畫面分析。

階段 1:從錄影中擷取內容

給定影片檔案路徑(通常位於 ~/Desktop/),擷取視覺畫面與音訊:

畫面擷取

每 2 秒擷取 1 張畫面。這樣能兼顧畫面覆蓋度與上下文長度限制。

WORK_DIR=$(mktemp -d "${TMPDIR:-/tmp}/automate-this-XXXXXX")
chmod 700 "$WORK_DIR"
mkdir -p "$WORK_DIR/frames"
ffmpeg -y -i "<VIDEO_PATH>" -vf "fps=0.5" -q:v 2 -loglevel warning "$WORK_DIR/frames/frame_%04d.jpg"
ls "$WORK_DIR/frames/" | wc -l

本次作業中的所有後續暫存檔路徑皆使用 $WORK_DIR。每次執行建立權限為 0700 的專屬目錄,可確保擷取出的畫面僅有目前使用者可讀取。

如果錄影長度超過 5 分鐘(超過 150 張畫面),請將採樣間隔拉長為每 4 秒 1 張,以避免超出上下文限制。同時告知使用者:因影片較長,已降低畫面採樣頻率。

音訊擷取與轉寫

檢查影片是否包含音訊軌:

ffprobe -i "<VIDEO_PATH>" -show_streams -select_streams a -loglevel error | head -5

若存在音訊:

ffmpeg -y -i "<VIDEO_PATH>" -ac 1 -ar 16000 -loglevel warning "$WORK_DIR/audio.wav"

# 使用目前系統中可用的 whisper 執行檔
if command -v whisper >/dev/null 2>&1; then
  whisper "$WORK_DIR/audio.wav" --model small --language en --output_format txt --output_dir "$WORK_DIR/"
  cat "$WORK_DIR/audio.txt"
elif command -v whisper-cpp >/dev/null 2>&1; then
  whisper-cpp -m "$(brew --prefix 2>/dev/null)/share/whisper-cpp/models/ggml-small.bin" -l en -f "$WORK_DIR/audio.wav" -otxt -of "$WORK_DIR/audio"
  cat "$WORK_DIR/audio.txt"
else
  echo "NO_WHISPER"
fi

如果兩個 whisper 執行檔皆未安裝且影片含有音訊,請告知使用者將缺乏語音旁白上下文,並詢問是否要安裝 Whisper(pip install openai-whisperbrew install whisper-cpp),抑或是僅進行畫面分析。

階段 2:重構操作流程

分析擷取出的畫面(以及轉寫文字,若有),結構化地理解使用者進行了哪些操作。依序檢視畫面並確認以下要點:

  1. 使用的應用程式 — 錄影中出現了哪些 App?(瀏覽器、終端機、Finder、郵件軟體、試算表、IDE 等)
  2. 動作順序 — 使用者按順序做了什麼?逐次點擊、一步一步記錄。
  3. 資料流向 — 步驟之間傳遞了哪些資訊?(複製的文字、下載的檔案、表單輸入內容等)
  4. 決策點 — 使用者是否在某些時刻停頓、確認資訊或做出選擇?
  5. 重複模式 — 使用者是否拿不同的輸入資料重複執行了相同的操作?
  6. 操作痛點 — 流程中哪裡看起來緩慢、容易出錯或繁瑣?旁白通常會直接體現這一點(例如「我最討厭這個部分」、「這裡每次都要花很久」、「每一個我都得手動做一次」)。

將重構好的流程以編號步驟清單展示給使用者,並在提出自動化方案前請使用者確認是否準確。這一步至關重要 — 錯誤的理解只會產出無用的自動化。

格式範例:

以下是我在錄影中觀察到的操作流程:

1. 打開 Chrome 並造訪 [特定 URL]
2. 輸入帳號密碼登入
3. 點擊進入報表儀表板
4. 下載 CSV 匯出檔
5. 在 Excel 中打開該 CSV 檔
6. 篩選出 B 欄為 "pending" 的資料列
7. 將這些資料列複製到新的試算表中
8. 將新試算表透過 Email 寄給 [收件者]

您針對不同的報表類型重複執行了步驟 3-8 共三次。

[若有語音旁白]:您提到匯出步驟是最慢的部分,且每週一早上都要做一次。

請問這符合您的實際操作嗎?是否有任何理解錯誤或遺漏的地方?

在使用者確認重構流程準確無誤前,切勿進入階段 3。

階段 3:環境特徵檢測

在提出自動化方案之前,先了解使用者電腦上實際有哪些可用工具。執行以下檢查:

echo "=== OS ===" && uname -a
echo "=== Shell ===" && echo $SHELL
echo "=== Python ===" && { command -v python3 && python3 --version 2>&1; } || echo "not installed"
echo "=== Node ===" && { command -v node && node --version 2>&1; } || echo "not installed"
echo "=== Homebrew ===" && { command -v brew && echo "installed"; } || echo "not installed"
echo "=== Common Tools ===" && for cmd in curl jq playwright selenium osascript automator crontab; do command -v $cmd >/dev/null 2>&1 && echo "$cmd: yes" || echo "$cmd: no"; done

據此將方案限制在使用者現有的工具範圍內。除非較簡單的做法真的無法實現,否則絕不要提出需要額外安裝五個新工具的自動化方案。

階段 4:提出自動化方案

根據重構的操作流程與使用者的環境,提供最多三個層級的自動化方案。並非每個流程都需要提供三個層級,請依實際情況彈性判斷。

層級架構

Tier 1 — 速效方案(5 分鐘內即可設定完成)
效益最高且最輕量的自動化。例如 Shell 別名(alias)、單行指令(one-liner)、快捷鍵或 AppleScript 程式碼片段。僅將最令人痛苦的單一步驟自動化,而非整個流程。

Tier 2 — 腳本方案(30 分鐘內即可設定完成)
獨立的腳本(Bash、Python 或 Node — 視使用者環境而定),將完整流程端到端自動化。包含常見的錯誤處理。需要時可手動執行。

Tier 3 — 全自動方案(2 小時內即可設定完成)
包含 Tier 2 的腳本,並加上:定時自動執行(cron、launchd 或 GitHub Actions)、日誌記錄、錯誤通知,以及必要的整合基礎架構(API Key、驗證 Token 等)。

提案格式

針對每個層級提供以下內容:

## Tier [N]: [方案名稱]

**自動化的部分:** [重構流程中的哪些步驟]
**仍需人工的部分:** [哪些步驟仍需人工操作]
**節省時間:** [根據錄影時長與重複次數估算的每次節省時間]
**前置需求:** [需要但尚未安裝的工具 — 理想情況下為無]

**運作原理:**
[用 2-3 句淺顯易懂的文字說明]

**程式碼:**
[完整、可運作且附有註解的程式碼 — 非偽程式碼]

**如何測試:**
[驗證是否正常運作的確切步驟,可能的話先從模擬執行(dry run)開始]

**如何復原:**
[若出錯時如何復原所有變更]

針對特定應用程式的自動化策略

根據錄影中出現的應用程式,採用相應的策略:

基於瀏覽器的工作流程:

  • 首選:檢查該網站是否有公開的 API。呼叫 API 的穩定度比瀏覽器自動化高出 10 倍。可先搜尋是否有 API 文件。
  • 次選:針對已知端點的簡單 HTTP 請求,使用 curlwget
  • 第三選擇:若工作流程必須透過 UI 點擊,使用 Playwright 或 Selenium。優先選擇 Playwright — 速度更快且更穩定。
  • 尋找模式:如果使用者重複從儀表板下載相同的報表,該資料極有可能可透過 API 取得,或可直接透過帶有查詢參數的 URL 下載。

試算表與資料處理工作流程:

  • 使用 Python 配合 pandas 進行資料篩選、轉換與聚合。
  • 如果使用者在 Excel 中僅進行簡單的欄位操作,一段 5 行的 Python 腳本就能取代整個手動流程。
  • 無需撰寫程式碼時,可使用 csvkit 在命令列快速操作 CSV。
  • 若輸出結果需維持 Excel 格式,請使用 openpyxl。

Email 工作流程:

  • macOS:可用 osascript 控制 Mail.app 來傳送帶有附件的郵件。
  • 跨平台:使用 Python 的 smtplib 進行傳送,imaplib 進行讀取。
  • 若 Email 內容符合固定範本,可使用範本檔案進行變數替換來生成內文。

檔案管理工作流程:

  • 使用 Shell 腳本處理移動/複製/重新命名的模式。
  • 使用 find + xargs 進行批次操作。
  • 使用 fswatchwatchman 實現檔案變更觸發的自動化。
  • 如果使用者正手動依日期或類型將檔案整理至資料夾中,這只需要 3 行 Shell 腳本即可完成。

終端機/CLI 工作流程:

  • 為高頻率輸入的指令設定 Shell 別名(alias)。
  • 為多步驟序列編寫 Shell 函式。
  • 為專案特定的任務集建立 Makefile。
  • 如果使用者拿不同的引數重複執行相同的指令,這就應該寫成迴圈。

macOS 專屬工作流程:

  • 使用 AppleScript/JXA 控制原生 App(Mail、行事曆、Finder、預覽程式等)。
  • 使用「捷徑」App(Shortcuts.app)處理不需要撰寫程式碼的簡單跨 App 流程。
  • 使用 automator 處理基於檔案的工作流程。
  • 使用 launchd plist 檔案處理定時任務(在 macOS 上優先於 cron)。

跨應用程式工作流程(資料在 App 之間流動):

  • 找出資料傳輸點。每次傳輸都是自動化的切入點。
  • 錄影中若出現基於剪貼簿的複製貼上,代表 App 之間沒有互相整合 — 請改為尋找 API、檔案轉交或直接整合的方式。
  • 如果使用者從 App A 複製並貼上到 App B,自動化程式應直接從 A 的資料源讀取,並直接寫入 B 的輸入格式中。

讓提案具備高度針對性

將以下原則應用於每個提案中:

  1. 優先將瓶頸自動化。 錄影中的語音旁白與時間點能揭露哪個步驟才是真正的痛點。將最痛苦步驟自動化(即使只省 30 秒),也勝過花 2 小時把整個流程包攬自動化。

  2. 契合使用者的技術水平。 若錄影顯示使用者能熟練使用終端機,請提供 Shell 腳本。若顯示使用者習慣操作 GUI 介面,請提供觸發方式簡單的方案(如雙擊腳本、執行捷徑或輸入單一指令)。

  3. 估算實際節省的時間。 計算錄影時長並乘以執行頻率。「這段錄影長 4 分鐘,您表示每天都會做一次,相當於每年要花 17 小時。Tier 1 方案每次可縮短至 30 秒,每年能為您省下 16 小時。」

  4. 涵蓋 80% 的常見情境。 第一個版本的自動化應完美覆蓋最常發生的情境。邊界條件(edge cases)可在 Tier 3 處理,或標記出來留給人工介入。

  5. 保留人工檢查點。 若錄影顯示使用者在流程中途會進行審查或確認,請保留該步驟為人工操作,切勿將需要主觀判斷的決策自動化。

  6. 提供模擬執行(Dry Run)。 每個腳本都應提供只顯示「預計執行動作」而不實際進行變更的模式。例如 --dry-run 旗標、預覽輸出,或在破壞性操作前跳出確認提示。

  7. 妥善處理身分驗證與敏感資訊。 若流程涉及登入或使用金鑰憑證,切勿直接寫死(hardcode)在程式碼中。應使用環境變數、鑰匙圈存取(macOS security 指令),或在執行時提示使用者輸入。

  8. 考量失敗模式。 網站斷線怎麼辦?檔案不存在怎麼辦?格式改變怎麼辦?優秀的提案應提及這些情況並給出對應的處理機制。

階段 5:建置與測試

當使用者選擇了某個層級方案時:

  1. 將完整的自動化程式碼寫入檔案中(建議合理的儲存位置 — 若有專案目錄則放在專案目錄中,否則...