This commit is contained in:
Timo Knuth
2026-01-12 16:56:52 +01:00
parent beed961eef
commit 111575aeda
5 changed files with 37 additions and 2 deletions

View File

@@ -3,6 +3,8 @@ import type { Metadata } from 'next';
import SeoJsonLd from '@/components/SeoJsonLd';
import { organizationSchema, websiteSchema } from '@/lib/schema';
import HomePageClient from '@/components/marketing/HomePageClient';
import { generateFaqSchema } from '@/lib/schema-utils';
import en from '@/i18n/en.json'; // Import English translations for schema generation
function truncateAtWord(text: string, maxLength: number): string {
if (text.length <= maxLength) return text;
@@ -45,7 +47,7 @@ export async function generateMetadata(): Promise<Metadata> {
export default function HomePage() {
return (
<>
<SeoJsonLd data={[organizationSchema(), websiteSchema()]} />
<SeoJsonLd data={[organizationSchema(), websiteSchema(), generateFaqSchema(en.faq.questions)]} />
{/* Server-rendered SEO content for crawlers */}
<div className="sr-only" aria-hidden="false">

View File

@@ -2,6 +2,7 @@ import React from 'react';
import type { Metadata } from 'next';
import SeoJsonLd from '@/components/SeoJsonLd';
import { organizationSchema, websiteSchema } from '@/lib/schema';
import { generateFaqSchema } from '@/lib/schema-utils';
import { Hero } from '@/components/marketing/Hero';
import { InstantGenerator } from '@/components/marketing/InstantGenerator';
import { StaticVsDynamic } from '@/components/marketing/StaticVsDynamic';
@@ -66,7 +67,7 @@ export default function QRCodeErstellenPage() {
return (
<>
<SeoJsonLd data={[organizationSchema(), websiteSchema()]} />
<SeoJsonLd data={[organizationSchema(), websiteSchema(), generateFaqSchema(t.faq.questions)]} />
{/* Server-rendered SEO content for crawlers - GERMAN */}
<div className="sr-only" aria-hidden="false">

15
src/lib/schema-utils.ts Normal file
View File

@@ -0,0 +1,15 @@
export function generateFaqSchema(questions: Record<string, { question: string; answer: string }>) {
return {
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: Object.values(questions).map((item) => ({
'@type': 'Question',
name: item.question,
acceptedAnswer: {
'@type': 'Answer',
text: item.answer,
},
})),
};
}