Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
FatSecret nutrition API integration for food search, nutritional lookup, barcode scanning, recipe search, and food diary logging. Use when user needs to find...
FatSecret nutrition API integration for food search, nutritional lookup, barcode scanning, recipe search, and food diary logging. Use when user needs to find...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Complete integration with FatSecret for food data lookup AND diary logging.
This skill supports two authentication methods for different use cases: MethodUse CaseUser Login RequiredCapabilitiesOAuth2 (client_credentials)Read-only accessβ NoFood search, barcode lookup, recipesOAuth1 (3-legged)Full accessβ Yes (one-time PIN)All above + diary logging
Just searching foods? β OAuth2 (simpler, no user login) Logging to user's diary? β OAuth1 (requires user authorization)
Go to https://platform.fatsecret.com Register an application Copy your Consumer Key and Consumer Secret
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
# Search works immediately ./scripts/fatsecret-cli.sh search "chicken breast"
# Run authentication flow ./scripts/fatsecret-cli.sh auth # Follow prompts: # 1. Visit the authorization URL # 2. Log in with FatSecret account # 3. Authorize the app # 4. Enter the PIN shown # Now you can log foods ./scripts/fatsecret-cli.sh quick egg 3 Breakfast
CommandAuth RequiredDescriptionsearch <query>OAuth2Search foodsbarcode <code>OAuth2Barcode lookuprecipes <query>OAuth2Search recipesauth-Run OAuth1 authenticationlogOAuth1Add food to diary (interactive)quick <food> [qty] [meal]OAuth1Quick log to diary
from scripts.fatsecret_agent_helper import ( get_authentication_flow, complete_authentication_flow, save_user_credentials ) # Check authentication status state = get_authentication_flow() if state["status"] == "need_credentials": # Ask user for Consumer Key/Secret # Save with: save_user_credentials(key, secret) pass elif state["status"] == "need_authorization": # Show authorization URL to user url = state["authorization_url"] # User visits URL, authorizes, gets PIN # Complete with: complete_authentication_flow(pin) pass elif state["status"] == "already_authenticated": # Ready to use diary functions from scripts.fatsecret_diary_simple import quick_log quick_log("egg", quantity=3, meal="Breakfast")
FunctionDescriptionget_authentication_flow()Check status, returns next stepsave_user_credentials(key, secret)Save API credentialscomplete_authentication_flow(pin)Complete OAuth1 with PINquick_log(food, qty, meal)Log food to diarylog_food(food_id, serving_id, grams_or_ml, meal, name)Precise loggingsearch_food(query, tokens)Search foods
The grams_or_ml parameter (called number_of_units in FatSecret API) is the ACTUAL amount, not a multiplier! # β WRONG - This logs only 1.56 grams (7 kcal)! log_food(food_id, serving_100g_id, 1.56, "Breakfast", "Cookies") # β CORRECT - This logs 156 grams (741 kcal) log_food(food_id, serving_100g_id, 156, "Breakfast", "Cookies") Examples: What you wantServing typegrams_or_ml value156g of cookies"100g" serving156200ml of milk"100ml" serving2003 eggs"1 large egg" serving32 slices of bread"1 slice" serving2
All credentials and tokens are stored locally: FileContentsCreated By$CONFIG_DIR/config.jsonConsumer Key/SecretUser (manual)$CONFIG_DIR/oauth1_access_tokens.jsonOAuth1 access tokensauth command$CONFIG_DIR/token.jsonOAuth2 token (auto-refreshed)OAuth2 client Where $CONFIG_DIR is ~/.config/fatsecret by default, or the value of FATSECRET_CONFIG_DIR if set. To revoke access: Delete the config folder and revoke app access from your FatSecret account settings.
In containerized environments (Docker, OpenClaw sandbox), ~/.config/ may not persist across restarts. Use FATSECRET_CONFIG_DIR to point to a persistent volume: # Set env var to persistent directory export FATSECRET_CONFIG_DIR="/home/node/clawd/config/fatsecret" # Or prefix commands FATSECRET_CONFIG_DIR="/persistent/path" ./scripts/fatsecret-cli.sh auth OpenClaw example - add to your shell init or AGENTS.md: export FATSECRET_CONFIG_DIR="/home/node/clawd/config/fatsecret"
Some FatSecret API plans require IP whitelisting. If needed, set a proxy: # Environment variable export FATSECRET_PROXY="socks5://127.0.0.1:1080" # Or in config.json { "consumer_key": "...", "consumer_secret": "...", "proxy": "socks5://127.0.0.1:1080" } If you don't need a proxy: The skill works without it. Proxy is only required if FatSecret blocks your IP.
For European products, use the free Open Food Facts API (no authentication): from scripts.openfoodfacts_client import OpenFoodFactsClient off = OpenFoodFactsClient(country="it") products = off.search("barilla") product = off.get_product("8076800105735") # Barcode
fatsecret/ βββ SKILL.md # This documentation βββ README.md # GitHub/ClawHub readme βββ requirements.txt # Python: requests, requests[socks] βββ scripts/ β βββ fatsecret-cli.sh # Main CLI (bash wrapper) β βββ fatsecret_auth.py # OAuth1 3-legged authentication β βββ fatsecret_agent_helper.py # Helper functions for agents β βββ fatsecret_diary_simple.py # Diary logging (OAuth1) β βββ fatsecret_client.py # OAuth2 client (read-only) β βββ openfoodfacts_client.py # Open Food Facts client βββ examples/ βββ agent_usage_example.py # Agent integration example
Credentials are stored locally in ~/.config/fatsecret/ OAuth1 tokens don't expire unless you revoke them OAuth1 grants full access to your FatSecret diary (read + write) To uninstall safely: Delete ~/.config/fatsecret/ and revoke app from FatSecret account
FatSecret API: https://platform.fatsecret.com/docs OAuth1 Guide: https://platform.fatsecret.com/docs/guides/authentication/oauth1/three-legged Open Food Facts: https://wiki.openfoodfacts.org/API
Fixed OAuth2 client - now uses OAuth1 for all operations (food search + diary) Unified authentication: single OAuth1 flow works for both read and write operations Removed broken OAuth2 implementation
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.