Weekly SEO

This commit is contained in:
Timo Knuth
2026-06-08 20:33:38 +02:00
parent a7cbbee084
commit 0866c200a0
17 changed files with 21176 additions and 135 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -147,7 +147,7 @@ export default function MarketingLayout({
<Link href="/" className="flex items-center space-x-3 group">
<div className="relative w-16 h-16 overflow-hidden rounded-full shadow-indigo-200 shadow-lg group-hover:scale-105 transition-transform duration-200">
<Image
src="/favicon1.png"
src="/logo.svg"
alt="QR Master"
fill
sizes="64px"

View File

@@ -119,29 +119,49 @@ const comparisonRows = [
{
platform: 'Bitly',
href: '/alternatives/bitly',
bestFor: 'Short links and light QR use',
watchOut: 'Low QR code counts on entry plans; no bulk QR creation',
price: 'Link-first paid plans',
freePlan: 'Limited QR use',
dynamicCodes: 'QR feature inside link management',
analytics: 'Link analytics first',
gdpr: 'Review DPA for EU use',
bulk: 'No QR-first bulk workflow',
branding: 'Bitly-branded link context',
qrMasterAngle: 'QR-first workflow with 50 dynamic codes on Pro',
},
{
platform: 'Flowcode',
href: '/alternatives/flowcode',
bestFor: 'Design-forward QR campaigns',
watchOut: 'Branding and interstitial concerns on lower tiers',
price: 'Brand and team tiers',
freePlan: 'Limited free path',
dynamicCodes: 'Strong QR design workflow',
analytics: 'Paid campaign analytics',
gdpr: 'US vendor; review data terms',
bulk: 'Best for larger plans',
branding: 'Design-forward, possible platform branding',
qrMasterAngle: 'Clean redirects and brand control without a branded scan page',
},
{
platform: 'Beaconstac / Uniqode',
href: '/alternatives/beaconstac',
bestFor: 'Enterprise QR management',
watchOut: 'Often more platform than small teams need',
price: 'Enterprise-oriented tiers',
freePlan: 'Trial or limited evaluation',
dynamicCodes: 'Advanced enterprise QR platform',
analytics: 'Advanced paid analytics',
gdpr: 'DPA and configuration review needed',
bulk: 'Strong, often enterprise-oriented',
branding: 'Enterprise controls',
qrMasterAngle: 'Simpler dynamic QR, analytics, and bulk creation for SMB teams',
},
{
platform: 'QR-Code-Generator.com',
href: '/alternatives/qr-code-generator',
bestFor: 'Fast one-off QR creation',
watchOut: 'Dynamic QR trial limits can be painful after printing',
price: 'Paid dynamic QR after trial',
freePlan: 'Static QR path',
dynamicCodes: 'Dynamic QR behind paid upgrade',
analytics: 'Paid analytics',
gdpr: 'Review vendor terms',
bulk: 'Paid workflow',
branding: 'Template-driven branding',
qrMasterAngle: 'Free dynamic codes and transparent paid tiers',
},
];
@@ -257,34 +277,57 @@ export default function AlternativesHubPage() {
</p>
</div>
<div className="overflow-hidden rounded-xl border" style={{ borderColor: '#E4E0D9' }}>
<div className="grid grid-cols-1 md:grid-cols-5" style={{ backgroundColor: '#F8F7F4' }}>
{['Platform', 'Best for', 'Watch out for', 'QR Master angle', 'Compare'].map((heading) => (
<div key={heading} className="p-4 text-xs font-semibold uppercase tracking-wider" style={{ color: '#71717A' }}>
{heading}
</div>
))}
</div>
{comparisonRows.map((row, index) => (
<div
key={row.platform}
className="grid grid-cols-1 md:grid-cols-5"
style={{
borderTop: '1px solid #E4E0D9',
backgroundColor: index % 2 === 0 ? '#FFFFFF' : '#FAFAF8',
}}
>
<div className="p-4 font-semibold" style={{ color: '#18181B' }}>{row.platform}</div>
<div className="p-4 text-sm" style={{ color: '#52525B' }}>{row.bestFor}</div>
<div className="p-4 text-sm" style={{ color: '#52525B' }}>{row.watchOut}</div>
<div className="p-4 text-sm font-medium" style={{ color: '#166534' }}>{row.qrMasterAngle}</div>
<div className="p-4">
<Link href={row.href} className="text-sm font-semibold" style={{ color: '#166534' }}>
QR Master vs {row.platform}
</Link>
</div>
</div>
))}
<div className="overflow-x-auto rounded-xl border" style={{ borderColor: '#E4E0D9' }}>
<table className="w-full min-w-[980px] text-sm">
<thead style={{ backgroundColor: '#F8F7F4' }}>
<tr>
{[
'Platform',
'Price',
'Free plan',
'Dynamic codes',
'Analytics',
'GDPR / EU fit',
'Bulk',
'Branding',
'Compare',
].map((heading) => (
<th
key={heading}
className="p-4 text-left text-xs font-semibold uppercase tracking-wider"
style={{ color: '#71717A' }}
>
{heading}
</th>
))}
</tr>
</thead>
<tbody>
{comparisonRows.map((row, index) => (
<tr
key={row.platform}
style={{
borderTop: '1px solid #E4E0D9',
backgroundColor: index % 2 === 0 ? '#FFFFFF' : '#FAFAF8',
}}
>
<td className="p-4 font-semibold" style={{ color: '#18181B' }}>{row.platform}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.price}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.freePlan}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.dynamicCodes}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.analytics}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.gdpr}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.bulk}</td>
<td className="p-4" style={{ color: '#52525B' }}>{row.branding}</td>
<td className="p-4">
<Link href={row.href} className="font-semibold" style={{ color: '#166534' }}>
QR Master vs {row.platform}
</Link>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</section>

View File

@@ -13,12 +13,12 @@ import { MarketingPageTracker } from '@/components/marketing/MarketingAnalytics'
export const metadata: Metadata = {
title: {
absolute: 'Bulk QR Code Generator - Create QR Codes from a Spreadsheet',
absolute: 'Bulk QR Code Generator for Excel, CSV and Google Sheets',
},
description:
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan. Upload, preview, download as ZIP, or save the batch to your dashboard.',
'Generate up to 1,000 QR codes from Excel, CSV, XLSX, or exported Google Sheets data. Upload, preview, batch-create, download ZIP files, or save to your dashboard.',
keywords:
'bulk qr code generator, qr code from excel, csv qr code generator, bulk qr codes, spreadsheet qr generation',
'bulk qr code generator, bulk qr code generator excel, batch qr code generator, qr code from excel, csv qr code generator, bulk qr generator, bulk qr code generator in google sheets, spreadsheet qr generation',
alternates: {
canonical: 'https://www.qrmaster.net/bulk-qr-code-generator',
languages: {
@@ -27,17 +27,17 @@ export const metadata: Metadata = {
},
},
openGraph: {
title: 'Bulk QR Code Generator - Create QR Codes from a Spreadsheet',
title: 'Bulk QR Code Generator for Excel, CSV and Google Sheets',
description:
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan.',
'Generate up to 1,000 QR codes from CSV, Excel, XLSX, or exported Google Sheets data.',
url: 'https://www.qrmaster.net/bulk-qr-code-generator',
type: 'website',
images: ['/og-image.png'],
},
twitter: {
title: 'Bulk QR Code Generator - Create QR Codes from a Spreadsheet',
title: 'Bulk QR Code Generator for Excel, CSV and Google Sheets',
description:
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan.',
'Generate up to 1,000 QR codes from CSV, Excel, XLSX, or exported Google Sheets data.',
},
};
@@ -45,7 +45,12 @@ const featureCards = [
{
title: 'Spreadsheet upload',
description:
'Upload CSV, XLS, or XLSX files and map the title and content columns before generating the batch.',
'Upload CSV, XLS, or XLSX files from Excel, Numbers, Airtable, or a Google Sheets export and map the title and content columns before generating the batch.',
},
{
title: 'Excel and Google Sheets workflow',
description:
'Prepare rows in Excel or Google Sheets, export to CSV/XLSX, then generate the full QR code batch from one clean spreadsheet.',
},
{
title: 'Up to 1,000 rows per upload',
@@ -75,6 +80,16 @@ const featureCards = [
];
const inputExamples = [
{
title: 'Google Sheets export',
content: 'Name,URL\nMenu QR,https://example.com/menu\nFlyer QR,https://example.com/flyer',
note: 'Export a Google Sheet as CSV and upload it as a batch QR code generator input.',
},
{
title: 'Excel product list',
content: 'SKU,URL\nSKU-1001,https://example.com/products/1001',
note: 'Use Excel or XLSX rows when each product, insert, or label needs its own QR code.',
},
{
title: 'Website URLs',
content: 'https://example.com/product',
@@ -140,6 +155,16 @@ const faqItems = [
answer:
'The current flow accepts CSV, XLS, and XLSX files.',
},
{
question: 'Can I use Google Sheets as the source?',
answer:
'Yes. Prepare the batch in Google Sheets, export it as CSV or XLSX, then upload that file to QR Master. The workflow is the same as an Excel upload.',
},
{
question: 'Is this a batch QR code generator?',
answer:
'Yes. QR Master bulk creation is a batch QR code generator for spreadsheet rows. Each row becomes one QR code, and the finished batch can be downloaded together.',
},
{
question: 'Which plan includes bulk QR creation?',
answer:
@@ -161,9 +186,10 @@ const softwareSchema = {
availability: 'https://schema.org/InStock',
},
description:
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan.',
'Generate up to 1,000 static QR codes from CSV, Excel, XLSX, or exported Google Sheets files in the QR Master Business plan.',
featureList: [
'CSV, XLS, and XLSX upload',
'Excel and Google Sheets CSV export workflow',
'Up to 1,000 rows per upload',
'Static QR code generation',
'ZIP download of generated SVG files',
@@ -393,6 +419,49 @@ export default function BulkQRCodeGeneratorPage() {
</p>
</div>
<section className="bg-white py-16">
<div className="container mx-auto max-w-6xl px-4 sm:px-6 lg:px-8">
<div className="mb-10 max-w-3xl">
<p className="mb-3 text-sm font-semibold uppercase tracking-wider text-green-600">
Excel, CSV, and Google Sheets
</p>
<h2 className="text-3xl font-bold text-gray-900">
Batch QR code generation from spreadsheet rows
</h2>
<p className="mt-4 text-lg leading-relaxed text-gray-600">
Use QR Master as a bulk QR code generator when your source data
already lives in Excel, a CSV export, or Google Sheets. Keep one
row per QR code, map the columns, preview the batch, then export
the generated SVG files together.
</p>
</div>
<div className="grid gap-6 md:grid-cols-3">
{[
{
title: '1. Prepare columns',
body: 'Use columns such as title, URL, SKU, campaign, or location. The content column is what the QR code encodes.',
},
{
title: '2. Export clean data',
body: 'Save Excel as XLSX or export Google Sheets to CSV. Avoid merged cells and keep one QR code per row.',
},
{
title: '3. Generate the batch',
body: 'Upload the file, map title and content, preview the rows, and download the finished QR codes as a ZIP.',
},
].map((step) => (
<Card key={step.title} className="p-6">
<h3 className="mb-2 text-xl font-semibold text-gray-900">
{step.title}
</h3>
<p className="text-gray-600">{step.body}</p>
</Card>
))}
</div>
</div>
</section>
<div className="container mx-auto max-w-5xl px-4 pb-8 sm:px-6 lg:px-8">
<FAQSection items={faqItems} title="Bulk QR questions" />
</div>

View File

@@ -16,12 +16,12 @@ import { featuredUseCases } from '@/lib/growth-pages';
export const metadata: Metadata = {
title: {
absolute: 'Free Dynamic QR Code Generator - Editable QR Codes',
absolute: 'Free Dynamic QR Code Generator - Editable QR Codes with Tracking',
},
description:
'Create a free dynamic QR code generator workflow. Edit QR code destinations after printing, track scans, and manage editable QR codes in one dashboard.',
'Create free dynamic QR codes with editable destinations, scan tracking, custom branding, and no reprint workflow for menus, flyers, packaging, and campaigns.',
keywords:
'dynamic qr code generator, editable qr code, dynamic qr code, qr code tracking, update qr code after printing',
'dynamic qr code generator, free dynamic qr code generator, best dynamic qr code generator, editable qr code, changeable qr code, qr code tracking, update qr code after printing',
alternates: {
canonical: 'https://www.qrmaster.net/dynamic-qr-code-generator',
languages: {
@@ -30,7 +30,7 @@ export const metadata: Metadata = {
},
},
openGraph: {
title: 'Free Dynamic QR Code Generator - Editable QR Codes',
title: 'Free Dynamic QR Code Generator - Editable QR Codes with Tracking',
description:
'Create dynamic QR codes that you can edit after printing. Change the destination URL anytime, track scans, and manage all codes in one dashboard.',
url: 'https://www.qrmaster.net/dynamic-qr-code-generator',
@@ -38,7 +38,7 @@ export const metadata: Metadata = {
images: ['/og-image.png'],
},
twitter: {
title: 'Free Dynamic QR Code Generator - Editable QR Codes',
title: 'Free Dynamic QR Code Generator - Editable QR Codes with Tracking',
description:
'Create dynamic QR codes that you can edit after printing. Change the destination URL anytime, track scans, and manage all codes in one dashboard.',
},
@@ -470,7 +470,7 @@ export default function DynamicQRCodeGeneratorPage() {
<div className="space-y-5">
<h1 className="text-5xl font-bold leading-tight text-gray-900 lg:text-6xl">
Free Dynamic QR Code Generator
Free Dynamic QR Code Generator with Tracking
</h1>
<p className="text-xl leading-relaxed text-gray-600">
Create editable QR codes you can update after printing.
@@ -1030,7 +1030,7 @@ export default function DynamicQRCodeGeneratorPage() {
</div>
</div>
<p className="mt-4 text-center text-sm text-gray-600">
Same QR image, different destination later.
Live demo: one printed QR image, different destination later.
</p>
</Card>
<div className="absolute -right-4 -top-4 rounded-full bg-purple-500 px-4 py-2 text-sm font-semibold text-white shadow-lg">

View File

@@ -19,10 +19,11 @@ export const metadata: Metadata = {
: { index: false, follow: false },
icons: {
icon: [
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
{ url: '/favicon.svg', type: 'image/svg+xml' },
{ url: '/favicon.ico', sizes: '16x16 32x32', type: 'image/x-icon' },
],
shortcut: '/favicon1.png',
apple: '/favicon1.png',
shortcut: '/favicon.ico',
apple: '/logo.svg',
},
twitter: {
card: 'summary_large_image',

View File

@@ -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 />

View File

@@ -20,10 +20,11 @@ export const metadata: Metadata = {
: { index: false, follow: false },
icons: {
icon: [
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
{ url: '/favicon.svg', type: 'image/svg+xml' },
{ url: '/favicon.ico', sizes: '16x16 32x32', type: 'image/x-icon' },
],
shortcut: '/favicon1.png',
apple: '/favicon1.png',
shortcut: '/favicon.ico',
apple: '/logo.svg',
},
twitter: {
card: 'summary_large_image',

View File

@@ -113,7 +113,7 @@ export default function MarketingLayout({
<Link href="/" className="flex items-center space-x-3 group">
<div className="relative w-16 h-16 overflow-hidden rounded-full shadow-indigo-200 shadow-lg group-hover:scale-105 transition-transform duration-200">
<Image
src="/favicon1.png"
src="/logo.svg"
alt="QR Master"
fill
sizes="64px"

View File

@@ -41,18 +41,18 @@ export const metadata: Metadata = {
'barcode drucken',
],
alternates: {
canonical: 'https://www.qrmaster.net/barcode-generator',
canonical: 'https://www.qrmaster.net/tools/barcode-generator',
languages: {
'x-default': 'https://www.qrmaster.net/tools/barcode-generator',
en: 'https://www.qrmaster.net/tools/barcode-generator',
de: 'https://www.qrmaster.net/barcode-generator',
de: 'https://www.qrmaster.net/tools/barcode-generator',
},
},
openGraph: {
title: 'Barcode Generator Kostenlos EAN, UPC & Code 128 erstellen',
description:
'Barcode Generator: Erstellen Sie professionelle Barcodes für Einzelhandel, Lager und Logistik. Kostenlos, ohne Anmeldung. Sofort druckfertig.',
url: 'https://www.qrmaster.net/barcode-generator',
url: 'https://www.qrmaster.net/tools/barcode-generator',
locale: 'de_DE',
type: 'website',
images: [

View File

@@ -15,10 +15,11 @@ export const metadata: Metadata = {
metadataBase: new URL('https://www.qrmaster.net'),
icons: {
icon: [
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
{ url: '/favicon.svg', type: 'image/svg+xml' },
{ url: '/favicon.ico', sizes: '16x16 32x32', type: 'image/x-icon' },
],
shortcut: '/favicon1.png',
apple: '/favicon1.png',
shortcut: '/favicon.ico',
apple: '/logo.svg',
},
openGraph: {
type: 'website',

View File

@@ -51,12 +51,37 @@ export default function HomePageClient() {
Popular QR Master workflows
</h2>
<p className="mt-3 text-base leading-7 text-slate-600">
Start with the pages people already use for meetings, guest WiFi,
German QR creation, and local service businesses.
Start with the pages that match high-intent searches for editable
QR codes, spreadsheet batches, barcodes, competitor comparisons,
meetings, guest WiFi, and local service businesses.
</p>
</div>
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
{[
{
href: '/dynamic-qr-code-generator',
title: 'Dynamic QR Code Generator',
description:
'Create editable QR codes with tracking and no reprint workflow.',
},
{
href: '/bulk-qr-code-generator',
title: 'Bulk QR Code Generator',
description:
'Generate QR codes from Excel, CSV, and spreadsheet rows.',
},
{
href: '/tools/barcode-generator',
title: 'Barcode Generator',
description:
'Create EAN-13, UPC-A, and Code 128 barcodes online.',
},
{
href: '/alternatives',
title: 'QR Code Platform Alternatives',
description:
'Compare QR Master with Beaconstac, Bitly, Flowcode, and more.',
},
{
href: '/tools/teams-qr-code',
title: 'Teams QR Code Generator',

View File

@@ -20,7 +20,7 @@ export function Footer({ variant = 'marketing', t }: FooterProps) {
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8">
<div>
<Link href="/" className="flex items-center space-x-2 mb-4 hover:opacity-80 transition-opacity">
<img src="/favicon1.png" alt="QR Master Logo" className="w-[68px] h-[68px] rounded-full object-cover" />
<img src="/logo.svg" alt="QR Master Logo" className="w-[68px] h-[68px] rounded-lg object-cover" />
<span className={`text-xl font-bold ${isDashboard ? 'text-gray-900' : ''}`}>QR Master</span>
</Link>
<p className={isDashboard ? 'text-gray-500' : 'text-gray-400'}>

View File

@@ -21,9 +21,9 @@
"all_industries": "Industries"
},
"hero": {
"badge": "Free QR Code Generator",
"title": "QR Master: Create QR Codes That Work Everywhere",
"subtitle": "Generate static and dynamic QR codes with tracking, custom branding, and bulk generation. Free forever.",
"badge": "QR Master Free QR Code Generator",
"title": "QR Master: Free Dynamic QR Code Generator with Tracking",
"subtitle": "Create static and dynamic QR codes with editable destinations, scan tracking, custom branding, and bulk generation. Also searched as QRMaster and QR code master.",
"features": [
"No credit card required to start",
"Create QR codes free forever",

View File

@@ -35,7 +35,7 @@ export function organizationSchema() {
url: SITE_URL,
logo: {
'@type': 'ImageObject',
url: `${SITE_URL}/static/og-image.png`,
url: `${SITE_URL}/og-image.png`,
width: 1200,
height: 630,
},
@@ -96,7 +96,7 @@ export function blogPostingSchema(post: BlogPost, author?: AuthorProfile) {
url: SITE_URL,
logo: {
'@type': 'ImageObject',
url: `${SITE_URL}/static/og-image.png`,
url: `${SITE_URL}/og-image.png`,
}
},
isPartOf: {
@@ -272,7 +272,7 @@ export function articleSchema(params: {
url: SITE_URL,
logo: {
'@type': 'ImageObject',
url: `${SITE_URL}/static/og-image.png`,
url: `${SITE_URL}/og-image.png`,
},
},
url: params.url,
@@ -287,7 +287,7 @@ export function reviewSchema(testimonial: Testimonial) {
'@type': 'SoftwareApplication',
name: 'QR Master',
description: 'Professional QR code generator with dynamic QR codes, analytics, and customization.',
image: `${SITE_URL}/static/og-image.png`,
image: `${SITE_URL}/og-image.png`,
applicationCategory: 'BusinessApplication',
operatingSystem: 'Web Browser',
offers: {
@@ -320,7 +320,7 @@ export function aggregateRatingSchema(aggregateRating: AggregateRating) {
'@type': 'SoftwareApplication',
name: 'QR Master',
description: 'Professional QR code generator with dynamic QR codes, analytics, and customization.',
image: `${SITE_URL}/static/og-image.png`,
image: `${SITE_URL}/og-image.png`,
applicationCategory: 'BusinessApplication',
operatingSystem: 'Web Browser',
url: SITE_URL,
@@ -367,7 +367,7 @@ export function newsArticleSchema(params: NewsArticleParams) {
'@id': `${SITE_URL}/#organization`,
logo: {
'@type': 'ImageObject',
url: `${SITE_URL}/static/og-image.png`,
url: `${SITE_URL}/og-image.png`,
width: 1200,
height: 630,
},

File diff suppressed because one or more lines are too long