Skip to content

Commit 2aebbc6

Browse files
committed
2026-03-05 SEO: add sitemap.xml, keywords, article:tag meta
- sitemap.xml with 35 pages (blog, docs, tutorials, API ref) - keywords field in posts.ts for each blog post - meta keywords, article:tag, article:author in blog head - BlogPosting JSON-LD now includes keywords
1 parent 16979df commit 2aebbc6

3 files changed

Lines changed: 234 additions & 5 deletions

File tree

landing/src/lib/blog/posts.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ export interface BlogPost {
66
date: string;
77
readingTime: string;
88
featured?: boolean;
9+
keywords?: string[];
910
}
1011

1112
export const categories = {
@@ -23,7 +24,8 @@ export const blogPosts: BlogPost[] = [
2324
category: 'how-to',
2425
date: '2026-03-05',
2526
readingTime: '15 min',
26-
featured: true
27+
featured: true,
28+
keywords: ['python forecasting tutorial', 'time series prediction python', 'forecast python', 'vectrix tutorial', 'first forecast']
2729
},
2830
{
2931
slug: 'python-forecasting-libraries',
@@ -32,7 +34,8 @@ export const blogPosts: BlogPost[] = [
3234
category: 'how-to',
3335
date: '2026-03-05',
3436
readingTime: '18 min',
35-
featured: true
37+
featured: true,
38+
keywords: ['python forecasting library', 'statsforecast vs prophet', 'time series python', 'forecasting library comparison', 'darts vs sktime']
3639
},
3740
{
3841
slug: 'how-we-know-forecasts-work',
@@ -41,15 +44,17 @@ export const blogPosts: BlogPost[] = [
4144
category: 'benchmarks',
4245
date: '2026-03-04',
4346
readingTime: '12 min',
44-
featured: true
47+
featured: true,
48+
keywords: ['forecast accuracy', 'M competition', 'MAPE RMSE explained', 'forecast benchmark', 'OWA metric']
4549
},
4650
{
4751
slug: 'what-is-forecasting',
4852
title: 'What Is Forecasting?',
4953
description: 'The one concept behind every business decision. Learn what forecasting really means, why it matters, and how it works — no math required.',
5054
category: 'fundamentals',
5155
date: '2026-03-04',
52-
readingTime: '8 min'
56+
readingTime: '8 min',
57+
keywords: ['what is forecasting', 'forecasting basics', 'time series explained', 'demand forecasting', 'prediction vs forecasting']
5358
}
5459
];
5560

landing/src/routes/blog/[slug]/+page.svelte

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@
137137
{#if post}
138138
<meta property="article:published_time" content={post.date} />
139139
<meta property="article:section" content={categories[post.category].label} />
140+
<meta property="article:author" content="https://github.com/eddmpython" />
141+
{#if post.keywords}
142+
<meta name="keywords" content={post.keywords.join(', ')} />
143+
{#each post.keywords as tag}
144+
<meta property="article:tag" content={tag} />
145+
{/each}
146+
{/if}
140147
{/if}
141148

142149
<meta name="twitter:card" content="summary_large_image" />
@@ -155,7 +162,8 @@
155162
"author": { "@type": "Person", "name": "eddmpython", "url": "https://github.com/eddmpython" },
156163
"publisher": { "@type": "Organization", "name": "Vectrix", "logo": { "@type": "ImageObject", "url": OG_IMAGE } },
157164
"mainEntityOfPage": { "@type": "WebPage", "@id": canonicalUrl },
158-
"inLanguage": "en"
165+
"inLanguage": "en",
166+
...(post?.keywords ? { "keywords": post.keywords.join(', ') } : {})
159167
})}</script>`}
160168

161169
{@html `<script type="application/ld+json">${JSON.stringify({

landing/static/sitemap.xml

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,216 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3+
<!-- Home -->
4+
<url>
5+
<loc>https://eddmpython.github.io/vectrix/</loc>
6+
<lastmod>2026-03-05</lastmod>
7+
<changefreq>weekly</changefreq>
8+
<priority>1.0</priority>
9+
</url>
10+
11+
<!-- Blog -->
12+
<url>
13+
<loc>https://eddmpython.github.io/vectrix/blog</loc>
14+
<lastmod>2026-03-05</lastmod>
15+
<changefreq>weekly</changefreq>
16+
<priority>0.9</priority>
17+
</url>
18+
<url>
19+
<loc>https://eddmpython.github.io/vectrix/blog/your-first-forecast-in-python</loc>
20+
<lastmod>2026-03-05</lastmod>
21+
<changefreq>monthly</changefreq>
22+
<priority>0.8</priority>
23+
</url>
24+
<url>
25+
<loc>https://eddmpython.github.io/vectrix/blog/python-forecasting-libraries</loc>
26+
<lastmod>2026-03-05</lastmod>
27+
<changefreq>monthly</changefreq>
28+
<priority>0.8</priority>
29+
</url>
30+
<url>
31+
<loc>https://eddmpython.github.io/vectrix/blog/how-we-know-forecasts-work</loc>
32+
<lastmod>2026-03-04</lastmod>
33+
<changefreq>monthly</changefreq>
34+
<priority>0.8</priority>
35+
</url>
36+
<url>
37+
<loc>https://eddmpython.github.io/vectrix/blog/what-is-forecasting</loc>
38+
<lastmod>2026-03-04</lastmod>
39+
<changefreq>monthly</changefreq>
40+
<priority>0.8</priority>
41+
</url>
42+
43+
<!-- Docs main -->
44+
<url>
45+
<loc>https://eddmpython.github.io/vectrix/docs</loc>
46+
<lastmod>2026-03-05</lastmod>
47+
<changefreq>weekly</changefreq>
48+
<priority>0.9</priority>
49+
</url>
50+
51+
<!-- Getting Started -->
52+
<url>
53+
<loc>https://eddmpython.github.io/vectrix/docs/getting-started/installation</loc>
54+
<lastmod>2026-03-05</lastmod>
55+
<changefreq>monthly</changefreq>
56+
<priority>0.8</priority>
57+
</url>
58+
<url>
59+
<loc>https://eddmpython.github.io/vectrix/docs/getting-started/quickstart</loc>
60+
<lastmod>2026-03-05</lastmod>
61+
<changefreq>monthly</changefreq>
62+
<priority>0.8</priority>
63+
</url>
64+
65+
<!-- Tutorials -->
66+
<url>
67+
<loc>https://eddmpython.github.io/vectrix/docs/tutorials/quickstart</loc>
68+
<lastmod>2026-03-05</lastmod>
69+
<changefreq>monthly</changefreq>
70+
<priority>0.7</priority>
71+
</url>
72+
<url>
73+
<loc>https://eddmpython.github.io/vectrix/docs/tutorials/analyze</loc>
74+
<lastmod>2026-03-05</lastmod>
75+
<changefreq>monthly</changefreq>
76+
<priority>0.7</priority>
77+
</url>
78+
<url>
79+
<loc>https://eddmpython.github.io/vectrix/docs/tutorials/regression</loc>
80+
<lastmod>2026-03-05</lastmod>
81+
<changefreq>monthly</changefreq>
82+
<priority>0.7</priority>
83+
</url>
84+
<url>
85+
<loc>https://eddmpython.github.io/vectrix/docs/tutorials/models</loc>
86+
<lastmod>2026-03-05</lastmod>
87+
<changefreq>monthly</changefreq>
88+
<priority>0.7</priority>
89+
</url>
90+
<url>
91+
<loc>https://eddmpython.github.io/vectrix/docs/tutorials/adaptive</loc>
92+
<lastmod>2026-03-05</lastmod>
93+
<changefreq>monthly</changefreq>
94+
<priority>0.7</priority>
95+
</url>
96+
<url>
97+
<loc>https://eddmpython.github.io/vectrix/docs/tutorials/business</loc>
98+
<lastmod>2026-03-05</lastmod>
99+
<changefreq>monthly</changefreq>
100+
<priority>0.7</priority>
101+
</url>
102+
103+
<!-- User Guide -->
104+
<url>
105+
<loc>https://eddmpython.github.io/vectrix/docs/guide/forecasting</loc>
106+
<lastmod>2026-03-05</lastmod>
107+
<changefreq>monthly</changefreq>
108+
<priority>0.6</priority>
109+
</url>
110+
<url>
111+
<loc>https://eddmpython.github.io/vectrix/docs/guide/analysis</loc>
112+
<lastmod>2026-03-05</lastmod>
113+
<changefreq>monthly</changefreq>
114+
<priority>0.6</priority>
115+
</url>
116+
<url>
117+
<loc>https://eddmpython.github.io/vectrix/docs/guide/regression</loc>
118+
<lastmod>2026-03-05</lastmod>
119+
<changefreq>monthly</changefreq>
120+
<priority>0.6</priority>
121+
</url>
122+
<url>
123+
<loc>https://eddmpython.github.io/vectrix/docs/guide/adaptive</loc>
124+
<lastmod>2026-03-05</lastmod>
125+
<changefreq>monthly</changefreq>
126+
<priority>0.6</priority>
127+
</url>
128+
<url>
129+
<loc>https://eddmpython.github.io/vectrix/docs/guide/business</loc>
130+
<lastmod>2026-03-05</lastmod>
131+
<changefreq>monthly</changefreq>
132+
<priority>0.6</priority>
133+
</url>
134+
<url>
135+
<loc>https://eddmpython.github.io/vectrix/docs/guide/pipeline</loc>
136+
<lastmod>2026-03-05</lastmod>
137+
<changefreq>monthly</changefreq>
138+
<priority>0.6</priority>
139+
</url>
140+
<url>
141+
<loc>https://eddmpython.github.io/vectrix/docs/guide/foundation</loc>
142+
<lastmod>2026-03-05</lastmod>
143+
<changefreq>monthly</changefreq>
144+
<priority>0.6</priority>
145+
</url>
146+
<url>
147+
<loc>https://eddmpython.github.io/vectrix/docs/guide/multivariate</loc>
148+
<lastmod>2026-03-05</lastmod>
149+
<changefreq>monthly</changefreq>
150+
<priority>0.6</priority>
151+
</url>
152+
153+
<!-- API Reference -->
154+
<url>
155+
<loc>https://eddmpython.github.io/vectrix/docs/api/easy</loc>
156+
<lastmod>2026-03-05</lastmod>
157+
<changefreq>monthly</changefreq>
158+
<priority>0.6</priority>
159+
</url>
160+
<url>
161+
<loc>https://eddmpython.github.io/vectrix/docs/api/vectrix</loc>
162+
<lastmod>2026-03-05</lastmod>
163+
<changefreq>monthly</changefreq>
164+
<priority>0.6</priority>
165+
</url>
166+
<url>
167+
<loc>https://eddmpython.github.io/vectrix/docs/api/adaptive</loc>
168+
<lastmod>2026-03-05</lastmod>
169+
<changefreq>monthly</changefreq>
170+
<priority>0.6</priority>
171+
</url>
172+
<url>
173+
<loc>https://eddmpython.github.io/vectrix/docs/api/business</loc>
174+
<lastmod>2026-03-05</lastmod>
175+
<changefreq>monthly</changefreq>
176+
<priority>0.6</priority>
177+
</url>
178+
<url>
179+
<loc>https://eddmpython.github.io/vectrix/docs/api/regression</loc>
180+
<lastmod>2026-03-05</lastmod>
181+
<changefreq>monthly</changefreq>
182+
<priority>0.6</priority>
183+
</url>
184+
<url>
185+
<loc>https://eddmpython.github.io/vectrix/docs/api/pipeline</loc>
186+
<lastmod>2026-03-05</lastmod>
187+
<changefreq>monthly</changefreq>
188+
<priority>0.6</priority>
189+
</url>
190+
<url>
191+
<loc>https://eddmpython.github.io/vectrix/docs/api/foundation</loc>
192+
<lastmod>2026-03-05</lastmod>
193+
<changefreq>monthly</changefreq>
194+
<priority>0.6</priority>
195+
</url>
196+
<url>
197+
<loc>https://eddmpython.github.io/vectrix/docs/api/types</loc>
198+
<lastmod>2026-03-05</lastmod>
199+
<changefreq>monthly</changefreq>
200+
<priority>0.6</priority>
201+
</url>
202+
203+
<!-- Reference -->
204+
<url>
205+
<loc>https://eddmpython.github.io/vectrix/docs/benchmarks</loc>
206+
<lastmod>2026-03-05</lastmod>
207+
<changefreq>monthly</changefreq>
208+
<priority>0.7</priority>
209+
</url>
210+
<url>
211+
<loc>https://eddmpython.github.io/vectrix/docs/changelog</loc>
212+
<lastmod>2026-03-05</lastmod>
213+
<changefreq>weekly</changefreq>
214+
<priority>0.5</priority>
215+
</url>
216+
</urlset>

0 commit comments

Comments
 (0)