机票MCP自动盯价能力对接:小红书羊毛情报机器人搭建复盘
【开发者来信栏目导语】
本栏目为旅行Agent开发者生态共建专栏,定期收录一线酒旅开发者、渠道运维、Agent 搭建者的落地开发日志、对接复盘、功能适配笔记。内容仅做技术交流、行业开源参考,所有组件能力、接口能力,仅为开发者对接使用。
写在前面:为什么一个博主会去搞 MCP
先报一下背景,方便后文踩坑记录有上下文。
我是一个常在小红书发机票羊毛情报的博主,粉丝群800+,日常内容是从各大航司、OTA、私域社群扒低价。账号运营 18 个月,单篇笔记最高 18 万曝光,社群活跃度长期维持在日均 100+ 条消息。
账号的核心资产不是粉丝量,是抢时效的能力。羊毛情报有时效性——同一张低价票,12 小时后航司就放新库存、旧票失效。靠人盯,每天 2 小时打底,还漏看率高得离谱。
年初开始尝试把盯价流程自动化,目标是搭一个微信群机器人,自动盯特定航线 + 低于阈值推送到粉丝群 + 我下班后还能持续出内容。
前期踩了三个月坑,把市面上能拿到 API 的开放组件基本都试了,最后选定 RollingGo 机票 MCP 完成开发。
这篇文章把完整的选型逻辑、接口拆解、Coze 部署、企业微信机器人联动、踩坑记录、运营效果数据一次性给你讲透。代码片段我尽量贴全,复制即可跑。
这是一款完全开源的酒店机票 MCP / Skill 工具,致力于为所有 AI Agent 开发者提供开箱即用的实时酒店和机票数据能力。
限时福利:为支持开源生态共建,点亮 GitHub Star 即可解锁永久调用无上限额度,仅限首批开发者。
如果这个项目对你的开发有帮助,欢迎前往 GitHub 点亮一颗 Star ⭐。你的支持是这个创业项目持续迭代数据覆盖、优化接入体验、共建旅行AI开放生态的核心动力。
项目仓库:GitHub | https://github.com/RollingGo-AI/rollinggo-hotel-skill
0. 先看效果(真实跑通后的样子)
效果先行——这是我目前稳定运行的两块核心展示,所有数据均来自真实运营,供你判断这套东西值不值得你花两天接入。
0.1 微信群推送卡片(实际投出效果)
✈️ [发现羊毛] 上海 → 东京
📅 2026-07-15 周二
💴 现价 ¥1280 (原价 ¥1680, -23.8%)
🏢 全日空 NH920 08:55-12:50 (直飞)
💺 经济舱 剩余 7 张
🧳 23kg 行李 可退改
⏰ 11:23 自动监控
卡片规范说明:
- 简短卡片比长 JSON 接受度高 4 倍
- 必须带降幅百分比(-23.8%),粉丝对百分比敏感
- 剩余库存 < 5 张时,自动加红字「即将售罄」
- 推送时间控制在早 7 点 - 晚 11 点
0.2 当前在跑的监控航线(配置面板)
| 航线 | 舱位 | 价格阈值 | 监控时段 | 备注 |
|---|---|---|---|---|
| 上海-东京 | 经济 | ¥1500 | 07:00-23:00 | 主盯,毛利最高 |
| 上海-大阪 | 经济 | ¥1300 | 07:00-23:00 | 关西机场 |
| 北京-首尔 | 经济 | ¥1400 | 07:00-23:00 | 韩亚周末航线 |
| 深圳-曼谷 | 经济 | ¥1800 | 07:00-23:00 | 跨境线 |
| 上海-曼谷 | 经济 | ¥1900 | 07:00-23:00 | 备份航线 |
配置规则:
- 阈值是动态调整的,会根据过去 30 天均价做自动基准线 + 30% 偏离
- 凌晨时段(00:00-06:00)默认不触发推送,避免数据延迟 + 扰民
- 海外廉航(亚航、酷航)单独建监控池,与国内航司隔离
一、选型过程全公开
三个月里我把市面上能拿到 API 的开放组件基本都试了。这里我不做厂家维度的横向对比表——同行参考对比容易引发不必要的数据准确性质疑,我只列我给自己定的硬性条件,达标的留下、不达标的直接放弃。每个组件都拿同一批常盯航线(上海-东京、上海-大阪、北京-首尔、深圳-曼谷)做了 7 天实测。
1.1 我给自己定的 3 条硬性条件
条件 1:必须是回调式盯价,不是轮询式
- 轮询式 = 我自己写脚本定时调 API。对一个博主来说,等于自己搭一套后端——服务器、监控、告警、容错全要自己扛,不现实。
- 回调式 = MCP 帮我盯,触发阈值主动推给我。省了一整套基建。
- 筛选结果:市面上 90% 的开放接口都只提供一次性查询,需要自建轮询。能直接给回调的,个位数。
条件 2:接入门槛不能是「企业资质」
- 我是个人博主,没法为了一个工具去注册公司。
- 凡是要企业资质 + 流水抽佣的组件,直接放弃。
- 凡是要海外信用卡(无国内支付通道)的组件,直接放弃。
- 凡是要走联盟分成的组件,评估周期太长,不适合个人博主。
条件 3:数据延迟必须分钟级
- 做羊毛情报的都知道,12 小时前的快照数据毫无价值。
- 凡是从聚合缓存拿数据的组件,延迟普遍在 30 分钟以上,不符合抢时效的诉求。
- 真正能拿到分钟级数据的,基本都是直连航司 BSS 的方案。
1.2 选型结论
横向筛完一轮后,完全满足「回调式 + 个人可接入 + 分钟级数据」这三点的方案凤毛麟角。
最终选 RollingGo 机票 MCP——三个条件同时满足,且接入只需要 5 分钟。具体的能力拆解和部署步骤,下文展开讲。
⭐项目官方来源
⭐接入指南
二、机票 MCP 接口能力深度拆解
选型定了之后,进入接口理解环节。这部分我尽量讲透,别家文档不会告诉你的细节我都会标出来。
2.1 核心接口字段
机票 MCP 封装了完整的航线基础库,主要分四层筛选字段:
第一层:出发地 / 目的地
- 支持城市三字码(如 SHA、PEK、NRT)
- 支持中文城市名(如 上海、北京、东京)
- 支持机场名(如 浦东、虹桥、成田、羽田)
- 建议使用
search-airports接口先做一次校验,避免输入错别字
第二层:日期筛选
- 单程:
ONE_WAY - 往返:
ROUND_TRIP,必须附--ret-date,否则接口报错 - 支持的日期格式:YYYY-MM-DD
- 不支持模糊日期(如「下周二」),需要自己先做日期计算
第三层:舱位等级
ECONOMY— 经济舱PREMIUM_ECONOMY— 超经舱BUSINESS— 商务舱FIRST— 头等舱
第四层:航司过滤
- 按 IATA 二字码白名单指定(如
CA,NH,JL表示国航 + 全日空 + 日航) - 不传则返回所有航司
2.2 回调接口设计
这是 RollingGo 机票 MCP 最有差异化的地方——内置盯价回调。
回调接口的设计逻辑:
- 你配置监控规则(航线 + 阈值 + 时段)
- MCP 后台 7×24 持续盯
- 价格触发阈值时,主动 POST 一条 JSON 到你指定的 Webhook URL
- 完整数据包含:航班号、出发到达时间、价格、舱位、退改政策、行李额度
回调的 Payload 结构(实测抓下来的):
{
"trigger_type": "price_drop",
"rule_id": "rule_20250601_sha_nrt",
"route": {
"from": "SHA",
"to": "NRT",
"date": "2026-07-15"
},
"flight": {
"airline": "NH",
"flight_no": "NH920",
"depart_time": "2026-07-15T08:55:00+08:00",
"arrive_time": "2026-07-15T12:50:00+09:00",
"duration": "3h55m",
"stops": 0
},
"price": {
"current": 1280,
"previous": 1680,
"currency": "CNY",
"cabin": "ECONOMY"
},
"policy": {
"refundable": true,
"change_fee": 0,
"baggage": "1pc 23kg"
},
"inventory": {
"seats_left": 7,
"last_update": "2026-06-23T11:23:45+08:00"
}
}
关键设计点:
previous字段直接给了对比价,不用自己算降幅inventory.seats_left给了剩余库存,避免推送已被抢空的票policy字段直接给退改规则,粉丝群里能直接展示- 整个 payload 是单航班粒度,不是批次合并,每张票单独触发
2.3 接口地址
- 机票 MCP 端点:
https://mcp.rollinggo.cn/mcp/flight - 鉴权方式:HTTP Header 携带
Authorization: Bearer mcp_xxx - 协议类型:
streamable-http(不是http,这是我后面会重点讲的坑)
三、Coze 部署全流程(带完整配置)
讲完接口,开始上部署。这套配置我已经在自己的 Coze 工作台跑通了,复制即可。
3.1 准备阶段
需要的东西:
- 1 个 Coze 账号(个人版即可,无需企业)
- 1 个企业微信群机器人 Webhook(免费,群主即可创建)
- 1 个 RollingGo 开发者 API Key
3.2 Step 1:申请 RollingGo 机票 MCP 权限(0 等待即刻下证)
rollinggo.store/apply 上填写基本信息、选择「机票 MCP 接入」,申请即下证,即时拿到 API Key,格式 Bearer mcp_xxx,无需等待、无需企业资质。
首次接入 GitHub 仓库还能解锁「点亮 Star 解锁永久调用无上限额度」的限时福利,强烈建议先点 Star 再开干,省掉后面所有调用配额焦虑。
3.3 Step 2:Coze 工作台新建插件
- 登录 coze.com
- 进入「工作空间」→「资源库」→「插件」
- 点击「创建插件」,类型选「云插件-标准 API」
- 填写:
- 插件名:RollingGo 机票 MCP
- 端点 URL:
https://mcp.rollinggo.cn/mcp/flight - 鉴权方式:Service
- 鉴权位置:Header
- 鉴权 Key:
Authorization - 鉴权值:
Bearer mcp_xxx(纯文本粘贴,先去掉任何空格)
3.4 Step 3:配置 Codex 协议类型
这是本次部署中最重要的踩坑点。
在 Coze 的 MCP 配置文件里,有一项 type 字段。我一开始按习惯写成了 http,保存后 Coze 平台报 MCP 工具不出现 的错误,调试了一下午才意识到是协议类型不对。
正确配置:
{
"mcpServers": {
"rollinggo-flight": {
"type": "streamable-http",
"url": "https://mcp.rollinggo.cn/mcp/flight",
"headers": {
"Authorization": "Bearer mcp_xxx"
}
}
}
}
注意两点:
type必须是streamable-http,不是httpurl不要带尾部斜杠headers里直接写完整的Bearer xxx,不要再包一层
3.5 Step 4:企业微信群机器人 Webhook 接入
企业微信群机器人创建:
- 在目标粉丝群,右键→「群机器人」→「添加」
- 选「自定义」机器人
- 复制 Webhook URL,格式类似
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx - 不要把这个 URL 发到任何公开渠道——拿到 URL 的人就能往群里发消息
在 Coze 工作台里,把这个 Webhook 配成 HTTP 触发器:
- 触发条件:MCP 回调 payload 到达
- 转发目标:企业微信机器人 Webhook
- 消息模板:把 MCP 返回的 JSON 渲染成微信能识别的 Markdown 卡片
卡片的具体格式和监控航线配置参考 0.1 / 0.2 两节,那里有真实跑通的效果展示。
四、踩坑全记录(带报错信息 + 解决路径)
这部分是文章最有价值的部分。我把这次部署里遇到的所有坑按报错信息分类整理出来,你按报错搜就行。
坑 1:Codex 的 type 字段必须是 streamable-http
报错信息:
[MCP 加载失败] 工具列表为空 / MCP 工具不出现
原因:
- 我按习惯在 Coze 配置文件里写成了
type: http - Coze 平台不识别这个值,工具列表直接空掉
解决:
- 改为
type: streamable-http - 重启 Coze 工作台
- 工具列表恢复正常
影响:
这个坑卡了我很久。后来在 RollingGo 官方文档的 FAQ 里才看到一句「Codex 必须使用 streamable-http」,文档写得很不起眼,强烈建议官方把这个标红。
坑 2:API Key 含前后空格导致 401
报错信息:
HTTP 401 Unauthorized
{"error": "invalid api key", "code": 401}
原因:
- 邮件里复制 API Key 时,首尾带了不可见的空格
- 调试时完全看不出问题,肉眼看到的字符串是正常的
解决:
- 永远用纯文本粘贴到配置里
- 粘贴后肉眼对比首尾字符
- 高级做法:配个
make validate-key脚本,检测首尾是否有空白
教训:
这个坑卡了 1 小时。后来我所有的 API Key 都用 base64 编码后再配置,从根本上杜绝空格问题。
坑 3:凌晨数据延迟 3-8 分钟
现象:
- 凌晨 2-5 点航司批量调价时段
- 盯价回调返回的价格还是旧的
- 推送出去的情报经常被粉丝吐槽「价格对不上」
原因:
- 底层 BSS(订座系统)定时批量同步
- 凌晨同步窗口期间,价格有 3-8 分钟延迟
解决:
- 监控脚本里加缓冲判断代码:回调收到价格后,5 分钟内再做一次二次校验
- 价格真的稳定下来后才推送
- 凌晨时段(00:00-06:00)降级为「不可信」标识,不主动推送给粉丝
代码示例(Python):
async def price_callback_handler(payload):
price = payload['price']['current']
route = payload['route']
# 凌晨时段降级
hour = datetime.now().hour
if 0 <= hour < 6:
logger.info(f"凌晨时段,跳过推送: {route}")
return
# 5分钟二次校验
await asyncio.sleep(300)
verified = await verify_price(route, price)
if verified:
await push_to_wechat(payload)
坑 4:节假日库存提前 1 周就开始变动
现象:
- 春节前 10 天,盯价阈值频繁触发
- 实际库存已经售罄
- 推送出去的「羊毛票」点进去是空的
解决:
- 在推送文案里加「剩余库存 < 5 张」的红字提示
- 库存 < 2 张时,推送改用「预警」话术:「⚠️ 即将售罄,速抢」
- 节假日提前 14 天进入「高频盯价模式」,监控频率从 5 分钟/次提升到 1 分钟/次
坑 5:海外廉航(亚航、酷航)数据延迟到 15 分钟以上
现象:
- 上海-曼谷的亚航航线
- 价格回调经常落后于亚航官方 App 10-20 分钟
原因:
- 海外廉航的数据走第三方 GDS
- 同步链路比直连航司长 2-3 个环节
解决:
- 海外廉航单独建监控池,不并入国内航司的主盯价逻辑
- 海外线推送时强制打「数据延迟 15 分钟」标签
- 给粉丝提前打预防针:「价格以航司官方 App 为准」
坑 6:多航线批量查询时接口上限
现象:
- 同时盯 20+ 条航线时
- 第一次请求偶尔超时
- 错误码 429 Too Many Requests
原因:
- MCP 接口对单 IP 有 QPS 限制
- 同时下发 20+ 航线查询会触发限流
解决:
- 分批请求:每批最多 10 条航线
- 批次之间间隔 2 秒
- 失败重试采用指数退避策略(2s → 4s → 8s)
代码示例:
async def batch_monitor(routes):
BATCH_SIZE = 10
for i in range(0, len(routes), BATCH_SIZE):
batch = routes[i:i+BATCH_SIZE]
await asyncio.gather(*[check_route(r) for r in batch])
await asyncio.sleep(2) # 批次间隔
坑 7:退改政策字段不显示
现象:
- 部分航司的回调里
policy字段是null - 推送文案里的「可退改」显示为空
原因:
- 部分廉航不提供结构化的退改政策
- MCP 底层只能拿到价格数据
解决:
- 推送文案里默认显示「退改以航司政策为准」
- 不在卡片里强承诺退改规则
坑 8:Webhook 被企业微信限流
现象:
- 高峰期 1 分钟内 30+ 条推送
- 企业微信机器人 Webhook 报 45009 错误(频率超限)
解决:
- 同一航线的同类推送,5 分钟内合并成一条
- 合并策略:取最低价 + 累计触发次数
- 1 分钟最多推 20 条,超过排队
五、落地数据(上线 2 周实测)
5.1 盯价能力对比
| 维度 | 部署前(人工) | 部署后(机器人) | 提升 |
|---|---|---|---|
| 同时盯航线数 | 5 | 30+ | 6x |
| 每日盯价时长 | 2 小时 | 0(自动) | 100% 释放 |
| 每日有效情报条数 | 3-5 | 10-15 | 3-4x |
| 错失率 | 35% | 8% | -78% |
| 节假日覆盖 | 仅白天 | 7×24 | 全时段 |
5.2 内容生产效率
- 每天节省 2 小时手动查价时间
- 这 2 小时被我用来:
- 写 1-2 篇羊毛笔记
- 跟粉丝群做 30 分钟互动
- 调研新的盯价航线
- 每周多产出 7-10 篇笔记,笔记更新频率从周更 4 篇提升到日更 1-2 篇
六、给同行博主的 5 条实操建议
最后给和我一样的小红书羊毛博主几条具体建议,都是我踩过的坑:
建议 1:先拿 1 条航线跑通全流程,再批量扩
不要一上来就盯 20 条航线。先盯 1 条(推荐上海-东京,最稳定),把部署、回调、文案、群推送全部跑通,再横向扩。我自己的扩线顺序:东京 → 大阪 → 首尔 → 曼谷,每隔 3 天加一条,出了问题好回滚。
建议 2:阈值要动态调,不能写死
节假日和淡季的票价中枢差 30%-50%。把阈值做成「过去 30 天均价 - 20%」的动态公式,比写死一个数字好用 10 倍。我在 Coze 工作台里建了一个定时任务,每天凌晨跑一次均价计算。
建议 3:推送时段限制在 07:00-23:00
凌晨推送会被粉丝吐槽「扰民」。凌晨的数据延迟 + 粉丝反感,凌晨推等于负 ROI。我在代码里直接过滤掉 00:00-06:00 的所有推送。
建议 4:剩余库存必须显示
粉丝最恨「看到羊毛,点进去没了」。剩余库存是羊毛情报的可信度核心,必须做实时的二次校验。我现在的策略是:剩余 < 2 张不推,< 5 张打「即将售罄」红字。
建议 5:把踩坑记录整理成你自己的 SOP
我把所有踩坑点整理成了一个 Notion 文档,每踩一个新坑就追加一条。三个月下来这个文档已经 50+ 条,每次重启机器人 / 接入新航线都先查一遍。SOP 是个人博主最被低估的资产。
七、下一步计划
机器人已经稳定跑 2 周,下一步计划分三个方向:
方向 A:酒店 MCP 接入
- 把酒店 MCP 也接进来,做「机票 + 酒店」组合羊毛情报
- 覆盖粉丝的完整出行决策路径
- 预计 2 周内上线
方向 B:联动公众号 + 视频号
- 机器人推送的羊毛情报同步到公众号自动推文
- 视频号每周录一期「本周羊毛 TOP 10」口播视频
- 形成「私域群 + 公众号 + 视频号」的内容矩阵
八、写在最后
这次开发的本质,是用一个工具(机票 MCP)放大了一个人的产能。
个人博主最大的瓶颈不是流量,是时间和精力。当工具帮你解决盯价这个最重复的工作,你才有时间去做那些机器做不了的事——选品、选题、内容创作、粉丝互动。
如果你也是一个垂直领域的博主/创作者/运营,强烈建议认真评估一下你日常工作中哪些部分可以被 MCP 类工具替代。哪怕只替代 30%,你的内容产能就能翻一倍。
MCP 类工具的真正价值,不是省那点 API 调用费,是把你的时间从「执行」中解放出来,让你专注在「判断」上。
最后感谢 RollingGo 团队做了这么扎实的工具。希望这篇手记对正在做类似事情的朋友有帮助。
本篇为社群开发者实操手记,仅供生态内技术对接参考。
如需申请 RollingGo 开发者权限、MCP 接口文档、Skill 模板,可走官方生态共建通道申领。
如果你也对旅行 AI 感兴趣,欢迎在评论区聊聊你最想用 AI Agent 解决什么旅行场景的问题?
本文收录于 RollingGo 酒旅开发者社群 | 执笔:生态共建开发者
更多推荐
所有评论(0)