Add canonical Person schema and social links to layouts
- Add SOCIAL_LINKS import to BaseLayout and BlogPost - Add Master Person schema to BaseLayout - Reference Person @id in BlogPost article schema Hubert The Eunuch
This commit is contained in:
parent
5b9d4b3a14
commit
861263437c
@ -5,7 +5,7 @@ import Footer from '../components/Footer.astro';
|
||||
import GridOverlay from '../components/GridOverlay.astro';
|
||||
import Navigation from '../components/Navigation.astro';
|
||||
import CustomCursor from '../components/CustomCursor';
|
||||
import { HTML_MARKER, SITE_TITLE, SITE_DESCRIPTION } from '../consts';
|
||||
import { HTML_MARKER, SITE_TITLE, SITE_DESCRIPTION, SOCIAL_LINKS } from '../consts';
|
||||
|
||||
interface Props {
|
||||
title?: string;
|
||||
@ -17,15 +17,49 @@ interface Props {
|
||||
modifiedTime?: Date;
|
||||
}
|
||||
|
||||
const {
|
||||
title = SITE_TITLE,
|
||||
description = SITE_DESCRIPTION,
|
||||
const {
|
||||
title = SITE_TITLE,
|
||||
description = SITE_DESCRIPTION,
|
||||
usePadding = true,
|
||||
image,
|
||||
type = 'website',
|
||||
publishedTime,
|
||||
modifiedTime,
|
||||
} = Astro.props;
|
||||
|
||||
// Master Person schema - establishes canonical identity across all pages
|
||||
const personSchema = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Person",
|
||||
"@id": `${SOCIAL_LINKS.website}/#person`,
|
||||
"name": "Nicholai Vogel",
|
||||
"url": SOCIAL_LINKS.website,
|
||||
"email": SOCIAL_LINKS.email,
|
||||
"jobTitle": "VFX Supervisor & Technical Artist",
|
||||
"description": "VFX Supervisor specializing in both 2D and 3D VFX, AI and high-end technical visualization.",
|
||||
"knowsAbout": [
|
||||
"Houdini",
|
||||
"Nuke",
|
||||
"ComfyUI",
|
||||
"Python",
|
||||
"VFX Pipeline",
|
||||
"Real-time VFX",
|
||||
"Motion Graphics",
|
||||
"Technical Art"
|
||||
],
|
||||
"sameAs": [
|
||||
SOCIAL_LINKS.linkedin,
|
||||
"https://www.instagram.com/nicholai.exe"
|
||||
],
|
||||
"affiliation": {
|
||||
"@type": "Organization",
|
||||
"name": "Biohazard VFX",
|
||||
"url": "https://biohazardvfx.com",
|
||||
"founder": {
|
||||
"@id": `${SOCIAL_LINKS.website}/#person`
|
||||
}
|
||||
}
|
||||
};
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
@ -40,14 +74,18 @@ const {
|
||||
document.documentElement.setAttribute('data-theme', theme);
|
||||
})();
|
||||
</script>
|
||||
<BaseHead
|
||||
title={title}
|
||||
description={description}
|
||||
<BaseHead
|
||||
title={title}
|
||||
description={description}
|
||||
image={image}
|
||||
type={type}
|
||||
publishedTime={publishedTime}
|
||||
modifiedTime={modifiedTime}
|
||||
/>
|
||||
|
||||
<!-- Master Person Schema - Canonical Identity -->
|
||||
<script type="application/ld+json" set:html={JSON.stringify(personSchema)} />
|
||||
|
||||
<slot name="head" />
|
||||
</head>
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import TableOfContents from '../components/TableOfContents.astro';
|
||||
import PostNavigation from '../components/PostNavigation.astro';
|
||||
import RelatedPosts from '../components/RelatedPosts.astro';
|
||||
import { Image } from 'astro:assets';
|
||||
import { SOCIAL_LINKS } from '../consts';
|
||||
|
||||
interface NavPost {
|
||||
title: string;
|
||||
@ -56,6 +57,7 @@ const {
|
||||
} = Astro.props;
|
||||
|
||||
// Article structured data (JSON-LD)
|
||||
// References the canonical Person @id from BaseLayout for knowledge graph linking
|
||||
const articleSchema = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
@ -64,14 +66,10 @@ const articleSchema = {
|
||||
"datePublished": pubDate.toISOString(),
|
||||
"dateModified": (updatedDate || pubDate).toISOString(),
|
||||
"author": {
|
||||
"@type": "Person",
|
||||
"name": "Nicholai Vogel",
|
||||
"url": "https://nicholai.work"
|
||||
"@id": `${SOCIAL_LINKS.website}/#person`
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "Person",
|
||||
"name": "Nicholai Vogel",
|
||||
"url": "https://nicholai.work"
|
||||
"@id": `${SOCIAL_LINKS.website}/#person`
|
||||
},
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user