notification-hub

Unified notification hub collecting all skill alerts and delivering by priority

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "notification-hub" with this command: npx skills add mupengi-bot/mupeng-notification-hub

notification-hub

Notification Integration — Collects all skill notifications centrally and delivers by priority to reduce notification fatigue.

🎯 Purpose

Centrally manage diverse notifications from all skills and deliver at appropriate timing and channels based on importance.

📥 Notification Sources

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)

🚦 Priority Filtering

1. urgent — Immediate Discord DM

Conditions:

  • Security issues (abnormal login, suspicious access)
  • System errors (OpenClaw down, browser disconnected)
  • Cost exceeded (API usage 90%+)
  • Critical mentions

Delivery:

  • Discord DM (channel ID configured in TOOLS.md)
  • Send immediately (within 1 min)

Example:

🚨 Urgent: Browser disconnected
Port 18800 not responding. Auto-recovery attempted but failed.
Manual check needed: openclaw browser start

2. important — Include in next heartbeat

Conditions:

  • New Instagram DMs (unread)
  • Trending keyword surge detected
  • Competitor launches new service
  • Git push needed (10+ unpushed commits)

Delivery:

  • Include in next heartbeat response (~30 min intervals)
  • Bundle multiple notifications in single message

Example:

📢 3 Updates

📩 2 Instagram DMs (iam.dawn.kim, partner_xyz)
📈 Trend: "AI agent" surging (+150%)
🔄 Git: 12 commits waiting for push

3. info — Include in daily-report only

Conditions:

  • Regular statistics updates
  • Daily token usage
  • Completed workflows
  • General system logs

Delivery:

  • Include when daily-report skill executes
  • Send summary once daily

Example:

📊 Daily Report (2026-02-14)

✅ 3 workflows completed
📊 Tokens: 45,230 / 100,000 (45%)
📝 Memory: 3.2 GB
🔧 Health check: OK

🔕 Duplicate Prevention

Never send notification more than once for same event.

Duplicate Detection

{
  "event_id": "health-check-2026-02-14-07:00",
  "fingerprint": "sha256(source + type + key_data)",
  "notified_at": "2026-02-14T07:05:00+09:00"
}

History Storage

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"
    }
  ]
}

📢 Delivery Channels

Discord DM

  • Channel ID: Configure in TOOLS.md
  • Purpose: urgent, important notifications
  • Format: Markdown (emoji + title + content)

Heartbeat Response

  • Purpose: Bundle important notifications
  • Format: Concise bullet list

Daily Report

  • Purpose: info notification summary
  • Format: Structured section organization

🎤 Triggers

Activate skill with these keywords:

  • "notification settings"
  • "notification"
  • "check notifications"
  • "anything new"

🚀 Usage Examples

Check Notifications

"Anything new?"
→ Immediately summarize important+ notifications

Notification Settings

"Set Instagram DMs to immediate notification"
→ Promote dm-check events to urgent

Notification History

"Show today's notification history"
→ Read memory/notifications/sent-2026-02-14.json

⚙️ Implementation Guide

1. Collect Events

// Scan events/ directory
const events = fs.readdirSync('events/')
  .filter(f => f.endsWith('.json'))
  .map(f => JSON.parse(fs.readFileSync(`events/${f}`)));

2. Classify by Priority

const urgent = events.filter(e => e.priority === 'urgent');
const important = events.filter(e => e.priority === 'important');
const info = events.filter(e => e.priority === 'info');

3. Duplicate Check

const sent = loadSentHistory(today);
const newEvents = events.filter(e => 
  !sent.notifications.some(n => n.id === e.id)
);

4. Deliver

// 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);
}

5. Save History

saveSentHistory(today, newlySentNotifications);

📊 Event Priority Guide

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

M3U8 Downloader

Download encrypted m3u8/HLS videos using parallel downloads. Use when given an m3u8 URL to download a video, especially encrypted HLS streams with AES-128.

Registry SourceRecently Updated
General

Data Analyst Cn

数据分析助手 - 数据清洗、统计分析、可视化建议。适合:数据分析师、产品经理、运营。

Registry SourceRecently Updated
General

QuantumOS

Install and manage QuantumOS, an AI command center dashboard for OpenClaw. Use when the user wants to set up QuantumOS, start/stop the dashboard, troubleshoo...

Registry SourceRecently Updated