登入後,會解鎖更多功能喔,快來享受個人化服務吧!
想讓AI幫忙操作Chrome瀏覽器、讀Gmail、下載附件、寫進Google Sheet,又怕它亂點、亂寄信?作者以教師可能遇到的「自動批改作業信」為例,示範用Codex Chrome Extension設定白名單、二次確認與留痕log三層護欄,再一步步放手讓AI操作瀏覽器。本文節錄自《ChatGPT × Codex全攻略》。
文/曾慶良(阿亮老師)
本文目錄(點擊可快速前往)
編按:作者以「老師自動批改學生作業信」為範例,示範讓Codex讀取Gmail「作業繳交」標籤的來信、下載附件、產出評語,再逐列寫進Google Sheet。雖然示範情境在教學現場,但換個主題就能套用到職場,例如整理應徵者的履歷信、客戶詢價信或活動報名回覆;文中的白名單、二次確認、留痕log三層護欄,也適用於任何讓AI代操瀏覽器的工作。
※本文以「Chrome Extension」模式操作,是由Codex直接在你的Chrome「已登入」的Gmail等分頁操作,不必處理OAuth、API token(這些憑證都不用辦),看得到它在做什麼。
| 項目 | 規格 | 沒有怎麼辦 |
|---|---|---|
| Codex CLI + 桌面App | 已完成、能登入 | 補安裝,Codex CLI 、桌面App |
| Chrome Extension | 從Codex App Plugins內裝 | 補安裝,Chrome extension |
| Gmail帳號 | 有「作業繳交」標籤、收得到信 | Gmail內建立一個Label「作業繳交」 |
| Google Sheet | 一張空白工作表,欄位先排好 | Drive內新建一張,命名「本學期_作業批改」 |
第一列填入這6個欄位(順序很重要,等下Skill要按這個順序寫入):
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| 批改日期 | 學生姓名 | 作業主題 | AI評語 | 字數 | 建議評分 |
權限設「僅特定人員」或「限校內帳號(你的學校網域)可存取」,把你自己(和真的需要看的同事)逐一加進去。不必也不要用「擁有連結的任何人可檢視」,Codex用你登入的身分操作,本來就進得去,不需要開公開連結。
此表含學生個資(姓名+評語),絕對不可以用「擁有連結的任何人可檢視/可編輯」公開連結分享。公開連結等於把全班個資丟到網路上任人抓取。務必設成「僅特定人員」或「限校內帳號」,並定期到「共用」設定檢查存取名單有沒有跑進不該有的人。
本章讓Codex操作你「已登入」的信箱、下載附件、寫進Sheet,放在公司環境要先過3關,別自己一個人默默開跑:
1 授權與護欄 Chrome Extension 範圍限定 + 二次確認
↓
2 寫 Skill auto-email-processor 四階段定義
↓
3 跑 1 封測試 盯著看,確認沒亂點
↓
4 放開跑全部 批次處理 + 失敗重試 + 總結報告
絕不可跳過步驟3,跑1封測試看看,這是整章最關鍵的安全閘門。沒看過第1封就放執行,等同把你的Gmail鑰匙交給陌生人。

Codex從這裡開始就有能力「在你登入的Chrome內」做事。所以下一步馬上設範圍限制,沒設好就不要往下做。
Codex Extension預設「進入新網站會問」。但更穩的做法是明確設一份白名單。在Codex對話開頭就先宣告:
本對話只允許操作 mail.google.com、docs.google.com、sheets.google.com。
任何其他網域請拒絕並回報給我。
明確列出允許與禁止的清單:
# 允許 Codex 操作的網域白名單
mail.google.com # Gmail
docs.google.com # Google Sheet / Docs
sheets.google.com # Google Sheet(舊網域別名)
# 禁止:其它一律不行
✗ bank.example.com # 銀行
✗ pay.example.com # 支付
✗ facebook.com / x.com # 社群媒體
這是用文字下的範圍限制,搭配Extension預設的「進新網站問一次」雙重防護。

在Codex對話開頭就先指定下面五類動作必須先暫停問你,得到「OK」才能繼續:
「標記為已讀」、「加標籤」、「下載附件到自己電腦」、「在Sheet新增一列」這幾項算可逆操作,不需要每次都問。
叫Codex把它做的每一步寫成log,方便事後抽查:
請建立一個 ~/codex-logs/email-processor.log
每次處理一封信,寫一行 JSON:
{"ts":"2026-05-17T10:00:00Z","subject":"...","sender":"...","action":"已批改寫入Sheet","ok":true}
失敗時 ok:false,多寫 reason 欄位。
請在每次跑完 Skill 後自動 append。
跑完一輪後,cat ~/codex-logs/email-processor.log(Windows PowerShell:Get-Content $HOME\codex-logs\email-processor.log)看得到N行JSON,每行對應一封信。
三個都做到了,才往下進步驟2寫Skill。
macOS / Linux(或在Git Bash執行):
mkdir -p ~/.agents/skills/auto-email-processor
cd ~/.agents/skills/auto-email-processor
touch SKILL.md
Windows PowerShell寫法(同一件事的PowerShell寫法):
New-Item -ItemType Directory -Force $HOME\.agents\skills\auto-email-processor
Set-Location $HOME\.agents\skills\auto-email-processor
if (-not (Test-Path SKILL.md)) { New-Item -ItemType File SKILL.md }
如果Windows使用者希望直接沿用Bash指令,可以在~/.agents/skills/的上層資料夾右鍵 → Open Git Bash Here,就能在Git Bash內原樣執行mkdir -p、touch。兩個方式擇一即可,不必兩邊都跑。
為什麼用Skill而不是直接打prompt?Skill寫一次、用很久。下次要批改只要說「跑auto-email-processor」,不必再貼整段流程描述。
SKILL.md一定要以YAML frontmatter開頭(name、description是必要欄位,觸發詞寫進description,Codex才會自動觸發):
---
name: auto-email-processor
description: 讀 Gmail「作業繳交」標籤內的未讀信,抓 .docx 附件,套 essay-feedback Skill 批改,寫回 Google Sheet「本學期_作業批改」。觸發詞:批次批改、處理交作業信、跑 email processor。
---
# auto-email-processor
## Scope
- 允許網域:mail.google.com、docs.google.com、sheets.google.com
- 禁止:其它任何網域
- 允許動作:讀信、下載附件、加標籤、Sheet 新增列
- 禁止動作:刪信、寄信、修改 Sheet 既有列
Skill的「身分證」段落,讓Codex知道「我可以做什麼、不能做什麼」。
## Steps
### Phase 1 讀
1. 開新分頁到 https://mail.google.com
2. 點左側「作業繳交」標籤
3. 加「is:unread」過濾條件
4. 列出信件主旨與寄件者,不要點開
### Phase 2 分(過濾)
對每封信,符合所有三條件才處理:
- 寄件者是學生(你的學校網域,例:@school.edu.tw)
- 主旨含「作業」或「homework」
- 有 .docx 附件
### Phase 3 處(批改)
1. 下載 .docx 到 ~/Downloads/inbox-essays/
2. 從寄件者名 / 主旨解析學生姓名與作業主題
3. 呼叫 essay-feedback Skill 批改
4. 把回傳的「評語/ 字數/ 評分」記下來
### Phase 4 記
1. 開 Google Sheet「本學期_作業批改」
2. 新增一列:日期 / 姓名 / 主題 / 評語 / 字數 / 評分
3. 回 Gmail 標該信「已讀」+ 加「已批改」標籤
4. 寫一行 log 到 ~/codex-logs/email-processor.log
這支批改Skill在「多檔案批次處理」篇建立過,該章resources/essay-feedback/有現成檔案,只要將其複製到~/.agents/skills/essay-feedback/就能被本章觸發。還沒建也能先跑通流程,把Phase 3第3步暫時換成這3行替代做法:
## Rules
### MUST(必須)
- MUST 敏感操作前停下來問我(刪信、寄信、改既有列)
- MUST 處理失敗的信維持「未讀」、加標籤「需人工處理」
- MUST 每處理一封寫 log
- MUST 全程操作我這個帳號,不可切到別人的 Gmail
### NEVER(絕不)
- NEVER 自動回信給學生
- NEVER 跨網域操作(白名單以外)
- NEVER 刪除任何信件
- NEVER 修改 Sheet 既有列(只能 append)
## Tools
- Codex Chrome Extension(Gmail / Sheet 操作)
- Codex 內建 .docx 解析
- essay-feedback Skill(subagent 呼叫,來源見第三篇 CH19)
Skill寫完存檔。Codex下次看到觸發詞會自動讀SKILL.md。
Skill寫好了,但如果「作業繳交」標籤裡一封信都沒有,步驟3的測試就沒東西可跑。動手前先花3分鐘,自己造1~2封測試信,讓自動化有真實素材可讀。這步驟做完,跑步驟3才有意義。
【提醒】用「自寄信」當測試素材最安全
就算Codex跑歪了、標錯標籤,動到的也只是你自己建立的虛假信件,不會影響到學生真正交的作業。等步驟3測試通過,再放真實信件進來。
進Codex:
codex
輸入:
請執行 auto-email-processor Skill,但這次只處理 1 封測試:
1. 開 Gmail
2. 找到「作業繳交」標籤內第一封符合條件的未讀信
3. 完整跑完 Phase 1-4
4. 跑完後回報你做了什麼(步驟列表、最後 Sheet 寫了哪一列)
整個過程請在我面前跑、不要靜默。
每動一步先告訴我「我準備做 X」,等我說 OK 才執行。
【提醒】請全程盯著螢幕看!
不要去泡咖啡、不要切到別的視窗。第一次跑就是要確認「它真的有照規矩來」。
Codex跑的時候,眼睛確認這6件事:

任何一項不對 → 立刻按Esc中止(在CLI內跑則按Ctrl + C)、修SKILL.md、再跑一次測試,不要現在就往步驟4前進。
回答:Gmail介面更新時,標籤位置會變動。SKILL.md改成「在左側sidebar用文字找『作業繳交』再點」,不要靠固定位置。
回答:Phase 2過濾條件不夠嚴。再加「主旨必須有作業/homework」「附件必須是.docx」雙條件。
回答:Skill補上「先點底部tab確認是『本學期_作業批改』再寫」。
回答:Codex在學Gmail介面,可能誤點。Rules補:「只加『已批改』標籤,其他不准動」。
同一個Codex對話內輸入:
很好,剛才測試正確。現在請執行 auto-email-processor Skill
處理「作業繳交」標籤內所有未讀信。
需求:
1. 並行數:1(順序處理,方便我看)
2. 失敗自動重試 1 次
3. 重試仍失敗的信:加標籤「需人工處理」,跳過,繼續下一封
4. 全部跑完給總結報告:成功 N 封 / 需人工 N 封 / 失敗 N 封
5. 列出需人工的信件主旨與寄件者,方便我之後處理
開始。
「並行數1」會比較慢,但安全。等你跑過3-5次都OK再考慮加到2-3並行。
✅ auto-email-processor 處理完成
成功批改:23 封
需人工處理:2 封
- 「期中作文.docx 附件損壞」 / 小明 <ming@...>
- 「忘記附檔」 / 阿花 <hua@...>
失敗:0 封
Google Sheet 已新增 23 列
Gmail 標記已讀 + 標籤「已批改」:23 封
標籤「需人工處理」:2 封
log 寫入 ~/codex-logs/email-processor.log:25 行
數字加總 = 標籤內未讀信總數 = Sheet新增 + Gmail標記 = log行數,四個數字對得起來就是完成。

6項都對 = 整套流程信任度 +1。下次可以放心多並行、少盯著。

把這3個禁令寫在便條紙貼在螢幕上:

節錄自:博碩文化《ChatGPT × Codex全攻略:從零基礎到自動化,打造你的AI Agent工作流》/曾慶良(阿亮老師) 著