Nat 鍾承恩

作品 2026 / 06 約 7 分鐘

gmail-cli:自己接的多帳號收信 Skill

先講我每天的麻煩

我同時有好幾個信箱要顧:公司的、客戶端 Workspace 的、個人的、行政用的、還有一個專收 Apple 通知的。每天光是「把每個信箱都掃一遍、看有沒有漏掉要回的信」,就得一個一個切換登入,很煩。

我真正想要的,是一句話同時掃完所有信箱——把該回的挑出來、把雜訊壓下去、要回的我再回——而不是像在五個房間之間來回開門關門。

最方便的那條路,剛好少了我最要的兩樣

現在的 AI 工具,包含 Claude 自己,幾乎都內建了 Gmail 連接器,點兩下授權就能用。聽起來我直接用就好了,但它卡在兩個地方:

第一,它一次只綁一個信箱。 那是為「一個人、一個帳號」設計的。我要的是一條命令跨全部信箱同時動,這條路給不了。

第二,它能做什麼,是平台說了算——而且我要的那種權限,特別難拿。 內建連接器能用的權限通常偏保守、偏「只能讀」,鑰匙也放在平台那邊。我想要的是完整的讀、寫、標記、丟垃圾桶。

而這條「偏唯讀」其實不是平台小氣,背後有個很現實的卡點:像「把未讀標成已讀、幫你寄信、幫你刪信」這種會真的動到你信箱的權限,在 Google 眼中屬於最敏感的一級。任何想公開上架給大家用的 app,想拿到這種權限,都得通過一道又貴又慢的安全審查,而且每年還要重審一次。這道關卡高到一個程度,讓很多第三方的 email 助手乾脆放棄、只做「唯讀」就算了——你給它寄信、刪信的權限,它根本過不了審。可是我要的,偏偏就是那整套能動手的權限。

我的做法:自己接一條,鑰匙留在自己手上

我自己去 Google 申請了一把專屬的鑰匙(一個 OAuth 用戶端),完整的權限是我自己宣告的——讀信、寄信、標記、刪信都包含;而每個信箱授權後的通行證,全部只存在我自己電腦的一個資料夾裡,不上傳、不外流。

這裡還有個關鍵:前面說那種「能動手」的權限很難審過——但那道審查,是為「公開給幾百萬人用」的 app 設的。而我這把鑰匙是我自己的,我只把自己設成它唯一的使用者,根本沒有要上架給別人。於是我就不必去過那道關:授權的時候系統會跳一個「這個 app 未經驗證」的警告,我自己點確認、放行,就好了。我接的是我自己,不是大眾。

代價是我得自己跑一次申請流程,比點兩下麻煩。但換來的是:能接幾個帳號就接幾個、能做的事由我決定、鑰匙在我手上。對「我自己的信箱」這種東西,我寧可多花這道工。

接下來幾個設計,講的都是同一件事——一個能幫你寄信、也能幫你刪信的工具,怎麼讓它夠安全、夠穩。

一份名單,餵給所有工具

我有三支小工具:一支管單一信箱的讀寫、一支掃所有信箱、一支檢查每個帳號還有沒有登入。它們共讀同一份帳號名單——改一個地方,三支同步。不然名單散在三處,遲早對不上、漏掉某個信箱。

順帶兩個好處:真正的帳號資料不會進到我公開的程式碼裡(公開出來的只有一份假名單範本);而且因為有那份假範本,別人把這個工具抓下去,不填任何真帳號也能直接跑測試

篩信的粗活交給規則,AI 只負責「講人話」

「幫我看 email」這種事,我沒有把整堆信一股腦丟給 AI 讀——那既慢又貴。我讓一套固定規則先做粗活:照寄件人、主旨、關鍵字打分,分成「要動 / 待辦 / 可以略過 / 純通知」,再把同一個系統寄來的九封催繳併成一條,不重複洗版。

AI 只在這份已經篩好、排好、去重過的結果上做最後一哩:挑出最該動的那幾封、用人話講給我聽、附上「要不要全部清掉 / 幫你回某封 / 看細節」這種選項。粗活給規則,表達給 AI——又快又省,而且規則我隨時改得動。

它能寄能刪,所以我把它鎖得很死

這個工具能從我任何一個專案資料夾被叫用,手上又握著能寄信、能刪信的權限。這很方便,但也很危險:萬一用錯身分把信寄出去、或把信箱內容寫進了不該寫的地方,就麻煩了。所以我訂了幾條不能違反的硬規則:

  • 寄信、操作一律要講清楚用哪個信箱。 不講的話,它會自己去比對「我現在在哪個專案、這專案對應哪個信箱」,對不上就直接罷工,絕不亂猜身分。
  • 掃描報告固定落在工具自己的資料夾,絕不寫進當下那個專案——信箱內容不該外漏到別的地方。
  • 寄出去之前,一定要我確認收件人、主旨、內文都對了才送。

權力越大、能被叫用的地方越廣,越要把「身分、東西放哪、會不會把信送錯」這些用死規則鎖住,不能靠它自己自律。

怎麼確定它沒寫壞

一個會連到網路、會碰真信箱的工具,要怎麼安心改它而不怕弄壞?我做了一個假的信箱頂替真的,再把所有設定導到一個隔離的暫存區,於是七十幾項自動測試完全不碰網路、不碰任何真帳號就能跑完。我還特地寫了一項測試,專門盯著「這個假信箱的行為,有沒有跟真的 Gmail 對得上」——免得假的悄悄飄走、測試一片綠、實際上線卻爆掉。

最後,讓任何專案都叫得動它

做完這些,我把它接成 Claude 的一個全域能力——它不綁在某一個專案裡,我在任何資料夾、任何專案做事,都能就地叫它。我直接說「看 email」「X 有沒有回信」「幫我回他」,它就驅動底下這些工具去跑。

這個「到處都叫得動」比想像中好用。最常見的場景:我正在某個專案裡寫東西,突然要一組從 email 寄來的一次性驗證碼(OTP)——以前得切出去開信箱、找那封信、把碼複製回來;現在我直接叫 AI「去我信箱把剛那組驗證碼讀出來」,它就去拿,我手邊的事完全沒被打斷。

意圖我用講的,確定性的事交給程式——這也是我一直在做的分工。

我真正想說的

做這種個人工具,最划算的那個判斷往往不是「能不能用 AI」,而是哪一塊交給 AI、哪一塊鎖進程式:篩信、講人話交給 AI;判身分、把關、要不要寄出去這種會出事的,鎖進死規則。

還有一件更底層的:自己的資料和鑰匙,盡量握在自己手上。 內建的連接器很方便,但方便的代價是你能做什麼、你的鑰匙在哪,都不是你說了算。多花一道工自己接一條,我換回來的是——這幾個信箱,始終是我的。


工具是開源的(MIT),程式碼在這:github.com/NatChung/gmail-cli。公開出來的只有一份假帳號範本,真正的帳號和鑰匙都留在我自己機器上。