FatSecret 营养 API 集成,支持食物搜索、营养查询、条码扫描、菜谱搜索及饮食日志记录。适用于用户需要...
FatSecret 营养 API. 完成与 FatSecret 的整合,用于食品数据查询和日记记录.是一项面向实际任务的技能,主要用于QQ 认证方法. 这一技能支持两种不同用途的认证方法 ca。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
与 FatSecret 完整集成,支持食物数据查询及日记记录功能。
本技能支持两种认证方式,适用于不同使用场景:
| 方式 | 适用场景 | 是否需要用户登录 | 能力范围 |
|---|---|---|---|
| OAuth2(client_credentials) | 只读访问 | ❌ 否 | 食物搜索、条形码查询、食谱搜索 |
| OAuth1(三段式) | 完全访问权限 | ✅ 是(一次性 PIN) | 以上全部 + 日记记录 |
mkdir -p ~/.config/fatsecret
cat > ~/.config/fatsecret/config.json << EOF
{
"consumer_key": "YOUR_CONSUMER_KEY",
"consumer_secret": "YOUR_CONSUMER_SECRET"
}
EOF
cd /path/to/fatsecret-skill python3 -m venv venv source venv/bin/activate pip install -r requirements.txt
# 搜索功能立即可用 ./scripts/fatsecret-cli.sh search "chicken breast"
# 运行认证流程 ./scripts/fatsecret-cli.sh auth # 按提示操作: # 1. 访问授权 URL # 2. 使用 FatSecret 账户登录 # 3. 授权该应用 # 4. 输入显示的 PIN 码 # 此后即可记录食物 ./scripts/fatsecret-cli.sh quick egg 3 Breakfast
| 命令 | 所需认证 | 说明 |
|---|---|---|
search |
OAuth2 | 搜索食物 |
barcode |
OAuth2 | 条形码查询 |
recipes |
OAuth2 | 搜索食谱 |
auth |
- | 运行 OAuth1 认证流程 |
log |
OAuth1 | 向日记添加食物(交互式) |
quick |
OAuth1 | 快速记录至日记 |
from scripts.fatsecret_agent_helper import (
get_authentication_flow,
complete_authentication_flow,
save_user_credentials
)
# 检查认证状态
state = get_authentication_flow()
if state["status"] == "need_credentials":
# 提示用户输入 Consumer Key / Secret
# 使用 save_user_credentials(key, secret) 保存
pass
elif state["status"] == "need_authorization":
# 向用户展示授权 URL
url = state["authorization_url"]
# 用户访问该 URL,完成授权并获取 PIN
# 使用 complete_authentication_flow(pin) 完成认证
pass
elif state["status"] == "already_authenticated":
# 可直接调用日记相关功能
from scripts.fatsecret_diary_simple import quick_log
quick_log("egg", quantity=3, meal="Breakfast")
| 函数 | 说明 |
|---|---|
get_authentication_flow() |
检查认证状态,返回下一步操作 |
save_user_credentials(key, secret) |
保存 API 凭据 |
complete_authentication_flow(pin) |
使用 PIN 完成 OAuth1 认证 |
quick_log(food, qty, meal) |
向日记中记录食物 |
log_food(food_id, serving_id, grams_or_ml, meal, name) |
精确记录(指定份量单位) |
search_food(query, tokens) |
搜索食物 |
grams_or_ml 参数说明grams_or_ml 参数(FatSecret API 中称为 number_of_units)表示实际重量或体积值,而非倍数!
# ❌ 错误 —— 此处仅记录了 1.56 克(7 kcal)! log_food(food_id, serving_100g_id, 1.56, "Breakfast", "Cookies") # ✅ 正确 —— 此处记录了 156 克(741 kcal) log_food(food_id, serving_100g_id, 156, "Breakfast", "Cookies")
示例:
| 你希望记录的内容 | 份量类型 | grams_or_ml 值 |
|---|---|---|
| 156 克曲奇饼干 | "100g" 份量 | 156 |
| 200 毫升牛奶 | "100ml" 份量 | 200 |
| 3 个鸡蛋 | "1 large egg" 份量 | 3 |
| 2 片面包 | "1 slice" 份量 | 2 |
所有凭据和令牌均本地存储:
| 文件 | 内容 | 创建者 |
|---|---|---|
$CONFIG_DIR/config.json |
Consumer Key / Secret | 用户(手动) |
$CONFIG_DIR/oauth1_access_tokens.json |
OAuth1 访问令牌 | auth 命令 |
$CONFIG_DIR/token.json |
OAuth2 令牌(自动刷新) | OAuth2 客户端 |
其中 $CONFIG_DIR 默认为 ~/.config/fatsecret;若设置了环境变量 FATSECRET_CONFIG_DIR,则以该值为准。
撤销访问权限方法: 删除配置目录,并在 FatSecret 账户设置中撤销该应用的访问权限。
在容器化环境(Docker、OpenClaw sandbox)中,~/.config/ 目录可能无法在重启后持久保留。请使用 FATSECRET_CONFIG_DIR 指向一个持久化卷:
# 设置环境变量指向持久化目录 export FATSECRET_CONFIG_DIR="/home/node/clawd/config/fatsecret" # 或在命令前加前缀 FATSECRET_CONFIG_DIR="/persistent/path" ./scripts/fatsecret-cli.sh auth
OpenClaw 示例 —— 添加到 shell 初始化脚本或 AGENTS.md 中:
export FATSECRET_CONFIG_DIR="/home/node/clawd/config/fatsecret"
部分 FatSecret API 套餐要求 IP 白名单。如需使用代理,请配置如下:
# 环境变量方式
export FATSECRET_PROXY="socks5://127.0.0.1:1080"
# 或在 config.json 中配置
{
"consumer_key": "...",
"consumer_secret": "...",
"proxy": "socks5://127.0.0.1:1080"
}
若无需代理: 本技能可在无代理情况下正常运行。仅当 FatSecret 封禁了你的 IP 时才需要配置代理。
针对欧洲地区商品,可使用免费的 Open Food Facts API(无需认证):
from scripts.openfoodfacts_client import OpenFoodFactsClient
off = OpenFoodFactsClient(country="it")
products = off.search("barilla")
product = off.get_product("8076800105735") # 条形码
fatsecret/
├── SKILL.md # 本文档
├── README.md # GitHub / ClawHub 项目说明
├── requirements.txt # Python 依赖:requests、requests[socks]
├── scripts/
│ ├── fatsecret-cli.sh # 主 CLI 脚本(bash 包装器)
│ ├── fatsecret_auth.py # OAuth1 三段式认证
│ ├── fatsecret_agent_helper.py # Agent 辅助函数
│ ├── fatsecret_diary_simple.py # 日记记录(OAuth1)
│ ├── fatsecret_client.py # OAuth2 客户端(只读)
│ └── openfoodfacts_client.py # Open Food Facts 客户端
└── examples/
└── agent_usage_example.py # Agent 集成示例
~/.config/fatsecret/ 目录中~/.config/fatsecret/ 并在 FatSecret 账户设置中撤销该应用权限相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.5万人学习