walk-kcal
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Gecti
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
你今天还能吃多少卡,取决于你愿意走多远 —— 用步行距离换卡路里额度的吃饭决策。麦当劳官方营养值 × 周边餐厅,算你这顿还吃得下什么。
walk-kcal
你今天还能吃多少卡,取决于你愿意走多远。
麦当劳程序员节创意开发大赛参赛作品
English TL;DR (the README below is in Chinese)Walk-Kcal turns walking distance into a meal calorie budget: 450 kcal + 4 kcal per 80 m.
Walking 800 m buys you +44 kcal — about half an apple.
Given a location, it lists nearby restaurants and their recommended dishes, estimates kcal per
dish in explicit layers (exact recipe → category median → store-type prior → "unknown"),
and marks each dish as fits your budget or over. McDonald's nutrition comes from the official
China MCP (query-nearby-stores, list-nutrition-foods); other restaurants are estimated from a
Chinese recipe corpus, with the layer and error range disclosed per dish.
⚠️ Not a turnkey tool for your country. Map data and the recipe corpus are Chinese.
What ports is the pipeline — plug in your own map API (Google / OSM) and nutrition source
(USDA / OpenFoodFacts), and keep the abstain layer.
Demo (no install): https://adexbn.github.io/walk-kcal/
站在楼下纠结「现在吃什么」时,你真正想知道的是——这一顿,我吃得下吗?

一张竖屏长图:附近哪家店、哪道菜你这顿吃不吃得下 —— 绿色 = 吃得起,红色 = 超了(划掉)。
反常识:麦当劳居然是个低热量选项
我们把麦当劳官方营养表(158 条)和 155 万条中餐菜谱摊在一起算了一遍。
- 麦香鱼 325 卡 · 麦满分 250 卡 · 迷你草莓新地 122 卡
- 而隔一条街那家面馆的红烧肉盖饭,780 卡起步
同一街区里,麦当劳的推荐菜大多落在普通人的一餐额度之内。
这不是我们编的,是算出来的。
对热量预算紧张的人来说,走进麦当劳,反而是最安全的选择。
这个工具能做什么
| 你说 | 它做 |
|---|---|
| 我现在还能吃 450 卡,附近有什么能吃的 | 算额度、列附近店、每道菜标「吃得下 / 超了」 |
| 走过去 500 米能多吃多少 | 走 500 米 ≈ 多挣 28 卡,额度实时重算 |
| 麦当劳和隔壁面馆哪个更合适 | 同一额度下对比热量,一眼看出差距 |
| 这家店整体会不会吃超 | 按推荐菜相对额度给店铺定性 |
输出一张竖屏长图,可以直接发微信、发小红书。
独特之处
同类赛道里,大多数项目只算了菜品的热量;提到「步行」的,几乎没几个把它接到热量上。
| 别人通常做的 | 我们做的 |
|---|---|
| 算一下麦当劳某一款汉堡的热量 | 你楼下的任意一家店,例如麦当劳 |
| 把距离当成「还有多远」 | 把距离换成「这顿能多吃多少卡」 |
| 只做一个平台 | 三种形式,共用同一份内核 |
三种形式,同一份结果:
| 形式 | 怎么用 | |
|---|---|---|
| ① | Skill | 对 Agent 说一句「附近吃什么」 |
| ② | Bot | 在聊天软件里发消息,回复带可点的按钮 |
| ③ | MCP | 从任何 MCP 客户端调用,标准 JSON-RPC |
麦当劳 MCP 开放的,是它自己的营养表。可真实场景里,你 400 米外那家面馆多少卡?
没有人做这件事。我们做了。
内置两款能力 —— 也可以接你自己的
这个 demo 自带两款数据源,开箱即用:
| 能力 | 供什么 | 来源 |
|---|---|---|
| 麦当劳 | 门店 + 推荐菜 + 官方精确营养值(官方表 158 条,含蛋白/脂肪/碳水/钠/钙) | 麦当劳官方 MCP |
| 高德地图 | 周边任意餐厅 + 网友推荐菜 + 真实路网步行距离 | 高德开放平台 |
麦当劳的两条通道
| 通道 | 怎么开 | 你拿到什么 |
|---|---|---|
| 内置快照 | 什么都不用配 | 门店 + 推荐菜 + 官方热量值(收录 demo 用到的 22 条;官方全表 158 条,2026-10-16 已用实时表逐条校准) |
| 实时数据 | 配上 MCD_MCP_TOKEN(+ WALKKCAL_MCD_LIVE=1) |
门店与营养值都实时从 mcp.mcd.cn 拉 |
只想看个 demo、不想去申请 Token? 直接跑就行 —— 效果是完整的。
想要实时的门店和营养值,再去申请一个 Token 也不迟:https://open.mcd.cn/mcp(免费)。
可以按需组合 —— 一个环境变量的事:
| 你想要的 | 怎么配 | 你会拿到 |
|---|---|---|
| 两个都要(默认) | 不设 | 麦当劳与周边餐厅合并成一份结果 |
| 只要麦当劳 | WALKKCAL_PACKS=mcd |
只有麦当劳,全部官方精确值 |
| 只要周边餐厅(即「只要地图」) | WALKKCAL_PACKS=nearby |
只有你楼下那些面馆、火锅、小吃 |
也可以接你自己的 —— 点评的企业接口、美团、或者你手上任何一份门店/菜品数据。
数据源是可插拔的:加一个文件 + 一个环境变量,主流程 0 行改动。
麦当劳在这里是一个可信的数据源,不是一个产品的边界。
跑起来
先跑内置场景 —— 这一步一个 Key 都不需要。
git clone https://github.com/adexbn/walk-kcal && cd walk-kcal
python walkkcal/render.py # 出图(内置场景,1~2 秒)
open demo/explore.html # 离线可交互 demo
快照里已经存好了门店、推荐菜、步行距离和热量 —— 麦当劳的官方营养值也是内嵌的
(demo 用到的 22 条,已按官方实时表校准)。
两套数据源,各配各的 —— 都不配也能跑:
| 数据源 | 配了你会得到 | 需要什么 |
|---|---|---|
| 麦当劳 | 门店与营养值走实时(而非内置快照) | MCD_MCP_TOKEN + WALKKCAL_MCD_LIVE=1 |
| 地图(默认高德) | 你周边任意餐厅 + 真实步行距离 | 高德地图的 AMAP_KEY |
# 抓新点位:地址 → 坐标 → 抓数 → 出图,实测约 16 秒
python walkkcal/shoot.py "上海市黄浦区南京东路100号"
输出格式是可选的:默认出 SVG —— 浏览器打开就能看、放大不糊,大多数场景够用;
想要 PNG(例如直接发微信、小红书),装一个很小的扩展包即可。
全部命令、5 个内置实拍场景、换点位、跨城市、环境变量总表
→docs/快速开始.md
这两款能力是怎么接进来的
不看代码也能看懂的部分:
- 地图 / 语料 / 渠道都是可插拔的。 上层只认一套通用接口 —— 门店用经纬度,
热量用菜名,业态用归一化后的 12 个词。 - 某家的私有格式一律关在它自己的适配层里。 地图服务商的类目名怎么翻译、
某个品牌的门店接口只吃文字地标而不收经纬度 —— 这些差异都消化在各自的
provider / pack 内部,主流程一行都不用改。 - 所以换一家(百度、点评、美团…)= 加一个文件 + 一个环境变量。
想看它落到实处 → walkkcal/providers/(地图)·packs/(数据源)· docs/扩展开发.md
麦当劳那条链的具体调用(用了哪些 Tool、怎么和本地估算融合)
→ MCP_INTEGRATION.md
我们诚实地告诉你
额度是你自己定的预算,不是算法塞给你的建议 —— 走路只让它随距离增长。
中餐热量是估算的(平均误差 25–28%),因为语料库里 0% 的菜谱标注了份量。
我们花最大力气的地方不是「算得更准」,而是知道什么时候算不准,然后如实显示「算不出」——
而不是猜一个看起来正常的数字。
宁可少算,不可算错。 详见 →
docs/数据源与误差.md
免责
本项目为麦当劳程序员节创意开发大赛参赛作品,由参赛者独立开发,非麦当劳官方产品。
输出仅供参考,不构成医疗、营养或其他专业建议。
餐品信息、价格及供应状态以麦当劳官方渠道的实时结果为准。
如果它帮到你了
如果你也常在楼下纠结「这顿吃什么」,它帮你把账算清楚了一点 ——
那点一下右上角的 ⭐ Star 就是最好的鼓励。它不会改变代码,
但会让更多同样在纠结的人看到这个工具。
(也欢迎提 Issue 说说你那个城市的菜算得准不准:哪个算错了、哪个该有却没有。
这比 Star 对它更有用。)
你今天还能吃多少卡,取决于你愿意走多远。
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi