From a81117972d39df35574bbab809bb590abc874761 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 14 Jun 2025 19:25:16 +0000 Subject: feat: implement Open Graph image generation and enhance configuration - Added ogImages integration to generate Open Graph images for blog posts. - Updated configuration to include Open Graph settings and default preview image. - Refactored Head component to utilize new preview property for Open Graph meta tags. - Enhanced blog post schema to include preview image for structured data representation. - Introduced utility functions for creating Open Graph images with dynamic content. --- src/pages/blog/[...slug].astro | 14 ++++++++------ src/pages/blog/index.astro | 6 ++++-- 2 files changed, 12 insertions(+), 8 deletions(-) (limited to 'src/pages/blog') diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index e347eda..d12ff05 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -25,6 +25,7 @@ const { Content, remarkPluginFrontmatter } = await post.render(); const description = post.data.description; const isBasedOn = post.data.basedOn; const lang = post.data.lang; +const preview = `/images/preview/${post.slug}.png`; const slug = post.slug; const title = post.data.title; @@ -34,13 +35,14 @@ const formattedDate = dayjs(post.data.datePublished.toString()).format("MMMM DD, const schema = blogPostSchema({ siteUrl: new URL("/", Astro.site).toString(), - title, - description, - slug, - datePublished, dateModified, - lang, + datePublished, + description, isBasedOn, + lang, + preview, + slug, + title, }); --- @@ -52,7 +54,7 @@ const schema = blogPostSchema({ } - +

{title}

diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index de5a0a9..3a27111 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -1,9 +1,10 @@ --- import type { CollectionEntry } from "astro:content"; +import { config } from "../../config"; import { getCollection } from "astro:content"; +import blogSchema from "../../utils/schemas/blogSchema"; import Layout from "../../layouts/BaseLayout.astro"; import PostElement from "../../components/PostElement.astro"; -import blogSchema from "../../utils/schemas/blogSchema"; import RSSIcon from "../../components/Icons/RSS.astro"; const posts = await getCollection("blog", ({ data }) => { @@ -25,6 +26,7 @@ const years = Object.keys(postsByYear).sort((a, b) => Number(b) - Number(a)); const title = "Valentin Popov's Blog | Software Development, Leadership & Open-Source"; const description = "Explore Valentin Popov's blog on software development, tech leadership, and open-source experiments. Stay updated with in-depth tutorials and expert insights."; +const preview = config.og.defaultPreview; const lang = "en"; const schema = blogSchema({ @@ -34,7 +36,7 @@ const schema = blogSchema({ }); --- - +

Blog posts -- cgit v1.2.3