Gmail 標籤清理
將大量的 Gmail 收件匣根據使用者自己的標籤進行分類,並讓未來的郵件自動歸類。
大多數助手的內建 Gmail 連接器一次只能為一個執行緒加上標籤,而且沒有篩選器 API。這對於數千封郵件來說太慢了,也無法阻止郵件繼續堆積。這個技能使用一個完整的 Gmail MCP 伺服器,它提供真正的伺服器端篩選器和 50 封郵件批次處理功能。
初次執行前
- 安裝 MCP 伺服器。 請參閱
install/INSTALL.md。它需要一個 Google Cloud OAuth 桌面客戶端和一次瀏覽器登入。大約需要十分鐘,一次即可。 - 建立規則檔案。 將
references/rules-TEMPLATE.md複製到一個私人檔案(範本建議使用my-rules.md,該檔案已包含在.gitignore中),並根據帳戶本身的歷史記錄填寫。切勿憑空發明規則。 請參閱「學習規則」一節。
讓此技能運作的一條規則
規則是從使用者過去的標籤行為中學習的,絕不憑空發明。
對於每個寄件者或主旨,查看此人過去已將該寄件者歸類到哪個標籤,然後複製。只有當某個寄件者完全未出現在其歷史記錄中時,才允許做出判斷,並且必須記錄在「猜測」部分,以便日後修正。錯誤的標籤很容易修正;而悄悄對 300 封郵件套用錯誤的標籤則不然。
第二條規則是從經驗中學到的:內容很重要,而不僅僅是寄件者。 寄件者只是一個維度。來自健康出版商的理財電子報應該獲得理財標籤。一個執行緒可以帶有多個標籤。
學習規則
詢問帳戶,而不是人。對於每個標籤,讀取裡面已有的內容:
search_emails: label:"<標籤名稱>"
讀取 30 到 50 個結果,然後記下寄件者。那個列表就是規則。對每個標籤重複此步驟。然後使用 list_email_labels 取得標籤 ID,因為 batch_modify_emails 實際上是使用這些 ID。
執行一次,將其寫入規則檔案,並在每次執行時持續附加。每次執行都會發現上一次未見到的寄件者。
執行一次處理
一次處理是一個有界限、有記錄、可逆轉的工作區塊。目標是 200 到 300 封郵件。不要試圖在一次執行中完成所有事情。
1. 確認篩選器存在。
list_filters
如果規則檔案中的篩選器遺失,請先使用 create_filter 建立它們,每個標籤群組建立一個,使用 from: 條件。篩選器是防止問題再次發生的關鍵。
2. 尋找未標籤的郵件。
先找收件匣:
search_emails: has:nouserlabels in:inbox
一旦收件匣只剩下那些故意不標籤的郵件,剩下的工作就是封存。按日期逐頁處理,每次移動最舊的邊界:
search_emails: has:nouserlabels -in:inbox -in:sent -in:draft -in:trash -in:spam -in:chats before:YYYY/MM/DD
每次取 50 到 60 封。將 before: 設定為剛剛處理過的最舊結果的日期,下一個呼叫就會從你停止的地方繼續。這比分頁 token 更可靠,而且能夠承受中斷。
3. 按標籤分組,然後批次處理。
將該頁郵件按每個標籤整理成一個郵件 ID 列表,然後對每個標籤呼叫一次 batch_modify_emails,並使用 addLabelIds。切勿對每封郵件進行一次呼叫。
如果一個批次傳回 Too many concurrent requests for user,則僅重試失敗的 ID。該呼叫會準確報告哪些 ID 失敗。
4. 記錄它。 在復原日誌中附加一個帶有日期的條目。請參閱下面的「復原日誌」。
絕不觸碰
- 一次性登入驗證碼、魔法連結、密碼重設和安全性警示。 這些保持未標籤狀態,也絕不丟入垃圾桶。如果某人需要快速找到登入驗證碼,標籤沒有幫助,而垃圾桶規則則會造成嚴重損害。
- 使用者自己的「永不標籤」清單上的任何內容。 人們有一些他們希望保持不標籤的刊物和寄件者,他們會告訴你。一旦他們說出來,就立刻用他們的話寫入規則檔案。
- 家庭和個人郵件,除非使用者自己已經為該寄件者加上了標籤。
丟入垃圾桶
僅在使用者明確授權的情況下才丟入垃圾桶,並且僅按主旨比對。安全預設集合是服務條款和隱私權政策更新通知:
subject:("terms of service" OR "terms and conditions" OR "terms of use"
OR "privacy policy" OR "user agreement")
negatedQuery: subject:(code OR verification OR verify OR "security alert" OR password)
否定查詢不是可選的。沒有它,一封「驗證您的帳戶 - 已更新條款」的郵件就會被丟入垃圾桶。
Gmail 的垃圾桶在 30 天內可以復原。此技能絕不會永久刪除任何內容。
復原日誌
每次處理都會附加一個帶有日期的條目。它是使工作可逆轉和可審查的記錄:
- 日期和處理編號。
- 篩選器是否存在,以及任何建立的篩選器。
- 已標籤的數量,以及每個標籤的數量。
- 判斷決定,具體命名。哪些寄件者沒有前例,決定了什麼,以及原因。這是之後需要更正的部分。
- 已確認保持不標籤且未觸碰的內容。
請參閱 examples/undo-log-EXAMPLE.md。即使處理過程很無聊也要記錄。尤其是那種時候。
篩選器不會觸碰舊郵件
這經常讓人困惑,所以請大聲對使用者說:
Gmail 篩選器只會對建立之後送達的郵件生效。 它永遠不會回頭處理舊郵件。因此這項工作的兩個部分實際上是分開的:篩選器自動處理未來,而封存郵件的積壓必須按照上述方法手動逐批處理。
這意味著:在幾次處理發現了真正的高量寄件者之後,請回頭也為它們新增篩選器。否則這些寄件者的郵件會繼續未標籤地送達,積壓問題就會在你身後重新產生。
反轉一次處理
讀取該批次處理的復原日誌條目,然後對相同的郵件 ID 使用 removeLabelIds 呼叫 batch_modify_emails。對於任何被丟入垃圾桶的內容,untrash 在 30 天內有效。這就是為什麼日誌記錄的是數量和原因,而不僅僅是「完成」。