Weekly SEO
This commit is contained in:
@@ -2,16 +2,10 @@ import React from 'react';
|
||||
import type { Metadata } from 'next';
|
||||
import SeoJsonLd from '@/components/SeoJsonLd';
|
||||
import {
|
||||
organizationSchema,
|
||||
websiteSchema,
|
||||
softwareApplicationSchema,
|
||||
reviewSchema,
|
||||
aggregateRatingSchema,
|
||||
} from '@/lib/schema';
|
||||
import {
|
||||
getFeaturedTestimonials,
|
||||
getAggregateRating,
|
||||
} from '@/lib/testimonial-data';
|
||||
import { getAggregateRating } from '@/lib/testimonial-data';
|
||||
import HomePageClient from '@/components/marketing/HomePageClient';
|
||||
|
||||
function truncateAtWord(text: string, maxLength: number): string {
|
||||
@@ -22,12 +16,11 @@ function truncateAtWord(text: string, maxLength: number): string {
|
||||
}
|
||||
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
const title = truncateAtWord('QR Master – Free QR Code Generator with Analytics', 60);
|
||||
const description = truncateAtWord(
|
||||
'QR Master is a free QR code generator with scan analytics, dynamic QR codes, custom branding, and bulk creation. No signup required for static codes.',
|
||||
'QR Master is a free dynamic QR code generator with tracking, editable destinations, custom branding, and bulk QR creation. Create static QR codes without signup.',
|
||||
160
|
||||
);
|
||||
const brandTitle = 'QR Master | Free Dynamic QR Code Generator';
|
||||
const brandTitle = 'QR Master - Free Dynamic QR Code Generator with Tracking';
|
||||
|
||||
return {
|
||||
title: brandTitle,
|
||||
@@ -42,6 +35,9 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
'qr code with logo',
|
||||
'barcode generator',
|
||||
'free barcode generator',
|
||||
'qr master',
|
||||
'qrmaster',
|
||||
'qr code master',
|
||||
],
|
||||
alternates: {
|
||||
canonical: 'https://www.qrmaster.net/',
|
||||
@@ -73,19 +69,14 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
}
|
||||
|
||||
export default function HomePage() {
|
||||
const featuredTestimonials = getFeaturedTestimonials();
|
||||
const aggregateRating = getAggregateRating();
|
||||
const reviewSchemas = featuredTestimonials.map((t) => reviewSchema(t));
|
||||
|
||||
return (
|
||||
<>
|
||||
<SeoJsonLd
|
||||
data={[
|
||||
websiteSchema(),
|
||||
organizationSchema(),
|
||||
softwareApplicationSchema(aggregateRating),
|
||||
aggregateRatingSchema(aggregateRating),
|
||||
...reviewSchemas,
|
||||
]}
|
||||
/>
|
||||
|
||||
@@ -126,6 +117,15 @@ export default function HomePage() {
|
||||
<a href="/qr-code-erstellen">German QR code generator</a>, and{' '}
|
||||
<a href="/qr-code-for/barbershops">QR codes for barbershops</a>.
|
||||
</p>
|
||||
<p>
|
||||
High-intent QR Master pages include the{' '}
|
||||
<a href="/bulk-qr-code-generator">
|
||||
bulk QR code generator for Excel and CSV files
|
||||
</a>
|
||||
, <a href="/alternatives">QR code platform alternatives</a>,{' '}
|
||||
<a href="/alternatives/beaconstac">Beaconstac alternative</a>, and{' '}
|
||||
<a href="/alternatives/bitly">Bitly QR code alternative</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<HomePageClient />
|
||||
|
||||
Reference in New Issue
Block a user