Strava技能使用说明
2026-03-30
新闻来源:网淘吧
围观:18
电脑广告
手机广告
Strava 技能
与 Strava 互动,加载活动、分析锻炼并追踪健身数据。
设置
1. 创建 Strava API 应用程序
- 前往https://www.strava.com/settings/api
- 创建一个应用(测试时使用
http://localhost作为回调地址) - 记下你的客户端 ID和客户端密钥
2. 获取初始 OAuth 令牌
在浏览器中访问此 URL(替换 CLIENT_ID):

https://www.strava.com/oauth/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http://localhost&approval_prompt=force&scope=activity:read_all
授权后,你将被重定向至http://localhost/?code=AUTHORIZATION_CODE
将授权码交换为令牌:
curl -X POST https://www.strava.com/oauth/token \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d code=AUTHORIZATION_CODE \
-d grant_type=authorization_code
这将返回访问令牌和刷新令牌。
3. 配置凭证
添加到~/.clawdbot/clawdbot.json:
{
"skills": {
"entries": {
"strava": {
"enabled": true,
"env": {
"STRAVA_ACCESS_TOKEN": "your-access-token",
"STRAVA_REFRESH_TOKEN": "your-refresh-token",
"STRAVA_CLIENT_ID": "your-client-id",
"STRAVA_CLIENT_SECRET": "your-client-secret"
}
}
}
}
}
或者使用环境变量:
export STRAVA_ACCESS_TOKEN="your-access-token"
export STRAVA_REFRESH_TOKEN="your-refresh-token"
export STRAVA_CLIENT_ID="your-client-id"
export STRAVA_CLIENT_SECRET="your-client-secret"
使用方法
列出近期活动
获取最近30项活动:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?per_page=30"
获取最近10项活动:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?per_page=10"
按日期筛选活动
获取特定日期(Unix时间戳)之后的活动:
# Activities after Jan 1, 2024
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?after=1704067200"
获取指定日期范围内的活动:
# Activities between Jan 1 - Jan 31, 2024
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?after=1704067200&before=1706745600"
获取活动详情
获取特定活动的完整详情(替换 `ACTIVITY_ID`):
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/activities/ACTIVITY_ID"
获取运动员档案
获取已认证运动员的档案:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete"
获取运动员统计信息
获取运动员统计信息(替换 `ATHLETE_ID`):
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athletes/ATHLETE_ID/stats"
分页
翻页浏览:
# Page 1 (default)
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?page=1&per_page=30"
# Page 2
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?page=2&per_page=30"
令牌刷新
访问令牌每6小时过期一次。使用辅助脚本刷新:
bash {baseDir}/scripts/refresh_token.sh
或手动操作:
curl -s -X POST https://www.strava.com/oauth/token \
-d client_id="${STRAVA_CLIENT_ID}" \
-d client_secret="${STRAVA_CLIENT_SECRET}" \
-d grant_type=refresh_token \
-d refresh_token="${STRAVA_REFRESH_TOKEN}"
响应中包含一个新的访问令牌和刷新令牌。请使用这两个令牌更新您的配置。
通用数据字段
活动对象包括:
名称— 活动标题距离— 距离(单位:米)运动时间— 运动时间(单位:秒)总耗时— 总时间(单位:秒)累计爬升高度— 爬升高度(单位:米)类型— 活动类型(跑步、骑行、游泳等)运动类型— 具体运动类型开始日期— 开始时间(ISO 8601格式)平均速度— 平均速度,单位:米/秒最高速度— 最高速度,单位:米/秒平均心率— 平均心率(如可用)最高心率— 最高心率(如可用)点赞数— 收到的点赞数量
请求频率限制
- 200次请求每15分钟
- 2,000次请求每天
如果达到请求频率限制,响应中将包含X-RateLimit-*(速率限制相关)标头。
实用技巧
- 转换Unix时间戳:
date -d @时间戳(Linux系统)或date -r 时间戳(macOS系统) - 将米转换为公里:除以1000
- 将米转换为英里:除以1609.34
- 将米/秒转换为公里/小时:乘以3.6
- 将米/秒转换为英里/小时:乘以2.237
- 将秒转换为小时:除以3600
- 解析JSON,可使用
jq(如果可用),或使用grep/sed进行基本提取
示例
获取上周的跑步活动及其距离:
LAST_WEEK=$(date -d '7 days ago' +%s 2>/dev/null || date -v-7d +%s)
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?after=${LAST_WEEK}&per_page=50" \
| grep -E '"name"|"distance"|"type"'
获取近期活动的总距离:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?per_page=10" \
| grep -o '"distance":[0-9.]*' | cut -d: -f2 | awk '{sum+=$1} END {print sum/1000 " km"}'
错误处理
如果遇到401未授权错误,表示您的访问令牌已过期。请运行令牌刷新命令。
如果遇到速率限制错误,请等待限制窗口重置(请检查X-RateLimit-Usage头部信息)。
文章底部电脑广告
手机广告位-内容正文底部
上一篇:Oh My OpenCode技能使用说明
下一篇:topydo技能使用说明


微信扫一扫,打赏作者吧~