mcpField
F
flash-sale-engine

flash-sale-engine

github.com/finsilabs营销与增长6081 次安装5 天前更新
代码仓库

关于 flash-sale-engine

面向电商运营者的限时促销配置技能,介绍如何安排折扣、限制促销数量、添加倒计时,并为高需求发布设置等候室。

主要功能

  1. 01按平台配置限时促销
  2. 02安排折扣开始与结束
  3. 03设置促销数量上限
  4. 04添加倒计时器
  5. 05为热门发售排队访客

适用场景

  1. 01安排限时季节性促销
  2. 02限制促销价商品数量
  3. 03降低流量高峰时超卖风险
  4. 04管理限量商品发售队列

安装

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

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill flash-sale-engine

安装后在 Claude Code 中输入/flash-sale-engine确认已加载。

包含的文件

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

tile.json
evals/atomic-stock-reservation-with-redis/
criteria.json
task.md
evals/real-time-countdown-timer-via-sse/
criteria.json
task.md
evals/sale-scheduling-and-virtual-queue-manage/
criteria.json
task.md

详细介绍

限时抢购引擎

概述

限时抢购是有时间限制的折扣活动,通常持续 2–24 小时,旨在营造紧迫感并大幅提升转化率。要确保活动可靠运行,需要具备三项功能:向购物者显示倒计时、限制每场活动的商品数量以防止超卖,以及在活动结束时自动恢复价格。对于流量较大的新品发售(如新品限量发售、黑色星期五限时抢购),虚拟候场室也至关重要,可防止机器人囤货。大多数平台都有可处理这些需求的应用,无需编写自定义代码。

何时使用此技能

  • 举办有明确时限的促销活动时(例如,24 小时优惠、黑色星期五限时抢购),且活动必须在精确时间结束
  • 商品的限时抢购数量与主库存分开管理时
  • 预计流量激增,使用简单的库存检查可能导致超卖时
  • 需要候场室或排队机制,在需求旺盛的新品发售期间公平地让顾客进入时
  • 构建 deals 平台,且多个商品同时开展限时抢购时

核心说明

步骤 1:确定商家的平台并选择合适的工具
平台推荐工具原因
ShopifyCountdown Timer Bar、FOMO 或 Hextom Flash Sales 应用这些应用无需自定义代码,即可处理倒计时、定时调价和库存显示
Shopify PlusLaunchpad(Plus 用户免费)Shopify 官方限时抢购应用,可安排价格变更、启用或停用折扣码,并自动恢复价格
WooCommerceYITH WooCommerce Flash Sales 或 WooCommerce Sales Countdown可直接在商品页面管理促销价格和倒计时
BigCommerceBigCommerce Promotions 搭配倒计时自定义脚本BigCommerce 的促销引擎负责处理折扣;使用店面脚本实现倒计时界面
高流量新品发售(任何平台)Cloudflare Waiting RoomCloudflare 托管的候场室可公平地为访客排队,防止黄牛机器人垄断有限库存
自定义 / 无头架构使用 Redis 实现原子库存操作,并使用 SSE/WebSocket 实现计时器对于不适用应用的自定义平台,可提供完全控制
步骤 2:在平台上配置限时抢购

Shopify

选项 A:Shopify Launchpad(仅限 Plus,免费)

Launchpad 是 Shopify 官方的促销活动安排工具:

  1. 在 Shopify 管理后台中,前往 Apps → Launchpad
  2. 点击 Create event
  3. 设置活动名称(例如,“Black Friday Flash Sale 2026”)、开始时间和结束时间
  4. 在 Price changes 下:选择商品并为每件商品设置促销价
  5. 在 Publish/unpublish collections 下:可选择在活动期间显示或隐藏促销商品系列
  6. 在 Discount codes 下:在活动期间启用或停用特定折扣码
  7. 点击 Schedule — Launchpad 会在开始时间启用这些更改,并在结束时间自动撤销

重要:将限时抢购数量与主库存分开设置。如果限时抢购价只售 100 件,请在活动开始前将商品可用库存减至 100 件,之后再补充库存。Launchpad 原生不管理限时抢购数量。

选项 B:Hextom Flash Sales 应用(非 Plus)

  1. 从 Shopify App Store 安装 Hextom Flash Sales(约 $10/月)
  2. 创建一场活动,指定商品列表、折扣百分比和持续时间
  3. 该应用会在商品页面添加倒计时小组件,并自动更新价格
  4. 在应用设置中配置倒计时的外观

每件商品的数量上限: 使用 Shopify 内置的 库存跟踪 来设置限时抢购数量:

  1. 编辑商品变体 → 将库存数量设为限时抢购上限
  2. 启用 Track quantity 和 Stop selling when out of stock
  3. 活动结束后,将库存补充至实际数量

WooCommerce

选项 A:YITH WooCommerce Flash Sales 插件

  1. 从插件目录或 YITH.com 安装 YITH WooCommerce Flash Sales
  2. 前往 YITH → Flash Sales → Add New Flash Sale
  3. 设置:
    • 参与促销的商品
    • 促销价或折扣百分比
    • 开始日期/时间和结束日期/时间
    • 限时促销价对应的最大可售数量(与主库存分开计算)
  4. 插件会自动在商品页面显示倒计时,并在结束时间到达后恢复价格

选项 B:使用 WooCommerce 原生促销价和倒计时扩展插件

WooCommerce 原生支持为每件商品设置 Sale price 和 Schedule:

  1. 编辑商品 → Pricing 标签页
  2. 输入 Sale price
  3. 点击 Schedule 设置开始和结束日期
  4. 促销价会自动生效和失效

使用 Countdown Timer for WooCommerce(免费插件)或 WooCommerce Sales Countdown Timer 添加倒计时。

单件商品的限时促销数量: 在促销开始前,将商品的库存数量调低至限时促销数量上限,然后在促销结束后手动恢复,或通过计划脚本恢复。


BigCommerce
  1. 前往 Marketing → Promotions → Create Promotion
  2. 设置:
    • Promotion type:按百分比折扣或按金额折扣
    • Applies to:指定商品或分类
    • Active date range:开始和结束时间(BigCommerce 会自动恢复价格)
  3. 如需添加倒计时:
    • 前往 Storefront → Script Manager → Create a Script
    • 作用范围:指定页面 → 商品页面
    • 添加一个倒计时至促销结束时间的 JavaScript 计时器

BigCommerce 上的数量限制: 在促销中设置 Maximum uses 上限,以限制可使用限时促销折扣的订单数量;也可以使用商品的库存跟踪功能限制库存。


高需求发售的排队等候室(任何平台)

对于预计会有大量流量的商品发售(限量运动鞋、演唱会门票、独家商品):

Cloudflare Waiting Room(推荐)

  1. 在 Cloudflare 控制面板中,前往 Traffic → Waiting Room
  2. 点击 Create Waiting Room
  3. 设置:
    • Hostname 和 Path:商品页面 URL 模式(例如,/products/limited-edition-*)
    • Total active users:允许同时访问该页面的用户数上限
    • New users per minute:允许排队客户进入的速率
  4. Cloudflare 会向排队访客显示可自定义的等候室页面
  5. 客户按先进先出(FIFO)顺序进入;Cloudflare 的机器人管理功能会过滤机器人

此功能需要 Cloudflare Business 或 Enterprise 套餐。若要选择成本较低的替代方案,可考虑 Queue-it 或 Fastly's Waiting Room。


自定义 / 无头架构

对于自定义店面,使用 Redis 实现原子库存预留,以确保高并发场景下的安全性:

import { Redis } from 'ioredis';
const redis = new Redis(process.env.REDIS_URL);

// Atomically reserve one unit from the flash sale allocation
async function reserveFlashSaleUnit(saleId: string, customerId: string): Promise<boolean> {
  const key = `flash_sale:${saleId}:sold`;
  const maxKey = `flash_sale:${saleId}:max`;
  const max = parseInt(await redis.get(maxKey) ?? '0');
  if (max === 0) return false; // sale not configured

  // Atomic increment — safe under high concurrency
  const newCount = await redis.incr(key);
  if (newCount > max) {
    await redis.decr(key); // Undo the over-increment
    return false; // Sold out
  }
  return true;
}

// Send countdown timer data to the client via Server-Sent Events
app.get('/api/sales/:saleId/timer', async (req, res) => {
  const { endsAt, maxQuantity } = await db.flashSales.findById(req.params.saleId);
  res.setHeader('Content-Type', 'text/event-stream');
  res.setHeader('Cache-Control', 'no-cache');

  const interval = setInterval(async () => {
    const remaining = Math.max(0, new Date(endsAt).getTime() - Date.now());
    const sold = parseInt(await redis.get(`flash_sale:${req.params.saleId}:sold`) ?? '0');
    res.write(`data: ${JSON.stringify({ remaining, stockLeft: maxQuantity - sold })}\n\n`);
    if (remaining === 0) { clearInterval(interval); res.end(); }
  }, 1000);

  req.on('close', () => clearInterval(interval));
});

最佳实践

  • 使用以服务器为准的结束时间 — 绝不要让客户端计算促销何时结束;始终从服务器读取 UTC 结束时间戳,以防不同浏览器的计时器出现偏差
  • 将促销数量与主库存分开设置 — 限时促销库存是单独分配的;在订单确认前,不要从总库存中扣减限时促销数量
  • 在高流量发售前预先扩容基础设施 — 在大型促销开始前 48 小时,按预期峰值流量对结账流程进行负载测试;并据此扩展托管资源
  • 库存较少时显示“售完即止” — 显示实时库存数量(例如,“剩余 8 件”)可以营造紧迫感,但大量库存时应避免显示精确数量,因为这会显得不真实
  • 在预发布环境中测试完整促销周期 — 正式上线前,从计划开始时间到自动恢复价格,完整运行一次促销
  • Launchpad/应用管理的促销进行期间,切勿手动修改价格 — 手动修改可能导致自动恢复功能无法正常运行

常见问题

问题解决方案
促销结束后价格未恢复使用 Launchpad 或带自动恢复功能的倒计时应用;如果手动安排,请设置日历提醒并确认价格已恢复;建立备用检查机制,根据“事实来源”表验证价格
流量激增时超卖对于自定义构建,使用 Redis 原子递增;对于平台,在促销开始前将商品库存设置为限时促销上限
不同时区显示的倒计时不同始终以促销的绝对 UTC 结束时间为基准;在客户端计算 remaining = endsAt - Date.now()
机器人在真实客户购买前抢光所有库存使用 Cloudflare Waiting Room 或类似的排队系统;在订单系统中强制执行每位客户的购买限额
应用管理的倒计时与手动价格更改冲突Launchpad 活动或倒计时应用运行期间,请勿通过 Shopify 管理后台修改价格

相关技能

  • @coupon-management
  • @dynamic-pricing
  • @price-rules-engine
  • @bot-protection
  • @order-management-system

评论

支持 Markdown