今天该吃什么麦当劳?让塔罗替你抽一张,顺便被温柔地接住一下。
一个把「塔罗牌的仪式感」和「麦当劳的餐盘」缝在一起的 WorkBuddy Skill:78 张牌做确定性每日抽签,每张牌落到你账号可见的真实餐品与价格上,再出一张把汉堡画成塔罗圣像的牌面和一段像朋友说的话。默认多给套餐、顺手叠加立减与满减券;用户说「就它」时,还能走完核对价格 → 下单 → 支付链接的完整流程(付款永远由用户本人完成)。
牌面由
scripts/tarot_art.py+scripts/tarot_card.py纯代码绘制:深靛夜空、旧金双线框、拱形画窗、罗马数字、月相与星点。主画面把一份汉堡画成披着生菜披风、头顶光环、张臂托着法器的圣像;大阿卡纳各有自己的法器与天空(愚者的太阳、正义的天平与餐刀、世界的花环),小阿卡纳则把薯条/可乐/餐刀/汉堡币按张数串成一道半圆光环。逆位时圣像整体倒置。不再把商品照贴进画框,需要时用--photo在底部小票旁加一枚圆形餐品章。
装上我,你就能预测自己的今日运势。 🃏🍔 每天抽一张麦麦塔罗牌,牌面是一幅把汉堡画成圣像的塔罗画,落点是你今天该吃的那一份。
- 下载技能包:
mcd-tarot-skill.zip(Releasev1.0.0附件,179 KB)。 - 打开 WorkBuddy 左侧【专家 · 技能 · 连接器】→ 技能 → 添加技能 → 上传技能, 选中这个 zip,系统自动完成配置,不用再操作别的。
- 启用【连接器】
mcd-mcp(模板见assets/mcp-config.example.json),然后对它说「今日运势」。
为什么不是
git clone:云端版 WorkBuddy 出于安全不会帮你克隆并安装第三方仓库(它会明确拒绝)。 「上传技能包」是官方支持的分享方式,一次导入即可用。git clone只适合你自己在桌面版手动部署。
git clone https://github.com/likangkangkang/mcd-tarot.git ~/.workbuddy/skills/mcd-tarotWindows(PowerShell):
git clone https://github.com/likangkangkang/mcd-tarot.git "$HOME\.workbuddy\skills\mcd-tarot"按开放平台规范把技能包 zip 提交审核即可(详见 open.workbuddy.cn/docs/skill); 解析失败可邮件联系 openworkbuddy@tencent.com。
装好后对它说一句「今日运势」——它会先自我介绍、问你要不要开始,你回「是」就够了。
点外卖最难的从来不是「吃什么」,而是「今天我值得被怎么对待」。 这个 Skill 把那个模糊的问题,变成一次有仪式感、又真能落到一份具体汉堡上的小事:
- 确定性抽签 —— 按日期播种,同一天随时来抽都一样,像一份每日心情灵感,不是随机噪音。
- 真实菜单映射 —— 走麦当劳 MCP(
mcd-mcp)拉当日菜单,建议是具体单品/套餐 + 价格,不是空泛鸡汤。 - 知道你爱吃什么 —— 读历史订单与券包,得出常点品类、口味倾向、各时段习惯(早餐爱组合还是单品)、手上有什么券,再在牌意范围内优先推你爱吃的。
- 跟着饭点走 —— 按当前时间判定早餐/午餐/下午茶/晚餐/夜宵,同一张牌在早上和深夜给的建议不一样。
- 多给套餐,还会叠券 —— 默认套餐优先:套餐吃得更完整,也更容易吃到「划线价立减 + 满减券」这层叠加。只有当菜单里真有对应套餐、且这份套餐值得时才会升级,夜宵碰到清简牌意又没有优惠就保持轻盈,不硬塞。
- 套餐不藏内容 —— 抽到套餐时,名字下方直接写明里面每样餐品和数量(「麦辣鸡腿汉堡 ×1 | 薯条(中) ×1 | 可乐(中) ×1」),牌面小票上也会印出来;优先用官方明细,没有就按件数结合本店真实单品名推断,并标注「参考配置」。
- 图在前、文在后 —— 牌面直接呈现在对话框里(不靠附件卡片),每次抽牌只出一张牌面图;文字部分不再重复图里已有的餐品/明细/价格,只留一段细腻的感官解读和「就它」这个下一步。
- 解读有体温 —— 78 张牌每张都配了感官短句(热汽扑脸、冰块撞杯壁、芝士拉丝…)和正/逆位各一句低语,写的是「你今天怎样」,不是干巴巴的关键词。
- 顺势省一点 —— 只说「这道刚好能用哪张券、省多少」,不为了用券改推荐,也不做凑单比价。
- 快 —— 抽牌本身 5 毫秒;
scripts/quick.py走全本地缓存,不联网、不下图、不开浏览器,通常百毫秒内出结果(实测含出图 30ms)。 - 永远可演示 —— 没配 Token 也能跑(自动回退示例菜单),体验不打折。
| 玩法 | 适合 | 张数 |
|---|---|---|
today 今日宜吃 |
一句话决定今天吃啥(按日期确定性抽签) | 1 |
--question "你关心的问题" 塔罗预测 |
抛出一个问题,牌作为回答 | 1 |
每次抽牌都只出一张牌、一张图。同一问题同日结果稳定,不同问题会抽到不同牌。 正逆位都会给:逆位不做恐吓,落点永远是「允许、休息、被看见」。
在 WorkBuddy 里用(推荐)
- 把本目录放进技能目录(用户级为
~/.workbuddy/skills/mcd-tarot/)。 - 在【连接器】启用
mcd-mcp(配置模板见assets/mcp-config.example.json)。 - 直接说:
- 「用麦麦塔罗牌帮我抽今天的」→ 今日宜吃 + 牌面图
- 「帮我抽一张:明天面试能顺利吗」→ 牌作为这个问题的回答 + 牌面图
命令行 / 脚本(纯标准库,无需第三方依赖)
python3 scripts/tarot_engine.py --mood "加班到很晚,有点丧"
python3 scripts/tarot_engine.py --question "明天面试能顺利吗"
python3 scripts/tarot_engine.py --card-svg card.svg # 出一张牌面
python3 scripts/tarot_engine.py --lean # 精简文字(清单/价格交给牌面图)
python3 scripts/tarot_engine.py --inline - # 牌面 SVG 打 stdout(内联对话框用)
python3 scripts/tarot_engine.py --at "2026-10-20 12:30" # 模拟午餐时段
python3 scripts/tarot_engine.py --single-only # 关掉套餐优先
# 最快的一条路:读本地缓存直接出牌,不联网不下图(缓存缺失时先跑一次连接器)
python3 scripts/quick.py --mood "想被哄一下" --svg card.svg --timing
python3 scripts/quick.py --question "今天会发财吗" --inline --lean # 按问题抽一张预测
# 想接真实菜单(需要 Token):
export MCD_MCP_TOKEN=你的Token
python3 scripts/tarot_engine.py --spread today未配置 Token 或网络失败时自动回退示例菜单,命令照样跑。
抽牌本身只要 5ms——慢的从来不是塔罗,而是串行的网络往返(门店→菜单→订单→券包→可领券→积分)和图片渲染。所以:
| 优化 | 效果 |
|---|---|
quick.py 只读本地缓存 |
全流程 30ms(含出牌面 SVG) |
| 菜单按「门店 + 日期」缓存 | 同一天第二次抽牌 0 网络 |
口味画像 6 小时 TTL(profile.is_stale) |
不用每次重拉 4 个接口 |
| 牌面不再下载/内联商品图 | SVG 从 200KB+ 降到 21–27KB,渲染快且可秒传 |
PNG 改为按需(--png 才启 Chrome) |
平常只出 SVG,省 1–2 秒 |
门店(有缓存就不问) → 口味画像(订单/券包,6 小时内复用) → 当日菜单(当天只拉一次)
↓
确定性抽签(date 播种) → 牌 → 关键词打分映射真实餐品
↓
套餐优先(同品类套餐 → 随心配兜底) + 按饭点调形态 + 按画像挑更合口味的那道
↓
叠加优惠:套餐划线价立减 + 满减券;单品券不越界抵扣套餐
↓
牌面 SVG(汉堡圣像 + 法器,纯代码绘制) + 文字解读(牌意 → 为什么适合你 → 怎么买更省)
↓
用户说「就它」 → calculate-price 核价 → create-order → 支付链接交给用户自己付
mcd-tarot/
├── SKILL.md # 技能定义与工作流(连接器优先 + 缓存优先 + 下单红线)
├── scripts/
│ ├── tarot_deck.py # 78 张牌 + 麦当劳映射 + 情绪寄语 + 份量倾向 + 品类
│ ├── tarot_engine.py # 抽签(今日宜吃 / 按问题预测)、时段/形态/套餐升级、卡片入口
│ ├── tarot_art.py # 牌面图形元件:汉堡圣像、法器、星月、四色花色
│ ├── tarot_sense.py # 细腻文案层:每张牌的感官短句 + 正/逆位低语
│ ├── tarot_card.py # 牌面排版:夜空 + 拱窗 + 罗马数字 + 小票(SVG/PNG,单张牌面,--inline 内联对话框)
│ ├── mcp_client.py # 标准库 mcd-mcp 客户端 + 口味/券/套餐匹配打分
│ ├── profile.py # 口味画像:历史订单 → 常点/口味/时段;券包 → 优惠索引
│ ├── menu_from_connector.py # query-meals → 引擎菜单(保留图片/划线价/套餐标记)
│ ├── combo_detail.py # 套餐明细:官方明细缓存 → 按名推断,标注参考配置
│ ├── cache.py # 门店记忆 + 当日菜单缓存
│ ├── quick.py # 零网络快速抽牌(全本地缓存,30ms 级)
│ ├── selfcheck.py # 换季自检:价格覆盖 / 误映射 / 重复牌
│ └── order.py # 下单确认卡 + 订单记录(不代付)
├── tests/ # 单元测试(52 项)
│ └── test_tarot_engine.py
├── references/ # 安装维护 / MCP 集成 / 示例解读 / 参赛声明
├── assets/ # 连接器配置模板、requirements、示例牌面
└── 运行时数据在 ~/.cache/mcd-tarot/(门店、当日菜单、口味画像、订单,不入库)
python3 tests/test_tarot_engine.py # 52 项单测
python3 scripts/selfcheck.py # 换季自检,非零退出说明要修关键词
python3 scripts/cache.py clear --all # 缓存坏了就重建
python3 scripts/profile.py clear # 用户说「别记我」当前状态:78/78 张牌有价、关键词命中 78/78;确定性抽签,同日复现稳定;菜单里各品类都有套餐时,套餐占比可达 98%,平均每单省约 ¥9。
- 仓库不含任何真实 Token / 密钥,配置一律用
${MCD_MCP_TOKEN}占位。 - 抽牌只读菜单与个人订单/券包;下单只在用户明确要求时发生,付款永远由用户本人完成,不代付、不索要验证码。
- 口味画像只存在本机
~/.cache/mcd-tarot/profile.json,不上传、不入库,随时可清。 - 本技能不做占卜、不算命、不预测运势,只借塔罗意象做情绪陪伴与选餐建议。
- 参赛作品,非麦当劳官方产品;餐品、价格、供应以麦当劳官方实时结果为准。
| 文档 | 内容 |
|---|---|
SKILL.md |
完整工作流与下单红线 |
references/INSTALL.md |
安装、单一真源与更新方式 |
references/MCP_INTEGRATION.md |
MCP 工具与调用流程 |
references/sample_reading.md |
一份完整解读示例 |
