neuer versuch.

This commit is contained in:
Timo Knuth 2026-01-14 14:32:05 +01:00
parent f68b7a331c
commit 904e439102
5 changed files with 22 additions and 17 deletions

View File

@ -4,7 +4,7 @@ import NewsletterClient from './NewsletterClient';
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Newsletter Admin | QR Master', title: 'Newsletter Admin | QR Master',
description: 'Admin restricted area.', description: 'Administrative access for QR Master newsletter management. This area is restricted to authorized personnel only.',
robots: { robots: {
index: false, index: false,
follow: false, follow: false,

View File

@ -8,7 +8,7 @@ import Breadcrumbs, { BreadcrumbItem } from '@/components/Breadcrumbs';
import { breadcrumbSchema } from '@/lib/schema'; import { breadcrumbSchema } from '@/lib/schema';
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'QR Code Tracking & Analytics - Track Scans', title: 'QR Code Tracking & Analytics - Track Scans | QR Master',
description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior. Free QR code tracking software with detailed reports.', description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior. Free QR code tracking software with detailed reports.',
keywords: 'qr code tracking, qr code analytics, track qr scans, qr code statistics, free qr tracking, qr code monitoring', keywords: 'qr code tracking, qr code analytics, track qr scans, qr code statistics, free qr tracking, qr code monitoring',
alternates: { alternates: {
@ -19,7 +19,7 @@ export const metadata: Metadata = {
}, },
}, },
openGraph: { openGraph: {
title: 'QR Code Tracking & Analytics - Track Every Scan | QR Master', title: 'QR Code Tracking & Analytics - Track Scans | QR Master',
description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior.', description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior.',
url: 'https://www.qrmaster.net/qr-code-tracking', url: 'https://www.qrmaster.net/qr-code-tracking',
type: 'website', type: 'website',
@ -33,7 +33,7 @@ export const metadata: Metadata = {
], ],
}, },
twitter: { twitter: {
title: 'QR Code Tracking & Analytics - Track Every Scan | QR Master', title: 'QR Code Tracking & Analytics - Track Scans | QR Master',
description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior.', description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior.',
}, },
}; };

View File

@ -10,7 +10,7 @@ import { generateSoftwareAppSchema, generateFaqSchema } from '@/lib/schema-utils
// SEO Optimized Metadata // SEO Optimized Metadata
export const metadata: Metadata = { export const metadata: Metadata = {
title: { title: {
absolute: 'vCard QR Code Generator | Digitale Visitenkarte | QR Master', absolute: 'Free vCard QR Code Generator | QR Master',
}, },
description: 'Create a vCard QR code for your business card. Erstelle deine elektronische Visitenkarte kostenlos. Share contact details instantly. Free & No App Required.', description: 'Create a vCard QR code for your business card. Erstelle deine elektronische Visitenkarte kostenlos. Share contact details instantly. Free & No App Required.',
keywords: ['vcard qr code', 'business card qr code', 'contact qr generator', 'digital business card', 'add to contacts qr', 'visitenkarte qr code', 'digitale visitenkarte erstellen', 'kontakt qr code', 'elektronische visitenkarte', 'vcard erstellen kostenlos'], keywords: ['vcard qr code', 'business card qr code', 'contact qr generator', 'digital business card', 'add to contacts qr', 'visitenkarte qr code', 'digitale visitenkarte erstellen', 'kontakt qr code', 'elektronische visitenkarte', 'vcard erstellen kostenlos'],

View File

@ -9,15 +9,22 @@ export default function SeoJsonLd({ data }: SeoJsonLdProps) {
return ( return (
<> <>
{jsonLdArray.map((item, index) => ( {jsonLdArray.map((item, index) => {
const schema = {
'@context': 'https://schema.org',
...item,
};
return (
<script <script
key={index} key={index}
type="application/ld+json" type="application/ld+json"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: JSON.stringify(item, null, 0), __html: JSON.stringify(schema, null, 0),
}} }}
/> />
))} );
})}
</> </>
); );
} }

View File

@ -1,7 +1,5 @@
export function generateFaqSchema(questions: Record<string, { question: string; answer: string }>) { export function generateFaqSchema(questions: Record<string, { question: string; answer: string }>) {
return { return {
'@context': 'https://schema.org',
'@type': 'FAQPage', '@type': 'FAQPage',
mainEntity: Object.values(questions).map((item) => ({ mainEntity: Object.values(questions).map((item) => ({
'@type': 'Question', '@type': 'Question',
@ -21,7 +19,6 @@ export function generateSoftwareAppSchema(
applicationCategory: string = 'UtilitiesApplication' applicationCategory: string = 'UtilitiesApplication'
) { ) {
return { return {
'@context': 'https://schema.org',
'@type': 'SoftwareApplication', '@type': 'SoftwareApplication',
name, name,
applicationCategory, applicationCategory,
@ -31,6 +28,7 @@ export function generateSoftwareAppSchema(
'@type': 'Offer', '@type': 'Offer',
price: '0', price: '0',
priceCurrency: 'USD', priceCurrency: 'USD',
availability: 'https://schema.org/InStock',
}, },
aggregateRating: { aggregateRating: {
'@type': 'AggregateRating', '@type': 'AggregateRating',