auto-claude: subtask-3-1 - Audit existing JsonLd components and enhance struc
Enhanced JSON-LD structured data coverage with the following improvements: ## PersonJsonLd Enhancements: - Added hasOccupation with skills and occupationLocation - Added knowsLanguage (German, English, Serbian) - Added worksFor reference to business - Added nationality for geo-targeting - Enhanced knowsAbout with Claude AI, GPT-4, LangChain - Upgraded image to ImageObject with dimensions ## New Components: - ContactPageJsonLd: Contact page with ContactPoint entity - CollectionPageJsonLd: Portfolio page with ItemList for projects - ItemListJsonLd: Generic list schema for any items ## WebSiteJsonLd Enhancement: - Added SearchAction for sitelinks search box ## Page Updates: - Contact page now uses ContactPageJsonLd - Portfolio page now uses CollectionPageJsonLd and BreadcrumbJsonLd All schemas use @id cross-references for proper entity linking. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,7 +2,7 @@ import { setRequestLocale } from 'next-intl/server';
|
||||
import type { Metadata } from 'next';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import { ContactForm } from '@/components/contact';
|
||||
import { BreadcrumbJsonLd, WebPageJsonLd } from '@/components/seo';
|
||||
import { BreadcrumbJsonLd, WebPageJsonLd, ContactPageJsonLd } from '@/components/seo';
|
||||
import { type Locale } from '@/i18n/config';
|
||||
|
||||
type Props = {
|
||||
@@ -80,6 +80,7 @@ export default async function ContactPage({ params }: Props) {
|
||||
url={`/${locale}/contact`}
|
||||
locale={locale as Locale}
|
||||
/>
|
||||
<ContactPageJsonLd locale={locale as Locale} />
|
||||
<ContactForm />
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -2,6 +2,8 @@ import { setRequestLocale } from 'next-intl/server';
|
||||
import type { Metadata } from 'next';
|
||||
import { getTranslations } from 'next-intl/server';
|
||||
import { PortfolioGrid } from '@/components/portfolio';
|
||||
import { BreadcrumbJsonLd, CollectionPageJsonLd } from '@/components/seo';
|
||||
import { type Locale } from '@/i18n/config';
|
||||
|
||||
type Props = {
|
||||
params: Promise<{ locale: string }>;
|
||||
@@ -165,8 +167,25 @@ export default async function PortfolioPage({ params }: Props) {
|
||||
|
||||
const t = await getTranslations('portfolio');
|
||||
|
||||
const breadcrumbItems = [
|
||||
{ name: locale === 'de' ? 'Start' : locale === 'sr' ? 'Početna' : 'Home', url: `/${locale}` },
|
||||
{ name: 'Portfolio', url: `/${locale}/portfolio` },
|
||||
];
|
||||
|
||||
// Transform projects for JSON-LD schema
|
||||
const portfolioProjects = projects.map((project) => ({
|
||||
name: project.title,
|
||||
description: project.description,
|
||||
url: `/${locale}/portfolio/${project.slug}`,
|
||||
dateCreated: project.date,
|
||||
technologies: project.technologies,
|
||||
}));
|
||||
|
||||
return (
|
||||
<div className="relative min-h-screen">
|
||||
<BreadcrumbJsonLd items={breadcrumbItems} locale={locale as Locale} />
|
||||
<CollectionPageJsonLd locale={locale as Locale} projects={portfolioProjects} />
|
||||
|
||||
<section className="py-24">
|
||||
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div className="text-center mb-16">
|
||||
|
||||
Reference in New Issue
Block a user