利用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審閱本文草稿。