From e697750e22e098fbaa03120beac9626ffe80d3b4 Mon Sep 17 00:00:00 2001 From: platform-mcp Date: Fri, 19 Jun 2026 08:57:40 +0530 Subject: [PATCH] agent: Set unique titles and meta descriptions per page --- src/content/blog/ai-transforming-business.md | 2 ++ src/content/blog/building-government-it-systems.md | 2 ++ src/content/blog/building-scalable-erp-systems.md | 2 ++ src/content/blog/cloud-migration-guide.md | 2 ++ .../deploying-police-management-system-bihar.md | 2 ++ src/content/blog/getting-started-with-astro.md | 2 ++ src/content/config.ts | 7 +++++++ src/layouts/BaseLayout.astro | 9 ++++++++- src/pages/404.astro | 4 ++-- src/pages/about.astro | 4 ++-- src/pages/blog/[...slug].astro | 14 ++++++++++---- src/pages/blog/index.astro | 4 ++-- src/pages/contact.astro | 4 ++-- src/pages/cookies.astro | 4 ++-- src/pages/index.astro | 2 +- src/pages/offline.astro | 4 ++-- src/pages/portfolio.astro | 4 ++-- src/pages/privacy.astro | 4 ++-- src/pages/services.astro | 4 ++-- src/pages/sitemap.astro | 4 ++-- src/pages/terms.astro | 4 ++-- 21 files changed, 60 insertions(+), 28 deletions(-) diff --git a/src/content/blog/ai-transforming-business.md b/src/content/blog/ai-transforming-business.md index 2a0ab71..fcc938c 100644 --- a/src/content/blog/ai-transforming-business.md +++ b/src/content/blog/ai-transforming-business.md @@ -1,6 +1,8 @@ --- title: "How AI is Transforming Modern Business Operations" description: "Explore the practical applications of artificial intelligence in streamlining business processes and driving innovation." +seoTitle: "How AI Is Transforming Business Operations" +seoDescription: "How AI is reshaping business operations — practical use cases in customer service, predictive analytics, process automation, and intelligent document handling." pubDate: 2024-01-10 heroImage: "/images/blog/ai-business.jpg" category: "AI/ML" diff --git a/src/content/blog/building-government-it-systems.md b/src/content/blog/building-government-it-systems.md index 1e7062b..1660c51 100644 --- a/src/content/blog/building-government-it-systems.md +++ b/src/content/blog/building-government-it-systems.md @@ -1,6 +1,8 @@ --- title: "Building Scalable Government IT Systems: Lessons from 11-District Deployments" description: "Practical insights from building and deploying large-scale government systems across multiple districts, including Police Management Systems and SCMS projects." +seoTitle: "Scaling Government IT Across 11 Districts" +seoDescription: "Lessons from deploying government IT systems across 11 districts — database-per-district architecture, offline-first modules, and audit logging baked in." pubDate: 2025-12-15 heroImage: "/images/blog/govt-systems.jpg" category: "Cloud" diff --git a/src/content/blog/building-scalable-erp-systems.md b/src/content/blog/building-scalable-erp-systems.md index 05cfd71..c04a51c 100644 --- a/src/content/blog/building-scalable-erp-systems.md +++ b/src/content/blog/building-scalable-erp-systems.md @@ -1,6 +1,8 @@ --- title: "Building Scalable ERP Systems: Lessons from Government & Enterprise Projects" description: "Practical insights on designing and deploying large-scale ERP and management systems for government bodies and enterprises, drawn from real-world project experience." +seoTitle: "Building Scalable ERP Systems That Last" +seoDescription: "How we design and deploy scalable ERP systems for government and enterprise — modular architecture, role-based access control, and offline-resilient patterns." pubDate: 2024-02-20 heroImage: "/images/blog/erp-systems.jpg" category: "Web Development" diff --git a/src/content/blog/cloud-migration-guide.md b/src/content/blog/cloud-migration-guide.md index bec2689..655a135 100644 --- a/src/content/blog/cloud-migration-guide.md +++ b/src/content/blog/cloud-migration-guide.md @@ -1,6 +1,8 @@ --- title: "The Complete Guide to Cloud Migration in 2024" description: "A step-by-step approach to migrating your infrastructure to the cloud while minimizing downtime and maximizing ROI." +seoTitle: "A Complete Guide to Cloud Migration in 2024" +seoDescription: "A step-by-step cloud migration guide for 2024 — assess workloads, containerize apps, adopt infrastructure as code, and cut downtime while maximizing your ROI." pubDate: 2024-01-05 heroImage: "/images/blog/cloud-migration.jpg" category: "Cloud" diff --git a/src/content/blog/deploying-police-management-system-bihar.md b/src/content/blog/deploying-police-management-system-bihar.md index 82674ca..a49613a 100644 --- a/src/content/blog/deploying-police-management-system-bihar.md +++ b/src/content/blog/deploying-police-management-system-bihar.md @@ -1,6 +1,8 @@ --- title: "How We Deployed a Police Management System Across 11 Bihar Districts" description: "A field-tested account of rolling out a Police Management System to 15,000+ officers across 11 districts in Bihar — the architecture, the rollout plan, the failures, and the numbers that came out the other side." +seoTitle: "Deploying a Police System Across 11 Districts" +seoDescription: "A field account of rolling out a Police Management System to 15,000+ officers across 11 Bihar districts — the architecture, rollout plan, failures, and results." pubDate: 2026-06-10 heroImage: "/images/blog/govt-systems.jpg" category: "DevOps" diff --git a/src/content/blog/getting-started-with-astro.md b/src/content/blog/getting-started-with-astro.md index 56f1976..32c3481 100644 --- a/src/content/blog/getting-started-with-astro.md +++ b/src/content/blog/getting-started-with-astro.md @@ -1,6 +1,8 @@ --- title: "Getting Started with Astro: The Modern Static Site Generator" description: "Learn how Astro combines the best of static site generation with modern component frameworks for blazing-fast websites." +seoTitle: "Getting Started with Astro for Fast Sites" +seoDescription: "Get started with Astro, the modern site generator — learn islands architecture, type-safe content collections, and how it ships fast, low-JavaScript sites." pubDate: 2024-01-15 heroImage: "/images/blog/astro-intro.jpg" category: "Web Development" diff --git a/src/content/config.ts b/src/content/config.ts index bbf8e09..b0bee1a 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -5,6 +5,13 @@ const blog = defineCollection({ schema: z.object({ title: z.string(), description: z.string(), + // Optional SEO overrides. When set they drive the tag and + // <meta name="description"> without changing the on-page article + // heading/excerpt, letting us keep descriptive H1s while tuning the + // search snippet to the 50–60 / 150–160 character sweet spots. + // `seoTitle` is the text BEFORE the " | WorkRoot" brand suffix. + seoTitle: z.string().optional(), + seoDescription: z.string().optional(), pubDate: z.coerce.date(), updatedDate: z.coerce.date().optional(), heroImage: z.string().optional(), diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro index 8e23b02..15be6ac 100644 --- a/src/layouts/BaseLayout.astro +++ b/src/layouts/BaseLayout.astro @@ -27,8 +27,15 @@ const { noIndex = false, } = Astro.props; +// Full brand name — used for og:site_name and structured data. const siteName = 'WorkRoot IT Solutions LLP'; -const fullTitle = title === 'Home' ? siteName : `${title} | ${siteName}`; +// Short brand suffix for the <title> tag so titles stay within the +// 50–60 character SEO sweet spot (the full LLP name eats 25+ chars). +const brand = 'WorkRoot'; +// The homepage gets a dedicated, query-focused title instead of the bare +// brand name. Pages pass `title="Home"` to opt into it. +const homeTitle = 'Custom Software & Government IT Development | WorkRoot'; +const fullTitle = title === 'Home' ? homeTitle : `${title} | ${brand}`; --- <!doctype html> diff --git a/src/pages/404.astro b/src/pages/404.astro index d3861fa..8caa2fb 100644 --- a/src/pages/404.astro +++ b/src/pages/404.astro @@ -6,8 +6,8 @@ export const prerender = false; --- <BaseLayout - title="Page Not Found" - description="The page you're looking for doesn't exist. Return to WorkRoot IT Solutions homepage." + title="Page Not Found — Let's Get You Back on Track" + description="The page you're looking for doesn't exist or has moved. Head back to the WorkRoot IT Solutions homepage, or explore our services, portfolio, and blog instead." noIndex={true} > <section class="min-h-[70vh] flex items-center justify-center py-20 px-4"> diff --git a/src/pages/about.astro b/src/pages/about.astro index 87946d6..5dee49b 100644 --- a/src/pages/about.astro +++ b/src/pages/about.astro @@ -114,8 +114,8 @@ const howWeWork = [ --- <BaseLayout - title="About Us — Our Story & Team" - description="WorkRoot IT Solutions LLP: founded 2022, senior in-house engineering team with 8+ years average experience, 20+ projects delivered. Meet the technologists behind your digital transformation. Innovation, integrity, excellence." + title="About Our Software Engineering Team & Story" + description="Meet WorkRoot IT Solutions: founded 2022, a senior in-house engineering team averaging 8+ years' experience across 20+ web, mobile, ERP, and govtech projects." > <SEO slot="head" diff --git a/src/pages/blog/[...slug].astro b/src/pages/blog/[...slug].astro index f7bb671..87c9c3b 100644 --- a/src/pages/blog/[...slug].astro +++ b/src/pages/blog/[...slug].astro @@ -32,21 +32,27 @@ function formatDate(date: Date): string { } const readingTime = getReadingTime(post.body); +// SEO meta: prefer per-post overrides so the <title>/description land in the +// 50–60 / 150–160 character ranges, while the on-page heading below keeps the +// full, descriptive post title. `seoTitle` gets the " | WorkRoot" suffix from +// BaseLayout, so it should be the text before that suffix. +const metaTitle = post.data.seoTitle ?? post.data.title; +const metaDescription = post.data.seoDescription ?? post.data.description; const shareUrl = encodeURIComponent(Astro.url.href); const shareTitle = encodeURIComponent(post.data.title); const shareDescription = encodeURIComponent(post.data.description); --- <BaseLayout - title={post.data.title} - description={post.data.description} + title={metaTitle} + description={metaDescription} ogImage={post.data.heroImage} > <SEO slot="head" type="BlogPosting" - title={post.data.title} - description={post.data.description} + title={metaTitle} + description={metaDescription} breadcrumbs={[ { name: 'Home', url: '/' }, { name: 'Blog', url: '/blog' }, diff --git a/src/pages/blog/index.astro b/src/pages/blog/index.astro index 8933719..9e80e73 100644 --- a/src/pages/blog/index.astro +++ b/src/pages/blog/index.astro @@ -24,8 +24,8 @@ function formatDate(date: Date): string { --- <BaseLayout - title="Blog" - description="Insights and articles on web development, AI, cloud computing, and digital transformation from the WorkRoot team." + title="Software Development & Technology Insights" + description="Insights on web development, ERP, cloud migration, AI, and government IT from the WorkRoot engineering team — field notes from real, large-scale deployments." > <SEO slot="head" diff --git a/src/pages/contact.astro b/src/pages/contact.astro index a195592..a71e093 100644 --- a/src/pages/contact.astro +++ b/src/pages/contact.astro @@ -100,8 +100,8 @@ const budgetOptions = ['< ₹1L', '₹1L – ₹5L', '₹5L – ₹15L', '₹15L --- <BaseLayout - title="Contact Us — Get a Free Quote" - description="Start your project with WorkRoot IT Solutions LLP. 20+ projects delivered, 100% client satisfaction, response within 24 hours. Reach us at admin@workroot.in or call +91 9561417403." + title="Contact Us — Get a Free Project Quote Today" + description="Start your web, mobile, ERP, or government IT project with WorkRoot. 20+ projects delivered, replies within 1 business day. Email admin@workroot.in to begin." > <SEO slot="head" diff --git a/src/pages/cookies.astro b/src/pages/cookies.astro index 556058c..c31784a 100644 --- a/src/pages/cookies.astro +++ b/src/pages/cookies.astro @@ -8,8 +8,8 @@ const lastUpdated = 'March 20, 2026'; --- <BaseLayout - title="Cookie Policy" - description="WorkRoot IT Solutions Cookie Policy - Learn how we use cookies and similar tracking technologies on our website." + title="Cookie Policy — How We Use Cookies & Tracking" + description="Learn how WorkRoot IT Solutions uses cookies and similar tracking technologies, what each cookie does, and how to manage or disable them in your browser." noIndex={true} > <!-- Hero Section --> diff --git a/src/pages/index.astro b/src/pages/index.astro index f440d1f..216ecc2 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -175,7 +175,7 @@ const techStack = [ <BaseLayout title="Home" - description="WorkRoot IT Solutions LLP builds production-grade web, mobile, ERP, and government IT systems for enterprises and growing teams. Free consultation, reply within 1 business day." + description="WorkRoot IT Solutions builds production-grade web, mobile, ERP, and government IT systems. 20+ projects delivered across 11 districts with 99.9% uptime." > <SEO slot="head" diff --git a/src/pages/offline.astro b/src/pages/offline.astro index ba1a2bb..8700551 100644 --- a/src/pages/offline.astro +++ b/src/pages/offline.astro @@ -3,8 +3,8 @@ import BaseLayout from '../layouts/BaseLayout.astro'; --- <BaseLayout - title="You're Offline" - description="It looks like you're offline. Please check your internet connection." + title="You're Offline — Reconnect to Keep Browsing" + description="You appear to be offline. Check your internet connection and try again — many WorkRoot IT Solutions pages stay available once you have visited them before." noIndex={true} > <section class="min-h-[60vh] flex items-center justify-center px-4"> diff --git a/src/pages/portfolio.astro b/src/pages/portfolio.astro index 8b420c4..c9ba84c 100644 --- a/src/pages/portfolio.astro +++ b/src/pages/portfolio.astro @@ -173,8 +173,8 @@ const featuredProjects = projects.filter(p => p.featured); --- <BaseLayout - title="Portfolio — Case Studies & Projects" - description="Explore WorkRoot IT Solutions' portfolio: 20+ successful projects across web, mobile, ERP & government IT. From PLNR Financing to Bihar Government systems. Real results: 100% client satisfaction, 99.9% uptime." + title="Software Project Portfolio & Case Studies" + description="Explore WorkRoot's portfolio of 20+ web, mobile, ERP, and government IT projects — from PLNR Financing to Bihar police systems, with 99.9% uptime delivered." > <SEO slot="head" diff --git a/src/pages/privacy.astro b/src/pages/privacy.astro index c139cbc..e7bf8da 100644 --- a/src/pages/privacy.astro +++ b/src/pages/privacy.astro @@ -8,8 +8,8 @@ const lastUpdated = 'March 20, 2026'; --- <BaseLayout - title="Privacy Policy" - description="WorkRoot IT Solutions Privacy Policy - Learn how we collect, use, and protect your personal information." + title="Privacy Policy — How We Protect Your Data" + description="Read the WorkRoot IT Solutions privacy policy to learn what personal data we collect, how we use and store it, and the choices and rights you have over it." noIndex={true} > <!-- Hero Section --> diff --git a/src/pages/services.astro b/src/pages/services.astro index 8c124c6..d7b77cf 100644 --- a/src/pages/services.astro +++ b/src/pages/services.astro @@ -276,8 +276,8 @@ const processSteps = [ --- <BaseLayout - title="IT Services & Solutions" - description="Expert web development, mobile apps, ERP systems, government IT solutions & UI/UX design from WorkRoot IT Solutions LLP. 10+ projects delivered, 8+ happy clients. From ₹1,00,000 — get a free quote today." + title="ERP, Web & Mobile App Development Services" + description="Custom web development, mobile apps, ERP platforms, and government IT solutions from WorkRoot. 20+ projects delivered across 11 districts — get a free quote." > <SEO slot="head" diff --git a/src/pages/sitemap.astro b/src/pages/sitemap.astro index 1b2d980..b1c1d61 100644 --- a/src/pages/sitemap.astro +++ b/src/pages/sitemap.astro @@ -78,8 +78,8 @@ const icons: Record<string, string> = { --- <BaseLayout - title="Sitemap" - description="WorkRoot IT Solutions Sitemap - Navigate to all pages and resources on our website." + title="Sitemap — Browse All Pages and Resources" + description="Browse every page on WorkRoot IT Solutions in one place — services, portfolio, blog, about, contact, and our web, mobile, ERP, and government IT resources." > <!-- Hero Section --> <section class="relative bg-gradient-to-br from-secondary-900 via-secondary-800 to-secondary-900 py-16 lg:py-20"> diff --git a/src/pages/terms.astro b/src/pages/terms.astro index 249809b..a3951b3 100644 --- a/src/pages/terms.astro +++ b/src/pages/terms.astro @@ -8,8 +8,8 @@ const lastUpdated = 'March 20, 2026'; --- <BaseLayout - title="Terms of Service" - description="WorkRoot IT Solutions Terms of Service - Read our terms and conditions for using our website and services." + title="Terms of Service — Website & Project Terms" + description="Read the WorkRoot IT Solutions terms of service covering acceptable use of our website, project engagements, intellectual property, liability, and warranties." noIndex={true} > <!-- Hero Section -->