From ddc657e0a7fdf5425e8cd570e24da507c91a3710 Mon Sep 17 00:00:00 2001 From: Shekhar Vaidya Date: Mon, 18 May 2026 22:14:52 +0530 Subject: [PATCH] fix(seo): audit and fix SEO across all pages - ProductsPage: align with og:title ("All Windows ISO Releases") - Disclaimer + PrivacyPolicy: add noindex (legal/thin pages shouldn't rank) - ProductDetailPage: improve auto-generated meta description wording; add SoftwareApplication JSON-LD to match EvalDetailPage - HomePage: update JSON-LD description to include Windows Server Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --- frontend/src/pages/DisclaimerPage.tsx | 1 + frontend/src/pages/HomePage.tsx | 2 +- frontend/src/pages/PrivacyPolicyPage.tsx | 1 + frontend/src/pages/ProductDetailPage.tsx | 16 +++++++++++++++- frontend/src/pages/ProductsPage.tsx | 2 +- 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/DisclaimerPage.tsx b/frontend/src/pages/DisclaimerPage.tsx index 60db64c..36ca082 100644 --- a/frontend/src/pages/DisclaimerPage.tsx +++ b/frontend/src/pages/DisclaimerPage.tsx @@ -20,6 +20,7 @@ export default function DisclaimerPage() { <meta property="og:title" content="Disclaimer | Windows ISO Downloader" /> <meta property="og:description" content="Legal disclaimer for MSDL. Not affiliated with Microsoft Corporation." /> <meta property="og:url" content={`${SITE_URL}/disclaimer`} /> + <meta name="robots" content="noindex, follow" /> <div className="max-w-2xl mx-auto px-4 pt-12 pb-10"> <motion.div diff --git a/frontend/src/pages/HomePage.tsx b/frontend/src/pages/HomePage.tsx index 641d848..c5d8c5e 100644 --- a/frontend/src/pages/HomePage.tsx +++ b/frontend/src/pages/HomePage.tsx @@ -66,7 +66,7 @@ const jsonLd = { applicationCategory: 'UtilitiesApplication', operatingSystem: 'Web', url: SITE_URL, - description: 'Download official Microsoft Windows ISO files for Windows 11, 10, and 8.1. Direct links from Microsoft CDN. Free, no registration.', + description: 'Download official Microsoft Windows ISO files for Windows 11, 10, 8.1, and Windows Server. Direct links from Microsoft CDN. Free, no registration.', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, } diff --git a/frontend/src/pages/PrivacyPolicyPage.tsx b/frontend/src/pages/PrivacyPolicyPage.tsx index d588c02..1b13354 100644 --- a/frontend/src/pages/PrivacyPolicyPage.tsx +++ b/frontend/src/pages/PrivacyPolicyPage.tsx @@ -20,6 +20,7 @@ export default function PrivacyPolicyPage() { <meta property="og:title" content="Privacy Policy | Windows ISO Downloader" /> <meta property="og:description" content="Privacy policy for MSDL. We log no data, use no trackers, and proxy no files." /> <meta property="og:url" content={`${SITE_URL}/privacy-policy`} /> + <meta name="robots" content="noindex, follow" /> <div className="max-w-2xl mx-auto px-4 pt-12 pb-10"> <motion.div diff --git a/frontend/src/pages/ProductDetailPage.tsx b/frontend/src/pages/ProductDetailPage.tsx index c411cc5..e699d47 100644 --- a/frontend/src/pages/ProductDetailPage.tsx +++ b/frontend/src/pages/ProductDetailPage.tsx @@ -75,7 +75,7 @@ export default function ProductDetailPage() { : hasCatalogError ? 'Failed to load product catalog.' : productName - ? `Download official ISO image for ${productName}. Direct links pulled securely from Microsoft CDN servers.` + ? `Download the official ${productName} ISO directly from Microsoft's CDN. No registration, no proxy — real-time signed links.` : '' const canonicalUrl = `${SITE_URL}/product/${productId}` @@ -90,6 +90,17 @@ export default function ProductDetailPage() { ], } : null + const softwareJsonLd = productName && !isNotFound && !hasCatalogError ? { + '@context': 'https://schema.org', + '@type': 'SoftwareApplication', + name: productName, + operatingSystem: 'Windows', + applicationCategory: 'OperatingSystem', + url: canonicalUrl, + description: pageDescription, + offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, + } : null + // Load product name + build string useEffect(() => { setBuildStr('') @@ -209,6 +220,9 @@ export default function ProductDetailPage() { {breadcrumbJsonLd && ( <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbJsonLd) }} /> )} + {softwareJsonLd && ( + <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(softwareJsonLd) }} /> + )} <div className="max-w-2xl mx-auto px-5 pt-12 pb-10"> {/* Back */} diff --git a/frontend/src/pages/ProductsPage.tsx b/frontend/src/pages/ProductsPage.tsx index f1d3edb..221f5db 100644 --- a/frontend/src/pages/ProductsPage.tsx +++ b/frontend/src/pages/ProductsPage.tsx @@ -36,7 +36,7 @@ export default function ProductsPage() { return ( <> - <title>All Windows Releases | Windows ISO Downloader + All Windows ISO Releases | Windows ISO Downloader