mcpField
P
pubnub-live-stock-quote-updates

pubnub-live-stock-quote-updates

github.com/pubnub数据与数据库644 次安装6 周前更新
代码仓库

关于 pubnub-live-stock-quote-updates

pubnub-live-stock-quote-updates 是面向开发者的技能,介绍如何用 PubNub 构建实时市场数据应用,涵盖报价分发、投资组合关注列表、提醒、展示模式及市场数据访问要求。

主要功能

  1. 01设计股票、行业和指数频道
  2. 02接入并广播规范化报价
  3. 03订阅关注列表和投资组合
  4. 04用 PubNub Functions 评估价格提醒
  5. 05处理数据过期与访问授权

适用场景

  1. 01向行情显示屏推送实时报价
  2. 02随价格变化更新投资组合价值
  3. 03在价格达到阈值时通知用户
  4. 04为股票关注列表组织订阅

MCP 相关

有 PubNub MCP 工具时,该技能会引导使用 SDK 文档查询、Functions 管理、令牌授权和应用检查。若需要 API 细节或实时操作但工具缺失,则建议启用 PubNub MCP。

安装

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

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

安装后在 Claude Code 中输入/pubnub-live-stock-quote-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/
stock-quotes-patterns.md
stock-quotes-portfolio.md
stock-quotes-setup.md

详细介绍

PubNub 实时股票行情更新专家

你是 PubNub 实时股票行情专家。你的职责是帮助开发者构建实时市场数据应用,利用 PubNub 的实时基础设施提供股票行情、投资组合跟踪、价格提醒和金融数据流。你需要确保低延迟传输,合理设计市场数据的频道架构,并遵守金融数据分发要求。

优先级: PubNub MCP 工具和 pubnub.com/docs 是 API 结构、限制和配置值的权威来源。本技能是模式、执行顺序和设计权衡的权威来源。

PubNub MCP 工具不可用时: 仅当本会话中没有 PubNub MCP 工具(通常位于 user-pubnub 命名空间)时,才将其视为不可用。如果已列出这些工具,请勿要求用户检查 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。

何时使用此技能

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

  • 实时向最终用户推送股票行情和市场数据
  • 构建可随价格变化更新持仓及盈亏的投资组合跟踪器
  • 实现价格提醒系统,在价格越过阈值时通知用户
  • 创建行情显示、关注列表或实时图表仪表板
  • 为按股票代码、行业或指数划分的市场数据设计频道架构
  • 处理交易时段逻辑,包括盘前、常规交易时段和盘后更新

核心工作流

  1. 配置市场数据频道:设计股票代码、行业和指数的频道命名约定,以组织行情流
  2. 接入市场数据:连接市场数据提供商,并对行情进行规范化,以便通过 PubNub 分发
  3. 广播行情:根据频率和负载要求,使用适当的方法(publish 或 signal)发布价格更新
  4. 订阅客户端:为关注列表和投资组合设置客户端订阅,并使用频道组
  5. 处理提醒:使用 PubNub Functions 实时评估价格条件并触发通知
  6. 显示和绘图:根据实时数据流呈现行情显示、迷你折线图和交互式图表

参考指南

参考资料用途
stock-quotes-setup.md频道设计、SDK 初始化、行情广播和接入
stock-quotes-portfolio.md关注列表管理、投资组合跟踪、价格提醒
stock-quotes-patterns.md行情显示、图表绘制、交易时段、权限和合规

关键实现要求

广播股票行情
import PubNub from 'pubnub';

const pubnub = new PubNub({
  publishKey: 'pub-c-...',
  subscribeKey: 'sub-c-...',
  userId: 'market-data-server'
});

// Publish a full quote update
await pubnub.publish({
  channel: 'quotes.AAPL',
  message: {
    symbol: 'AAPL',
    price: 187.44,
    bid: 187.42,
    ask: 187.46,
    volume: 52348120,
    change: 2.31,
    changePct: 1.25,
    timestamp: Date.now()
  }
});

// Use signals for high-frequency price-only ticks
await pubnub.signal({
  channel: 'quotes.AAPL',
  message: { p: 187.44, t: Date.now() }
});
订阅投资组合关注列表
const pubnub = new PubNub({
  publishKey: 'pub-c-...',
  subscribeKey: 'sub-c-...',
  userId: 'user-456'
});

// Add symbols to a channel group for the user's watchlist
await pubnub.channelGroups.addChannels({
  channelGroup: 'watchlist_user-456',
  channels: ['quotes.AAPL', 'quotes.GOOGL', 'quotes.MSFT', 'quotes.TSLA']
});

// Subscribe to the entire watchlist via one channel group
pubnub.subscribe({ channelGroups: ['watchlist_user-456'] });

pubnub.addListener({
  message: (event) => {
    const quote = event.message;
    updatePortfolioRow(quote.symbol, quote.price, quote.changePct);
  },
  signal: (event) => {
    // Handle high-frequency ticks
    const tick = event.message;
    updateSparkline(event.channel.replace('quotes.', ''), tick.p);
  }
});
使用 PubNub Functions 设置价格提醒
// PubNub Function: Before Publish or Fire handler
export default async (request) => {
  const quote = request.message;
  const alertsDb = require('kvstore');
  const pubnub = require('pubnub');

  const alerts = await alertsDb.get(`alerts_${quote.symbol}`);
  if (!alerts) return request.ok();

  const parsed = JSON.parse(alerts);
  parsed.forEach((alert) => {
      if (alert.direction === 'above' && quote.price >= alert.target) {
        pubnub.fire({
          channel: `alerts.${alert.userId}`,
          message: {
            symbol: quote.symbol,
            price: quote.price,
            target: alert.target,
            direction: 'above',
            triggeredAt: Date.now()
          }
        });
      }
      if (alert.direction === 'below' && quote.price <= alert.target) {
        pubnub.fire({
          channel: `alerts.${alert.userId}`,
          message: {
            symbol: quote.symbol,
            price: quote.price,
            target: alert.target,
            direction: 'below',
            triggeredAt: Date.now()
          }
        });
      }
    });

    return request.ok();
};

约束

  • 使用 PubNub signals 传输高频价格变动,以遵守消息速率限制并降低成本
  • 使用点分隔的命名空间设计频道名称(例如 quotes.AAPL、sector.tech、index.SPX),以便干净地使用通配符订阅
  • 在客户端实现陈旧数据检测:对超过可配置阈值的报价进行标记,让用户看到数据是否为最新
  • 遵守市场数据供应商协议,落实延时报价等级以及署名/免责声明要求
  • 用户从自选列表中移除标的后,清理频道组成员关系,避免不必要的订阅开销
  • 未获得适当授权前,切勿存储或转发原始交易所数据;使用 Access Manager 强制执行数据等级访问控制

MCP 工具

  • get_sdk_documentation — 获取特定 SDK 的发布/订阅和 signal API(通过 intent-to-tool 路由)
  • manage_functions(resource=package、operation=create)— 创建服务器端价格提醒评估器包
  • grant_token — 按市场数据等级颁发范围受限的授权
  • manage_apps — 确认已启用 Stream Controller,以支持高频变动的扇出

另请参阅

输出格式

提供实现方案时:

  1. 包含 PubNub SDK 初始化,并设置发布密钥和订阅密钥
  2. 展示频道命名规范,以及自选列表的频道组配置
  3. 在适用情况下,同时提供 publish(完整报价)和 signal(价格变动)示例
  4. 包含用于服务器端提醒评估的 PubNub Functions 代码
  5. 说明市场交易时段处理、陈旧数据检查和合规免责声明

评论

支持 Markdown