| name | email-processor |
| description | Automate Gmail inbox processing - categorizes unread emails, marks marketing/newsletters/promotions as read, and surfaces important emails requiring attention.
USE WHEN: User asks to "check my emails", "process unread emails", "clean up my inbox", "mark newsletters as read", or any Gmail automation task.
REQUIRES: gog CLI (brew install steipete/tap/gogcli) + Google Cloud OAuth credentials
|
Email Processor
Automates Gmail inbox triage by categorizing unread emails and marking low-priority items as read.
What It Does
- Fetches all unread emails
- Identifies marketing, newsletters, promotions, and news
- Marks low-priority emails as read
- Surfaces important emails (GitHub, security alerts, direct communications)
- Generates a summary report
Prerequisites
1. Install gog CLI
brew install steipete/tap/gogcli
Verify installation:
gog --version
2. Google Cloud OAuth Setup
- Go to Google Cloud Console
- Create a new project (or use existing)
- Enable the Gmail API:
- Navigate to "APIs & Services" > "Library"
- Search for "Gmail API" and enable it
- Create OAuth credentials:
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" > "OAuth client ID"
- Select "Desktop app" as application type
- Download the JSON file
3. Authenticate gog
gog auth credentials /path/to/client_secret.json
gog auth add your@gmail.com --services gmail
gog auth list
Usage
Quick Process
bash ~/.openclaw/workspace/skills/email-processor/scripts/process-emails.sh
Manual Processing (via Codex)
-
Fetch unread emails:
gog gmail search 'is:unread' --json --max 100
-
Mark specific thread as read:
gog gmail thread modify <thread-id> --remove UNREAD --force
-
Mark marketing emails (batch):
gog gmail search 'is:unread' --json --max 100 | \
jq -r '.threads[] | select(.labels | contains(["CATEGORY_PROMOTIONS"])) | .id' | \
while read id; do gog gmail thread modify "$id" --remove UNREAD --force; done
Email Categories
Auto-Marked as Read
CATEGORY_PROMOTIONS - Promotional emails
[Superhuman]/AI/News - Newsletters
[Superhuman]/AI/Marketing - Marketing emails
[Superhuman]/AI/Pitch - Cold outreach/pitches
[Superhuman]/AI/AutoArchived - Auto-categorized low priority
Preserved (Important)
- GitHub notifications (PRs, issues, security alerts)
- Direct personal communications
- Financial/transaction emails
- Security alerts
- Calendar invites
Verification
Check setup is working:
gog gmail search 'is:unread' --max 5
gog auth list
gog gmail search 'is:unread' --json --max 10 | \
jq -r '.threads[] | select(.labels | contains(["CATEGORY_PROMOTIONS"])) | {id: .id, subject: .subject}'
Troubleshooting
| Issue | Solution |
|---|
gog: command not found | Run brew install steipete/tap/gogcli |
authentication required | Run gog auth credentials and gog auth add |
token expired | Run gog auth refresh your@gmail.com |
Gmail API not enabled | Enable at https://console.cloud.google.com/apis/library/gmail.googleapis.com |
| Rate limit errors | Add delays between requests or reduce batch size |
Labels Reference
Gmail automatically applies these labels:
CATEGORY_PERSONAL - Personal emails
CATEGORY_SOCIAL - Social notifications
CATEGORY_PROMOTIONS - Promotions
CATEGORY_UPDATES - Updates/notifications
CATEGORY_FORUMS - Forum messages
IMPORTANT - Marked important
UNREAD - Unread status
Superhuman AI labels (if using Superhuman):
[Superhuman]/AI/News - Newsletters
[Superhuman]/AI/Marketing - Marketing
[Superhuman]/AI/Pitch - Pitches
[Superhuman]/AI/AutoArchived - Auto-archived