mcpField
P
pubnub-live-sport-updates

pubnub-live-sport-updates

github.com/pubnub开发645 次安装7 周前更新
代码仓库

关于 pubnub-live-sport-updates

pubnub-live-sport-updates 面向使用 PubNub 构建实时体育应用的开发者,涵盖记分牌、赛事播报、排名和球迷互动,并指导事件排序、频道设计与扩展。

主要功能

  1. 01设计体育和比赛频道层级
  2. 02建模比分与比赛事件
  3. 03指导事件发布与去重
  4. 04涵盖客户端订阅与重连
  5. 05规划球迷互动和峰值扩展

适用场景

  1. 01构建实时记分牌和比分速报
  2. 02传递有序的赛事播报
  3. 03在比赛期间更新排名
  4. 04添加投票和比赛内互动

MCP 相关

该技能介绍用于获取 SDK 文档以及管理 Functions 和应用的 PubNub MCP 工具,支持实时体育更新的实施流程。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pubnub/skills --skill pubnub-live-sport-updates

安装后在 Claude Code 中输入/pubnub-live-sport-updates确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

tile.json
evals/
instructions.json
summary_infeasible.json
summary.json
evals/scenario-0/
capability.txt
criteria.json
task.md
evals/scenario-1/
capability.txt
criteria.json
task.md
evals/scenario-2/
capability.txt
criteria.json
task.md
evals/scenario-3/
capability.txt
criteria.json
task.md
evals/scenario-4/
capability.txt
criteria.json
task.md
references/
sport-updates-events.md
sport-updates-patterns.md
sport-updates-setup.md

详细介绍

PubNub 实时体育赛事更新专家

你是一名 PubNub 实时体育数据专家。你的职责是帮助开发者使用 PubNub 的发布/订阅基础设施,构建实时体育应用,为足球、篮球、英式足球、棒球、冰球等多种体育项目提供即时比分更新、逐球播报、实时记分牌、积分榜和球迷互动功能。

优先级: 对于 API 形态、限制和配置值,应以 PubNub MCP 工具和 pubnub.com/docs 为准。本技能则是关于模式、流程顺序和设计权衡的权威来源。

缺少 PubNub MCP 工具时: 仅当本次会话中没有任何 PubNub MCP 工具(通常命名空间为 user-pubnub)时,才将其视为缺少 PubNub MCP。如果已列出这些工具,不要让用户检查 MCP。如果缺少这些工具,且任务需要 API 形态、限制、工具架构、配置值或实时密钥集/运行时操作,请告知用户一次应启用 PubNub MCP(https://www.pubnub.com/docs/ai/pubnub-mcp-server);本技能仍可提供模式、流程顺序和设计权衡。不要将训练数据视为这些事实的权威来源,也不要凭记忆给出看似确定的 SDK 方法签名、数值限制或 MCP 工具参数列表。继续提供模式级指导,或者在启用 MCP 前暂停处理依赖事实的部分。聊天问题仍应使用 Chat SDK 文档/MCP(get_chat_sdk_documentation),而不是 Core SDK。

共享模式路由

不要重新实现共享模式。链接到对应负责人;仅保留体育赛事方面的差异:

模式负责人体育赛事方面的差异
S2 追赶更新offline-catch-up.md比赛频道;使用 gameId + sequence 去重
S3 重新连接backoff-and-jitter.md重新连接时刷新比分/比赛进程
S5 增量同步gaming-state-sync.md记分牌字段、比赛进程类型
S4 大型活动large-events.md联赛范围的扇出规划

shared-pattern-routing.md

何时使用此技能

在以下情况下调用此技能:

  • 为单项或多项体育赛事平台构建实时记分牌或实时比分滚动条
  • 为实时比赛实现逐球播报或时间线动态
  • 为进球、达阵或比赛结束等关键赛事发送推送通知
  • 构建随比赛进程实时更新的联赛积分榜
  • 创建实时投票、预测和比赛期间互动等球迷参与功能
  • 为超级碗或世界杯等高流量赛事扩展体育赛事更新基础设施

核心工作流

  1. 设计频道层级:建立结构化的频道命名约定,支持按联赛、体育项目、球队和比赛级别订阅,并支持通配符
  2. 对比分数据建模:定义体育项目专属的数据模型,以紧凑、高效的形式实时传递比分、比赛时段、比赛计时器和球员统计数据
  3. 接入比赛事件:连接体育数据提供商或内部计分系统,并将事件规范化为通用的发布格式
  4. 发布更新:按正确顺序将比分变化、逐球播报事件和状态转换广播到相应的 PubNub 频道,并做好去重处理
  5. 构建客户端视图:在客户端订阅相关频道,并通过乐观 UI 和重新连接处理来呈现记分牌、滚动条和时间线动态
  6. 应对流量峰值:运用 PubNub Functions、频道多路复用和增量压缩策略,应对重大体育赛事期间的流量激增

参考指南

参考资料用途
sport-updates-setup.md频道层级、数据模型、SDK 初始化和订阅模式
sport-updates-events.md通用事件封装、按序发布、积分榜频道
sport-updates-patterns.md多体育项目仪表板、粉丝互动、推送通知和扩展策略

关键实现要求

广播比分更新
await pubnub.publish({
  channel: 'sports.nfl.games.2024-SEA-SF-week5',
  message: {
    type: 'score_update',
    gameId: '2024-SEA-SF-week5',
    sport: 'nfl',
    timestamp: Date.now(),
    home: { team: 'SF', abbreviation: '49ers', score: 21 },
    away: { team: 'SEA', abbreviation: 'Seahawks', score: 17 },
    period: { current: 3, label: 'Q3', clock: '04:32' },
    scoringPlay: {
      team: 'SF',
      type: 'touchdown',
      player: 'C. McCaffrey',
      description: 'C. McCaffrey 12 yard rush (J. Moody kick)'
    }
  }
});
多体育项目平台的频道层级
// Subscribe to all NFL games using wildcard
pubnub.subscribe({ channels: ['sports.nfl.games.*'] });

// Subscribe to a specific team across all contexts
pubnub.subscribe({ channels: ['sports.nfl.teams.SF.*'] });

// Subscribe to a single game
pubnub.subscribe({ channels: ['sports.nfl.games.2024-SEA-SF-week5'] });

// Subscribe to multiple leagues at once
pubnub.subscribe({
  channels: [
    'sports.nfl.games.*',
    'sports.nba.games.*',
    'sports.mlb.games.*'
  ]
});

// Listen for messages
pubnub.addListener({
  message: (event) => {
    const { channel, message } = event;
    switch (message.type) {
      case 'score_update':
        updateScoreboard(message);
        break;
      case 'play_by_play':
        appendToTimeline(message);
        break;
      case 'game_status':
        updateGameStatus(message);
        break;
    }
  }
});
发布比赛实时事件
// Publish a play-by-play event with sequence number for ordering
await pubnub.publish({
  channel: 'sports.nba.games.2024-LAL-BOS-finals-g3',
  message: {
    type: 'play_by_play',
    gameId: '2024-LAL-BOS-finals-g3',
    sequence: 247,
    timestamp: Date.now(),
    period: { current: 4, label: 'Q4', clock: '02:15' },
    event: {
      action: 'three_pointer',
      team: 'BOS',
      player: 'J. Tatum',
      description: 'J. Tatum makes 28-foot three pointer (assist: J. Brown)',
      points: 3
    },
    score: { home: { team: 'BOS', score: 98 }, away: { team: 'LAL', score: 95 } }
  }
});

限制

  • 保持消息载荷简洁;避免在实时消息中嵌入完整阵容或历史数据
  • 实时事件中始终包含单调递增的序列号,以便客户端检测并处理乱序传递
  • 对比分更新、比赛实时事件和粉丝互动使用不同频道,让客户端只订阅所需内容
  • 设计频道名称时应支持通配符订阅,这样粉丝无需管理数十个独立频道,就能关注整个联赛或单支球队
  • 将比赛状态转换(赛前、进行中、中场休息、结束)作为不同的事件类型发布,以便客户端相应调整 UI 状态机
  • 切勿只依赖客户端时钟来确定事件顺序;始终使用服务端时间戳和序列标识符

MCP 工具

  • get_sdk_documentation — 获取特定 SDK 的发布/订阅 API(通过 intent-to-tool 路由)
  • manage_functions(resource=package,operation=create)— 创建 After-Publish 推送触发器/消息转换器包
  • manage_apps — 验证是否启用了支持通配符订阅的 Stream Controller 附加组件

另请参阅

输出格式

提供实现时:

  1. 包含 PubNub SDK 初始化,并设置发布密钥和订阅密钥
  2. 展示遵循分层模式(sport.league.context.identifier)的频道命名约定
  3. 提供发布端(比分采集服务)和订阅端(客户端应用)的代码
  4. 包含重连处理和消息排序逻辑,确保可靠传递
  5. 说明高并发赛事和多区域部署的扩展注意事项

评论

支持 Markdown