Install
openclaw skills install mupeng-notification-hubUnified notification hub collecting all skill alerts and delivering by priority
openclaw skills install mupeng-notification-hubNotification Integration — Collects all skill notifications centrally and delivers by priority to reduce notification fatigue.
Centrally manage diverse notifications from all skills and deliver at appropriate timing and channels based on importance.
Collect all event files from events/ directory:
events/
├── health-2026-02-14.json (health-monitor)
├── scrape-result-2026-02-14.json (data-scraper)
├── dm-check-2026-02-14.json (insta-post)
├── competitor-2026-02-14.json (competitor-watch)
└── workflow-2026-02-14.json (skill-composer)
urgent — Immediate Discord DMConditions:
Delivery:
TOOLS.md)Example:
🚨 Urgent: Browser disconnected
Port 18800 not responding. Auto-recovery attempted but failed.
Manual check needed: openclaw browser start
important — Include in next heartbeatConditions:
Delivery:
Example:
📢 3 Updates
📩 2 Instagram DMs (iam.dawn.kim, partner_xyz)
📈 Trend: "AI agent" surging (+150%)
🔄 Git: 12 commits waiting for push
info — Include in daily-report onlyConditions:
Delivery:
Example:
📊 Daily Report (2026-02-14)
✅ 3 workflows completed
📊 Tokens: 45,230 / 100,000 (45%)
📝 Memory: 3.2 GB
🔧 Health check: OK
Never send notification more than once for same event.
{
"event_id": "health-check-2026-02-14-07:00",
"fingerprint": "sha256(source + type + key_data)",
"notified_at": "2026-02-14T07:05:00+09:00"
}
memory/notifications/
├── sent-2026-02-14.json
├── sent-2026-02-13.json
└── ...
sent-YYYY-MM-DD.json structure:
{
"date": "2026-02-14",
"notifications": [
{
"id": "health-check-2026-02-14-07:00",
"priority": "info",
"sent_at": "2026-02-14T07:05:00+09:00",
"channel": "discord_dm",
"source": "health-monitor"
}
]
}
TOOLS.mdActivate skill with these keywords:
"Anything new?"
→ Immediately summarize important+ notifications
"Set Instagram DMs to immediate notification"
→ Promote dm-check events to urgent
"Show today's notification history"
→ Read memory/notifications/sent-2026-02-14.json
// Scan events/ directory
const events = fs.readdirSync('events/')
.filter(f => f.endsWith('.json'))
.map(f => JSON.parse(fs.readFileSync(`events/${f}`)));
const urgent = events.filter(e => e.priority === 'urgent');
const important = events.filter(e => e.priority === 'important');
const info = events.filter(e => e.priority === 'info');
const sent = loadSentHistory(today);
const newEvents = events.filter(e =>
!sent.notifications.some(n => n.id === e.id)
);
// urgent → Immediate Discord DM
if (urgent.length > 0) {
await sendDiscordDM(urgent);
}
// important → Add to heartbeat queue
if (important.length > 0) {
await addToHeartbeatQueue(important);
}
// info → Add to daily-report queue
if (info.length > 0) {
await addToDailyReportQueue(info);
}
saveSentHistory(today, newlySentNotifications);
Guide each skill to include priority field when creating events:
{
"timestamp": "2026-02-14T07:58:00+09:00",
"skill": "health-monitor",
"priority": "urgent", // urgent | important | info
"message": "Browser disconnected",
"data": { ... }
}
🐧 Built by 무펭이 — Mupengism ecosystem skill