利用Strava數據和健身房照片,用編程代理生成訓練回顧
作者通過結合Strava的鍛鍊數據和健身房白板照片,使用Claude Code編程代理自動提取照片中的訓練信息,生成半年回顧信息圖。整個流程包括數據獲取、圖片處理、JSON描述生成和信息圖創建,展示了AI在個人健身數據整合中的實用價值。
今年到目前為止,我的鍛鍊和跑步計劃進展順利,因此我希望製作一份漂亮的半年回顧信息圖。這只是一個簡單的想法,但實現過程中卻涉及到了有趣的技術整合。本文將分享如何藉助Strava和編程代理快速達成目標,並非教程,而是一個實踐案例。
最終的信息圖效果令人滿意,但有趣的是,僅靠Strava的數字本身無法完整講述這個故事。
數據、健身房照片與處理管道
我使用Samsung Fit 3追蹤鍛鍊,並通過Strava手機應用記錄跑步。健身追蹤器會定期與Strava同步數據,因此Strava擁有明確的元數據:活動類型(鍛鍊/跑步)、距離、時長、海拔和日期等。
然而,關鍵點在於:我的大多數健身房訓練記錄都附帶了照片——這些照片是我從健身房白板上拍攝的當日訓練計劃,包含了實際的訓練結構:動作、重點區域,以及力量日、靈活性日或混合訓練的區別。Strava只知道我進行了鍛鍊,但無法區分具體內容。因此,項目的一部分變成了一個小型的圖像提取和解析管道。核心思想是將Strava的結構化數據與我隨意附加到帖子中的圖像上下文結合起來。
獲取Strava活動與照片 → 本地緩存 → 代理讀取並處理健身房白板照片 → JSON描述 → HTML信息圖 → PNG海報
上述管道由幾個簡單的Python腳本組成。如果照片已下載,相關腳本會跳過;如果圖像已處理,則不會重複處理;如果提取的訓練內容有誤,我可以直接刪除對應的JSON文件並重新生成。
使用編程代理處理視覺任務
Claude Code的圖像讀取能力充當了便捷的視覺層。一個腳本下載Strava照片,然後打印出需要關聯JSON的圖像列表。對於每張相關的健身房白板照片,代理會編寫一個描述訓練內容的小型JSON文件,例如:
{ "type": "workout", "exercises": [ { "name": "Goblet squat", "sets": 4, "reps": "8-10", "weight": "24kg", "muscle_groups": ["legs"] } ], "notes": "optional" }
對於個人項目而言,這種代理介入的工作流程快速且簡單。一旦JSON描述生成,該圖像即被視為已處理。這使得視覺步驟可恢復且易於修正。
一點分類技巧帶來巨大收益
我的Strava活動標籤並不完全一致。一些力量訓練被標記為“weight training”,而另一些則是通用的“workouts”。靈活性訓練有時也顯示為“workouts”。因此,代碼結合了Strava活動類型、活動標題以及提取的照片數據,來判斷某次訓練是力量、靈活性、跑步、游泳、瑜伽還是其他。這足以讓最終海報感覺準確,而無需將問題複雜化。
嘗試Strava MCP
我短暫嘗試了最近發佈的Strava MCP服務器,看它能否替代現有腳本。如果只需要活動元數據,它可能有用,但無法獲取照片,因此不適合這個項目。
總結
這個例子很好地展示了AI如何幫助我在更短時間內完成原本可能需要大量時間的任務。你可以在[analyticalmonk/strava-reporting](https://github.com/analyticalmonk/strava-reporting)找到代碼並進行擴展。最簡單的上手方式可能是克隆倉庫,讓編程代理閲讀README,更新配置,然後讓它幫你圍繞你自己的Strava數據生成報告。
對我來説,輸出是一張信息圖。對你而言,它可能是一份年度跑步回顧、騎行總結、賽前準備日誌,或者只是一個更好看的個人健身回顧。
我接下來可能會使用本地模型設置一個個性化的健身代理。同時,如果你基於這個項目進行開發,或者有健身/健康相關的代理工作流程,我期待聽到你的分享!
感謝Ankita審閲本文草稿。