{
  "schemaVersion": "1.0",
  "item": {
    "slug": "mupeng-notification-hub",
    "name": "Notification Hub",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/mupengi-bot/mupeng-notification-hub",
    "canonicalUrl": "https://clawhub.ai/mupengi-bot/mupeng-notification-hub",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/mupeng-notification-hub",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mupeng-notification-hub",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/mupeng-notification-hub"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/mupeng-notification-hub",
    "agentPageUrl": "https://openagent3.xyz/skills/mupeng-notification-hub/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mupeng-notification-hub/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mupeng-notification-hub/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "notification-hub",
        "body": "Notification Integration — Collects all skill notifications centrally and delivers by priority to reduce notification fatigue."
      },
      {
        "title": "🎯 Purpose",
        "body": "Centrally manage diverse notifications from all skills and deliver at appropriate timing and channels based on importance."
      },
      {
        "title": "📥 Notification Sources",
        "body": "Collect all event files from events/ directory:\n\nevents/\n  ├── health-2026-02-14.json         (health-monitor)\n  ├── scrape-result-2026-02-14.json  (data-scraper)\n  ├── dm-check-2026-02-14.json       (insta-post)\n  ├── competitor-2026-02-14.json     (competitor-watch)\n  └── workflow-2026-02-14.json       (skill-composer)"
      },
      {
        "title": "1. urgent — Immediate Discord DM",
        "body": "Conditions:\n\nSecurity issues (abnormal login, suspicious access)\nSystem errors (OpenClaw down, browser disconnected)\nCost exceeded (API usage 90%+)\nCritical mentions\n\nDelivery:\n\nDiscord DM (channel ID configured in TOOLS.md)\nSend immediately (within 1 min)\n\nExample:\n\n🚨 Urgent: Browser disconnected\nPort 18800 not responding. Auto-recovery attempted but failed.\nManual check needed: openclaw browser start"
      },
      {
        "title": "2. important — Include in next heartbeat",
        "body": "Conditions:\n\nNew Instagram DMs (unread)\nTrending keyword surge detected\nCompetitor launches new service\nGit push needed (10+ unpushed commits)\n\nDelivery:\n\nInclude in next heartbeat response (~30 min intervals)\nBundle multiple notifications in single message\n\nExample:\n\n📢 3 Updates\n\n📩 2 Instagram DMs (iam.dawn.kim, partner_xyz)\n📈 Trend: \"AI agent\" surging (+150%)\n🔄 Git: 12 commits waiting for push"
      },
      {
        "title": "3. info — Include in daily-report only",
        "body": "Conditions:\n\nRegular statistics updates\nDaily token usage\nCompleted workflows\nGeneral system logs\n\nDelivery:\n\nInclude when daily-report skill executes\nSend summary once daily\n\nExample:\n\n📊 Daily Report (2026-02-14)\n\n✅ 3 workflows completed\n📊 Tokens: 45,230 / 100,000 (45%)\n📝 Memory: 3.2 GB\n🔧 Health check: OK"
      },
      {
        "title": "🔕 Duplicate Prevention",
        "body": "Never send notification more than once for same event."
      },
      {
        "title": "Duplicate Detection",
        "body": "{\n  \"event_id\": \"health-check-2026-02-14-07:00\",\n  \"fingerprint\": \"sha256(source + type + key_data)\",\n  \"notified_at\": \"2026-02-14T07:05:00+09:00\"\n}"
      },
      {
        "title": "History Storage",
        "body": "memory/notifications/\n  ├── sent-2026-02-14.json\n  ├── sent-2026-02-13.json\n  └── ...\n\nsent-YYYY-MM-DD.json structure:\n\n{\n  \"date\": \"2026-02-14\",\n  \"notifications\": [\n    {\n      \"id\": \"health-check-2026-02-14-07:00\",\n      \"priority\": \"info\",\n      \"sent_at\": \"2026-02-14T07:05:00+09:00\",\n      \"channel\": \"discord_dm\",\n      \"source\": \"health-monitor\"\n    }\n  ]\n}"
      },
      {
        "title": "Discord DM",
        "body": "Channel ID: Configure in TOOLS.md\nPurpose: urgent, important notifications\nFormat: Markdown (emoji + title + content)"
      },
      {
        "title": "Heartbeat Response",
        "body": "Purpose: Bundle important notifications\nFormat: Concise bullet list"
      },
      {
        "title": "Daily Report",
        "body": "Purpose: info notification summary\nFormat: Structured section organization"
      },
      {
        "title": "🎤 Triggers",
        "body": "Activate skill with these keywords:\n\n\"notification settings\"\n\"notification\"\n\"check notifications\"\n\"anything new\""
      },
      {
        "title": "Check Notifications",
        "body": "\"Anything new?\"\n→ Immediately summarize important+ notifications"
      },
      {
        "title": "Notification Settings",
        "body": "\"Set Instagram DMs to immediate notification\"\n→ Promote dm-check events to urgent"
      },
      {
        "title": "Notification History",
        "body": "\"Show today's notification history\"\n→ Read memory/notifications/sent-2026-02-14.json"
      },
      {
        "title": "1. Collect Events",
        "body": "// Scan events/ directory\nconst events = fs.readdirSync('events/')\n  .filter(f => f.endsWith('.json'))\n  .map(f => JSON.parse(fs.readFileSync(`events/${f}`)));"
      },
      {
        "title": "2. Classify by Priority",
        "body": "const urgent = events.filter(e => e.priority === 'urgent');\nconst important = events.filter(e => e.priority === 'important');\nconst info = events.filter(e => e.priority === 'info');"
      },
      {
        "title": "3. Duplicate Check",
        "body": "const sent = loadSentHistory(today);\nconst newEvents = events.filter(e => \n  !sent.notifications.some(n => n.id === e.id)\n);"
      },
      {
        "title": "4. Deliver",
        "body": "// urgent → Immediate Discord DM\nif (urgent.length > 0) {\n  await sendDiscordDM(urgent);\n}\n\n// important → Add to heartbeat queue\nif (important.length > 0) {\n  await addToHeartbeatQueue(important);\n}\n\n// info → Add to daily-report queue\nif (info.length > 0) {\n  await addToDailyReportQueue(info);\n}"
      },
      {
        "title": "5. Save History",
        "body": "saveSentHistory(today, newlySentNotifications);"
      },
      {
        "title": "📊 Event Priority Guide",
        "body": "Guide each skill to include priority field when creating events:\n\n{\n  \"timestamp\": \"2026-02-14T07:58:00+09:00\",\n  \"skill\": \"health-monitor\",\n  \"priority\": \"urgent\",  // urgent | important | info\n  \"message\": \"Browser disconnected\",\n  \"data\": { ... }\n}\n\n🐧 Built by 무펭이 — Mupengism ecosystem skill"
      }
    ],
    "body": "notification-hub\n\nNotification Integration — Collects all skill notifications centrally and delivers by priority to reduce notification fatigue.\n\n🎯 Purpose\n\nCentrally manage diverse notifications from all skills and deliver at appropriate timing and channels based on importance.\n\n📥 Notification Sources\n\nCollect all event files from events/ directory:\n\nevents/\n  ├── health-2026-02-14.json         (health-monitor)\n  ├── scrape-result-2026-02-14.json  (data-scraper)\n  ├── dm-check-2026-02-14.json       (insta-post)\n  ├── competitor-2026-02-14.json     (competitor-watch)\n  └── workflow-2026-02-14.json       (skill-composer)\n\n🚦 Priority Filtering\n1. urgent — Immediate Discord DM\n\nConditions:\n\nSecurity issues (abnormal login, suspicious access)\nSystem errors (OpenClaw down, browser disconnected)\nCost exceeded (API usage 90%+)\nCritical mentions\n\nDelivery:\n\nDiscord DM (channel ID configured in TOOLS.md)\nSend immediately (within 1 min)\n\nExample:\n\n🚨 Urgent: Browser disconnected\nPort 18800 not responding. Auto-recovery attempted but failed.\nManual check needed: openclaw browser start\n\n2. important — Include in next heartbeat\n\nConditions:\n\nNew Instagram DMs (unread)\nTrending keyword surge detected\nCompetitor launches new service\nGit push needed (10+ unpushed commits)\n\nDelivery:\n\nInclude in next heartbeat response (~30 min intervals)\nBundle multiple notifications in single message\n\nExample:\n\n📢 3 Updates\n\n📩 2 Instagram DMs (iam.dawn.kim, partner_xyz)\n📈 Trend: \"AI agent\" surging (+150%)\n🔄 Git: 12 commits waiting for push\n\n3. info — Include in daily-report only\n\nConditions:\n\nRegular statistics updates\nDaily token usage\nCompleted workflows\nGeneral system logs\n\nDelivery:\n\nInclude when daily-report skill executes\nSend summary once daily\n\nExample:\n\n📊 Daily Report (2026-02-14)\n\n✅ 3 workflows completed\n📊 Tokens: 45,230 / 100,000 (45%)\n📝 Memory: 3.2 GB\n🔧 Health check: OK\n\n🔕 Duplicate Prevention\n\nNever send notification more than once for same event.\n\nDuplicate Detection\n{\n  \"event_id\": \"health-check-2026-02-14-07:00\",\n  \"fingerprint\": \"sha256(source + type + key_data)\",\n  \"notified_at\": \"2026-02-14T07:05:00+09:00\"\n}\n\nHistory Storage\nmemory/notifications/\n  ├── sent-2026-02-14.json\n  ├── sent-2026-02-13.json\n  └── ...\n\n\nsent-YYYY-MM-DD.json structure:\n\n{\n  \"date\": \"2026-02-14\",\n  \"notifications\": [\n    {\n      \"id\": \"health-check-2026-02-14-07:00\",\n      \"priority\": \"info\",\n      \"sent_at\": \"2026-02-14T07:05:00+09:00\",\n      \"channel\": \"discord_dm\",\n      \"source\": \"health-monitor\"\n    }\n  ]\n}\n\n📢 Delivery Channels\nDiscord DM\nChannel ID: Configure in TOOLS.md\nPurpose: urgent, important notifications\nFormat: Markdown (emoji + title + content)\nHeartbeat Response\nPurpose: Bundle important notifications\nFormat: Concise bullet list\nDaily Report\nPurpose: info notification summary\nFormat: Structured section organization\n🎤 Triggers\n\nActivate skill with these keywords:\n\n\"notification settings\"\n\"notification\"\n\"check notifications\"\n\"anything new\"\n🚀 Usage Examples\nCheck Notifications\n\"Anything new?\"\n→ Immediately summarize important+ notifications\n\nNotification Settings\n\"Set Instagram DMs to immediate notification\"\n→ Promote dm-check events to urgent\n\nNotification History\n\"Show today's notification history\"\n→ Read memory/notifications/sent-2026-02-14.json\n\n⚙️ Implementation Guide\n1. Collect Events\n// Scan events/ directory\nconst events = fs.readdirSync('events/')\n  .filter(f => f.endsWith('.json'))\n  .map(f => JSON.parse(fs.readFileSync(`events/${f}`)));\n\n2. Classify by Priority\nconst urgent = events.filter(e => e.priority === 'urgent');\nconst important = events.filter(e => e.priority === 'important');\nconst info = events.filter(e => e.priority === 'info');\n\n3. Duplicate Check\nconst sent = loadSentHistory(today);\nconst newEvents = events.filter(e => \n  !sent.notifications.some(n => n.id === e.id)\n);\n\n4. Deliver\n// urgent → Immediate Discord DM\nif (urgent.length > 0) {\n  await sendDiscordDM(urgent);\n}\n\n// important → Add to heartbeat queue\nif (important.length > 0) {\n  await addToHeartbeatQueue(important);\n}\n\n// info → Add to daily-report queue\nif (info.length > 0) {\n  await addToDailyReportQueue(info);\n}\n\n5. Save History\nsaveSentHistory(today, newlySentNotifications);\n\n📊 Event Priority Guide\n\nGuide each skill to include priority field when creating events:\n\n{\n  \"timestamp\": \"2026-02-14T07:58:00+09:00\",\n  \"skill\": \"health-monitor\",\n  \"priority\": \"urgent\",  // urgent | important | info\n  \"message\": \"Browser disconnected\",\n  \"data\": { ... }\n}\n\n\n🐧 Built by 무펭이 — Mupengism ecosystem skill"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mupengi-bot/mupeng-notification-hub",
    "publisherUrl": "https://clawhub.ai/mupengi-bot/mupeng-notification-hub",
    "owner": "mupengi-bot",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/mupeng-notification-hub",
    "downloadUrl": "https://openagent3.xyz/downloads/mupeng-notification-hub",
    "agentUrl": "https://openagent3.xyz/skills/mupeng-notification-hub/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mupeng-notification-hub/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mupeng-notification-hub/agent.md"
  }
}