diff --git a/src/lib/components/post/PostHead.svelte b/src/lib/components/post/PostHead.svelte
index de40375..d7f352f 100644
--- a/src/lib/components/post/PostHead.svelte
+++ b/src/lib/components/post/PostHead.svelte
@@ -3,14 +3,20 @@
const { page } = getStores();
import type { Post } from "$components/shared";
import { env } from "$env/dynamic/public";
+ import { extractTextFromHTML } from "$utils/textExtractor";
export let post: Post | undefined;
+
+ // Generate a clean excerpt from HTML content for meta tags
+ $: metaExcerpt = post?.content
+ ? extractTextFromHTML(post.content, 50) // Shorter excerpt for meta tags
+ : post?.excerpt || '';
{#if post !== undefined}
{post?.title} - Blog - Ewan's Corner
-
+
-
+
-
+
{/if}
-
+
\ No newline at end of file
diff --git a/src/lib/utils/textExtractor.ts b/src/lib/utils/textExtractor.ts
new file mode 100644
index 0000000..6b67ad2
--- /dev/null
+++ b/src/lib/utils/textExtractor.ts
@@ -0,0 +1,49 @@
+/**
+ * Extracts plain text from HTML content and limits by word count.
+ *
+ * @param html - The HTML string to strip down
+ * @param maxWords - Maximum number of words in the result
+ * @returns Clean plain text excerpt
+ */
+export function extractTextFromHTML(html: string, maxWords: number = 200): string {
+ if (!html) return '';
+
+ // SSR fallback: regex-based stripping
+ if (typeof document === 'undefined') {
+ let text = html
+ .replace(/