Skip to content

Commit e323f40

Browse files
committed
Updating frontmatter for SEO
1 parent 505b0d9 commit e323f40

File tree

3 files changed

+49
-2
lines changed

3 files changed

+49
-2
lines changed

src/content.config.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ export const collections = {
1010
page_id: z.string().uuid(),
1111
relatedArticles: z.string().array().optional().nullable(),
1212
app_context: z.array(z.any()).optional(),
13-
social_sharing_image_url: z.string().optional()
13+
social_sharing_image_url: z.string().optional(),
14+
audience: z.union([z.string(), z.array(z.string())]).optional(),
15+
complexity: z.string().optional(),
16+
keywords: z.array(z.string()).optional(),
17+
ai_summary: z.string().optional(),
18+
updated: z.union([z.string(), z.date()]).optional()
1419
})
1520
})
1621
}),

src/pages/docs-suggestions.json.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ export const GET: APIRoute = () => {
99
page_id: docs[url].frontmatter.page_id,
1010
title: docs[url].frontmatter.title,
1111
url: "https://docs.kinde.com" + url.split("/content/docs")[1].split(".")[0] + "/",
12-
app_context: docs[url].frontmatter.app_context
12+
app_context: docs[url].frontmatter.app_context,
13+
audience: docs[url].frontmatter.audience,
14+
complexity: docs[url].frontmatter.complexity,
15+
keywords: docs[url].frontmatter.keywords,
16+
ai_summary: docs[url].frontmatter.ai_summary,
17+
updated: docs[url].frontmatter.updated
1318
})),
1419
null,
1520
2

src/starlight-overrides/Head.astro

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import type {Props} from "@astrojs/starlight/props";
55
const hasCustomOGImage = Astro.props.entry.data.head.find((t) =>
66
t.attrs.property === "og:image" ? true : false
77
);
8+
9+
// Extract frontmatter data for structured data
10+
const { entry } = Astro.props;
11+
const frontmatter = entry.data;
812
---
913

1014
{
@@ -18,3 +22,36 @@ const hasCustomOGImage = Astro.props.entry.data.head.find((t) =>
1822
</Default>
1923

2024
{!hasCustomOGImage && <meta property="og:image" content={`${Astro.url.href}og-image.png`} />}
25+
26+
{/* Add meta tags for the new fields */}
27+
{frontmatter.audience && (
28+
<meta name="audience" content={Array.isArray(frontmatter.audience) ? frontmatter.audience.join(', ') : frontmatter.audience} />
29+
)}
30+
{frontmatter.complexity && (
31+
<meta name="complexity" content={frontmatter.complexity} />
32+
)}
33+
{frontmatter.keywords && (
34+
<meta name="keywords" content={frontmatter.keywords.join(', ')} />
35+
)}
36+
{frontmatter.ai_summary && (
37+
<meta name="ai-summary" content={frontmatter.ai_summary} />
38+
)}
39+
40+
{/* Add JSON-LD structured data */}
41+
<script type="application/ld+json" set:html={JSON.stringify({
42+
"@context": "https://schema.org",
43+
"@type": "TechArticle",
44+
"name": frontmatter.title,
45+
"description": frontmatter.description,
46+
"keywords": frontmatter.keywords?.join(', '),
47+
"audience": Array.isArray(frontmatter.audience) ? frontmatter.audience.join(', ') : frontmatter.audience,
48+
"difficulty": frontmatter.complexity,
49+
"abstract": frontmatter.ai_summary,
50+
"url": Astro.url.href,
51+
...(frontmatter.updated && { "dateModified": typeof frontmatter.updated === 'string' ? frontmatter.updated : frontmatter.updated.toISOString() }),
52+
"publisher": {
53+
"@type": "Organization",
54+
"name": "Kinde",
55+
"url": "https://kinde.com"
56+
}
57+
})} />

0 commit comments

Comments
 (0)