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:
2026-01-25 00:39:10 +01:00
co-authored by Claude Opus 4.5
parent d7f0a6d6f1
commit 223695b3cf
4 changed files with 257 additions and 3 deletions
+2 -1
View File
@@ -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 />
</>
);
+19
View File
@@ -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">