Install
openclaw skills install workday-music-greetingAuto-switch music scenes by workday time slot and send matching greeting emails with scene-specific GIFs. Combines home-music scene control with IMAP/SMTP email for a complete morning-to-evening automation.
openclaw skills install workday-music-greetingAuto-switch music scenes by workday time slot, and send a greeting email with a matching GIF — all in one command or cron job.
🌅 ──► ☕ ──► 💻 ──► 😌 ──► 🌙
morning focus working chill off
| Time Slot | Music Scene | Greeting Theme | Example GIF |
|---|---|---|---|
| 🌅 Morning (6–9) | morning | Rise & shine | ☀️ sunrise GIF |
| ☕ Focus (9–12) | focus | Deep work time | 🔥 laser-focus GIF |
| 💻 Working (12–14) | working | Keep going! | 💪 hustle GIF |
| 😌 Chill (14–18) | chill | Wind down | 🍵 tea-time GIF |
| 🌙 Off (18+) | off | Good night | 🌙 moon GIF |
# Run the current time-slot scene + send greeting email
node scripts/workday-greeting.js
That's it. The script:
home-music)Copy .env.example to .env and fill in:
# Email (SMTP) — required for sending greetings
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=you@gmail.com
SMTP_PASS=your_app_password
GREETING_TO=recipient@example.com
GREETING_FROM=you@gmail.com
# Music scene command (default: home-music)
MUSIC_CMD=home-music
GIF URLs are defined in scripts/gifs.json. Replace with your own:
{
"morning": "https://media.giphy.com/media/l0MYt5jPR6QX5APm0/giphy.gif",
"focus": "https://media.giphy.com/media/3o7btNa0RUYa5E7iiQ/giphy.gif",
"working": "https://media.giphy.com/media/3o7qDEq2bMbcbPRQ2c/giphy.gif",
"chill": "https://media.giphy.com/media/l2JIdnF6aCnBRSgQU/giphy.gif",
"off": "https://media.giphy.com/media/l1J9u3TZfp1DLh2Wk/giphy.gif"
}
Edit scripts/slots.json to customize time boundaries:
{
"morning": { "start": 6, "end": 9 },
"focus": { "start": 9, "end": 12 },
"working": { "start": 12, "end": 14 },
"chill": { "start": 14, "end": 18 },
"off": { "start": 18, "end": 6 }
}
# Auto-detect slot and run
node scripts/workday-greeting.js
# Force a specific slot
node scripts/workday-greeting.js --slot morning
# Music only (no email)
node scripts/workday-greeting.js --music-only
# Email only (no music scene switch)
node scripts/workday-greeting.js --email-only
# Dry run (show what would happen)
node scripts/workday-greeting.js --dry-run
Set up as an OpenClaw cron job for fully automatic daily operation:
# Every weekday at 8:00 AM — morning scene + greeting
0 8 * * 1-5 node scripts/workday-greeting.js --slot morning
# Every weekday at 9:00 AM — focus scene
0 9 * * 1-5 node scripts/workday-greeting.js --slot focus
# Every weekday at 6:00 PM — wind down + good evening
0 18 * * 1-5 node scripts/workday-greeting.js --slot off
Or use OpenClaw's cron tool:
{
"schedule": { "kind": "cron", "expr": "0 8 * * 1-5", "tz": "Asia/Shanghai" },
"payload": { "kind": "agentTurn", "message": "Run workday-music-greeting for morning slot" }
}
The email is sent as HTML with an inline GIF:
Subject: 🌅 Good Morning! Time to rise and shine
Body:
<h2>☀️ Good Morning!</h2>
<p>Switching to <strong>morning</strong> music scene.</p>
<p>Have a wonderful day! 🎶</p>
<img src="[morning GIF URL]" alt="Good morning!" width="400">
<p><em>— Sent by Workday Music Greeting 🎶</em></p>
workday-music-greeting/
├── SKILL.md # This file
├── scripts/
│ ├── workday-greeting.js # Main orchestration script
│ ├── send-greeting.js # Email sending logic
│ ├── gifs.json # GIF URL config per slot
│ └── slots.json # Time slot definitions
├── assets/
│ └── (optional local GIFs)
├── .env.example # Environment template
└── package.json
nodemailer)cd skills/workday-music-greeting
npm install
| Issue | Fix |
|---|---|
| Music not switching | Verify home-music is installed and MUSIC_CMD is correct |
| Email not sending | Check .env SMTP credentials; test with node scripts/send-greeting.js --test |
| Wrong time slot | Check slots.json boundaries; use --slot to override |
| GIF not loading | Replace URLs in gifs.json; some Giphy links expire |
MIT