aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2025-06-14 14:09:34 +0300
committerValentin Popov <valentin@popov.link>2025-06-14 14:09:34 +0300
commit3df02c5304b8faee540694b15041ad2ee43bc1b2 (patch)
treef5bfae6d5096cfddb96ac76ecfd63d4dd45ff91b
parent9777d996d172755472dd8127ff9b7a3c579cf454 (diff)
downloadpopov.link-3df02c5304b8faee540694b15041ad2ee43bc1b2.tar.xz
popov.link-3df02c5304b8faee540694b15041ad2ee43bc1b2.zip
feat: enhance blog post schema and structure
- Added description and lang parameters to the blogPostSchema for improved structured data. - Updated the blog post layout to include a header section for better semantic structure and accessibility.
-rw-r--r--src/pages/blog/[...slug].astro8
-rw-r--r--src/utils/schemas/blogPostSchema.ts11
2 files changed, 14 insertions, 5 deletions
diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro
index 8d5169a..3cfdf31 100644
--- a/src/pages/blog/[...slug].astro
+++ b/src/pages/blog/[...slug].astro
@@ -33,9 +33,11 @@ const data = post.data.pubDate.toISOString();
const schema = blogPostSchema({
siteUrl: new URL("/", Astro.site).toString(),
title,
+ description,
slug: post.slug,
datePublished: data,
author,
+ lang,
});
---
@@ -49,11 +51,9 @@ const schema = blogPostSchema({
<Layout title={title} description={description} lang={lang} schema={schema}>
<article>
- <section>
+ <header>
<h1>{title}</h1>
- </section>
- <section>
<p>
<small>
Posted
@@ -63,7 +63,7 @@ const schema = blogPostSchema({
<span>{remarkPluginFrontmatter.minutesRead}</span>
</small>
</p>
- </section>
+ </header>
<section>
<Content />
diff --git a/src/utils/schemas/blogPostSchema.ts b/src/utils/schemas/blogPostSchema.ts
index b20f248..5393cb1 100644
--- a/src/utils/schemas/blogPostSchema.ts
+++ b/src/utils/schemas/blogPostSchema.ts
@@ -3,19 +3,28 @@ import type { WithContext, BlogPosting } from "schema-dts";
export type BlogPostSchemaParams = {
readonly siteUrl: string;
readonly title: string;
+ readonly description: string;
readonly slug: string;
readonly datePublished: string;
readonly author: string;
+ readonly lang: string;
};
-export default ({ siteUrl, title, slug, datePublished, author }: BlogPostSchemaParams): WithContext<BlogPosting> => ({
+export default ({ siteUrl, title, description, slug, datePublished, author, lang }: BlogPostSchemaParams): WithContext<BlogPosting> => ({
"@context": "https://schema.org",
"@type": "BlogPosting",
"url": new URL(`/blog/${slug}`, siteUrl).toString(),
"headline": title,
+ "description": description,
"datePublished": datePublished,
+ "dateModified": datePublished,
+ "inLanguage": lang,
"author": {
"@type": "Person",
"name": author,
},
+ "mainEntityOfPage": {
+ "@type": "WebPage",
+ "@id": new URL(`/blog/${slug}`, siteUrl).toString(),
+ },
});