Shema
This commit is contained in:
@@ -1,42 +0,0 @@
|
|||||||
/** @type {import('next-sitemap').IConfig} */
|
|
||||||
module.exports = {
|
|
||||||
siteUrl: 'https://www.qrmaster.net',
|
|
||||||
generateRobotsTxt: true,
|
|
||||||
robotsTxtOptions: {
|
|
||||||
policies: [
|
|
||||||
{
|
|
||||||
userAgent: '*',
|
|
||||||
allow: '/',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
transform: async (config, path) => {
|
|
||||||
// Custom priority and changefreq based on path
|
|
||||||
let priority = 0.7;
|
|
||||||
let changefreq = 'weekly';
|
|
||||||
|
|
||||||
if (path === '/') {
|
|
||||||
priority = 0.9;
|
|
||||||
changefreq = 'daily';
|
|
||||||
} else if (path === '/blog') {
|
|
||||||
priority = 0.7;
|
|
||||||
changefreq = 'daily';
|
|
||||||
} else if (path === '/pricing') {
|
|
||||||
priority = 0.8;
|
|
||||||
changefreq = 'weekly';
|
|
||||||
} else if (path === '/faq') {
|
|
||||||
priority = 0.6;
|
|
||||||
changefreq = 'weekly';
|
|
||||||
} else if (path.startsWith('/blog/')) {
|
|
||||||
priority = 0.6;
|
|
||||||
changefreq = 'weekly';
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
loc: path,
|
|
||||||
changefreq,
|
|
||||||
priority,
|
|
||||||
lastmod: new Date().toISOString(),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
43
package-lock.json
generated
43
package-lock.json
generated
@@ -66,7 +66,6 @@
|
|||||||
"cross-env": "^10.1.0",
|
"cross-env": "^10.1.0",
|
||||||
"eslint": "^8.56.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-config-next": "^16.1.1",
|
"eslint-config-next": "^16.1.1",
|
||||||
"next-sitemap": "^4.2.3",
|
|
||||||
"postcss": "^8.4.32",
|
"postcss": "^8.4.32",
|
||||||
"prettier": "^3.1.1",
|
"prettier": "^3.1.1",
|
||||||
"prisma": "^5.7.0",
|
"prisma": "^5.7.0",
|
||||||
@@ -1373,13 +1372,6 @@
|
|||||||
"node": ">=6.9.0"
|
"node": ">=6.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@corex/deepmerge": {
|
|
||||||
"version": "4.0.43",
|
|
||||||
"resolved": "https://registry.npmjs.org/@corex/deepmerge/-/deepmerge-4.0.43.tgz",
|
|
||||||
"integrity": "sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/@edge-runtime/cookies": {
|
"node_modules/@edge-runtime/cookies": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/@edge-runtime/cookies/-/cookies-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@edge-runtime/cookies/-/cookies-6.0.0.tgz",
|
||||||
@@ -9444,41 +9436,6 @@
|
|||||||
"uuid": "dist/bin/uuid"
|
"uuid": "dist/bin/uuid"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/next-sitemap": {
|
|
||||||
"version": "4.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/next-sitemap/-/next-sitemap-4.2.3.tgz",
|
|
||||||
"integrity": "sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==",
|
|
||||||
"dev": true,
|
|
||||||
"funding": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/iamvishnusankar/next-sitemap.git"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"@corex/deepmerge": "^4.0.43",
|
|
||||||
"@next/env": "^13.4.3",
|
|
||||||
"fast-glob": "^3.2.12",
|
|
||||||
"minimist": "^1.2.8"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"next-sitemap": "bin/next-sitemap.mjs",
|
|
||||||
"next-sitemap-cjs": "bin/next-sitemap.cjs"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=14.18"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"next": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/next-sitemap/node_modules/@next/env": {
|
|
||||||
"version": "13.5.11",
|
|
||||||
"resolved": "https://registry.npmjs.org/@next/env/-/env-13.5.11.tgz",
|
|
||||||
"integrity": "sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/next/node_modules/postcss": {
|
"node_modules/next/node_modules/postcss": {
|
||||||
"version": "8.4.31",
|
"version": "8.4.31",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
||||||
|
|||||||
@@ -85,7 +85,6 @@
|
|||||||
"cross-env": "^10.1.0",
|
"cross-env": "^10.1.0",
|
||||||
"eslint": "^8.56.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-config-next": "^16.1.1",
|
"eslint-config-next": "^16.1.1",
|
||||||
"next-sitemap": "^4.2.3",
|
|
||||||
"postcss": "^8.4.32",
|
"postcss": "^8.4.32",
|
||||||
"prettier": "^3.1.1",
|
"prettier": "^3.1.1",
|
||||||
"prisma": "^5.7.0",
|
"prisma": "^5.7.0",
|
||||||
|
|||||||
@@ -183,11 +183,7 @@ export default function BulkQRCodeGeneratorPage() {
|
|||||||
priceCurrency: 'USD',
|
priceCurrency: 'USD',
|
||||||
availability: 'https://schema.org/InStock',
|
availability: 'https://schema.org/InStock',
|
||||||
},
|
},
|
||||||
aggregateRating: {
|
|
||||||
'@type': 'AggregateRating',
|
|
||||||
ratingValue: '4.8',
|
|
||||||
ratingCount: '980',
|
|
||||||
},
|
|
||||||
description: 'Generate hundreds of QR codes at once from CSV or Excel files. Perfect for products, events, inventory management with custom branding.',
|
description: 'Generate hundreds of QR codes at once from CSV or Excel files. Perfect for products, events, inventory management with custom branding.',
|
||||||
featureList: [
|
featureList: [
|
||||||
'Excel and CSV file import',
|
'Excel and CSV file import',
|
||||||
|
|||||||
@@ -144,11 +144,7 @@ export default function DynamicQRCodeGeneratorPage() {
|
|||||||
priceCurrency: 'USD',
|
priceCurrency: 'USD',
|
||||||
availability: 'https://schema.org/InStock',
|
availability: 'https://schema.org/InStock',
|
||||||
},
|
},
|
||||||
aggregateRating: {
|
|
||||||
'@type': 'AggregateRating',
|
|
||||||
ratingValue: '4.9',
|
|
||||||
ratingCount: '2150',
|
|
||||||
},
|
|
||||||
description: 'Create dynamic QR codes that can be edited after printing. Change destination URLs, track scans, and update content without reprinting.',
|
description: 'Create dynamic QR codes that can be edited after printing. Change destination URLs, track scans, and update content without reprinting.',
|
||||||
featureList: [
|
featureList: [
|
||||||
'Edit QR codes after printing',
|
'Edit QR codes after printing',
|
||||||
|
|||||||
@@ -58,10 +58,6 @@ export default function MarketingGroupLayout({
|
|||||||
type="application/ld+json"
|
type="application/ld+json"
|
||||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema()) }}
|
dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema()) }}
|
||||||
/>
|
/>
|
||||||
<script
|
|
||||||
type="application/ld+json"
|
|
||||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteSchema()) }}
|
|
||||||
/>
|
|
||||||
<MarketingLayout>
|
<MarketingLayout>
|
||||||
{children}
|
{children}
|
||||||
</MarketingLayout>
|
</MarketingLayout>
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export async function generateMetadata(): Promise<Metadata> {
|
|||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<SeoJsonLd data={[organizationSchema(), websiteSchema()]} />
|
<SeoJsonLd data={[websiteSchema()]} />
|
||||||
|
|
||||||
{/* Server-rendered SEO content for crawlers */}
|
{/* Server-rendered SEO content for crawlers */}
|
||||||
<div className="sr-only" aria-hidden="false">
|
<div className="sr-only" aria-hidden="false">
|
||||||
|
|||||||
@@ -112,11 +112,7 @@ export default function QRCodeTrackingPage() {
|
|||||||
priceCurrency: 'USD',
|
priceCurrency: 'USD',
|
||||||
availability: 'https://schema.org/InStock',
|
availability: 'https://schema.org/InStock',
|
||||||
},
|
},
|
||||||
aggregateRating: {
|
|
||||||
'@type': 'AggregateRating',
|
|
||||||
ratingValue: '4.8',
|
|
||||||
ratingCount: '1250',
|
|
||||||
},
|
|
||||||
description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior with our free QR code tracking software.',
|
description: 'Track QR code scans with real-time analytics. Monitor location, device, time, and user behavior with our free QR code tracking software.',
|
||||||
features: [
|
features: [
|
||||||
'Real-time analytics dashboard',
|
'Real-time analytics dashboard',
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
|||||||
'zoom-qr-code',
|
'zoom-qr-code',
|
||||||
'teams-qr-code',
|
'teams-qr-code',
|
||||||
'barcode-generator',
|
'barcode-generator',
|
||||||
|
'website-qr-code-generator',
|
||||||
];
|
];
|
||||||
|
|
||||||
// All blog posts
|
// All blog posts
|
||||||
@@ -50,6 +51,12 @@ export default function sitemap(): MetadataRoute.Sitemap {
|
|||||||
changeFrequency: 'weekly',
|
changeFrequency: 'weekly',
|
||||||
priority: 1.0,
|
priority: 1.0,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
url: `${baseUrl}/newsletter`,
|
||||||
|
lastModified: new Date(),
|
||||||
|
changeFrequency: 'monthly',
|
||||||
|
priority: 0.7,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
url: `${baseUrl}/qr-code-erstellen`,
|
url: `${baseUrl}/qr-code-erstellen`,
|
||||||
lastModified: new Date(),
|
lastModified: new Date(),
|
||||||
|
|||||||
@@ -68,8 +68,6 @@ export function organizationSchema() {
|
|||||||
slogan: 'Dynamic QR codes that work smarter',
|
slogan: 'Dynamic QR codes that work smarter',
|
||||||
foundingDate: '2025',
|
foundingDate: '2025',
|
||||||
areaServed: 'Worldwide',
|
areaServed: 'Worldwide',
|
||||||
serviceType: 'Software as a Service',
|
|
||||||
priceRange: '$0 - $29',
|
|
||||||
knowsAbout: [
|
knowsAbout: [
|
||||||
'QR Code Generation',
|
'QR Code Generation',
|
||||||
'Marketing Analytics',
|
'Marketing Analytics',
|
||||||
@@ -89,6 +87,11 @@ export function organizationSchema() {
|
|||||||
applicationCategory: 'BusinessApplication',
|
applicationCategory: 'BusinessApplication',
|
||||||
operatingSystem: 'Web Browser',
|
operatingSystem: 'Web Browser',
|
||||||
image: 'https://www.qrmaster.net/static/og-image.png',
|
image: 'https://www.qrmaster.net/static/og-image.png',
|
||||||
|
offers: {
|
||||||
|
'@type': 'Offer',
|
||||||
|
price: '0',
|
||||||
|
priceCurrency: 'EUR',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -99,12 +102,15 @@ export function organizationSchema() {
|
|||||||
applicationCategory: 'BusinessApplication',
|
applicationCategory: 'BusinessApplication',
|
||||||
operatingSystem: 'Web Browser',
|
operatingSystem: 'Web Browser',
|
||||||
image: 'https://www.qrmaster.net/static/og-image.png',
|
image: 'https://www.qrmaster.net/static/og-image.png',
|
||||||
|
offers: {
|
||||||
|
'@type': 'Offer',
|
||||||
|
price: '9',
|
||||||
|
priceCurrency: 'EUR',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
inLanguage: 'en',
|
|
||||||
mainEntityOfPage: 'https://www.qrmaster.net',
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user