first commit

This commit is contained in:
2025-11-13 21:11:40 +01:00
commit ec7ae1b90f
45 changed files with 38454 additions and 0 deletions
+112
View File
@@ -0,0 +1,112 @@
---
name: training-data-analyzer
description: Use this agent when the user has TCX training files that need to be parsed and analyzed. Specifically:\n\n<example>\nContext: User has uploaded new TCX files from their training sessions and wants them analyzed and logged.\n\nuser: "I just uploaded my latest training sessions, can you process them?"\nassistant: "I'll use the training-data-analyzer agent to parse your TCX files and update your training diary with the analysis."\n<commentary>\nThe user has new training data that needs to be processed. Use the Task tool to launch the training-data-analyzer agent which will parse the files and update the träningsdagbok.\n</commentary>\n</example>\n\n<example>\nContext: User mentions they have completed training sessions that need to be logged.\n\nuser: "I've done a few workouts this week that I need to log"\nassistant: "Let me launch the training-data-analyzer agent to parse your TCX files and analyze your training data."\n<commentary>\nThe user needs their recent training sessions processed. Use the training-data-analyzer agent to handle the parsing and diary updates.\n</commentary>\n</example>\n\n<example>\nContext: Proactive check when TCX files are detected in the project.\n\nuser: "What's in my training folder?"\nassistant: "I see you have TCX files in your training folder. Let me use the training-data-analyzer agent to parse and analyze them for you."\n<commentary>\nTCX files are present that haven't been processed. Proactively suggest using the training-data-analyzer agent.\n</commentary>\n</example>
model: sonnet
---
You are an elite endurance training data analyst specializing in Swedish Classic (En Svensk Klassiker) training programs. Your expertise lies in processing TCX training files, extracting meaningful insights, and maintaining accurate Swedish-language training diaries.
## Your Core Responsibilities
1. **Parse TCX Files**: Execute the `parse-all` command to convert all TCX files into structured JSON data in the Data/training directory.
2. **Analyze Training Data**: Examine the parsed JSON files to extract:
- Duration and distance of each session
- Average pace/speed and heart rate data
- Training type (cycling, running, swimming, skiing)
- Elevation gain (for cycling and running)
- Intensity distribution (easy/moderate/hard based on heart rate zones)
3. **Generate Insights**: For each training session, provide:
- Performance assessment relative to the training plan phase
- Progression indicators (improving, maintaining, or declining)
- Recovery needs based on intensity and duration
- Specific recommendations for upcoming sessions
- Warning signs of overtraining if detected
4. **Update Training Diary**: Locate the correct träningsdagbok file and update it with:
- Swedish-language entries following the project's formatting standards
- Specific session details (duration, distance, tempo)
- Your analytical insights and recommendations
- Proper date formatting and weekly organization
## Analysis Framework
### Performance Assessment Criteria
- **Cycling**: Evaluate based on duration, distance, average speed, and ability to maintain steady effort
- **Running**: Focus on pace consistency, elevation management, and recovery between sessions
- **Swimming**: Assess stroke efficiency indicators and endurance progression
- **Skiing**: Analyze upper body endurance and technique sustainability over long sessions
### Progression Indicators
- Compare current session to similar sessions in previous weeks
- Check if 10% weekly progression rule is being followed
- Identify if recovery weeks (30-40% reduction) are being respected
- Flag if volume increases are too aggressive
### Recovery Assessment
Based on session intensity and duration, recommend:
- **High intensity/long duration**: 48+ hours before similar session
- **Moderate**: 24-36 hours recovery
- **Easy sessions**: Can be done on consecutive days
- **Back-to-back hard sessions**: Flag as potential overtraining risk
## Operational Workflow
1. **Execute Parse Command**: Run `parse-all` and verify successful parsing of all TCX files
2. **Locate JSON Files**: Navigate to Data/training and identify all newly parsed JSON files
3. **Analyze Each Session**:
- Extract key metrics from JSON structure
- Determine training type and phase relevance
- Calculate performance indicators
- Generate specific, actionable insights
4. **Identify Correct Diary**: Determine which träningsdagbok file to update based on:
- Session date (which phase it falls within)
- Training type (which event it's preparing for)
- Current training calendar
5. **Update Diary Entry**: Write Swedish-language entry including:
- Date and week number
- Session type and duration
- Key metrics (distance, pace, heart rate)
- Your analytical commentary
- Forward-looking recommendations
## Quality Control
- **Verify parsing**: Ensure all TCX files were successfully converted
- **Data validation**: Check for anomalies (missing heart rate data, GPS errors, unrealistic values)
- **Context awareness**: Consider which training phase the session falls within
- **Swedish language**: All diary entries must be in Swedish using proper terminology from CLAUDE.md
- **Consistency**: Maintain formatting standards from existing träningsdagbok entries
## Communication Style
When providing updates to the user:
- Start with a summary of files parsed and analyzed
- Highlight key findings and notable sessions
- Flag any concerns (potential overtraining, inadequate recovery, missed training)
- Provide specific, actionable recommendations in Swedish
- Reference relevant sections of the training plan when suggesting adjustments
## Edge Cases and Escalation
- **Parsing failures**: If TCX files fail to parse, report specific errors and suggest fixes
- **Missing context**: If you cannot determine which phase a session belongs to, ask the user for clarification
- **Data anomalies**: Report suspicious data (e.g., 200 km run, 600W average power) and request verification
- **Diary ambiguity**: If multiple träningsdagbok files could apply, present options to the user
- **Overtraining indicators**: If data shows multiple red flags, strongly recommend consultation with the user before proceeding
## Success Criteria
You have successfully completed your task when:
1. All TCX files have been parsed to JSON
2. Each training session has been analyzed with specific insights
3. The appropriate träningsdagbok file(s) have been updated in Swedish
4. The user receives a clear summary of findings and recommendations
5. Any concerns or anomalies have been clearly communicated
Remember: Your analysis directly impacts the user's preparation for four demanding endurance events. Be thorough, accurate, and always prioritize the athlete's long-term health and progression over short-term performance gains.
+14
View File
@@ -0,0 +1,14 @@
# Obsidian workspace and cache
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/workspace
.obsidian/cache
.obsidian/plugins/
.obsidian/themes/
# Personal training logs
Träningsdagbok/
# OS files
.DS_Store
Thumbs.db
+12
View File
@@ -0,0 +1,12 @@
{
"defaultViewMode": "preview",
"livePreview": true,
"showFrontmatter": true,
"foldHeading": true,
"foldIndent": true,
"showLineNumber": false,
"strictLineBreaks": false,
"newLinkFormat": "relative",
"useMarkdownLinks": true,
"alwaysUpdateLinks": true
}
+7
View File
@@ -0,0 +1,7 @@
{
"baseFontSize": 16,
"theme": "system",
"enabledCssSnippets": [
"training-plan"
]
}
+33
View File
@@ -0,0 +1,33 @@
{
"file-explorer": true,
"global-search": true,
"switcher": true,
"graph": true,
"backlink": true,
"outgoing-link": true,
"tag-pane": true,
"page-preview": true,
"daily-notes": true,
"templates": true,
"note-composer": true,
"command-palette": true,
"slash-command": false,
"editor-status": true,
"markdown-importer": true,
"zk-prefixer": false,
"random-note": false,
"outline": false,
"word-count": true,
"slides": false,
"audio-recorder": false,
"workspaces": false,
"file-recovery": true,
"publish": false,
"sync": false,
"canvas": true,
"footnotes": false,
"properties": false,
"bookmarks": true,
"bases": true,
"webviewer": false
}
+5
View File
@@ -0,0 +1,5 @@
{
"folder": "Träningsdagbok",
"format": "YYYY-MM-DD",
"template": "Templates/Daglig träning"
}
+51
View File
@@ -0,0 +1,51 @@
{
"collapse-filter": false,
"search": "",
"showTags": true,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": false,
"colorGroups": [
{
"query": "tag:#fas1",
"color": {
"a": 1,
"rgb": 5025616
}
},
{
"query": "tag:#fas2",
"color": {
"a": 1,
"rgb": 2201331
}
},
{
"query": "tag:#fas3",
"color": {
"a": 1,
"rgb": 16750592
}
},
{
"query": "tag:#fas4",
"color": {
"a": 1,
"rgb": 10233776
}
}
],
"collapse-display": false,
"showArrow": true,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": false,
"centerStrength": 0.518713248970312,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1,
"close": false
}
+3
View File
@@ -0,0 +1,3 @@
{
"training-plan": true
}
+80
View File
@@ -0,0 +1,80 @@
/* Training Plan Styling */
/* Phase headers with colors */
.markdown-preview-view h1:contains("Fas 1"),
.markdown-preview-view h1:contains("FAS1") {
color: #4CAF50;
border-left: 5px solid #4CAF50;
padding-left: 10px;
}
.markdown-preview-view h1:contains("Fas 2"),
.markdown-preview-view h1:contains("FAS2") {
color: #2196F3;
border-left: 5px solid #2196F3;
padding-left: 10px;
}
.markdown-preview-view h1:contains("Fas 3"),
.markdown-preview-view h1:contains("FAS3") {
color: #FF9800;
border-left: 5px solid #FF9800;
padding-left: 10px;
}
.markdown-preview-view h1:contains("Fas 4"),
.markdown-preview-view h1:contains("FAS4") {
color: #9C27B0;
border-left: 5px solid #9C27B0;
padding-left: 10px;
}
/* Week headers */
.markdown-preview-view h3:contains("Vecka") {
background-color: rgba(100, 100, 100, 0.1);
padding: 5px 10px;
border-radius: 5px;
}
/* Recovery week styling */
.markdown-preview-view h3:contains("Återhämtning"),
.markdown-preview-view p:contains("Återhämtningsvecka") {
background-color: rgba(255, 200, 100, 0.2);
padding: 5px;
border-left: 3px solid #FFA500;
}
/* Competition/race styling */
.markdown-preview-view strong:contains("VÄTTERNRUNDAN"),
.markdown-preview-view strong:contains("VANSBRO"),
.markdown-preview-view strong:contains("LIDINGÖLOPPET"),
.markdown-preview-view strong:contains("VASALOPPET") {
color: #E91E63;
font-size: 1.1em;
}
/* Table styling for training overview */
.markdown-preview-view table {
border-collapse: collapse;
width: 100%;
margin: 20px 0;
}
.markdown-preview-view table th {
background-color: rgba(100, 100, 255, 0.1);
font-weight: bold;
padding: 10px;
}
.markdown-preview-view table td {
padding: 8px;
border-bottom: 1px solid rgba(100, 100, 100, 0.2);
}
/* Callout-style boxes for tips */
.markdown-preview-view blockquote {
border-left: 4px solid #2196F3;
background-color: rgba(33, 150, 243, 0.05);
padding: 10px 15px;
margin: 15px 0;
}
+3
View File
@@ -0,0 +1,3 @@
{
"folder": "Templates"
}
+8
View File
@@ -0,0 +1,8 @@
{
"types": {
"aliases": "aliases",
"cssclasses": "multitext",
"tags": "tags",
"date": "date"
}
}
+128
View File
@@ -0,0 +1,128 @@
---
fas: 1
namn: Grundträning & Uppbyggnad
period: November 2025 - Mars 2026
veckor: 16
pass-per-vecka: 3-5
fokus:
- grundkondition
- träningsvana
- cykling
- simning
- löpning
- styrka
tags:
- fas1
- grundträning
---
# Fas 1: Grundträning & Uppbyggnad
## Period: November 2025 Mars 2026 (16 veckor)
### Mål
Skapa en träningsvana och bygga en allmän grundkondition. Fokus på glädje och rörelse.
### Principer
- Bygg upp träningsvolymen gradvis (max 10% ökning per vecka)
- Var fjärde vecka är en lättare återhämtningsvecka
- Lyssna på kroppen - hellre en dag för lite än en dag för mycket
---
## Veckoupplägg
### **Vecka 1-4: Etablera vanan (3 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Styrketräning (30 min) - Kroppsviktsövningar
- **Onsdag:** Cykling (45 min) - Lugnt tempo inomhus eller utomhus
- **Lördag:** Simning (30 min) - Vattenvana och crawlteknik
**Vecka 4:** Återhämtningsvecka - minska tid med 30%
---
### **Vecka 5-8: Öka volymen (4 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Löpning/Gång (30-40 min) - 5 min jogg / 5 min gång
- **Onsdag:** Cykling (60 min) - Lugnt tempo
- **Fredag:** Simning (30-40 min) - Teknikfokus, 400-600m totalt
- **Söndag:** Styrketräning (40 min) - Fokus på bål och ben
**Vecka 8:** Återhämtningsvecka - minska tid med 30%
---
### **Vecka 9-12: Bygg uthållighet (4 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Löpning/Gång (40-45 min) - Öka jogg-andelen gradvis
- **Onsdag:** Cykling (75 min) - Lugnt tempo
- **Fredag:** Simning (40 min) - Mål: 600-800m sammanhängande
- **Söndag:** Styrketräning (45 min) + Kort cykling (30 min)
**Vecka 12:** Återhämtningsvecka
---
### **Vecka 13-16: Stabil grund (4-5 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Löpning (45 min) - Kontinuerlig jogg i lätt tempo
- **Tisdag:** Simning (45 min) - 800-1000m
- **Torsdag:** Cykling (90 min) - Börja förbereda för längre pass
- **Fredag:** Styrketräning (45 min)
- **Söndag:** Cykling (2 tim) - Första längre passet
**Vecka 16:** Lättare vecka innan övergång till Fas 2
---
## Styrketräningsprogram
**Övningar (3 set x 10-15 reps):**
1. Knäböj eller utfall
2. Armhävningar (på knä om nödvändigt)
3. Plankan (håll 30-60 sek)
4. Rygglyft
5. Sidoplankor (30 sek per sida)
6. Magcrunches
---
## Zwift-träning för cykling
Om du vill träna inomhus eller vill ha mer strukturerade cykelpass, använd Zwift-workouts:
### Rekommenderade Zwift-workouts för Fas 1:
**Vecka 1-4:**
- `01_Grunduthållighet_45min.zwo` - Ersätter cykelpass på 45 min
**Vecka 5-8:**
- `02_Tempo_60min.zwo` - Ersätter cykelpass på 60 min med tempo
**Vecka 9-12:**
- `03_Intervaller_Lätt_60min.zwo` - Strukturerad intervallträning
**Vecka 13-16:**
- `04_Långpass_90min.zwo` - Längre uthållighetspass
📖 **Se [[ZWIFT_GUIDE|Zwift-guiden]]** för instruktioner om hur du installerar och använder workouts.
---
## Eventspecifika råd Grundträning
- **Simning:** Boka crawl-kurs eller teknikpass för att skapa en effektiv catch innan volymen ökar i Fas 2.
- **Cykling:** Justera sadel och styre nu så att kroppen hinner vänja sig innan långa vårpass.
- **Cykling inomhus:** Zwift eller trainer är perfekt för att hålla kontinuitet när vädret är dåligt.
- **Löpning:** Föredra mjukt underlag för att förbereda benen för senare terrängpass.
- **Återhämtning:** Sov 78 timmar/natt; etablera rutiner för rörlighet efter varje pass.
---
## Navigation
← [[TRÄNINGSPLAN_ÖVERSIKT|Översikt]] | [[02_FAS2_VÄTTERNRUNDAN_VANSBRO|Nästa fas: Vätternrundan & Vansbro]] →
+185
View File
@@ -0,0 +1,185 @@
---
fas: 2
namn: Vätternrundan & Vansbro
period: April - Juni 2026
veckor: 10-12
pass-per-vecka: 5-6
fokus:
- cykeluthållighet
- långpass-cykel
- simteknik
- öppet-vatten
tävlingar:
- namn: Vätternrundan
datum: 2026-06-12
distans: 300 km
typ: cykel
- namn: Vansbrosimningen
datum: 2026-06-27
distans: 2 km
typ: simning
tags:
- fas2
- cykling
- simning
- vätternrundan
- vansbro
---
# Fas 2: Specifik träning mot Vätternrundan & Vansbro
## Period: April Juni 2026 (10 veckor)
### Mål
Bygga cykeluthållighet för 300 km och bibehålla simförmågan.
### Principer
- Fokus på långa cykellångpass varje vecka (≥3 tim) för att vänja kroppen vid sadeltid.
- Minst två simpass per vecka varav ett i öppet vatten från vecka 5.
- Återhämtningsveckor efter tre tunga block sänk volymen 3040%.
- Träna loppnutritionen under långpassen för att undvika överraskningar på tävlingsdagen.
- All text ska vara på svenska och tonläget ska vara lugnt, peppigt och konkret.
---
## Veckoupplägg
### **Vecka 1-3: Bygga cykelbas (5 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Vila eller lätt promenad
- **Tisdag:** Cykling (90 min) - Tempo, inkludera 3-4 backar
- **Onsdag:** Simning (45 min) - Teknik, 1000-1200m
- **Torsdag:** Styrketräning (45 min) - Fokus på ben och bål
- **Fredag:** Vila
- **Lördag:** Cykling LÅNGPASS (3-4 tim / 80-100 km) - Lugnt tempo
- **Söndag:** Löpning (30 min) lätt jogg ELLER vila
---
### **Vecka 4: Återhämtning**
Minska all träning med 40%. Långpass max 2 timmar.
---
### **Vecka 5-7: Öka distansen (5-6 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Simning (45 min) - 1200-1500m
- **Tisdag:** Cykling (90 min) - Tempo med intervaller (3x8 min i högre tempo)
- **Onsdag:** Styrketräning (40 min)
- **Torsdag:** Cykling (60 min) - Lätt återhämtning
- **Fredag:** Vila
- **Lördag:** Cykling LÅNGPASS (4-5 tim / 120-150 km)
- **Söndag:** Simning i öppen vatten (30-45 min) eller bassäng
---
### **Vecka 8: Återhämtning**
Minska träningen med 40%. Långpass max 2,5 timmar.
---
### **Vecka 9: Peakvecka inför Vättern (5 pass)**
**Exempel vecka:**
- **Måndag:** Vila
- **Tisdag:** Cykling (90 min) - Inkludera några tempopass
- **Onsdag:** Simning (45 min)
- **Torsdag:** Styrketräning (30 min) - Lätt
- **Fredag:** Vila
- **Lördag:** Cykling LÅNGPASS (5-6 tim / 150-180 km) - **Generalrepetition!**
- **Söndag:** Lätt simning eller promenad (30 min)
---
### **Vecka 10: Tävlingsvecka Vätternrundan**
**Måndag-Onsdag:** Vila eller lätta promenader (20-30 min)
**Torsdag:** Kort cykling (45 min) - Spinna benen
**Fredag:** Vila - förbered utrustning och mat
**Lördag 12 juni:** **VÄTTERNRUNDAN! 300 km**
**Söndag:** Vila, stretcha och ät gott
---
### **Vecka 11-12: Vansbrofokus**
Efter Vättern: Ta 3-4 dagars fullständig vila.
**Exempel vecka (efter vila):**
- **Måndag:** Simning i öppen vatten (30 min) - Vänja dig vid vattnet
- **Tisdag:** Vila eller lätt cykling
- **Onsdag:** Simning (45 min) - Distanspass 1500-2000m
- **Torsdag:** Lätt löpning (30 min)
- **Fredag:** Vila
- **Lördag:** Simning i öppen vatten (45-60 min) - Testsim 2-3 km
- **Söndag:** Lätt cykling (60 min)
**Vecka 12 (Tävlingsvecka):**
- Minska träning kraftigt
- Simma max 2 kort pass (30 min)
- Vila mycket
**27 juni:** **VANSBROSIMNINGEN! 2 km**
---
## Zwift-träning för cykling
Strukturerade Zwift-workouts som matchar denna fas:
### Rekommenderade Zwift-workouts för Fas 2:
**Vecka 1-3 (Bygga cykelbas):**
- **Tisdag:** `01_Uthållighet_90min.zwo` - 90 min med backintervaller
- **Lördag:** Utomhus 3-4h ELLER `03_Långpass_120min.zwo`
**Vecka 5-7 (Öka distansen):**
- **Tisdag:** `02_Tempo_Intervaller_90min.zwo` - 3×8 min tempo
- **Torsdag:** `05_Återhämtning_60min.zwo` - Lätt återhämtning
- **Lördag:** Utomhus 4-5h ELLER `04_Långpass_150min.zwo`
**Vecka 9 (Peakvecka):**
- **Tisdag:** `06_Peak_Intervaller_75min.zwo` - 5×4 min hårt
- **Lördag:** Utomhus 5-6h (generalrepetition för Vätternrundan)
**Tips för Zwift-långpass:**
- Pass över 2 timmar: Ha energi och dryck redo
- Kombinera gärna: 2h Zwift + 2h utomhus = 4h totalt
- Använd fläkt - du svettas mer inomhus!
📖 **Se [[ZWIFT_GUIDE|Zwift-guiden]]** för detaljerade instruktioner.
---
## Styrka & teknik
- 2 pass per vecka, gärna tisdag (ben/bål) och fredag (överdel).
- Prioritera knäböj, marklyft, utfall, höftlyft, core-plankor och rodddrag för att stärka cykelpositionen.
- Lägg in simtekniska drills: catch-up, enarmssim och 6 kick switch för bättre vattenläge.
- Avsluta cykelpassen med 510 min rörlighet (höfter, bröstrygg, nacke) för att tåla lång sadeltid.
---
## Eventspecifika råd
### Vätternrundan
- **Energi & Vätska:** Testa exakt vad du ska äta/dricka (t.ex. gel + sportdryck var 30:e min) under långpassen; inga nyheter på loppet.
- **Utrustning:** Kör minst ett 5-timmarspass med samma shorts, sadel, kläder och lampor som på tävling.
- **Pacing:** De första 100 km ska kännas löjligt lätta. Dela in loppet i 50 km-block och håll jämt tempo.
- **Depåplan:** Välj depåer i förväg (t.ex. Jönköping, Hjo, Hammarsundet) och träna på snabba stopp.
- **Teamkörning:** Träna på att ligga i klunga runda snabbare men håll fokus på säkerhet.
### Vansbrosimningen
- **Våtdräkt:** Simma minst två längre pass i den våtdräkt du ska använda för att vänja dig vid flytläge och axelbelastning.
- **Öppet vatten:** Planera 5 pass i öppet vatten innan loppet; öva siktning var 810:e tag.
- **Kyla & start:** Vänj ansiktet vid kallt vatten genom att doppa och andas lugnt innan start.
- **Byte från cykel:** Håll igång lätt benrörelse efter Vätternrundan för att undvika stelhet när simfokuset tar vid.
- **Logistik:** Ha koll på bussar, uppvärmningszon och var du lämnar dina kläder mindre stress ger bättre lopp.
---
## Navigation
← [[01_FAS1_GRUNDTRÄNING|Föregående fas: Grundträning]] | [[TRÄNINGSPLAN_ÖVERSIKT|Översikt]] | [[03_FAS3_LIDINGÖLOPPET|Nästa fas: Lidingöloppet]] →
+154
View File
@@ -0,0 +1,154 @@
---
fas: 3
namn: Lidingöloppet
period: Juli - September 2026
veckor: 12
pass-per-vecka: 4-5
fokus:
- löputhållighet
- terränglopp
- backträning
- intervaller
tävlingar:
- namn: Lidingöloppet
datum: 2026-09-25
distans: 30 km
typ: terränglöpning
tags:
- fas3
- löpning
- terräng
- lidingöloppet
---
# Fas 3: Fokus Lidingöloppet
## Period: Juli September 2026 (12 veckor efter Vansbro)
### Mål
Bygga löputhållighet och styrka för terränglopp med backar (30 km).
### Principer
- Låt kroppen återhämta sig 12 veckor efter Vansbro innan fullt löpfokus.
- Öka långpass med max 2 km per vecka och behåll var 4:e vecka som återhämtningsvecka.
- Minst ett backpass och ett intervallpass varje vecka för att vänja benen vid Lidingös profil.
- Styrketräning för ben/bål 12 gånger per vecka för att tåla kuperad terräng.
- All kommunikation sker på svenska och med peppig, trygg ton.
---
## Veckoupplägg
### **Vecka 1-2: Återhämtning & Övergång**
Ta det lugnt efter Vansbro! Låt kroppen återhämta sig.
**Exempel vecka:**
- **Måndag-Onsdag:** Vila
- **Torsdag:** Lätt promenad eller jogg (30 min)
- **Fredag:** Vila
- **Lördag:** Lätt löpning (40 min) - Platt terrängpass
- **Söndag:** Cykling (60 min) - Aktiv återhämtning
---
### **Vecka 3-5: Bygga löpbas (4 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Vila
- **Tisdag:** Löpning (45 min) - Tempo på platt mark
- **Onsdag:** Styrketräning (45 min) - Fokus ben och core
- **Torsdag:** Löpning (40 min) - Lätt jogg
- **Fredag:** Vila
- **Lördag:** LÅNGPASS Löpning (10-12 km) - Terräng och stigar
- **Söndag:** Cykling eller simning (60 min) - Återhämtning
**Öka långpasset:** Vecka 3: 10 km → Vecka 4: 12 km → Vecka 5: 14 km
---
### **Vecka 6: Återhämtningsvecka**
Minska löpningen med 40%. Max 10 km långpass.
---
### **Vecka 7-9: Öka distans + Backar (5 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Vila
- **Tisdag:** INTERVALLER (60 min) - 10 min uppvärmning, 6x3 min i högt tempo (2 min vila), 10 min nedvarvning
- **Onsdag:** Styrketräning (45 min)
- **Torsdag:** BACKTRÄNING (45 min) - Hitta en 200-300m backe, spring upp 6-8 gånger
- **Fredag:** Vila
- **Lördag:** LÅNGPASS (16-20 km) - Kuperad terräng, simulera Lidingö
- **Söndag:** Cykling eller simning (60 min) - Aktiv återhämtning
**Öka långpasset:** Vecka 7: 16 km → Vecka 8: 18 km → Vecka 9: 20 km
---
### **Vecka 10: Återhämtningsvecka**
Minska träningen med 40%. Max 12 km långpass.
---
### **Vecka 11: Peakvecka (4 pass)**
**Exempel vecka:**
- **Måndag:** Vila
- **Tisdag:** Tempointervaller (50 min) - 5x4 min
- **Onsdag:** Styrketräning (30 min) - Lätt
- **Torsdag:** Backträning (40 min) - 5x backlöpning
- **Fredag:** Vila
- **Lördag:** LÅNGPASS (22-25 km) - **Generalrepetition!** Testa tävlingstempo
- **Söndag:** Lätt jogg (30 min)
---
### **Vecka 12: Tävlingsvecka Lidingöloppet**
**Måndag:** Vila
**Tisdag:** Lätt jogg (30 min) + 5x100m tempohöjningar
**Onsdag:** Vila eller promenad
**Torsdag:** Lätt jogg (20-30 min) - Spinna benen
**Fredag:** Vila - förbered utrustning
**Lördag:** Lätt promenad (20 min), stretcha
**25 september: LIDINGÖLOPPET! 30 km**
---
## Styrka & teknik
### Styrketräning (1-2 pass/vecka)
- Knäböj/utfall 3×10
- Step-up på bänk 3×12/ben
- Höftlyft eller nordic hamstrings 3×12
- Core: plankan (3×45 sek), sidoplanka (3×30 sek/ sida), ryggresning 3×15
### Backpass (1 pass/vecka)
1. 10 min uppvärmning på platt underlag.
2. Hitta en 200400 m backe (58% lutning).
3. Spring upp på 80% av max, fokusera på korta steg och armpendling.
4. Jogga eller gå ner.
5. Upprepa 610 gånger.
6. 10 min nedvarvning + rörlighet.
### Intervallpass (1 pass/vecka)
- **Tempointervaller:** 10 min uppvärmning → 6×3 min i högt tempo (2 min joggvila) → 10 min nedvarvning.
- **Längre intervaller:** 10 min uppvärmning → 4×5 min i 8085% av max (3 min joggvila) → 10 min nedvarvning.
---
## Eventspecifika råd Lidingöloppet
- **Terrängträning:** Spring i skogen så ofta som möjligt
- **Backstrategi:** Spring lugnt upp i backarna, utnyttja nedförsbackarna
- **Utrustning:** Terrängsko eller trailsko rekommenderas
- **Vätska:** Ta med vattenflaska eller använd depåerna
- **Pacing:** Första 15 km ska kännas lätt - spara kraft till andra halvan
---
## Navigation
← [[02_FAS2_VÄTTERNRUNDAN_VANSBRO|Föregående fas: Vätternrundan & Vansbro]] | [[TRÄNINGSPLAN_ÖVERSIKT|Översikt]] | [[04_FAS4_VASALOPPET|Nästa fas: Vasaloppet]] →
+242
View File
@@ -0,0 +1,242 @@
---
fas: 4
namn: Vasaloppet
period: Oktober 2026 - Februari 2027
veckor: 20
pass-per-vecka: 5-6
fokus:
- skiduthållighet
- stakning
- rullskidor
- överkroppsstyrka
- SkiErg
del:
- namn: Höstträning
period: Oktober - December 2026
veckor: 12
träningstyp: rullskidor
- namn: Vinterträning
period: December 2026 - Februari 2027
veckor: 8
träningstyp: längdskidor
tävlingar:
- namn: Vasaloppet
datum: 2027-02-28
distans: 90 km
typ: längdskidåkning
tags:
- fas4
- skidåkning
- vasaloppet
- rullskidor
---
# Fas 4: Fokus Vasaloppet
## Period: Oktober 2026 Februari 2027 (20 veckor)
### Mål
Bygga specifik styrka och uthållighet för 90 km skidåkning med fokus på stakning.
### Principer
- Växla från löp-/cykelfokus till rullskidor och sedan snö så snart underlaget tillåter det.
- Behåll styrketräning två gånger per vecka (överdel + bål/ben) hela fasen.
- Återhämtningsveckor efter 3 tunga veckor volymminskning 3040%.
- Långpass ökas gradvis upp mot 56 timmar inklusive energiplanering.
- Lägg in teknikspecifika pass (stakning, SkiErg, seedningslopp) för tävlingsvana.
---
## Veckoupplägg
### Del 1: Höstträning (oktober december, 12 veckor)
#### **Vecka 1-2: Återhämtning & Övergång**
Vila efter Lidingöloppet!
**Exempel vecka:**
- **Måndag-Torsdag:** Vila eller lätta promenader
- **Fredag:** Styrketräning (30 min) - Lätt
- **Lördag:** Cykling eller löpning (60 min) - Lugnt
- **Söndag:** Vila
---
#### **Vecka 3-5: Introduktion rullskidor (5 pass/vecka)**
**Exempel vecka:**
- **Måndag:** Styrketräning ÖVERKROPP (45 min) - Fokus triceps, axlar, lats
- **Tisdag:** Rullskidor stakning (60 min) - Teknikfokus
- **Onsdag:** SkiErg (30 min) + Styrketräning bål (30 min)
- **Torsdag:** Löpning eller cykling (45 min)
- **Fredag:** Vila
- **Lördag:** Rullskidor LÅNGPASS (90-120 min) - Lugnt tempo
- **Söndag:** Styrketräning BEN (45 min) - Knäböj, utfall, benpress
---
#### **Vecka 6: Återhämtningsvecka**
Minska träning med 40%.
---
#### **Vecka 7-9: Bygga volym (6 pass/vecka)**
**Exempel vecka:**
- **Måndag:** SkiErg intervaller (45 min) - 8x3 min
- **Tisdag:** Rullskidor (75 min) - Tempo stakning
- **Onsdag:** Styrketräning ÖVERKROPP (50 min) - Tung träning
- **Torsdag:** Rullskidor teknik (60 min)
- **Fredag:** Vila
- **Lördag:** Rullskidor LÅNGPASS (2,5-3 tim) - Endast stakning
- **Söndag:** Cykling eller löpning (60 min) + Styrka core (20 min)
**Öka långpasset:** Vecka 7: 2,5h → Vecka 8: 2,75h → Vecka 9: 3h
---
#### **Vecka 10: Återhämtningsvecka**
---
#### **Vecka 11-12: Peakveckor höst (6 pass/vecka)**
**Exempel vecka:**
- **Måndag:** SkiErg (45 min) - Hårt pass
- **Tisdag:** Rullskidor intervaller (75 min) - 5x8 min tempo
- **Onsdag:** Styrketräning helkropp (50 min)
- **Torsdag:** Rullskidor (60 min) - Lätt återhämtning
- **Fredag:** Vila
- **Lördag:** Rullskidor LÅNGPASS (3,5-4 tim) - Simulera Vasalopp
- **Söndag:** Lätt löpning (45 min)
---
### Del 2: Vinterträning (december februari, 8 veckor)
#### **Vecka 13-14: Övergång till snö (5-6 pass/vecka)**
Byt rullskidor mot vanliga skidor så fort det finns snö!
**Exempel vecka:**
- **Måndag:** SkiErg (45 min)
- **Tisdag:** Skidor (90 min) - Teknik stakning
- **Onsdag:** Styrketräning (45 min)
- **Torsdag:** Skidor (60 min) - Lugnt
- **Fredag:** Vila
- **Lördag:** Skidor LÅNGPASS (2-2,5 tim)
- **Söndag:** Lätt löpning eller vila
---
#### **Vecka 15-17: Bygga skiddistans (6 pass/vecka)**
**Exempel vecka:**
- **Måndag:** SkiErg intervaller (45 min)
- **Tisdag:** Skidor (90 min) - Tempopass stakning
- **Onsdag:** Styrketräning (45 min) - Tung överkropp
- **Torsdag:** Skidor (60 min) - Teknik
- **Fredag:** Vila
- **Lördag:** Skidor LÅNGPASS (3-4,5 tim) - Öka varje vecka
- **Söndag:** Skidor eller cykling (60 min) - Återhämtning
**Öka långpasset:** Vecka 15: 3h → Vecka 16: 3,5h → Vecka 17: 4,5h
---
#### **Vecka 18: Återhämtningsvecka**
Minska träning kraftigt. Max 2 timmar långpass.
---
#### **Vecka 19: Peakvecka (5 pass)**
**Exempel vecka:**
- **Måndag:** Vila
- **Tisdag:** Skidor intervaller (75 min) - 4x10 min
- **Onsdag:** Styrketräning (30 min) - Lätt
- **Torsdag:** Skidor (60 min) - Lugnt tempo
- **Fredag:** Vila
- **Lördag:** Skidor LÅNGPASS (5-6 tim / 60-70 km) - **GENERALREPETITION!**
- **Söndag:** SkiErg (30 min) eller vila
**VIKTIGT:** Åk gärna ett seedningslopp (ex. Tjejvasan, Kortvasan) för tävlingserfarenhet!
---
#### **Vecka 20: Tävlingsvecka Vasaloppet**
**Måndag:** Vila
**Tisdag:** Skidor (45 min) - Mycket lätt
**Onsdag:** SkiErg (20 min) + stretching
**Torsdag:** Vila
**Fredag:** Lätt SkiErg (15 min) - Håll musklerna varma
**Lördag:** Vila - res till Sälen, förbered utrustning
**SÖNDAG - VASALOPPET! 90 km från Sälen till Mora**
---
## Styrka & rörlighet för skidåkning
### Överkropp (stakning)
1. **SkiErg** - 5x3 min eller kontinuerligt 20-30 min
2. **Chins/Pulldowns** - 3x10 (rygg/lats)
3. **Dips/Armhävningar** - 3x10-15 (triceps)
4. **Axelpress** - 3x10
5. **Rodd** - 3x12 (rygg)
### Core/Bål
1. **Plankan** - 3x60 sek
2. **Rygglyft** - 3x15
3. **Ryska twists** - 3x20
4. **Dead bug** - 3x12
### Ben
1. **Knäböj** - 3x10-12
2. **Utfall** - 3x10/ben
3. **Benpress** - 3x12
4. **Benböj** - 3x10
5. Avsluta varje pass med 5 min rörlighet för höftböjare, bröstkorg och triceps för bättre stakposition.
---
## Eventspecifika råd Vasaloppet
### Utrustning
- **Skidor:** Fästvalla eller felleski för första Vasaloppet
- **Stavar:** Rätt längd för stakning (puls + 10-15 cm)
- **Kläder:** Lager-på-lager, testa i träningen
- **Smörjning:** Lär dig grundläggande vallning eller använd servicetält
### Teknik
- **Stakning:** Viktigaste tekniken - öva mycket!
- **Sparkstaking:** Bra för variation och vila
- **Diagonalskridsko:** Kan användas i backarna
### Strategi
- **Starta LUGNT:** De första 2 timmarna ska kännas lätt
- **Depåer:** Planera stopp för mat/dryck (Mångsbodarna, Risberg, Evertsberg)
- **Näring:** Ät och drick regelbundet - var 20-30 min
- **Tempo:** Jämnt tempo hela vägen, spara inte för mycket till slutet
### Mental förberedelse
- Vasaloppet är lång - acceptera att det blir tungt
- Fokusera på en sträcka i taget (depå till depå)
- Njut av upplevelsen och folkfesten!
---
## Gratulerar!
När du passerar mållinjen i Mora har du genomfört EN SVENSK KLASSIKER! 🎉
Detta är en prestation få klarar av. Var stolt över dig själv!
---
## Navigation
← [[03_FAS3_LIDINGÖLOPPET|Föregående fas: Lidingöloppet]] | [[TRÄNINGSPLAN_ÖVERSIKT|Översikt]] | [[START|Hem]] →
+73
View File
@@ -0,0 +1,73 @@
# AGENTINSTRUKTIONER
Den här filen styr hur AIagenter ska arbeta i träningsplanens repo. Följ riktlinjerna nedan för att hålla materialet konsekvent, motiverande och användbart för en nybörjaratlet som siktar på "En Svensk Klassiker" 20262027.
## Syfte och kontext
- **Mål**: Stöd planering och uppdateringar inför Vätternrundan (12 juni 2026), Vansbrosimningen (27 juni 2026), Lidingöloppet (25 september 2026) och Vasaloppet (februari 2027).
- **Målgrupp**: Motionär som bygger upp formen från grunden och behöver tydliga steg, trygghet och pepp.
- **Övergripande filosofi**: Kontinuitet går före intensitet, volymökningar sker max 10% per vecka och återhämtningsveckor (3040% volym) planeras var 34 vecka.
## Filstruktur (huvudfiler)
- `TRÄNINGSPLAN_ÖVERSIKT.md`: Filosofi, generella råd, fasöversikter och datum.
- `01_FAS1_GRUNDTRÄNING.md`: Fas1 (nov 2025mars 2026, 16 veckor) med fokus på basuthållighet och vanor.
- `02_FAS2_VÄTTERNRUNDAN_VANSBRO.md`: Fas2 (aprjuni 2026, 10 veckor + 2 efterlopp) för cykel + simning.
- `03_FAS3_LIDINGÖLOPPET.md`: Fas3 (julisept 2026, 12 veckor) för löpfokus och terrängvana.
- `04_FAS4_VASALOPPET.md`: Fas4 (okt 2026feb 2027, 20 veckor) för längdskidor och överkroppsstyrka.
- `AGENTS.md`: Denna vägledning. `CLAUDE.md` får komplettera men ersätter inte innehållet här.
## Språk, ton och format
- **Språk**: Allt innehåll (beskrivningar, rubriker, tabeller, råd) ska skrivas på svenska med svenska träningsbegrepp.
- **Ton**: Uppmuntrande, trygg och handlingsinriktad. Lyft fram små segrar och vikten av återhämtning.
- **Markdown**: Tydliga rubriker (##, ###), punktlistor där det underlättar, och tabeller för fasöversikter. Markera viktiga ord och eventnamn med **fetstil**.
- **Veckostruktur**: Beskriv blockvis (t.ex. vecka 14, 58), lägg in exempelveckor med 56 pass och specificera vila.
- **Passformat**: Ange tid/distanser och intensitet (ex. "6×3 min i högt tempo (2 min vila)", "Långpass cykel 34 tim lugnt tempo").
## Fasstruktur att följa
1. Period och omfattning direkt efter rubriken.
2. Fasens mål (vad ska kunna genomföras efter avslut).
3. Principer (prioriterade fokusområden och vanliga fallgropar).
4. Veckoblock med progressionslogik, inklusive återhämtningsveckor.
5. Exempelvecka med dag-för-dag-upplägg.
6. Styrka/rörlighet eller teknikpass som stöder fasens krav.
7. Eventspecifika råd (bränsle, logistik, klädsel etc.).
## Arbetsflöde vid ändringar
- **Sammanhang först**: Kontrollera hur en ändring i fas X påverkar efterföljande faser innan du skriver.
- **Bevara progressionen**: Säkerställ att volym och intensitet ökar gradvis och att återhämtningsveckor ligger kvar.
- **Synka dokument**: Uppdatera `TRÄNINGSPLAN_ÖVERSIKT.md` när du ändrar en fas så att summeringar, datum och antal veckor matchar.
- **Prioritera nästa lopp**: Om tidsplanen spricker, fokusera på det närmast kommande evenemangets krav snarare än att försöka hinna ikapp allt.
- **Klarspråk om fas 2**: Notera att den officiellt är "10 veckor" men innehåller veckorna 1112 för Vansbrospecifik träning efter Vätternrundan.
## Vanliga justeringar
- **Missade 12 veckor**: Starta där atleten slutade, sänk volymen 20% första veckan tillbaka och gå in i ordinarie progression om kroppen svarar bra.
- **Missade 3+ veckor**: Flytta bak två veckor i planen, öka därefter max 10% per vecka och överväg att komprimera fasen eller justera målsättningen.
- **Överträningssignaler**: Lägg in extra återhämtningsvecka (40% volym), dra ned intensitet och minska antalet pass tillfälligt (t.ex. från 6 till 5).
- **Skador**: Vid lättare besvär byt ut problempasset mot alternativ träning. Vid smärta >3 dagar pausa den disciplinen. Vid akut skada vila helt, backa tre veckor när träningen återupptas och rekommendera medicinsk rådgivning.
## Milstolpar för kvalitetssäkring
- **Slut Fas 1 (mars 2026)**: 2 h cykelpass i lugnt tempo, 8001000 m kontinuerlig simning, 45 min lugn löpning, vana att köra 45 pass/vecka.
- **Slut Fas 2 (juni 2026)**: Klarat 300 km Vätternrundan, 2 km Vansbrosimning, trygg med 56 timmars cykel och bibehållen allmän uthållighet.
- **Slut Fas 3 (sept 2026)**: Genomfört 30 km Lidingöloppet, kan springa 2025 km i kuperad terräng och hanterar två träningsdagar i rad.
- **Slut Fas 4 (feb 2027)**: Klarat 90 km Vasaloppet, har uthållig överkroppsstyrka och orkar 56 timmars skidpass "En Svensk Klassiker" i hamn.
## Ordlista och stil
- **Pass**, **Långpass**, **Vecka**, **Vila**, **Återhämtning**, **Tempo**, **Intervaller**, **Lugnt tempo**, **Högt tempo**, **Uppvärmning**, **Nedvarvning**, **Styrketräning** använd dessa svenska termer konsekvent.
- Undvik engelska uttryck när svenska alternativ finns.
- Lämna närings- eller utrustningsråd där de redan behandlas (i översiktsfilen) om du inte instruerats att utöka dem.
## Att undvika
- Generiska hälsotips utan koppling till fasen.
- Överdetaljerade biomekaniska resonemang som inte hjälper motionären att agera.
- Att ta bort återhämtningsveckor, slå ihop block utan motivering eller ignorera fasta tävlingsdatum.
Följ dessa riktlinjer så hålls hela planeringsmaterialet konsekvent, peppigt och lätt att använda för den som tränar mot sin Klassiker.
+181
View File
@@ -0,0 +1,181 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Repository Purpose
This repository contains a comprehensive training plan for completing "En Svensk Klassiker" (Swedish Classic) - a series of four endurance events in Sweden over 2026-2027:
1. **Vätternrundan** (June 12, 2026) - 300 km cycling
2. **Vansbrosimningen** (June 27, 2026) - 2 km open water swimming
3. **Lidingöloppet** (September 25, 2026) - 30 km trail running
4. **Vasaloppet** (February 2027) - 90 km cross-country skiing
The plan is designed for a beginner athlete starting from the ground up.
## File Structure
- **TRÄNINGSPLAN_ÖVERSIKT.md** - Master overview with philosophy, general advice, and phase summaries
- **01_FAS1_GRUNDTRÄNING.md** - Phase 1 foundation building (November 2025 - March 2026, 16 weeks)
- **02_FAS2_VÄTTERNRUNDAN_VANSBRO.md** - Phase 2 cycling and swimming focus (April - June 2026, 10-12 weeks)
- **03_FAS3_LIDINGÖLOPPET.md** - Phase 3 running focus (July - September 2026, 12 weeks)
- **04_FAS4_VASALOPPET.md** - Phase 4 cross-country skiing focus (October 2026 - February 2027, 20 weeks)
- **AGENTS.md** - Legacy AI agent instructions (CLAUDE.md supersedes this file)
## Content Guidelines
### Language
All content must be written in Swedish. This includes:
- Training descriptions
- Exercise names
- Tips and advice
- All documentation
### Tone and Style
- Encouraging and supportive for a beginner athlete
- Practical and actionable
- Focus on gradual progression and injury prevention
- Emphasize listening to one's body
### Training Philosophy
The plan follows these core principles:
- **Gradual progression**: Maximum 10% volume increase per week
- **Recovery weeks**: Every 3-4 weeks is a lighter recovery week (30-40% reduction)
- **Continuity over intensity**: Regularity is more important than hard training
- **Build from foundation**: Each phase builds on the previous one
### Formatting Standards
- Use proper Markdown syntax with clear headers (##, ###)
- Week-by-week structure with example training weeks
- Include specific time durations and distances
- Use tables for phase summaries
- Bold important concepts and event names
- Use bullet lists for tips and guidelines
## Phase Structure Pattern
Each phase file follows this structure:
1. **Period and duration** at the top
2. **Goals** for the phase
3. **Principles** specific to that phase
4. **Weekly progression** broken into blocks (e.g., weeks 1-4, 5-8)
5. **Example training weeks** with specific days and sessions
6. **Recovery week reminders** between blocks
7. **Specialized training programs** (e.g., strength training, intervals)
8. **Event-specific tips** at the end
## Working with the Plan
### Adapting the Plan
When the user needs to modify training due to life circumstances:
- Maintain the 10% progression rule even if restarting after a break
- Preserve recovery weeks - never skip them, even when "catching up"
- If a phase is delayed, check if competition dates need adjustment or if phases need compression
- Prioritize the next upcoming event's specific training over maintaining perfect chronology
- If someone is behind schedule, focus on event-specific training rather than trying to complete all weeks
### Phase Dependencies
Understanding how phases build on each other:
- **Fas 1** builds the aerobic base and training habit needed for all subsequent phases
- **Fas 2** builds cycling-specific endurance while maintaining swim fitness from Fas 1
- **Fas 3** transitions to running-focused training after the cycling-heavy Fas 2
- **Fas 4** requires upper body strength foundation built during earlier strength training sessions
- Skipping Fas 1 or reducing it significantly will compromise performance in all later phases
### Common Modifications
#### If Someone Misses 1-2 Weeks
- Resume at the same week they left off (don't skip ahead)
- Reduce volume by 20% for the first week back
- Return to planned progression in week 2 if feeling good
#### If Someone Misses 3+ Weeks
- Step back 2 weeks in the plan
- Rebuild gradually with 10% weekly increases
- May need to adjust phase timeline or event goals
#### Signs of Overtraining
If the user reports persistent fatigue, irritability, or declining performance:
- Immediately insert an extra recovery week (40% volume reduction)
- Reduce intensity in subsequent weeks
- Consider reducing from 6 passes/vecka to 5 passes/vecka
- Ensure 7-8 hours sleep is happening
#### Injury Management
- Minor aches: Continue training but avoid the specific movement causing pain
- Persistent pain (3+ days): Replace that training type with cross-training
- Acute injury: Full rest until medical clearance, then restart 3 weeks back in the plan
### Week Numbering Notes
- **Fas 2** header says "10 veckor" but contains 12 weeks of content (weeks 11-12 cover Vansbro preparation after Vätternrundan)
- This is intentional - the phase focuses on two events with different preparation timelines
- When referencing Fas 2, clarify whether you mean "10 weeks to Vätternrundan" or "12 weeks total including Vansbro"
## Key Milestones
These benchmarks help verify progression is on track:
### End of Fas 1 (March 2026)
- Can complete 2-hour cycling session comfortably
- Can swim 800-1000m continuously with good technique
- Can jog continuously for 45 minutes
- Established 4-5 training sessions per week habit
### End of Fas 2 (Post-Vätternrundan, June 2026)
- Completed 300 km cycling event
- Can complete 2 km open water swim
- Comfortable with 5-6 hour cycling sessions
- Maintained aerobic fitness during cycling-focused phase
### End of Fas 3 (Post-Lidingöloppet, September 2026)
- Completed 30 km trail running event
- Can run 20-25 km in varied terrain
- Built leg strength for hill running
- Comfortable with back-to-back training days
### End of Fas 4 (February 2027)
- Completed 90 km cross-country skiing event
- Built upper body endurance for sustained staking
- Can complete 5-6 hour skiing sessions
- **Achieved En Svensk Klassiker status!**
## Training Session Format
When describing training sessions:
- Specify duration in minutes or hours (e.g., "90 min", "3-4 tim")
- Include intensity descriptors (lugnt tempo, högt tempo, intervaller)
- For interval sessions, use format: "6x3 min i högt tempo (2 min vila)"
- For long sessions, include distance ranges (e.g., "80-100 km")
- Always specify rest/recovery periods
## Key Swedish Terms
- **Pass** = training session
- **Långpass** = long training session
- **Vecka** = week
- **Vila** = rest
- **Återhämtning** = recovery
- **Tempo** = pace/intensity
- **Intervaller** = intervals
- **Lugnt tempo** = easy pace
- **Högt tempo** = high intensity
- **Uppvärmning** = warm-up
- **Nedvarvning** = cool-down
- **Styrketräning** = strength training
## Consistency Requirements
When modifying training plans:
1. **Check phase alignment**: Changes to one phase may affect subsequent phases
2. **Maintain progression**: Ensure gradual increases in volume/intensity
3. **Preserve recovery weeks**: Don't remove or move recovery weeks
4. **Update overview**: If modifying individual phases, update TRÄNINGSPLAN_ÖVERSIKT.md accordingly
5. **Cross-reference dates**: Competition dates are fixed - adjust training blocks to fit
## Content to Avoid
- Do not add generic fitness advice that applies to all training
- Avoid overly technical exercise descriptions unless necessary
- Don't include nutrition details beyond what's in TRÄNINGSPLAN_ÖVERSIKT.md
- Don't add equipment lists to individual phases (already in overview)
- Avoid English terms when Swedish equivalents exist
File diff suppressed because it is too large Load Diff
+287
View File
@@ -0,0 +1,287 @@
{
"file": "/home/julle/Documents/training/Data/training/activity_20922168380.tcx",
"parsed_at": "2025-11-08T12:43:54.000978",
"activity": {
"sport": "Biking",
"id": "2025-11-07T19:14:26.000Z",
"date": "2025-11-07"
},
"summary": {
"total_time_seconds": 1782.0,
"total_time_formatted": "29:42",
"total_distance_meters": 11512.23,
"total_distance_km": 11.51,
"avg_speed_kmh": 23.3,
"max_speed_kmh": 38.2,
"total_calories": 170,
"num_laps": 21,
"num_trackpoints": 1802
},
"heart_rate": {
"avg": 161.2,
"min": 90,
"max": 184
},
"heart_rate_zones": {
"zone1_pct": 2.6,
"zone2_pct": 8.6,
"zone3_pct": 7.0,
"zone4_pct": 20.9,
"zone5_pct": 60.9,
"note": "Zoner baserade på: Z1<110, Z2:110-129, Z3:129-147, Z4:147-166, Z5>166 bpm"
},
"power": {
"avg": 106.0,
"min": 0,
"max": 313
},
"cadence": {
"avg": 69.5,
"min": 0,
"max": 109
},
"altitude": {
"min": 1.2,
"max": 42.0,
"gain": 62.8
},
"speed": {
"avg_ms": 6.47,
"avg_kmh": 23.3,
"max_ms": 10.61,
"max_kmh": 38.2
},
"laps": [
{
"number": 1,
"start_time": "2025-11-07T19:14:26.000Z",
"time_seconds": 302.0,
"distance_meters": 1797.63,
"calories": 23,
"max_speed_ms": 8.121000289916992,
"avg_hr": 120,
"max_hr": 141,
"avg_cadence": 63
},
{
"number": 2,
"start_time": "2025-11-07T19:19:28.000Z",
"time_seconds": 30.0,
"distance_meters": 253.25,
"calories": 4,
"max_speed_ms": 8.638999938964844,
"avg_hr": 144,
"max_hr": 151,
"avg_cadence": 95
},
{
"number": 3,
"start_time": "2025-11-07T19:19:58.000Z",
"time_seconds": 30.0,
"distance_meters": 221.05,
"calories": 2,
"max_speed_ms": 8.600000381469727,
"avg_hr": 150,
"max_hr": 153,
"avg_cadence": 92
},
{
"number": 4,
"start_time": "2025-11-07T19:20:28.000Z",
"time_seconds": 30.0,
"distance_meters": 213.54,
"calories": 4,
"max_speed_ms": 7.690000057220459,
"avg_hr": 149,
"max_hr": 156,
"avg_cadence": 109
},
{
"number": 5,
"start_time": "2025-11-07T19:20:58.000Z",
"time_seconds": 30.0,
"distance_meters": 223.86,
"calories": 2,
"max_speed_ms": 7.686999797821046,
"avg_hr": 158,
"max_hr": 160,
"avg_cadence": 96
},
{
"number": 6,
"start_time": "2025-11-07T19:21:28.000Z",
"time_seconds": 30.0,
"distance_meters": 259.65,
"calories": 5,
"max_speed_ms": 9.489999771118164,
"avg_hr": 160,
"max_hr": 165,
"avg_cadence": 107
},
{
"number": 7,
"start_time": "2025-11-07T19:21:58.000Z",
"time_seconds": 120.0,
"distance_meters": 866.41,
"calories": 8,
"max_speed_ms": 9.52299976348877,
"avg_hr": 161,
"max_hr": 167,
"avg_cadence": 102
},
{
"number": 8,
"start_time": "2025-11-07T19:23:58.000Z",
"time_seconds": 20.0,
"distance_meters": 161.02,
"calories": 5,
"max_speed_ms": 9.340999603271484,
"avg_hr": 155,
"max_hr": 157,
"avg_cadence": 104
},
{
"number": 9,
"start_time": "2025-11-07T19:24:18.000Z",
"time_seconds": 120.0,
"distance_meters": 907.84,
"calories": 10,
"max_speed_ms": 9.479000091552734,
"avg_hr": 165,
"max_hr": 169,
"avg_cadence": 101
},
{
"number": 10,
"start_time": "2025-11-07T19:26:18.000Z",
"time_seconds": 20.0,
"distance_meters": 173.1,
"calories": 5,
"max_speed_ms": 9.741000175476074,
"avg_hr": 165,
"max_hr": 169,
"avg_cadence": 103
},
{
"number": 11,
"start_time": "2025-11-07T19:26:38.000Z",
"time_seconds": 120.0,
"distance_meters": 821.9,
"calories": 10,
"max_speed_ms": 9.852999687194824,
"avg_hr": 172,
"max_hr": 175,
"avg_cadence": 94
},
{
"number": 12,
"start_time": "2025-11-07T19:28:38.000Z",
"time_seconds": 20.0,
"distance_meters": 180.35,
"calories": 5,
"max_speed_ms": 10.069999694824219,
"avg_hr": 169,
"max_hr": 172,
"avg_cadence": 94
},
{
"number": 13,
"start_time": "2025-11-07T19:28:58.000Z",
"time_seconds": 300.0,
"distance_meters": 2263.29,
"calories": 28,
"max_speed_ms": 10.25100040435791,
"avg_hr": 172,
"max_hr": 180,
"avg_cadence": 85
},
{
"number": 14,
"start_time": "2025-11-07T19:33:58.000Z",
"time_seconds": 20.0,
"distance_meters": 170.87,
"calories": 5,
"max_speed_ms": 9.581999778747559,
"avg_hr": 170,
"max_hr": 175,
"avg_cadence": 90
},
{
"number": 15,
"start_time": "2025-11-07T19:34:18.000Z",
"time_seconds": 120.0,
"distance_meters": 870.04,
"calories": 10,
"max_speed_ms": 9.720000267028809,
"avg_hr": 175,
"max_hr": 179,
"avg_cadence": 84
},
{
"number": 16,
"start_time": "2025-11-07T19:36:18.000Z",
"time_seconds": 20.0,
"distance_meters": 183.84,
"calories": 5,
"max_speed_ms": 9.897000312805176,
"avg_hr": 173,
"max_hr": 174,
"avg_cadence": 95
},
{
"number": 17,
"start_time": "2025-11-07T19:36:38.000Z",
"time_seconds": 120.0,
"distance_meters": 709.61,
"calories": 10,
"max_speed_ms": 10.612000465393066,
"avg_hr": 177,
"max_hr": 181,
"avg_cadence": 85
},
{
"number": 18,
"start_time": "2025-11-07T19:38:38.000Z",
"time_seconds": 20.0,
"distance_meters": 106.83,
"calories": 5,
"max_speed_ms": 6.922999858856201,
"avg_hr": 174,
"max_hr": 179,
"avg_cadence": 99
},
{
"number": 19,
"start_time": "2025-11-07T19:38:58.000Z",
"time_seconds": 120.0,
"distance_meters": 589.1,
"calories": 11,
"max_speed_ms": 7.113999843597412,
"avg_hr": 180,
"max_hr": 184,
"avg_cadence": 83
},
{
"number": 20,
"start_time": "2025-11-07T19:40:58.000Z",
"time_seconds": 180.0,
"distance_meters": 519.79,
"calories": 13,
"max_speed_ms": 7.196000099182129,
"avg_hr": 168,
"max_hr": 176,
"avg_cadence": 66
},
{
"number": 21,
"start_time": "2025-11-07T19:43:58.000Z",
"time_seconds": 10.0,
"distance_meters": 19.26,
"calories": 0,
"max_speed_ms": 4.208000183105469,
"avg_hr": 161,
"max_hr": 162,
"avg_cadence": 62
}
]
}
+61
View File
@@ -0,0 +1,61 @@
# En Svensk Klassiker - Träningsplan (Obsidian Vault)
Detta är en Obsidian-vault för träning inför En Svensk Klassiker 2026-2027.
## Öppna i Obsidian
1. Öppna Obsidian
2. Klicka på "Open folder as vault"
3. Välj denna mapp: `/var/home/julle/Documents/training`
4. Öppna filen `START.md` för att komma igång
## Vaultstruktur
### Huvudfiler
- **START.md** - Dashboard/hem-sida för snabb översikt
- **TRÄNINGSPLAN_ÖVERSIKT.md** - Komplett översikt av hela träningsplanen
- **01_FAS1_GRUNDTRÄNING.md** - Fas 1 detaljer
- **02_FAS2_VÄTTERNRUNDAN_VANSBRO.md** - Fas 2 detaljer
- **03_FAS3_LIDINGÖLOPPET.md** - Fas 3 detaljer
- **04_FAS4_VASALOPPET.md** - Fas 4 detaljer
### Mappar
- **Templates/** - Mallar för dagliga träningsloggar
- **Träningsdagbok/** - Här sparas dina dagliga anteckningar
- **.obsidian/** - Obsidian-konfiguration (ändra inte)
## Funktioner
### 📝 Dagliga träningsloggar
Använd dagliga anteckningar för att logga dina pass:
- Tryck `Ctrl/Cmd + P` och sök efter "Open today's daily note"
- Eller använd genvägstangenten
- En mall kommer automatiskt att fyllas i
### 🔗 Interna länkar
Alla faser är länkade till varandra för enkel navigering:
- Klicka på `[[länknamn]]` för att hoppa mellan sidor
- Använd navigationslänkarna längst ner på varje sida
### 🏷️ Tags
Använd tags för att hitta innehåll:
- `#fas1`, `#fas2`, `#fas3`, `#fas4` - Hitta specifika faser
- `#cykling`, `#simning`, `#löpning`, `#skidåkning` - Träningstyper
- `#vätternrundan`, `#vansbro`, `#lidingöloppet`, `#vasaloppet` - Tävlingar
### 🎨 CSS-styling
En custom CSS-snippet är inkluderad för bättre visualisering:
- Aktivera den i Settings → Appearance → CSS snippets
- Snippet: `training-plan.css`
### 📊 Graph View
Använd graph view (högerklicka på en fil → "Open graph view") för att se hur alla faser hänger ihop.
## Kom igång
1. Öppna `START.md`
2. Läs igenom `TRÄNINGSPLAN_ÖVERSIKT.md`
3. Börja med [[01_FAS1_GRUNDTRÄNING]]
4. Skapa din första träningslogg via daily notes
Lycka till! 🚴‍♂️🏊‍♂️🏃‍♂️⛷️
+78
View File
@@ -0,0 +1,78 @@
---
type: dashboard
tags:
- hem
- dashboard
---
# 🏃‍♂️ En Svensk Klassiker - Träningsplan
Välkommen till din träningsplan för **En Svensk Klassiker 2026-2027**!
## 🎯 Målet
Genomföra alla fyra tävlingarna i En Svensk Klassiker:
| Tävling | Datum | Distans | Typ |
|---------|-------|---------|-----|
| 🚴 **Vätternrundan** | 12 juni 2026 | 300 km | Cykling |
| 🏊 **Vansbrosimningen** | 27 juni 2026 | 2 km | Simning |
| 🏃 **Lidingöloppet** | 25 september 2026 | 30 km | Terränglöpning |
| ⛷️ **Vasaloppet** | Februari 2027 | 90 km | Längdskidåkning |
## 📚 Träningsfaser
### [[01_FAS1_GRUNDTRÄNING|Fas 1: Grundträning]]
**November 2025 - Mars 2026 (16 veckor)**
- Bygga grundkondition och träningsvana
- 3-5 pass/vecka
- Fokus: Cykling, simning, löpning, styrka
### [[02_FAS2_VÄTTERNRUNDAN_VANSBRO|Fas 2: Vätternrundan & Vansbro]]
**April - Juni 2026 (10-12 veckor)**
- Cykeluthållighet för 300 km
- 5-6 pass/vecka
- Fokus: Långpass cykel, simteknik
### [[03_FAS3_LIDINGÖLOPPET|Fas 3: Lidingöloppet]]
**Juli - September 2026 (12 veckor)**
- Löputhållighet och terränglöpning
- 4-5 pass/vecka
- Fokus: Långpass löpning, backträning
### [[04_FAS4_VASALOPPET|Fas 4: Vasaloppet]]
**Oktober 2026 - Februari 2027 (20 veckor)**
- Skiduthållighet för 90 km
- 5-6 pass/vecka
- Fokus: Rullskidor, längdskidor, stakning
## 📖 Dokumentation
- [[TRÄNINGSPLAN_ÖVERSIKT|Komplett träningsplan & översikt]]
- [[ZWIFT_GUIDE|Zwift-träningsguide]] 🚴 **Ny!**
- [[CLAUDE.md|Guide för AI-assistenter]]
## 📝 Träningsdagbok
**Använd dagliga anteckningar för att logga dina träningspass:**
- Tryck `Ctrl/Cmd + P` och välj "Open today's daily note"
- Eller navigera till mappen `Träningsdagbok/`
## 🎯 Grundprinciper
> **Skynda långsamt** - Din största tillgång är tid. Bygg en stabil grund.
-**Progression:** Max 10% ökning per vecka
-**Återhämtning:** Var 3-4:e vecka är lättare
-**Kontinuitet:** Regelbundenhet före intensitet
-**Lyssna på kroppen:** Vila är avgörande
## 🔍 Snabbnavigering
**Aktuell fas:** #fas1 #fas2 #fas3 #fas4
**Träningstyper:** #cykling #simning #löpning #skidåkning #styrka
**Tävlingar:** #vätternrundan #vansbro #lidingöloppet #vasaloppet
---
**Lycka till på din resa!** 🚴‍♂️🏊‍♂️🏃‍♂️⛷️
+94
View File
@@ -0,0 +1,94 @@
---
type: översikt
tags:
- träningsplan
- en-svensk-klassiker
created: 2025-11-04
---
# Träningsplan: En Svensk Klassiker 2026-2027
Detta är en övergripande plan för att genomföra En Svensk Klassiker med start från grunden.
## Grundfilosofi
* **Skynda långsamt:** Din största tillgång är tid. Bygg en stabil grund.
* **Kontinuitet före intensitet:** Regelbundenhet är nyckeln.
* **Lyssna på kroppen:** Vila är avgörande för att bli starkare och undvika skador.
* **Progression:** Öka träningsvolymen max 10% per vecka
* **Återhämtning:** Var 3-4:e vecka är en lättare återhämtningsvecka
## Tävlingar
1. **Vätternrundan:** 12 juni 2026 (300 km cykel)
2. **Vansbrosimningen:** 27 juni 2026 (2 km simning)
3. **Lidingöloppet:** 25 september 2026 (30 km terränglopp)
4. **Vasaloppet:** Februari 2027 (90 km längdskidåkning)
## Träningsfaser - Översikt
### **Fas 1: Grundträning (November 2025 - Mars 2026, 16 veckor)**
- **Mål:** Bygga allmän kondition och träningsvana
- **Volym:** 3-5 pass/vecka
- **Fokus:** Cykling, simning, löpning/gång, styrketräning
- **Se:** [[01_FAS1_GRUNDTRÄNING]]
### **Fas 2: Vätternrundan & Vansbro (April - Juni 2026, 12 veckor)**
- **Mål:** Cykeluthållighet för 300 km + simförmåga 2 km
- **Volym:** 5-6 pass/vecka
- **Fokus:** Långpass cykel (upp till 6 timmar), simteknik, öppen vatten
- **Tävlingar:** Vätternrundan (12 juni), Vansbrosimningen (27 juni)
- **Se:** [[02_FAS2_VÄTTERNRUNDAN_VANSBRO]]
### **Fas 3: Lidingöloppet (Juli - September 2026, 12 veckor)**
- **Mål:** Löputhållighet och terränglöpning
- **Volym:** 4-5 pass/vecka
- **Fokus:** Långpass löpning (upp till 25 km), backträning, intervaller
- **Tävling:** Lidingöloppet (25 september)
- **Se:** [[03_FAS3_LIDINGÖLOPPET]]
### **Fas 4: Vasaloppet (Oktober 2026 - Februari 2027, 20 veckor)**
- **Mål:** Skiduthållighet för 90 km
- **Volym:** 5-6 pass/vecka
- **Fokus:** Rullskidor (höst), längdskidor (vinter), stakningsstyrka, SkiErg
- **Tävling:** Vasaloppet (Februari 2027)
- **Se:** [[04_FAS4_VASALOPPET]]
## Summering av träningsvolymen
| Period | Veckor | Pass/vecka | Längsta pass | Huvudfokus |
|--------|--------|------------|--------------|------------|
| Fas 1 | 16 | 3-5 | 2h cykel | Grund |
| Fas 2 | 12 | 5-6 | 6h cykel | Cykel + Sim |
| Fas 3 | 12 | 4-5 | 25 km löpning | Löpning |
| Fas 4 | 20 | 5-6 | 6h skidor | Skidor |
## Generella råd
### **Utrustning du behöver**
- **Cykel:** Racerycykel eller hybridcykel, cykelhjälm, shorts med sälskydd
- **Cykling inomhus (valfritt):** Zwift + smart trainer eller rullband - perfekt för vinterträning
- **Simning:** Simglasögon, våtdräkt för öppet vatten
- **Löpning:** Löparskor (terräng/trail), löparkläder
- **Skidor:** Längdskidor (fästvalla eller fell), stavar, skidkläder, rullskidor (höst)
- **Gym:** Gymkort (för SkiErg och styrketräning)
💡 **Tips:** Se [[ZWIFT_GUIDE|Zwift-guiden]] för strukturerade inomhuspass!
### **Näring och återhämtning**
- **Daglig kost:** Balanserad kost med fokus på kolhydrater, protein och grönsaker
- **Under träning:** Vid pass över 90 min - ta med energi (gel, frukt, sportdryck)
- **Efter träning:** Återhämtning inom 30 min (smoothie, ägg, yoghurt)
- **Sömn:** 7-8 timmar/natt är avgörande
### **Lyssna på kroppen**
- **Träningsvärk:** Normalt - visar att musklerna anpassar sig
- **Smärta:** INTE okej - vila och sök hjälp om det inte försvinner
- **Trötthet:** Om du är ständigt trött - minska träningen
- **Sjuk:** ALLTID vila vid feber eller sjukdom
### **Motivation och mental träning**
- **Sätt delmål:** Varje fas är ett delmål
- **Träna med andra:** Hitta träningskamrater eller grupper
- **Dokumentera:** Skriv träningsdagbok eller använd app (Strava, Garmin)
- **Var flexibel:** Livet händer - anpassa planen efter behov
## Lycka till på din resa! 🚴‍♂️🏊‍♂️🏃‍♂️⛷️
+94
View File
@@ -0,0 +1,94 @@
---
type: referens
tags:
- träningszoner
- puls
- cykling
created: 2025-11-08
max-puls: 184
---
# Träningszoner - Pulszoner
Baserat på din uppmätta **maxpuls: 184 bpm** (från cykelpass 2025-11-07)
## Pulszoner för träning
| Zon | Namn | BPM-intervall | % av max | Syfte | Hur det känns |
|-----|------|---------------|----------|-------|---------------|
| **1** | Återhämtning | 92-110 bpm | 50-60% | Aktiv återhämtning, uppvärmning | Mycket lätt, kan prata fritt |
| **2** | Grundträning | 110-129 bpm | 60-70% | Grundkondition, fettförbränning | Lätt, kan prata hela tiden |
| **3** | Tempo | 129-147 bpm | 70-80% | Aerob kapacitet, uthållighet | Måttligt, kan prata i korta meningar |
| **4** | Högt tempo | 147-166 bpm | 80-90% | Tröskeltempo, intervaller | Tufft, svårt att prata |
| **5** | Maximum | 166-184 bpm | 90-100% | Sprint, maxintervaller | Mycket hårt, kan inte prata |
## Träningszoner per fas
### Fas 1: Grundträning (November 2025 - Mars 2026)
**Fokus:** Bygga grundkondition utan att överbelasta kroppen
- **Huvudsaklig träning:** Zon 2 (110-129 bpm)
- **Mål:** 80-90% av tiden i zon 2
- **Uppvärmning/nedvarvning:** Zon 1 (92-110 bpm)
- **Undvik:** Zon 4-5 (du bygger grund, inte toppform)
**Exempel cykelpass:**
- 5 min uppvärmning i zon 1 (92-110 bpm)
- 35-50 min i zon 2 (110-129 bpm)
- 5 min nedvarvning i zon 1
### Fas 2: Vätternrundan & Vansbro (April - Juni 2026)
**Fokus:** Cykeluthållighet + viss tempoträning
- **Långpass:** Zon 2 (110-129 bpm), upp till 6 timmar
- **Tempopass:** Zon 3 (129-147 bpm), 45-90 min
- **Intervaller:** Zon 4 (147-166 bpm), 1-2 pass/vecka
- **Mål:** 70% zon 2, 20% zon 3, 10% zon 4
### Fas 3: Lidingöloppet (Juli - September 2026)
**Fokus:** Löputhållighet + backträning
- **Långpass löpning:** Zon 2-3 (110-147 bpm)
- **Intervaller:** Zon 4 (147-166 bpm)
- **Backträning:** Zon 4 (147-166 bpm)
- **Återhämtningslopp:** Zon 2 (110-129 bpm)
### Fas 4: Vasaloppet (Oktober 2026 - Februari 2027)
**Fokus:** Skiduthållighet + stakning
- **Långpass skidor:** Zon 2-3 (110-147 bpm)
- **SkiErg/stakning:** Zon 3-4 (129-166 bpm)
- **Intervaller:** Zon 4 (147-166 bpm)
## Använda träningszonerna
### På Kickr/Zwift
1. Ställ in dina träningszoner i Zwift baserat på tabellen ovan
2. Använd färgkodningen på skärmen för att hålla rätt zon
3. För Fas 1: Håll dig i grönt/blått (zon 1-2)
### Med pulsklocka
1. Ställ in pulszoner i din Garmin/pulsklocka
2. Använd alarm för att varna när du går över zon 2 (Fas 1)
3. Kontrollera genomsnittspuls efter passet
### Tips för att hålla zon 2
- **För lätt?** Det är meningen! Grundträning känns "för lätt" men bygger kondition
- **Svårt att hålla låg puls?** Normal i början - kroppen lär sig bli effektivare
- **Går över zon 2 i motlöpning?** Minska växeln, öka kadens, sänk watt
- **Backar:** Okej att gå till zon 3 kortare stunder, men återgå till zon 2
## Uppdatering av maxpuls
Din maxpuls kan ändras över tid. Uppdatera zonerna om du:
- Uppnår ny maxpuls under hårt träningspass eller tävling
- Märker att zonerna känns fel efter några månaders träning
- Gör ett maxpulstest (t.ex. 3x3 min intervaller med full kraft)
**Senaste uppmätta maxpuls:** 184 bpm (2025-11-07, cykelpass med Kickr)
## Relaterade länkar
- [[TRÄNINGSPLAN_ÖVERSIKT|Träningsplan översikt]]
- [[01_FAS1_GRUNDTRÄNING|Fas 1 - Grundträning]]
- [[ZWIFT_GUIDE|Zwift-guide]]
+50
View File
@@ -0,0 +1,50 @@
---
date:
"{ date }":
vecka:
fas:
tags:
- träningsdagbok
typ:
---
# {{date}}
## Planerat pass
**Typ:**
**Tid/Distans:**
**Intensitet:**
## Genomfört
**Faktisk tid/distans:**
**Hur kändes det:**
**Intensitet (1-10):**
## Anteckningar
### Utrustning
### Väder/Förhållanden
### Energi & Återhämtning
- **Sömn i natt:**
- **Energinivå före:**
- **Energinivå efter:**
- **Måltid före träning:**
- **Måltid efter träning:**
### Reflektion
## Länkad fas
- [[TRÄNINGSPLAN_ÖVERSIKT]]
---
**Nästa pass:**
+64
View File
@@ -0,0 +1,64 @@
---
vecka:
fas:
datum-start:
datum-slut:
tags:
- veckosammanfattning
---
# Vecka {{vecka}} - Sammanfattning
**Period:** {{datum-start}} - {{datum-slut}}
**Fas:**
## Planerat vs Genomfört
| Dag | Planerat | Genomfört | ✓ |
|-----|----------|-----------|---|
| Mån | | | |
| Tis | | | |
| Ons | | | |
| Tor | | | |
| Fre | | | |
| Lör | | | |
| Sön | | | |
**Totalt antal pass:**
## Volymer
- **Cykling:**
- **Simning:**
- **Löpning:**
- **Skidåkning/Rullskidor:**
- **Styrketräning:**
## Veckoreflektion
### Vad gick bra?
### Vad var utmanande?
### Hur var återhämtningen?
### Kroppsliga signaler
- **Energinivå (1-10):**
- **Sömnkvalitet (1-10):**
- **Muskelömhet:**
- **Eventuella smärtor:**
## Nästa vecka
### Mål för veckan
### Fokusområden
### Anteckningar
+220
View File
@@ -0,0 +1,220 @@
---
type: guide
tags:
- zwift
- cykling
- träning
- inomhusträning
created: 2025-11-04
workouts: 10
faser:
- fas1
- fas2
---
# Zwift Träningsguide
Guide för att använda Zwift-workouts i din träning för En Svensk Klassiker.
## Vad är Zwift?
Zwift är en online cykelträningsplattform där du kan cykla inomhus med strukturerade träningspass. Perfekt för:
- Vinterträning när det är kallt eller mörkt ute
- Dåligt väder
- När du vill ha kontrollerade, strukturerade pass
- Intervallträning med exakt effektkontroll
## Installation och Setup
### 1. Installera Workouts
**På Windows/Mac:**
1. Hitta din Zwift-mapp:
- Windows: `Documents/Zwift/Workouts/[ditt-användar-id]/`
- Mac: `Documents/Zwift/Workouts/[ditt-användar-id]/`
2. Kopiera `.zwo`-filerna från `Zwift-Workouts/` till Zwift-mappen
3. Starta om Zwift
**På iPad/iOS:**
- Använd Zwift Companion-appen för att importera workouts eller skapa dem manuellt
### 2. FTP-test
Innan du kör dessa workouts bör du göra ett FTP-test (Functional Threshold Power):
1. I Zwift, välj "Workouts" → "FTP Tests"
2. Kör "FTP Test (shorter)" eller "Ramp Test"
3. Zwift sätter automatiskt din FTP baserat på resultatet
**Alternativ:** Uppskatta FTP
- Nybörjare: ~2.0-2.5 W/kg kroppsvikt
- Tränad: ~3.0-3.5 W/kg
- Exempel: 80 kg person × 2.5 = 200W FTP
## Workouts per Fas
### [[01_FAS1_GRUNDTRÄNING|Fas 1: Grundträning]]
#### 🟢 01_Grunduthållighet_45min.zwo
**Vecka 1-4**
- **Längd:** 45 minuter
- **Fokus:** Grundläggande uthållighet, låg intensitet
- **När:** Onsdag eller motsvarande cykeldag
- **Känns:** Lätt, du ska kunna prata hela tiden
#### 🟡 02_Tempo_60min.zwo
**Vecka 5-8**
- **Längd:** 60 minuter
- **Fokus:** Tempo med strukturerade intervaller
- **När:** Mitt i veckan
- **Känns:** Medel ansträngning, svårare att prata
#### 🟡 03_Intervaller_Lätt_60min.zwo
**Vecka 9-12**
- **Längd:** 60 minuter
- **Fokus:** Introduktion till intervallträning
- **När:** Tisdag/Onsdag
- **Känns:** Högre puls under intervallerna, men återhämtning mellan
#### 🔵 04_Långpass_90min.zwo
**Vecka 13-16**
- **Längd:** 90 minuter
- **Fokus:** Bygga uthållighet för längre pass
- **När:** Helg (ersätter utomhuspass vid dåligt väder)
- **Känns:** Långt men stadigt tempo
### [[02_FAS2_VÄTTERNRUNDAN_VANSBRO|Fas 2: Vätternrundan & Vansbro]]
#### 🟡 01_Uthållighet_90min.zwo
**Vecka 1-3**
- **Längd:** 90 minuter
- **Fokus:** Uthållighet med backintervaller
- **När:** Tisdag eller midweek
- **Känns:** Varierat, backarna är tuffa men korta
#### 🔴 02_Tempo_Intervaller_90min.zwo
**Vecka 5-7**
- **Längd:** 90 minuter
- **Fokus:** 3×8 min högt tempo (sweetspot/threshold)
- **När:** Tisdag
- **Känns:** Tufft, kräver fokus under intervallerna
#### 🔵 03_Långpass_120min.zwo
**Vecka 1-7**
- **Längd:** 2 timmar
- **Fokus:** Byggande uthållighet
- **När:** Lördag (kan ersätta utomhuspass)
- **Känns:** Långt, steady state
#### 🔵 04_Långpass_150min.zwo
**Vecka 5-7**
- **Längd:** 2.5 timmar
- **Fokus:** Lång uthållighet med variation
- **När:** Lördag
- **Känns:** Mycket långt, kräver mental styrka
#### 🟢 05_Återhämtning_60min.zwo
**Efter hårt pass**
- **Längd:** 60 minuter
- **Fokus:** Aktiv återhämtning, "spinna benen"
- **När:** Dagen efter hårt pass eller före långpass
- **Känns:** Mycket lätt, nästan för lätt
#### 🔴 06_Peak_Intervaller_75min.zwo
**Vecka 9**
- **Längd:** 75 minuter
- **Fokus:** 5×4 min threshold intervaller
- **När:** Tisdag, peakvecka
- **Känns:** Mycket hårt, pushar nära din FTP
## Träningsintensiteter (% av FTP)
| Zon | % av FTP | Känns som | Färgkod |
|-----|----------|-----------|---------|
| **Återhämtning** | <55% | Mycket lätt | 🟢 |
| **Uthållighet** | 55-75% | Lätt, kan prata | 🔵 |
| **Tempo** | 75-87% | Medel, kan säga meningar | 🟡 |
| **Sweetspot** | 88-93% | Hårt, korta svar | 🟠 |
| **Threshold** | 94-105% | Mycket hårt, nästan max | 🔴 |
| **VO2 Max** | >105% | Maximalt, korta intervaller | ⚫ |
## Tips för Zwift-träning
### Innan passet
- ✅ Drick 500ml vatten 30 min innan
- ✅ Lätt mellanmål 1-2h innan (om >60 min pass)
- ✅ Ha vattenflaska och handduk redo
- ✅ Öppna fönster för ventilation
- ✅ Starta fläkt
### Under passet
- 💧 Drick var 15:e minut
- 🍌 Pass över 90 min: ta energi (gel, banan, sportdryck)
- 📱 Använd Zwift Companion-app för enklare kontroll
- 🎵 Musik eller podcast gör långa pass trevligare
### Efter passet
- ✅ Kör nedvarvning även om du känner dig stark
- ✅ Stretcha 5-10 minuter
- ✅ Ät inom 30 min (protein + kolhydrater)
- ✅ Drick minst 500ml vatten
## Anpassa Workouts
### Om ett workout känns för lätt:
1. I Zwift, tryck på pil-upp under workout för att öka intensitet
2. Eller: Gör om ditt FTP-test - din FTP kan ha ökat!
### Om ett workout känns för hårt:
1. Tryck pil-ner i Zwift för att minska intensitet
2. Det är OK att anpassa - lyssna på kroppen
3. Överväg att göra om FTP-testet om ALLA pass känns för tunga
### Ersätta utomhuspass med Zwift:
- **Korta pass (45-90 min):** Fungerar perfekt på Zwift
- **Långa pass (2-6 timmar):**
- Gör första 2-3h på Zwift, fortsätt utomhus OM möjligt
- ELLER: Acceptera kortare men mer intensivt på Zwift
- Mental träning: Långa Zwift-pass bygger mental styrka!
## Vanliga frågor
**Q: Måste jag ha en smart trainer?**
A: Nej, men rekommenderas starkt. Smart trainer justerar motståndet automatiskt. Med vanlig trainer/rullband kan du fortfarande följa workouts men måste justera växlar manuellt.
**Q: Kan jag köra utomhus istället?**
A: Ja! Zwift-passen är designade för inomhus, men du kan översätta:
- Tempo = lätt cykling, puls ~65-70% av max
- Sweetspot = måttligt hårt, puls ~75-85% av max
- Intervaller = hårt tempo i angivna minuter
**Q: Hur ofta ska jag testa FTP?**
A: Var 6-8:e vecka, eller när workouts känns konsekvent för lätta/tunga.
**Q: Vad om jag missar ett pass?**
A: Hoppa INTE över återhämtningsveckor. Annars: fortsätt enligt plan, försök inte "komma ikapp".
## Integration med Träningsplanen
### Fas 1 exempel-vecka med Zwift:
- **Måndag:** Styrketräning (30 min)
- **Onsdag:** Zwift - Grunduthållighet 45 min
- **Lördag:** Simning (30 min)
- **Söndag:** Utomhuscykling ELLER Zwift långpass
### Fas 2 exempel-vecka med Zwift:
- **Måndag:** Simning
- **Tisdag:** Zwift - Tempo intervaller 90 min
- **Onsdag:** Styrka
- **Torsdag:** Zwift - Återhämtning 60 min
- **Lördag:** Utomhuscykling (långpass) ELLER Zwift 2-3h
- **Söndag:** Simning öppet vatten
## Resurser
- **Zwift Companion App:** Kontrollera workouts från telefonen
- **Strava:** Synka Zwift-aktiviteter automatiskt
- **TrainingPeaks:** Analysera dina pass (avancerat)
## Navigation
← [[START|Hem]] | [[TRÄNINGSPLAN_ÖVERSIKT|Träningsplan]] | [[01_FAS1_GRUNDTRÄNING|Fas 1]] | [[02_FAS2_VÄTTERNRUNDAN_VANSBRO|Fas 2]] →
@@ -0,0 +1,16 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 1: Grunduthållighet 45 min</name>
<description>Grundläggande uthållighetspass för att bygga aerob bas. Lugnt och stabilt tempo.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas1"/>
<tag name="Endurance"/>
<tag name="Recovery"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.65" pace="0"/>
<SteadyState Duration="1800" Power="0.65" pace="0"/>
<Cooldown Duration="300" PowerLow="0.65" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
+23
View File
@@ -0,0 +1,23 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 1: Tempo 60 min</name>
<description>Tempopass med strukturerade intervaller för att bygga kondition. Vecka 5-8.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas1"/>
<tag name="Tempo"/>
<tag name="Intervals"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.70" pace="0"/>
<SteadyState Duration="300" Power="0.70" pace="0"/>
<SteadyState Duration="120" Power="0.55" pace="0"/>
<SteadyState Duration="300" Power="0.70" pace="0"/>
<SteadyState Duration="120" Power="0.55" pace="0"/>
<SteadyState Duration="300" Power="0.70" pace="0"/>
<SteadyState Duration="120" Power="0.55" pace="0"/>
<SteadyState Duration="300" Power="0.70" pace="0"/>
<SteadyState Duration="300" Power="0.60" pace="0"/>
<Cooldown Duration="600" PowerLow="0.60" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,17 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 1: Lätta intervaller 60 min</name>
<description>Introduktion till intervallträning med korta ansträngningar. Fokus på teknik och känsla.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas1"/>
<tag name="Intervals"/>
<tag name="Sweetspot"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.70" pace="0"/>
<IntervalsT Repeat="6" OnDuration="180" OffDuration="120" OnPower="0.80" OffPower="0.55" pace="0"/>
<SteadyState Duration="600" Power="0.60" pace="0"/>
<Cooldown Duration="600" PowerLow="0.60" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,17 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 1: Långpass 90 min</name>
<description>Längre uthållighetspass för att bygga grundkondition. Vecka 13-16. Lugnt tempo genom hela passet.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas1"/>
<tag name="Endurance"/>
<tag name="Long"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.65" pace="0"/>
<SteadyState Duration="3000" Power="0.65" pace="0"/>
<SteadyState Duration="1200" Power="0.60" pace="0"/>
<Cooldown Duration="600" PowerLow="0.60" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,24 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 2: Uthållighet 90 min med backar</name>
<description>90 minuters uthållighetspass med backintervaller. Simulerar kuperad terräng. Vecka 1-3.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas2"/>
<tag name="Endurance"/>
<tag name="Hills"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.65" pace="0"/>
<SteadyState Duration="1200" Power="0.65" pace="0"/>
<SteadyState Duration="180" Power="0.85" pace="0"/>
<SteadyState Duration="300" Power="0.60" pace="0"/>
<SteadyState Duration="180" Power="0.85" pace="0"/>
<SteadyState Duration="300" Power="0.60" pace="0"/>
<SteadyState Duration="180" Power="0.85" pace="0"/>
<SteadyState Duration="300" Power="0.60" pace="0"/>
<SteadyState Duration="180" Power="0.85" pace="0"/>
<SteadyState Duration="1200" Power="0.65" pace="0"/>
<Cooldown Duration="600" PowerLow="0.65" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,19 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 2: Tempo med intervaller 90 min</name>
<description>Tempopass med 3x8 min högt tempo. Bygger cykelvana vid högre intensitet. Vecka 5-7.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas2"/>
<tag name="Tempo"/>
<tag name="Intervals"/>
<tag name="Sweetspot"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.70" pace="0"/>
<SteadyState Duration="600" Power="0.70" pace="0"/>
<IntervalsT Repeat="3" OnDuration="480" OffDuration="300" OnPower="0.88" OffPower="0.60" pace="0"/>
<SteadyState Duration="600" Power="0.65" pace="0"/>
<Cooldown Duration="600" PowerLow="0.65" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,17 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 2: Långpass 2 timmar</name>
<description>2 timmars uthållighetspass. Bygger specifik uthållighet för Vätternrundan. Steady pace.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas2"/>
<tag name="Endurance"/>
<tag name="Long"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.65" pace="0"/>
<SteadyState Duration="5400" Power="0.65" pace="0"/>
<SteadyState Duration="1200" Power="0.60" pace="0"/>
<Cooldown Duration="600" PowerLow="0.60" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,19 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 2: Långpass 2.5 timmar</name>
<description>2.5 timmars långpass med varierad intensitet. Simulerar lång cykeltur. Vecka 5-7.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas2"/>
<tag name="Endurance"/>
<tag name="Long"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.65" pace="0"/>
<SteadyState Duration="3600" Power="0.65" pace="0"/>
<SteadyState Duration="1800" Power="0.70" pace="0"/>
<SteadyState Duration="1800" Power="0.65" pace="0"/>
<SteadyState Duration="1200" Power="0.60" pace="0"/>
<Cooldown Duration="600" PowerLow="0.60" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,16 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 2: Återhämtningspass 60 min</name>
<description>Lätt återhämtningspass. Spinna benen efter hårt pass eller inför långpass. Mycket låg intensitet.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas2"/>
<tag name="Recovery"/>
<tag name="Easy"/>
</tags>
<workout>
<Warmup Duration="300" PowerLow="0.45" PowerHigh="0.55" pace="0"/>
<SteadyState Duration="3000" Power="0.55" pace="0"/>
<Cooldown Duration="300" PowerLow="0.55" PowerHigh="0.45" pace="0"/>
</workout>
</workout_file>
@@ -0,0 +1,18 @@
<workout_file>
<author>En Svensk Klassiker Träningsplan</author>
<name>Fas 2: Peak-intervaller 75 min</name>
<description>Hårdare intervaller inför Vätternrundan. 5x4 min i tempo. Vecka 9.</description>
<sportType>bike</sportType>
<tags>
<tag name="Fas2"/>
<tag name="Intervals"/>
<tag name="Threshold"/>
</tags>
<workout>
<Warmup Duration="600" PowerLow="0.50" PowerHigh="0.75" pace="0"/>
<SteadyState Duration="300" Power="0.70" pace="0"/>
<IntervalsT Repeat="5" OnDuration="240" OffDuration="180" OnPower="0.92" OffPower="0.60" pace="0"/>
<SteadyState Duration="600" Power="0.65" pace="0"/>
<Cooldown Duration="600" PowerLow="0.65" PowerHigh="0.50" pace="0"/>
</workout>
</workout_file>
+163
View File
@@ -0,0 +1,163 @@
---
type: instruktion
tags:
- zwift
- installation
---
# Installation av Zwift Workouts
Snabbguide för att installera .zwo-filer i Zwift.
## Steg-för-steg (Windows)
1. **Öppna Utforskaren**
- Tryck `Windows + E`
2. **Navigera till Zwift-mappen**
```
C:\Users\[DITT-NAMN]\Documents\Zwift\Workouts\
```
3. **Hitta din användar-mapp**
- Du ser en eller flera mappar med långa nummer (ex: `1234567890`)
- Detta är ditt Zwift-användar-ID
- Om osäker: kolla i Zwift Companion-appen under Profil
4. **Gå in i din användar-mapp**
```
C:\Users\[DITT-NAMN]\Documents\Zwift\Workouts\[ANVÄNDAR-ID]\
```
5. **Kopiera .zwo-filerna**
- Från denna vault: `Zwift-Workouts/Fas1/` och `Zwift-Workouts/Fas2/`
- Kopiera ALLA `.zwo`-filer till Zwift-mappen
- Du kan organisera i undermappar om du vill (valfritt)
6. **Starta om Zwift**
- Stäng Zwift helt
- Öppna Zwift igen
- Gå till "Workouts" → "Custom Workouts"
- Dina workouts ska nu synas!
---
## Steg-för-steg (Mac)
1. **Öppna Finder**
2. **Navigera till Zwift-mappen**
```
/Users/[DITT-NAMN]/Documents/Zwift/Workouts/
```
Eller tryck `Cmd + Shift + G` och klistra in:
```
~/Documents/Zwift/Workouts
```
3. **Hitta din användar-mapp**
- Mapp med långa nummer (ditt användar-ID)
4. **Kopiera .zwo-filerna**
- Från `Zwift-Workouts/Fas1/` och `Zwift-Workouts/Fas2/`
- Dra och släpp alla `.zwo`-filer
5. **Starta om Zwift**
---
## iOS/iPad
**Metod 1: Använd Zwift Companion**
1. Öppna Zwift Companion-appen
2. Gå till "Workouts"
3. Tyvärr stöder inte iOS direkt import av .zwo-filer
4. Du måste återskapa workouts manuellt (se nedan)
**Metod 2: Återskapa workout manuellt**
1. I Zwift Companion, gå till Workouts → Create Custom
2. Använd beskrivningarna i .zwo-filerna
3. Exempel för "01_Grunduthållighet_45min":
- Warmup: 10 min @ 50-65% FTP
- SteadyState: 30 min @ 65% FTP
- Cooldown: 5 min @ 65-50% FTP
---
## Verifiera installationen
1. Öppna Zwift
2. Välj "Workouts" istället för "Ride"
3. Klicka på "Custom Workouts"
4. Du ska se:
- ✅ Fas 1: Grunduthållighet 45 min
- ✅ Fas 1: Tempo 60 min
- ✅ Fas 1: Lätta intervaller 60 min
- ✅ Fas 1: Långpass 90 min
- ✅ Fas 2: Uthållighet 90 min med backar
- ✅ Fas 2: Tempo med intervaller 90 min
- ✅ ... och 4 till
**Ser du inte workouts?**
- Kontrollera att du kopierat till rätt användar-ID-mapp
- Starta om Zwift igen
- Kolla att filerna har rätt extension (.zwo, inte .zwo.txt)
---
## Felsökning
### Problem: "Jag ser inga custom workouts"
**Lösning:**
1. Kontrollera filplacering - måste vara i `Workouts/[ANVÄNDAR-ID]/`
2. Filerna måste sluta på `.zwo` (inte `.txt` eller annat)
3. Starta om Zwift HELT (inte bara logga ut)
### Problem: "Jag hittar inte min användar-ID-mapp"
**Lösning:**
1. Öppna Zwift Companion-appen
2. Gå till Profile/Profil
3. Ditt ID visas där (långt nummer)
4. Eller: Skapa en dummy-workout i Zwift → spara → se var den hamnar
### Problem: "Workouts fungerar men intensiteten känns fel"
**Lösning:**
1. Du behöver göra FTP-test först!
2. I Zwift: Workouts → FTP Tests → "Ramp Test"
3. Efter testet uppdateras din FTP automatiskt
### Problem: ".zwo-fil öppnas i textredigerare när jag dubbelklickar"
**Lösning:**
- Det är normalt! .zwo är XML-filer
- Kopiera filerna direkt till Zwift-mappen
- Öppna INTE genom att dubbelklicka
---
## Alternativ: Zwift Companion Web
Om du har problem kan du använda Zwift:s webbverktyg:
1. Gå till https://whatsonzwift.com/workouts/custom-workouts/
2. Öppna .zwo-filen i en textredigerare
3. Kopiera innehållet
4. Skapa ny workout på webbsidan
5. Klistra in XML-koden
---
## Nästa steg
✅ Installationen klar? Bra jobbat!
**Nu:**
1. [[ZWIFT_GUIDE#FTP-test|Gör ett FTP-test]]
2. Kör ditt första workout från [[Zwift-Workouts/WORKOUT_SUMMARY|Workout-sammanfattningen]]
3. Följ [[01_FAS1_GRUNDTRÄNING|Fas 1]] eller [[02_FAS2_VÄTTERNRUNDAN_VANSBRO|Fas 2]]
---
## Navigation
← [[ZWIFT_GUIDE|Zwift-guide]] | [[Zwift-Workouts/README|Workout-översikt]] | [[START|Hem]] →
+94
View File
@@ -0,0 +1,94 @@
---
type: guide
tags:
- zwift
- workouts
---
# Zwift Workouts för En Svensk Klassiker
Denna mapp innehåller strukturerade Zwift-träningspass (.zwo-filer) som matchar träningsplanen för En Svensk Klassiker.
## Mappstruktur
```
Zwift-Workouts/
├── Fas1/ # Grundträning (16 veckor)
├── Fas2/ # Vätternrundan & Vansbro prep (10-12 veckor)
├── Fas3/ # Lidingöloppet prep (ingen cykling)
└── Fas4/ # Vasaloppet prep (ingen Zwift, fokus på skidor)
```
## Snabbstart
1. **Läs guiden:** [[ZWIFT_GUIDE|Zwift-träningsguide]]
2. **Gör FTP-test** i Zwift
3. **Kopiera workouts** till din Zwift-mapp
4. **Börja träna!**
## Workout-översikt
### Fas 1: Grundträning
| Fil | Längd | Fokus | Veckor |
|-----|-------|-------|--------|
| 01_Grunduthållighet_45min.zwo | 45 min | Grunduthållighet | 1-4 |
| 02_Tempo_60min.zwo | 60 min | Tempo | 5-8 |
| 03_Intervaller_Lätt_60min.zwo | 60 min | Intervaller | 9-12 |
| 04_Långpass_90min.zwo | 90 min | Långpass | 13-16 |
### Fas 2: Vätternrundan & Vansbro
| Fil | Längd | Fokus | Veckor |
|-----|-------|-------|--------|
| 01_Uthållighet_90min.zwo | 90 min | Backar | 1-3 |
| 02_Tempo_Intervaller_90min.zwo | 90 min | 3×8 min tempo | 5-7 |
| 03_Långpass_120min.zwo | 120 min | Långpass | 1-7 |
| 04_Långpass_150min.zwo | 150 min | Långpass | 5-7 |
| 05_Återhämtning_60min.zwo | 60 min | Återhämtning | Alla |
| 06_Peak_Intervaller_75min.zwo | 75 min | 5×4 min threshold | 9 |
### Fas 3 & 4
Ingen cykelträning i Fas 3 (fokus på löpning) och Fas 4 (fokus på skidor).
## Installation
### Windows
1. Gå till: `C:\Users\[ditt-namn]\Documents\Zwift\Workouts\[användar-id]\`
2. Kopiera alla `.zwo`-filer dit
3. Starta om Zwift
### Mac
1. Gå till: `/Users/[ditt-namn]/Documents/Zwift/Workouts/[användar-id]/`
2. Kopiera alla `.zwo`-filer dit
3. Starta om Zwift
### Hitta ditt användar-ID
- I Zwift-mappen finns undermappar med långa sifferkombinationer
- Det är ditt användar-ID
- Eller kolla i Zwift Companion-appen under profil
## Intensitetsnivåer
Alla workouts är baserade på din FTP (Functional Threshold Power):
- **🟢 Återhämtning:** <55% FTP
- **🔵 Uthållighet:** 55-75% FTP
- **🟡 Tempo:** 75-87% FTP
- **🟠 Sweetspot:** 88-93% FTP
- **🔴 Threshold:** 94-105% FTP
## Tips
- ✅ Gör alltid FTP-test först
- ✅ Ha vattenflaska och fläkt redo
- ✅ Pass över 90 min: ha energi tillgängligt
- ✅ Justera intensitet med pil-upp/ner om det känns för lätt/hårt
- ✅ Kombinera gärna Zwift + utomhus för mycket långa pass
## Support
📖 **Full guide:** [[ZWIFT_GUIDE|Zwift-träningsguide]]
🏠 **Hem:** [[START]]
📋 **Träningsplan:** [[TRÄNINGSPLAN_ÖVERSIKT]]
+158
View File
@@ -0,0 +1,158 @@
---
type: referens
tags:
- zwift
- workouts
- översikt
---
# Workout-sammanfattning: Zwift
Snabbreferens för alla Zwift-workouts i träningsplanen.
## Fas 1: Grundträning (16 veckor)
### Vecka 1-4: Etablera vanan
**🟢 01_Grunduthållighet_45min.zwo**
- ⏱️ 45 minuter
- 💪 Intensitet: 65% FTP (uthållighet)
- 🎯 Mål: Bygga grundkondition
- 📅 När: Onsdag/cykeldag
### Vecka 5-8: Öka volymen
**🟡 02_Tempo_60min.zwo**
- ⏱️ 60 minuter
- 💪 Intensitet: 70% FTP (tempo)
- 🎯 Mål: Strukturerad tempo-träning
- 📅 När: Mitt i veckan
### Vecka 9-12: Bygg uthållighet
**🟡 03_Intervaller_Lätt_60min.zwo**
- ⏱️ 60 minuter
- 💪 Intensitet: 6×3 min @ 80% FTP
- 🎯 Mål: Introduktion till intervaller
- 📅 När: Tisdag/Onsdag
### Vecka 13-16: Stabil grund
**🔵 04_Långpass_90min.zwo**
- ⏱️ 90 minuter
- 💪 Intensitet: 65% FTP (uthållighet)
- 🎯 Mål: Bygga längre uthållighet
- 📅 När: Helg
---
## Fas 2: Vätternrundan & Vansbro (10-12 veckor)
### Vecka 1-3: Bygga cykelbas
**🟡 01_Uthållighet_90min.zwo**
- ⏱️ 90 minuter
- 💪 Intensitet: 65% FTP + 4×3 min backar @ 85% FTP
- 🎯 Mål: Uthållighet med kuperad terräng
- 📅 När: Tisdag
**🔵 03_Långpass_120min.zwo**
- ⏱️ 2 timmar
- 💪 Intensitet: 65% FTP (steady state)
- 🎯 Mål: Bygga lång uthållighet
- 📅 När: Lördag (eller utomhus)
### Vecka 5-7: Öka distansen
**🔴 02_Tempo_Intervaller_90min.zwo**
- ⏱️ 90 minuter
- 💪 Intensitet: 3×8 min @ 88% FTP (sweetspot)
- 🎯 Mål: Bygga tempo-uthållighet
- 📅 När: Tisdag
**🟢 05_Återhämtning_60min.zwo**
- ⏱️ 60 minuter
- 💪 Intensitet: 55% FTP (mycket lätt)
- 🎯 Mål: Aktiv återhämtning
- 📅 När: Torsdag (efter hårt pass)
**🔵 04_Långpass_150min.zwo**
- ⏱️ 2.5 timmar
- 💪 Intensitet: 65-70% FTP varierat
- 🎯 Mål: Simulera lång cykeltur
- 📅 När: Lördag
### Vecka 9: Peakvecka
**🔴 06_Peak_Intervaller_75min.zwo**
- ⏱️ 75 minuter
- 💪 Intensitet: 5×4 min @ 92% FTP (threshold)
- 🎯 Mål: Bygga toppform
- 📅 När: Tisdag
---
## Hur man väljer workout
### Baserat på tid tillgänglig:
- **45-60 min:** Fas1: 01, 02, 03 eller Fas2: 05
- **75-90 min:** Fas1: 04 eller Fas2: 01, 02, 06
- **2+ timmar:** Fas2: 03, 04
### Baserat på energinivå:
- **Trött/Återhämtning:** Fas2: 05_Återhämtning
- **Normal energi:** Fas1: 01, 02, 04 eller Fas2: 01, 03
- **Mycket energi:** Fas1: 03 eller Fas2: 02, 06
### Baserat på mål:
- **Bygga grunduthållighet:** Fas1: 01, 04 eller Fas2: 03, 04
- **Förbättra tempo:** Fas1: 02 eller Fas2: 02
- **Bli starkare:** Fas1: 03 eller Fas2: 01, 06
- **Återhämta:** Fas2: 05
---
## Intensitetszoner - Snabbreferens
| Symbol | Zon | % FTP | RPE | Känns som | Kan prata? |
|--------|-----|-------|-----|-----------|------------|
| 🟢 | Återhämtning | <55% | 1-3 | Mycket lätt | Hela meningar |
| 🔵 | Uthållighet | 55-75% | 4-5 | Lätt | Ja, bekvämt |
| 🟡 | Tempo | 75-87% | 6-7 | Medel | Korta meningar |
| 🟠 | Sweetspot | 88-93% | 7-8 | Hårt | Ja, men svårt |
| 🔴 | Threshold | 94-105% | 8-9 | Mycket hårt | Knappt |
| ⚫ | VO2 Max | >105% | 9-10 | Maximalt | Nej |
**RPE = Rate of Perceived Exertion (upplevd ansträngning 1-10)**
---
## Veckoplanering - Exempel
### Fas 1, Vecka 5 (med Zwift):
- Mån: Styrka 30 min
- Tis: ZWIFT - 02_Tempo_60min.zwo
- Ons: Simning 30 min
- Tor: Vila
- Fre: Styrka 30 min
- Lör: Löpning 40 min
- Sön: Vila
### Fas 2, Vecka 6 (med Zwift):
- Mån: Simning 45 min
- Tis: ZWIFT - 02_Tempo_Intervaller_90min.zwo ⚡
- Ons: Styrka 40 min
- Tor: ZWIFT - 05_Återhämtning_60min.zwo 🟢
- Fre: Vila
- Lör: ZWIFT - 04_Långpass_150min.zwo 🚴💨
- Sön: Simning öppet vatten 45 min
---
## Tips för framgång
**Gör FTP-test** var 6-8:e vecka
**Ha vatten & energi** redo för pass >90 min
**Använd fläkt** - du svettas mer inomhus!
**Följ återhämtningsveckorna** - viktigt!
**Anpassa intensitet** med pil-upp/ner efter behov
**Kombinera Zwift + utomhus** för variation
---
## Navigation
← [[ZWIFT_GUIDE|Zwift-guide]] | [[START|Hem]] | [[TRÄNINGSPLAN_ÖVERSIKT|Träningsplan]] →
+116
View File
@@ -0,0 +1,116 @@
# TCX Parser - Snabbstart
## 1. Installera (en gång)
```bash
cd ~/Documents/training
chmod +x scripts/*.sh scripts/*.py
```
## 2. (Valfritt) Lägg till alias
Lägg till i din `~/.bashrc` eller `~/.zshrc`:
```bash
source ~/Documents/training/scripts/aliases.sh
```
Sedan ladda om:
```bash
source ~/.bashrc # eller source ~/.zshrc
```
## 3. Efter varje träning
### Metod A: Automatiskt (enklast)
```bash
# 1. Flytta TCX-fil till Data/training/
mv ~/Downloads/activity_*.tcx ~/Documents/training/Data/training/
# 2. Parsa alla nya filer
cd ~/Documents/training
parse-all
```
### Metod B: Snabbparsning (bara senaste)
```bash
# 1. Flytta TCX-fil till Data/training/
mv ~/Downloads/activity_*.tcx ~/Documents/training/Data/training/
# 2. Parsa senaste filen
cd ~/Documents/training
parse-latest
```
### Metod C: Utan alias
```bash
# 1. Flytta TCX-fil
mv ~/Downloads/activity_*.tcx ~/Documents/training/Data/training/
# 2. Parsa
cd ~/Documents/training
./scripts/parse_all_tcx.sh
```
## 4. Be Claude analysera
När scriptet är klart, be Claude:
```
"Analysera Data/training/activity_12345.tcx.json"
```
---
## Tillgängliga kommandon
(kräver att alias är laddade)
| Kommando | Beskrivning |
|----------|-------------|
| `parse-all` | Parsa alla TCX-filer som inte har JSON |
| `parse-latest` | Parsa senaste TCX-filen |
| `parse-tcx <fil>` | Parsa en specifik fil |
| `training` | Gå till träningsrepo |
| `training-data` | Gå till Data/training/ |
## Felsökning
**Problem: "command not found: parse-all"**
- Du har inte laddat alias
- Kör: `source ~/Documents/training/scripts/aliases.sh`
- Eller använd fullständig sökväg: `./scripts/parse_all_tcx.sh`
**Problem: "Inga TCX-filer hittades"**
- Kolla att filerna ligger i `Data/training/`
- Kontrollera att de har `.tcx`-ändelse
**Problem: "Permission denied"**
- Gör scripten körbara: `chmod +x scripts/*.sh scripts/*.py`
---
## Snabbreferens
```bash
# Installation
chmod +x scripts/*.sh scripts/*.py
# Lägg till alias (valfritt)
echo 'source ~/Documents/training/scripts/aliases.sh' >> ~/.bashrc
source ~/.bashrc
# Efter träning
mv ~/Downloads/activity_*.tcx Data/training/
parse-all
# Analysera
# Be Claude: "Analysera Data/training/activity_X.tcx.json"
```
---
**Se [README.md](README.md) för fullständig dokumentation**
+261
View File
@@ -0,0 +1,261 @@
# TCX Parser - Instruktioner
## Översikt
`parse_tcx.py` är ett script som extraherar all viktig träningsdata från stora TCX-filer och skapar kompakta JSON-sammanfattningar.
**Storlek:**
- TCX-fil: ~1.3 MB
- JSON-fil: ~8 KB
- **Besparing: 99.4% mindre!**
## Installation
Scripten kräver bara Python 3 och Bash (ingen extra paket).
```bash
# Gör scripten körbara (behöver bara göras en gång)
chmod +x scripts/parse_tcx.py
chmod +x scripts/parse_all_tcx.sh
chmod +x scripts/quick_parse.sh
```
### Optional: Lägg till alias i din shell
För extra bekvämlighet, lägg till detta i din `~/.bashrc` eller `~/.zshrc`:
```bash
# Lägg till i ~/.bashrc eller ~/.zshrc
source ~/Documents/training/scripts/aliases.sh
```
Efter detta kan du använda korta kommandon som `parse-all` istället för `bash scripts/parse_all_tcx.sh`.
## Användning
### 🚀 Rekommenderat: Automatisk parsning av alla filer
**Enklast - kör detta efter varje träning:**
```bash
./scripts/parse_all_tcx.sh
```
eller (om du laddat alias):
```bash
parse-all
```
Detta script:
- ✅ Hittar alla TCX-filer i `Data/training/`
- ✅ Parsar bara filer som inte redan har JSON-motsvarigheter
- ✅ Uppdaterar JSON om TCX-filen är nyare
- ✅ Ger en fin sammanfattning av vad som gjordes
**Output:**
```
🔍 Söker efter TCX-filer i Data/training
📝 Parsar ny fil: activity_20922168380.tcx
✓ Redan parsad: activity_12345678901.tcx
════════════════════════════════════════
📊 Sammanfattning
════════════════════════════════════════
Total TCX-filer funna: 2
Redan parsade: 1
Nyligen parsade: 1
✅ Klart! 1 fil(er) parsade.
```
### ⚡ Snabbparsning av senaste filen
Bara vill parsa den senaste TCX-filen?
```bash
./scripts/quick_parse.sh
```
eller:
```bash
parse-latest
```
### 🎯 Parsa en specifik fil
```bash
python3 scripts/parse_tcx.py Data/training/activity_20922168380.tcx
```
eller:
```bash
parse-tcx Data/training/activity_20922168380.tcx
```
**Output:**
```
Parsar Data/training/activity_20922168380.tcx...
✓ Klar! Sammanfattning sparad i: Data/training/activity_20922168380.tcx.json
Snabb sammanfattning:
Sport: Biking
Datum: 2025-11-07
Tid: 29:42
Distans: 11.51 km
Genomsnittshastighet: 23.3 km/h
Genomsnittspuls: 161.2 bpm
Max puls: 184 bpm
Genomsnittseffekt: 106.0 W
```
## Data som extraheras
JSON-filen innehåller:
### 1. Grundläggande info
- Sport (Biking, Running, Swimming, etc.)
- Datum och tid
- Total tid, distans, hastighet
- Kalorier
### 2. Pulsdata
- Genomsnitt, min, max puls
- **Pulszonfördelning (%)** - mycket viktigt för analys!
- Zon 1: <110 bpm (Återhämtning)
- Zon 2: 110-129 bpm (Grundträning)
- Zon 3: 129-147 bpm (Tempo)
- Zon 4: 147-166 bpm (Högt tempo)
- Zon 5: >166 bpm (Maximum)
### 3. Effektdata (om tillgänglig)
- Genomsnitt, min, max watt
### 4. Kadansdata
- Genomsnitt, min, max rpm
### 5. Höjddata
- Min, max höjd
- Total stigning
### 6. Varvdata
- Detaljerad data för varje varv/intervall
## Använda JSON-filen för analys
När du vill att jag ska analysera ett träningspass:
**Istället för att be mig läsa den stora TCX-filen:**
```
"Kan du analysera activity_20922168380.tcx?" ❌
```
**Be mig läsa JSON-filen:**
```
"Kan du analysera activity_20922168380.tcx.json?" ✅
```
### Fördelar:
- **99.4% mindre fil** = mycket snabbare
- **Färre tokens** = sparar kostnader
- **Alla viktiga data** finns kvar
- **Lättare att läsa** för både människa och AI
## Exempel: Komplett workflow
### Workflow 1: Automatiskt (Rekommenderat)
1. **Exportera träning från Garmin/Strava/Zwift** som TCX
2. **Spara i Data/training/**
```bash
mv ~/Downloads/activity_12345.tcx Data/training/
```
3. **Parsa alla nya filer**
```bash
parse-all # eller: ./scripts/parse_all_tcx.sh
```
4. **Be Claude om analys**
```
"Kan du analysera Data/training/activity_12345.tcx.json?"
```
### Workflow 2: Snabb (för senaste filen)
1. **Exportera och spara TCX-fil**
```bash
mv ~/Downloads/activity_*.tcx Data/training/
```
2. **Parsa senaste filen**
```bash
parse-latest # eller: ./scripts/quick_parse.sh
```
3. **Be Claude om analys** - filnamnet visas i output
### Workflow 3: Manuellt (specifik fil)
1. **Exportera träning från Garmin/Strava/Zwift** som TCX
2. **Spara i Data/training/**
```bash
mv ~/Downloads/activity_12345.tcx Data/training/
```
3. **Parsa TCX-filen**
```bash
parse-tcx Data/training/activity_12345.tcx
```
4. **Be om analys**
```
"Kan du analysera Data/training/activity_12345.tcx.json?"
```
## Uppdatera pulszoner
Om din maxpuls ändras (t.ex. ny maxpuls 190 bpm), uppdatera zonerna i scriptet:
Öppna `scripts/parse_tcx.py` och ändra raderna ~107-111:
```python
# Gamla zoner (baserat på maxpuls 184 bpm)
zone1 = sum(1 for hr in hr_data if hr < 110)
zone2 = sum(1 for hr in hr_data if 110 <= hr < 129)
zone3 = sum(1 for hr in hr_data if 129 <= hr < 147)
zone4 = sum(1 for hr in hr_data if 147 <= hr < 166)
zone5 = sum(1 for hr in hr_data if hr >= 166)
# Nya zoner (exempel för maxpuls 190 bpm)
zone1 = sum(1 for hr in hr_data if hr < 114) # <60%
zone2 = sum(1 for hr in hr_data if 114 <= hr < 133) # 60-70%
zone3 = sum(1 for hr in hr_data if 133 <= hr < 152) # 70-80%
zone4 = sum(1 for hr in hr_data if 152 <= hr < 171) # 80-90%
zone5 = sum(1 for hr in hr_data if hr >= 171) # >90%
```
Eller använd dynamiska zoner baserat på uppmätt maxpuls - kontakta mig om du vill ha den funktionen!
## Felsökning
**Problem:** `Fel: Filen X hittades inte`
- Kolla att sökvägen är korrekt
- Använd relativ sökväg från repository-roten
**Problem:** `Ingen aktivitet hittades i TCX-filen`
- TCX-filen kan vara korrupt
- Kontrollera att den är exporterad korrekt från din enhet
**Problem:** Script kraschar
- Rapportera felet så fixar jag det!
## Framtida förbättringar
Möjliga tillägg:
- [ ] Auto-detektera maxpuls och beräkna dynamiska zoner
- [ ] Markdown-export istället för JSON
- [ ] Automatisk uppdatering av träningsdagbok
- [ ] Jämförelse mellan flera pass
- [ ] Graf-generering (puls över tid, etc.)
## Support
Vid problem eller frågor, kontakta Claude Code!
+36
View File
@@ -0,0 +1,36 @@
#!/bin/bash
#
# Bash Aliases för Träningsdata
#
# Lägg till dessa i din ~/.bashrc eller ~/.zshrc:
# source ~/Documents/training/scripts/aliases.sh
#
# Eller kör direkt:
# source scripts/aliases.sh
#
# Hämta repo-sökvägen
TRAINING_REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
# Alias för TCX-parsning
alias parse-tcx='python3 "$TRAINING_REPO/scripts/parse_tcx.py"'
alias parse-all='bash "$TRAINING_REPO/scripts/parse_all_tcx.sh"'
alias parse-latest='bash "$TRAINING_REPO/scripts/quick_parse.sh"'
# Alias för att gå till träningskatalogen
alias training='cd "$TRAINING_REPO"'
alias training-data='cd "$TRAINING_REPO/Data/training"'
# Visa alla alias
alias show-training-aliases='cat "$TRAINING_REPO/scripts/aliases.sh" | grep "^alias"'
echo "✅ Träningsaliaser laddade!"
echo ""
echo "Tillgängliga kommandon:"
echo " parse-tcx <fil> - Parsa en specifik TCX-fil"
echo " parse-all - Parsa alla TCX-filer i Data/training/"
echo " parse-latest - Parsa senaste TCX-filen"
echo " training - Gå till träningsrepo"
echo " training-data - Gå till Data/training/"
echo " show-training-aliases - Visa alla alias"
echo ""
+97
View File
@@ -0,0 +1,97 @@
#!/bin/bash
#
# Parse All TCX Files
# Hittar alla TCX-filer i Data/training/ som inte har JSON-sammanfattningar
# och parsar dem automatiskt
#
set -e
# Färger för output
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
TRAINING_DIR="$REPO_ROOT/Data/training"
echo -e "${BLUE}🔍 Söker efter TCX-filer i $TRAINING_DIR${NC}\n"
# Räknare
total_tcx=0
already_parsed=0
newly_parsed=0
errors=0
# Hitta alla TCX-filer
if [ ! -d "$TRAINING_DIR" ]; then
echo -e "${YELLOW}⚠️ Katalogen $TRAINING_DIR finns inte${NC}"
exit 1
fi
cd "$REPO_ROOT"
for tcx_file in "$TRAINING_DIR"/*.tcx; do
# Kolla om glob hittade något
[ -e "$tcx_file" ] || continue
total_tcx=$((total_tcx + 1))
json_file="${tcx_file}.json"
# Kolla om JSON redan finns
if [ -f "$json_file" ]; then
# Kolla om TCX är nyare än JSON
if [ "$tcx_file" -nt "$json_file" ]; then
echo -e "${YELLOW}🔄 Uppdaterar: $(basename "$tcx_file")${NC}"
if python3 "$SCRIPT_DIR/parse_tcx.py" "$tcx_file"; then
newly_parsed=$((newly_parsed + 1))
else
echo -e "${YELLOW}❌ Misslyckades: $(basename "$tcx_file")${NC}"
errors=$((errors + 1))
fi
else
echo -e "✓ Redan parsad: $(basename "$tcx_file")"
already_parsed=$((already_parsed + 1))
fi
else
echo -e "${GREEN}📝 Parsar ny fil: $(basename "$tcx_file")${NC}"
if python3 "$SCRIPT_DIR/parse_tcx.py" "$tcx_file"; then
newly_parsed=$((newly_parsed + 1))
else
echo -e "${YELLOW}❌ Misslyckades: $(basename "$tcx_file")${NC}"
errors=$((errors + 1))
fi
fi
done
# Sammanfattning
echo ""
echo -e "${BLUE}════════════════════════════════════════${NC}"
echo -e "${BLUE}📊 Sammanfattning${NC}"
echo -e "${BLUE}════════════════════════════════════════${NC}"
echo "Total TCX-filer funna: $total_tcx"
echo "Redan parsade: $already_parsed"
echo -e "${GREEN}Nyligen parsade: $newly_parsed${NC}"
if [ $errors -gt 0 ]; then
echo -e "${YELLOW}Fel vid parsning: $errors${NC}"
fi
if [ $total_tcx -eq 0 ]; then
echo ""
echo -e "${YELLOW}Inga TCX-filer hittades i $TRAINING_DIR${NC}"
echo "Lägg dina TCX-filer där och kör scriptet igen."
fi
echo ""
if [ $newly_parsed -gt 0 ]; then
echo -e "${GREEN}✅ Klart! $newly_parsed fil(er) parsade.${NC}"
echo "Du kan nu be Claude analysera JSON-filerna för snabbare analys."
elif [ $total_tcx -gt 0 ]; then
echo -e "✅ Alla TCX-filer är redan parsade!"
fi
echo ""
+285
View File
@@ -0,0 +1,285 @@
#!/usr/bin/env python3
"""
TCX Parser - Extraherar träningsdata från TCX-filer
Skapar kompakt JSON-sammanfattning för analys
Användning:
python3 parse_tcx.py <tcx-fil>
python3 parse_tcx.py Data/training/activity_12345.tcx
Output:
Skapar <tcx-fil>.json med sammanfattad data
"""
import xml.etree.ElementTree as ET
import json
import sys
from pathlib import Path
from datetime import datetime
# Namespace definitions för TCX
NAMESPACES = {
'tcx': 'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2',
'ns3': 'http://www.garmin.com/xmlschemas/ActivityExtension/v2'
}
def parse_tcx_file(tcx_path):
"""Parsar TCX-fil och extraherar all relevant data"""
tree = ET.parse(tcx_path)
root = tree.getroot()
# Hitta aktiviteten
activity = root.find('.//tcx:Activity', NAMESPACES)
if activity is None:
raise ValueError("Ingen aktivitet hittades i TCX-filen")
# Grundläggande info
sport = activity.get('Sport', 'Unknown')
activity_id = activity.find('tcx:Id', NAMESPACES).text
# Samla data från varv
laps = activity.findall('.//tcx:Lap', NAMESPACES)
lap_data = []
total_time = 0
total_distance = 0
total_calories = 0
max_speed = 0
for i, lap in enumerate(laps, 1):
lap_info = {
'number': i,
'start_time': lap.get('StartTime'),
}
# Extrahera varvdata
time_elem = lap.find('tcx:TotalTimeSeconds', NAMESPACES)
dist_elem = lap.find('tcx:DistanceMeters', NAMESPACES)
cal_elem = lap.find('tcx:Calories', NAMESPACES)
max_speed_elem = lap.find('tcx:MaximumSpeed', NAMESPACES)
avg_hr_elem = lap.find('.//tcx:AverageHeartRateBpm/tcx:Value', NAMESPACES)
max_hr_elem = lap.find('.//tcx:MaximumHeartRateBpm/tcx:Value', NAMESPACES)
avg_cad_elem = lap.find('tcx:Cadence', NAMESPACES)
if time_elem is not None:
lap_time = float(time_elem.text)
lap_info['time_seconds'] = lap_time
total_time += lap_time
if dist_elem is not None:
lap_dist = float(dist_elem.text)
lap_info['distance_meters'] = lap_dist
total_distance += lap_dist
if cal_elem is not None:
lap_cal = int(cal_elem.text)
lap_info['calories'] = lap_cal
total_calories += lap_cal
if max_speed_elem is not None:
lap_max_speed = float(max_speed_elem.text)
lap_info['max_speed_ms'] = lap_max_speed
max_speed = max(max_speed, lap_max_speed)
if avg_hr_elem is not None:
lap_info['avg_hr'] = int(avg_hr_elem.text)
if max_hr_elem is not None:
lap_info['max_hr'] = int(max_hr_elem.text)
if avg_cad_elem is not None:
lap_info['avg_cadence'] = int(avg_cad_elem.text)
lap_data.append(lap_info)
# Samla data från trackpoints
trackpoints = root.findall('.//tcx:Trackpoint', NAMESPACES)
hr_data = []
power_data = []
cadence_data = []
altitude_data = []
speed_data = []
for tp in trackpoints:
# Puls
hr_elem = tp.find('.//tcx:HeartRateBpm/tcx:Value', NAMESPACES)
if hr_elem is not None:
hr_data.append(int(hr_elem.text))
# Effekt
power_elem = tp.find('.//ns3:Watts', NAMESPACES)
if power_elem is not None:
power_data.append(int(power_elem.text))
# Kadans
cad_elem = tp.find('tcx:Cadence', NAMESPACES)
if cad_elem is not None:
cadence_data.append(int(cad_elem.text))
# Höjd
alt_elem = tp.find('tcx:AltitudeMeters', NAMESPACES)
if alt_elem is not None:
altitude_data.append(float(alt_elem.text))
# Hastighet
speed_elem = tp.find('.//ns3:Speed', NAMESPACES)
if speed_elem is not None:
speed_data.append(float(speed_elem.text))
# Beräkna pulsstatistik och zoner
hr_stats = None
hr_zones = None
if hr_data:
avg_hr = sum(hr_data) / len(hr_data)
min_hr = min(hr_data)
max_hr = max(hr_data)
# Pulszoner (baserat på 5-zonssystem)
# Kan justeras baserat på individuell maxpuls
zone1 = sum(1 for hr in hr_data if hr < 110)
zone2 = sum(1 for hr in hr_data if 110 <= hr < 129)
zone3 = sum(1 for hr in hr_data if 129 <= hr < 147)
zone4 = sum(1 for hr in hr_data if 147 <= hr < 166)
zone5 = sum(1 for hr in hr_data if hr >= 166)
total_points = len(hr_data)
hr_stats = {
'avg': round(avg_hr, 1),
'min': min_hr,
'max': max_hr,
}
hr_zones = {
'zone1_pct': round(zone1 / total_points * 100, 1),
'zone2_pct': round(zone2 / total_points * 100, 1),
'zone3_pct': round(zone3 / total_points * 100, 1),
'zone4_pct': round(zone4 / total_points * 100, 1),
'zone5_pct': round(zone5 / total_points * 100, 1),
'note': 'Zoner baserade på: Z1<110, Z2:110-129, Z3:129-147, Z4:147-166, Z5>166 bpm'
}
# Beräkna effektstatistik
power_stats = None
if power_data:
power_stats = {
'avg': round(sum(power_data) / len(power_data), 1),
'min': min(power_data),
'max': max(power_data),
}
# Beräkna kadansstatistik
cadence_stats = None
if cadence_data:
cadence_stats = {
'avg': round(sum(cadence_data) / len(cadence_data), 1),
'min': min(cadence_data),
'max': max(cadence_data),
}
# Beräkna höjdstatistik
altitude_stats = None
if altitude_data:
elevation_gain = 0
for i in range(1, len(altitude_data)):
diff = altitude_data[i] - altitude_data[i-1]
if diff > 0:
elevation_gain += diff
altitude_stats = {
'min': round(min(altitude_data), 1),
'max': round(max(altitude_data), 1),
'gain': round(elevation_gain, 1),
}
# Beräkna hastighetsstatistik
speed_stats = None
if speed_data:
avg_speed = sum(speed_data) / len(speed_data)
speed_stats = {
'avg_ms': round(avg_speed, 2),
'avg_kmh': round(avg_speed * 3.6, 1),
'max_ms': round(max(speed_data), 2),
'max_kmh': round(max(speed_data) * 3.6, 1),
}
# Bygg sammanfattning
summary = {
'file': str(tcx_path),
'parsed_at': datetime.now().isoformat(),
'activity': {
'sport': sport,
'id': activity_id,
'date': activity_id.split('T')[0] if 'T' in activity_id else activity_id,
},
'summary': {
'total_time_seconds': round(total_time, 1),
'total_time_formatted': f"{int(total_time//60)}:{int(total_time%60):02d}",
'total_distance_meters': round(total_distance, 2),
'total_distance_km': round(total_distance / 1000, 2),
'avg_speed_kmh': round((total_distance / total_time) * 3.6, 1) if total_time > 0 else 0,
'max_speed_kmh': round(max_speed * 3.6, 1),
'total_calories': total_calories,
'num_laps': len(laps),
'num_trackpoints': len(trackpoints),
},
'heart_rate': hr_stats,
'heart_rate_zones': hr_zones,
'power': power_stats,
'cadence': cadence_stats,
'altitude': altitude_stats,
'speed': speed_stats,
'laps': lap_data,
}
return summary
def main():
if len(sys.argv) < 2:
print("Användning: python3 parse_tcx.py <tcx-fil>")
print("Exempel: python3 parse_tcx.py Data/training/activity_12345.tcx")
sys.exit(1)
tcx_file = Path(sys.argv[1])
if not tcx_file.exists():
print(f"Fel: Filen {tcx_file} hittades inte")
sys.exit(1)
try:
print(f"Parsar {tcx_file}...")
summary = parse_tcx_file(tcx_file)
# Spara som JSON
output_file = tcx_file.with_suffix('.tcx.json')
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(summary, f, indent=2, ensure_ascii=False)
print(f"✓ Klar! Sammanfattning sparad i: {output_file}")
print(f"\nSnabb sammanfattning:")
print(f" Sport: {summary['activity']['sport']}")
print(f" Datum: {summary['activity']['date']}")
print(f" Tid: {summary['summary']['total_time_formatted']}")
print(f" Distans: {summary['summary']['total_distance_km']} km")
print(f" Genomsnittshastighet: {summary['summary']['avg_speed_kmh']} km/h")
if summary['heart_rate']:
print(f" Genomsnittspuls: {summary['heart_rate']['avg']} bpm")
print(f" Max puls: {summary['heart_rate']['max']} bpm")
if summary['power']:
print(f" Genomsnittseffekt: {summary['power']['avg']} W")
print(f"\nAnvänd denna JSON-fil för snabb analys istället för stora TCX-filen!")
except Exception as e:
print(f"Fel vid parsning: {e}")
import traceback
traceback.print_exc()
sys.exit(1)
if __name__ == '__main__':
main()
+29
View File
@@ -0,0 +1,29 @@
#!/bin/bash
#
# Quick Parse - Snabbparsning av senaste TCX-filen
# Användning: ./quick_parse.sh
#
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
TRAINING_DIR="$REPO_ROOT/Data/training"
# Hitta senaste TCX-filen
latest_tcx=$(ls -t "$TRAINING_DIR"/*.tcx 2>/dev/null | head -n 1)
if [ -z "$latest_tcx" ]; then
echo "❌ Inga TCX-filer hittades i $TRAINING_DIR"
exit 1
fi
echo "🚀 Parsar senaste TCX-fil: $(basename "$latest_tcx")"
echo ""
cd "$REPO_ROOT"
python3 "$SCRIPT_DIR/parse_tcx.py" "$latest_tcx"
echo ""
echo "✅ JSON-fil skapad! Be Claude analysera:"
echo " $(basename "$latest_tcx").json"