GOG Cleanup
Automated stale-game cleanup sweep: finds installed GOG games you haven't played in 30+ days, emails you a digest, and creates Apple Reminders so you can decide whether to uninstall.
What It Does
- Reads your GOG library from
config/gog_library.json - Filters for installed games whose
last_playedis 30+ days ago (or never played) - Sends a formatted digest email via
himalaya - Adds each stale game to the Gaming list in Apple Reminders via
remindctl
Prerequisites
| Tool | Purpose | Install |
|---|---|---|
jq | JSON parsing | brew install jq |
himalaya | Send email | brew install himalaya |
remindctl | Apple Reminders | brew install steipete/tap/remindctl |
- Himalaya must be configured with a
personalaccount (seeconfig/himalaya.toml) - Apple Reminders must have a Gaming list (auto-created if missing)
Usage
Run the full sweep (email + reminders)
bash scripts/gog-cleanup.sh
Email only (skip reminders)
SKIP_REMINDERS=1 bash scripts/gog-cleanup.sh
Reminders only (skip email)
SKIP_EMAIL=1 bash scripts/gog-cleanup.sh
Custom stale threshold (default 30 days)
STALE_DAYS=60 bash scripts/gog-cleanup.sh
Custom recipient (defaults to himalaya personal account email)
EMAIL_TO="other@example.com" bash scripts/gog-cleanup.sh
Configuration
The script reads from workspace config/:
| File | Purpose |
|---|---|
config/gog_library.json | GOG game library with install status & last_played timestamps |
config/himalaya.toml | Himalaya email account config (uses personal account) |
config/reminders_lists.json | Reminders list structure (Gaming list) |
Output
- Email: HTML-formatted digest sent to your personal inbox
- Reminders: One reminder per stale game in the Gaming list, prefixed with "🧹 Consider uninstalling:"
- Console: Summary of games found and actions taken
Scheduling
To run weekly via cron:
# Add to crontab for Monday 9 AM
0 9 * * 1 /path/to/scripts/gog-cleanup.sh >> /tmp/gog-cleanup.log 2>&1
Or use OpenClaw's cron tool for agent-managed scheduling.
Notes
- Games with
last_played: null(never played) are always included - Uninstalled games are always skipped regardless of last_played
- The script is idempotent — re-running won't duplicate reminders (existing reminders with the same title are skipped)