{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}
Фитнес-питание
Планировщик тренировок в тренажерном зале и трекер питания. Найдите более 690 упражнений по мышцам, оборудованию или категории через wger. Найдите макросы и калории для более чем 380 000 продуктов питания через USDA FoodData Central. Вычисление ИМТ, TDEE, максимума в одном повторении, макро-разделения и количества жира в организме — чистый Python, без установки pip. Создан для тех, кто гонится за набором веса, снижает вес или просто пытается лучше питаться.
Метаданные навыков
Источник
Необязательно — установите с помощью hermesskillsinstallofficial/health/fitness-nutrition
Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.
Фитнес и питание
Опытный фитнес-тренер и спортивный диетолог. Два источника данных
плюс офлайн-калькуляторы — все, что нужно любителю тренажерного зала, в одном месте.
Источники данных (все бесплатно, без зависимостей от pip):
wger (https://wger.de/api/v2/) — открытая база данных упражнений, более 690 упражнений с мышцами, оборудованием, изображениями. Публичным конечным точкам не требуется нулевая аутентификация.
USDA FoodData Central (https://api.nal.usda.gov/fdc/v1/) — база данных правительства США о питании, более 380 000 продуктов питания. DEMO_KEY работает мгновенно; бесплатная регистрация для более высоких лимитов.
Офлайн-калькуляторы (чистый стандартный Python):
ИМТ, TDEE (Миффлин-Сент-Джор), одноповторный максимум (Эпли/Бжицки/Ломбарди), макро-сплиты, % телесного жира (метод ВМС США)
Когда использовать
Активируйте этот навык, когда пользователь спрашивает о:
- Упражнения, тренировки, упражнения в тренажерном зале, группы мышц, сплиты тренировок.
- Пищевые макросы, калории, содержание белка, планирование еды, подсчет калорий.
- Состав тела: ИМТ, жировые отложения, TDEE, избыток/дефицит калорий.
- Оценка одноповторного максимума, процент тренировок, прогрессивная перегрузка.
- Макропропорции для резки, набора массы или ухода.
Процедура
Поиск упражнений (wger API)
Все общедоступные конечные точки wger возвращают JSON и не требуют аутентификации. Всегда добавлять
format=json и language=2 (английский) для выполнения запросов.
Шаг 1. Определите, чего хочет пользователь:
По мышцам → используйте /api/v2/exercision/?muscles={id}&language=2&status=2&format=json
По категориям → используйте /api/v2/exercision/?category={id}&language=2&status=2&format=json
По оборудованию → используйте /api/v2/exercision/?equipment={id}&language=2&status=2&format=json
По имени → используйте /api/v2/exercision/search/?term={query}&language=english&format=json
Полная информация → используйте /api/v2/exercisioninfo/{exercision_id}/?format=json
Шаг 2. Ссылочные идентификаторы (чтобы вам не требовались дополнительные вызовы API):
Категории упражнений:
удостоверение личности
Категория
8
Оружие
9
Ноги
10
Пресс
11
Сундук
12
Назад
13
Плечи
14
Телята
15
Кардио
Мышцы:
удостоверение личности
Мышцы
удостоверение личности
Мышцы
1
Двуглавая мышца плеча
2
Передняя дельтовидная мышца
3
Передняя зубчатая мышца
4
Большая грудная мышца
5
Наружная косая мышца
6
Икроножные
7
Прямая мышца живота
8
Большая ягодичная мышца
9
Трапеция
10
Четырехглавая мышца бедра
11
Двуглавая мышца бедра
12
Широчайшая мышца спины
13
Брахиалис
14
Трехглавая мышца плеча
15
Солеус
Оборудование:
удостоверение личности
Оборудование
1
Штанга
3
Гантель
4
Коврик для спортзала
5
Швейцарский мяч
6
Перекладина
7
нет (собственный вес)
8
Скамейка
9
Наклонная скамья
10
Гиря
Шаг 3. Получение и представление результатов:
# Search exercises by nameQUERY="$1"ENCODED=$(python3-c"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))""$QUERY")
curl-s"https://wger.de/api/v2/exercise/search/?term=${ENCODED}&language=english&format=json"\|python3-c"import json,sysdata=json.load(sys.stdin)for s in data.get('suggestions',[])[:10]: d=s.get('data',{}) print(f\" ID {d.get('id','?'):>4} | {d.get('name','N/A'):<35} | Category: {d.get('category','N/A')}\")"
# Get full details for a specific exerciseEXERCISE_ID="$1"
curl-s"https://wger.de/api/v2/exerciseinfo/${EXERCISE_ID}/?format=json"\|python3-c"import json,sys,html,redata=json.load(sys.stdin)trans=[t for t in data.get('translations',[]) if t.get('language')==2]t=trans[0] if trans else data.get('translations',[{}])[0]desc=re.sub('<[^>]+>','',html.unescape(t.get('description','N/A')))print(f\"Exercise: {t.get('name','N/A')}\")print(f\"Category: {data.get('category',{}).get('name','N/A')}\")print(f\"Primary: {', '.join(m.get('name_en','') for m in data.get('muscles',[])) or 'N/A'}\")print(f\"Secondary: {', '.join(m.get('name_en','') for m in data.get('muscles_secondary',[])) or 'none'}\")print(f\"Equipment: {', '.join(e.get('name','') for e in data.get('equipment',[])) or 'bodyweight'}\")print(f\"How to: {desc[:500]}\")imgs=data.get('images',[])if imgs: print(f\"Image: {imgs[0].get('image','')}\")"
# List exercises filtering by muscle, category, or equipment# Combine filters as needed:?muscles=4&equipment=1&language=2&status=2FILTER="$1"# e.g. "muscles=4" or "category=11" or "equipment=3"
curl-s"https://wger.de/api/v2/exercise/?${FILTER}&language=2&status=2&limit=20&format=json"\|python3-c"import json,sysdata=json.load(sys.stdin)print(f'Found {data.get(\"count\",0)} exercises.')for ex in data.get('results',[]): print(f\" ID {ex['id']:>4} | muscles: {ex.get('muscles',[])} | equipment: {ex.get('equipment',[])}\")"
Поиск по питанию (USDA FoodData Central)
Использует переменную окружения USDA_API_KEY, если она установлена, в противном случае возвращается к DEMO_KEY.
DEMO_KEY = 30 запросов/час. Бесплатный ключ регистрации = 1000 запросов/час.
# Search foods by nameFOOD="$1"API_KEY="${USDA_API_KEY:-DEMO_KEY}"ENCODED=$(python3-c"import urllib.parse,sys; print(urllib.parse.quote(sys.argv[1]))""$FOOD")
curl-s"https://api.nal.usda.gov/fdc/v1/foods/search?api_key=${API_KEY}&query=${ENCODED}&pageSize=5&dataType=Foundation,SR%20Legacy"\|python3-c"import json,sysdata=json.load(sys.stdin)foods=data.get('foods',[])if not foods: print('No foods found.'); sys.exit()for f in foods: n={x['nutrientName']:x.get('value','?') for x in f.get('foodNutrients',[])} cal=n.get('Energy','?'); prot=n.get('Protein','?') fat=n.get('Total lipid (fat)','?'); carb=n.get('Carbohydrate, by difference','?') print(f\"{f.get('description','N/A')}\") print(f\" Per 100g: {cal} kcal | {prot}g protein | {fat}g fat | {carb}g carbs\") print(f\" FDC ID: {f.get('fdcId','N/A')}\") print()"
# Detailed nutrient profile by FDC IDFDC_ID="$1"API_KEY="${USDA_API_KEY:-DEMO_KEY}"
curl-s"https://api.nal.usda.gov/fdc/v1/food/${FDC_ID}?api_key=${API_KEY}"\|python3-c"import json,sysd=json.load(sys.stdin)print(f\"Food: {d.get('description','N/A')}\")print(f\"{'Nutrient':<40} {'Amount':>8} {'Unit'}\")print('-'*56)for x in sorted(d.get('foodNutrients',[]),key=lambda x:x.get('nutrient',{}).get('rank',9999)): nut=x.get('nutrient',{}); amt=x.get('amount',0) if amt and float(amt)>0: print(f\" {nut.get('name',''):<38} {amt:>8} {nut.get('unitName','')}\")"
Офлайн-калькуляторы
Используйте вспомогательные сценарии в scripts/ для пакетных операций,
или запустите встроенный режим для отдельных вычислений:
См. «References/FORMULAS.md» для получения научной информации, лежащей в основе каждой формулы.
Подводные камни
конечная точка упражнения wger возвращает все языки по умолчанию — всегда добавляйте language=2 для английского языка.
wger включает непроверенные пользовательские материалы — добавьте status=2, чтобы получать только одобренные упражнения.
USDA DEMO_KEY имеет 30 запросов в час — добавьте sleep 2 между пакетными запросами или получите бесплатный ключ.
– Данные Министерства сельского хозяйства США указаны на 100 г — напоминайте пользователям о необходимости масштабирования до фактического размера порции.
ИМТ не отличает мышцы от жира: высокий ИМТ у мускулистых людей не обязательно вреден для здоровья.
Формулы содержания жира в организме являются оценочными (±3–5%) — для точности рекомендуется использовать сканирование DEXA.
Формулы 1ПМ теряют точность после 10 повторений — для получения наилучших оценок используйте подходы по 3–5 повторений.
конечная точка упражнения/поиска wger использует в качестве имени параметра термин, а не запрос.
Проверка
После запуска поиска упражнений: результаты подтверждения включают названия упражнений, группы мышц и оборудование.
После просмотра питания: убедитесь, что макросы на 100 г возвращаются с ккал, белками, жирами и углеводами.
После калькуляторов: результаты проверки работоспособности (например, TDEE должно составлять 1500–3500 для большинства взрослых).
Краткий справочник
Задача
Источник
Конечная точка
Поиск упражнений по названию
вгер
GET /api/v2/exercision/search/?term=&language=english
Подробности упражнения
вгер
GET /api/v2/exercisioninfo/{id}/
Фильтровать по мышцам
вгер
GET /api/v2/exercision/?muscles={id}&language=2&status=2
Фильтровать по оборудованию
вгер
GET /api/v2/exercision/?equipment={id}&language=2&status=2
Список категорий
вгер
GET /api/v2/exercisioncategory/
Список мышц
вгер
GET /api/v2/muscle/
Поиск продуктов
Министерство сельского хозяйства США
GET /fdc/v1/foods/search?query=&dataType=Foundation,SR Legacy