Show HN:一個用於過濾和閲讀 Hacker Newsletter 等郵件的 AI 技能
該項目是一個 Codex 技能,可讓用户按日期或日期範圍從配置的 Gmail 發件人讀取郵件簡報,並將原始解碼後的文本 MIME 部分交給模型處理。技能內置本地只讀 Gmail 守護進程,依據鏈接過濾指令生成報告,支持反饋的本地保存與導出。
這是一個提交到 Hacker News 的開源項目,提供了一個名為 email-reader 的 Codex 技能,用於從 Gmail 中篩選並閲讀配置好的郵件簡報。項目以本地只讀 Gmail 守護進程作為實現細節,用户通常只需用具體日期或日期範圍調用技能,而不必直接與守護進程交互。技能會啓動守護進程,獲取指定時間段內來自配置發件人的全部郵件,把所有解碼後的 text/plain 和 text/html MIME 部分傳給模型,並調用 .agents/skills/email-reader/LINK_FILTERING_INSTRUCTIONS.md 中的規則來生成報告、選擇鏈接、格式化輸出以及收集反饋。
要使用該技能,可以在 Codex 中直接發出類似 $email-reader 2026-06-27 或 $email-reader 2026-06-01 2026-06-27 的命令。實際執行時,技能會運行 scripts/fetch_messages.py,腳本返回郵件元數據和原始解碼後的文本 MIME 部分。模型負責解讀這些內容並撰寫報告;抓取腳本本身不會挑選、清理或改寫郵件正文。生成的報告會把每個鏈接的反饋保存在瀏覽器 localStorage 中,也可以導出為 Report.feedback.json,以便後續更新用户的偏好。
配置方面,需要在項目根目錄創建 .env 文件,設置 ALLOWED_SENDER、GMAIL_OAUTH_CREDENTIALS_PATH、HOST 和 PORT。OAuth 客户端文件需要從 Google Cloud Console 獲取:啓用 Gmail API、配置 OAuth 同意屏幕、在測試模式下添加自己的 Gmail 賬號,然後創建“桌面應用”類型的客户端並下載 JSON,重命名為 gmail_client_secret.json 後放到項目根目錄。項目強調必須使用已安裝桌面應用的 OAuth 客户端 JSON,不能使用 API 密鑰或服務賬號 JSON。代碼中使用的授權範圍是 https://www.googleapis.com/auth/gmail.readonly,即只讀 Gmail。
本地守護進程可以通過 uv sync --locked 安裝依賴後運行,也可以直接用 UV_CACHE_DIR=/tmp/uv-cache uv run --locked python -m email_reader 啓動。首次收到 /messages 請求時,守護進程會在默認瀏覽器中打開 OAuth 授權 URL;用户完成 Google 授權後,本地令牌會保存到 .gmail_token.json。如果 Google 拒絕過期或被撤銷的令牌,守護進程會自動重新發起授權,並保留舊令牌作為備份。若 Google 頁面提示“Access blocked: this app has not completed the Google verification process”,需要等待一段時間再試;新 OAuth 應用設置和測試用户變更最長可能需要 24 小時生效。API 可以通過 curl 直接訪問,例如 curl 'http://127.0.0.1:4873/messages?start_date=2026-06-01&end_date=2026-06-27'。該項目以 MIT 許可證發佈。