From d9d1d3c8f62d389a8c43baa82f7fadfd6bd7db9f Mon Sep 17 00:00:00 2001 From: mohanadft Date: Tue, 14 Jul 2026 13:49:35 +0300 Subject: [PATCH] fix(seo): SEO/GEO/AEO audit fixes for -new draft pages, part 3 Full audit of all 24 -new draft pages (excluding index-new) surfaced two systemic issues plus a long tail of schema/accessibility/content gaps. Critical: - Gate the homepage A/B redirect (index.astro) so search/AI crawlers never get randomly sent to noindex'd /home-new, which made Google's indexing signal for "/" non-deterministic across crawls. - Consolidate duplicate NonprofitOrganization JSON-LD nodes sharing one @id (contact-new, donate-new, donate-2-new, media-new) into a single merged schema via a new organizationSchemaExtra prop on HomeLayout, instead of emitting a second colliding node per page. High: - Add Person schema images for all 12 team-new members. - Server-render one donate-new donation variant by default (geo-based, non-randomized) so the core donate CTA is present without JS; the client-side A/B test now hides-all-then-shows-winner. - Add width/height to prevent CLS on about-new, incubator-new, e4p-new founder avatars, and membership-new hero images. - Fix heading hierarchy skips (h1->h3) on ideas-new, projects-new, and tools-new by adding/promoting section h2s. - media-new: switch misapplied NewsArticle schema to mentions/CreativeWork since the articles are hosted on third-party domains. Medium/Low: - Add @id/url/publisher entity links on legal-new, terms-new, privacy-policy-new, get-involved-new WebPage schemas. - Fix ItemList schema on projects-new/tools-new: numberOfItems + proper nested item objects instead of flat non-standard ListItem properties. - aria-hidden decorative SVGs on contact-new and get-involved-new. - Add reciprocal terms-new -> legal-new link. - Lengthen thin titles/descriptions on donate-new, get-involved-new, mentorship-new, membership-new, media-new, terms-new. - Page-specific OG images for team-new and media-new. - Fix ideas-new ItemList descriptions truncating mid-word. --- src/layouts/HomeLayout.astro | 7 +++++ src/pages/about-new.astro | 4 +++ src/pages/contact-new.astro | 26 ++++++++--------- src/pages/donate-2-new.astro | 25 ++++++----------- src/pages/donate-new.astro | 45 +++++++++++++++++------------- src/pages/e4p-new.astro | 2 ++ src/pages/get-involved-new.astro | 17 ++++++++--- src/pages/ideas-new.astro | 12 +++++++- src/pages/incubator-new.astro | 2 ++ src/pages/index.astro | 14 +++++++++- src/pages/legal-new.astro | 6 ++++ src/pages/media-new.astro | 37 +++++++++++------------- src/pages/membership-new.astro | 6 ++-- src/pages/mentorship-new.astro | 4 +-- src/pages/privacy-policy-new.astro | 8 +++++- src/pages/projects-new.astro | 11 ++++++-- src/pages/team-new.astro | 2 ++ src/pages/terms-new.astro | 14 +++++++++- src/pages/tools-new.astro | 17 +++++++---- 19 files changed, 168 insertions(+), 91 deletions(-) diff --git a/src/layouts/HomeLayout.astro b/src/layouts/HomeLayout.astro index bfff53c..fd0c69f 100644 --- a/src/layouts/HomeLayout.astro +++ b/src/layouts/HomeLayout.astro @@ -13,6 +13,11 @@ interface Props { image?: string; noindex?: boolean; canonicalUrl?: string; + // Extra JSON-LD properties to merge into the sitewide NonprofitOrganization + // node (e.g. a page-specific contactPoint or potentialAction). Pages must + // not emit their own NonprofitOrganization script sharing the same @id — + // separate