這是一個自動化腳本,透過 Google Gemini CLI 和 Playwright 來抓取 Readmoo 讀墨電子書平台的每日與每週優惠書籍資訊,並將結果透過電子郵件發送。
整個流程由 GitHub Actions 自動化執行,無需手動操作。
- 自動抓取資訊:使用 Gemini CLI 結合 Playwright MCP,模擬瀏覽器操作,訪問 Readmoo 網站並取得最新的優惠書籍名稱與日期。
- 定時執行:透過 GitHub Actions 設定排程 (
cron),每天凌晨1點 (UTC+8 時區) 自動執行一次抓取與郵件發送任務。 - 郵件通知:執行完畢後,使用
swaks工具將抓取到的優惠資訊格式化為 HTML 郵件並發送給指定收件人。 - 手動觸發:除了定時任務,也允許在 GitHub Actions 頁面手動觸發 (
workflow_dispatch)。
- 核心:@google/gemini-cli
- 瀏覽器自動化:playwright-mcp
- 郵件發送:swaks
- 自動化平台:GitHub Actions
- 環境:Node.js
- 觸發:排程任務 (
0 17 * * *) 或手動觸發。 - 環境設定:在
ubuntu-latest環境中,安裝 Node.js、swaks以及npm依賴套件。 - 執行查詢:
- 執行
npx gemini命令,並傳入一個 Prompt,指示它使用 Playwright 查詢 Readmoo 網站。 - Prompt 的內容是要求 Gemini 找出「本日優惠」與「本週優惠」的書名和日期。
- 將 Gemini 的輸出結果轉換為 HTML 格式。
- 執行
- 發送郵件:
- 呼叫
send_mail.sh腳本。 - 該腳本會讀取 GitHub Secrets 中預存的 SMTP 伺服器設定與收件人資訊,並透過
swaks發送 HTML 郵件。
- 呼叫
要讓此專案正常運作,需要在專案的 GitHub Repository 中設定以下 Secrets:
GEMINI_API_KEY:你的 Google Gemini API 金鑰。SMTP_SERVER:你的 SMTP 郵件伺服器地址 (例如:smtp.office365.com)。SMTP_PORT:SMTP 伺服器端口 (例如:587)。SMTP_USER:你的郵件帳號。SMTP_PASS:你的郵件應用程式密碼 (注意:通常不是登入密碼)。SMTP_EHLO_DOMAIN:你的郵件伺服器 EHLO 域名 (通常是你的郵箱域名)。MAIL_TO:收件人的電子郵件地址。
這是一個用來發送郵件的 Bash 腳本。它會從環境變數中讀取所有必要的 SMTP 設定和郵件內容,然後使用 swaks 工具來執行發送。在執行前,腳本會檢查 swaks 是否已安裝以及所有必要的環境變數是否都已設定。