trackup-food-analyze
# TrackUp Food Analyze
Use this skill to analyze a food image with:
- `https://deepeat.ai/step.aispark.api.API/AnalyzeWholeFood`
- `https://deepeat.ai/step.aispark.api.API/ExtractFoodMacros`
- `https://deepeat.ai/step.aispark.api.API/AnalyzeIngredients`
- `https://deepeat.ai/step.aispark.api.API/GetHealthInsight`
- `https://deepeat.ai/step.aispark.api.API/SearchFood`
## Rules
- Always use `POST`
- Always send `Content-Type: application/json`
- Image analysis requests must contain `image_url` or `image_base64`
- If both exist, `image_base64` wins
- `image_base64` must be raw base64 without `data:image/...;base64,`
- For complete food image analysis, call `AnalyzeWholeFood` directly
- Only call a specialized image-analysis API when the user explicitly asks for one specific analysis dimension
- Use `ExtractFoodMacros` for basic macro extraction
- Use `AnalyzeIngredients` for deep ingredient and metabolic analysis
- Use `GetHealthInsight` for professional health insight
- `SearchFood` request body must contain `keyword`
- `SearchFood` returns at most the first `20` results
## API Selection
Choose the API based on the user's intent:
1. Full food analysis: `AnalyzeWholeFood`
2. Basic macro extraction only: `ExtractFoodMacros`
3. Deep ingredient and metabolic analysis only: `AnalyzeIngredients`
4. Professional health insight only: `GetHealthInsight`
5. Keyword-based lookup without image analysis: `SearchFood`
## Food Search
Use `SearchFood` when the user wants keyword-based food lookup instead of image analysis.
Request example:
```bash
curl --silent --show-error --location \
'https://deepeat.ai/step.aispark.api.API/SearchFood' \
--header 'Content-Type: application/json' \
--data '{
"keyword": "banana"
}'
```
Expected response shape:
```json
{
"foods": [
{
"food_name": "Banana",
"calories_cal": "89000",
"weight_g": "100",
"carbs_g": "22.8",
"proteins_g": "1.1",
"fats_g": "0.3",
"display_gi": 51,
"brand": ""
}
],
"pagination": {
"size": 20,
"page": 1,
"total": 123
}
}
```
## Local Image Workflow
Convert local image to base64:
```bash
base64 < /absolute/path/to/image.jpg | tr -d '\n' > /tmp/food_image.b64
```
Build payload:
```bash
printf '{"image_base64":"' > /tmp/food_image.json
cat /tmp/food_image.b64 >> /tmp/food_image.json
printf '"}' >> /tmp/food_image.json
```
Call full food analysis directly:
```bash
curl --silent --show-error --location \
'https://deepeat.ai/step.aispark.api.API/AnalyzeWholeFood' \
--header 'Content-Type: application/json' \
--data-binary @/tmp/food_image.json
```
## Proxy Fix
If `curl` incorrectly tries a local proxy like `127.0.0.1:7890`, retry with:
```bash
env -u http_proxy -u https_proxy -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY curl ...
```
## Response Fields
`AnalyzeWholeFood`:
- `food_name`
- `total_weight_g`
- `total_calories_kcal`
- `carbs_g`
- `proteins_g`
- `fats_g`
- `display_gi`
- `dietary_fiber_g`
- `sugar_g`
- `ingredients[]`
- `health_score`
- `health_profile`
`ExtractFoodMacros`:
- `food_name`
- `total_weight_g`
- `total_calories_kcal`
- `carbs_g`
- `proteins_g`
- `fats_g`
`AnalyzeIngredients`:
- `display_gi`
- `dietary_fiber_g`
- `sugar_g`
- `ingredients[]`
`GetHealthInsight`:
- `health_score`
- `health_profile`
`SearchFood`:
- `foods[]`
- `pagination.page`
- `pagination.size`
- `pagination.total`
`health_score` meaning:
- `1-5` score generated by AI food evaluation
- `5` is the highest score
- Use it to help users make nutritionally informed choices
## Output Rules
- Keep numeric values exactly as returned
- Do not invent missing fields
- For complete image analysis, use `AnalyzeWholeFood` as the default API
- For specialized analysis, use only the dedicated API that matches the user's request
- For `SearchFood`, return the foods in API order and do not claim more than `20` items unless the response actually contains them
## Common Errors
- `400 invalid_request`
- `422 food_not_recognized`
- `422 barcode_only_result`
- `429 rate_limit_exceeded`
- `500 internal_error`
- `502 upstream_flow_error`
标签
skill
ai