feat(seo): modularize metadata pipeline and resolve Bing SEO scan issues#839
feat(seo): modularize metadata pipeline and resolve Bing SEO scan issues#839alienx5499 merged 3 commits intomainfrom
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
QA suite report
Result: passed. QA vs
|
| Base | This PR | Δ passed | |
|---|---|---|---|
| Passed | 659 | 659 | 0 |
| Failed | 0 | 0 | — |
| Total | 659 | 659 | — |
Fixed (failed on base, passing on this PR)
None
New failures (failed on this PR; were not failing on base)
None
Still failing (failed on base and still failing on this PR)
None
Lighthouse (CI)Lighthouse vs
|
| URL | Perf | Δ | A11y | Δ | Best | Δ | SEO | Δ |
|---|---|---|---|---|---|---|---|---|
| http://localhost:3000/ | 60 | +5 | 96 | — | 93 | — | 100 | — |
| http://localhost:3000/algorithms/config/bubble | 73 | — | 96 | — | 93 | — | 100 | — |
| http://localhost:3000/es | 73 | — | 96 | — | 93 | — | 100 | — |
| http://localhost:3000/contributions/overview | 50 | — | 96 | — | 96 | — | 100 | — |
Lighthouse (desktop)
Δ = change vs last successful Continuous integration on main (same URLs).
| URL | Perf | Δ | A11y | Δ | Best | Δ | SEO | Δ |
|---|---|---|---|---|---|---|---|---|
| http://localhost:3000/ | 99 | +1 | 96 | — | 96 | — | 100 | — |
| http://localhost:3000/algorithms/config/bubble | 98 | — | 96 | — | 96 | — | 100 | — |
| http://localhost:3000/es | 99 | +1 | 96 | — | 96 | — | 100 | — |
| http://localhost:3000/contributions/overview | 97 | — | 96 | — | 96 | — | 100 | — |
There was a problem hiding this comment.
Pull request overview
This PR restructures the SEO/metadata stack by extracting the previously monolithic SEOContent implementation into modular Helmet + hidden-content components, while also updating structured data, robots directives, and sitemap generation to address Bing duplicate/short metadata recommendations.
Changes:
- Modularized Helmet meta tags + JSON-LD schema scripts and hidden SEO content under
src/components/seoContent/. - Centralized SEO/version/author constants in
src/constants/version.jsand wired them into schema/meta generation. - Replaced static sitemap serving with dynamic sitemap generation and removed the app-route
robots.txthandler in favor ofpublic/robots.txt.
Reviewed changes
Copilot reviewed 31 out of 32 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| SortVision/src/constants/version.js | Adds centralized app/version/author/site constants for reuse across SEO components. |
| SortVision/src/components/seoContent/shared/seoFaqData.js | Centralizes FAQ content for both HTML hidden blocks and JSON-LD. |
| SortVision/src/components/seoContent/hidden/SeoGlobalUseCasesContent.jsx | Adds hidden global SEO “use cases” content blocks. |
| SortVision/src/components/seoContent/hidden/SeoGlobalIntroContent.jsx | Adds hidden global intro + GEO prompt/summary blocks. |
| SortVision/src/components/seoContent/hidden/SeoGlobalHiddenContent.jsx | Composes the global hidden SEO sections. |
| SortVision/src/components/seoContent/hidden/SeoGlobalFaqContent.jsx | Renders hidden FAQ HTML for crawlers/answer engines. |
| SortVision/src/components/seoContent/hidden/SeoAlgorithmHiddenContent.jsx | Adds algorithm-specific hidden content with details + filtered FAQ. |
| SortVision/src/components/seoContent/hidden/SeoAlgorithmDetailsMap.js | Provides the per-algorithm SEO detail map used by hidden content. |
| SortVision/src/components/seoContent/helmet/SeoWebSiteSchemaScript.jsx | Adds WebSite JSON-LD schema. |
| SortVision/src/components/seoContent/helmet/SeoWebPageTransparencySchemaScript.jsx | Adds WebPage transparency/attribution JSON-LD schema. |
| SortVision/src/components/seoContent/helmet/SeoVideoObjectSchemaScript.jsx | Adds placeholder for future VideoObject JSON-LD schema. |
| SortVision/src/components/seoContent/helmet/SeoStructuredDataScripts.jsx | Orchestrates all JSON-LD scripts. |
| SortVision/src/components/seoContent/helmet/SeoSoftwareApplicationSchemaScript.jsx | Adds SoftwareApplication JSON-LD schema using centralized constants. |
| SortVision/src/components/seoContent/helmet/SeoPersonSchemaScript.jsx | Adds Person JSON-LD schema. |
| SortVision/src/components/seoContent/helmet/SeoOrganizationSchemaScript.jsx | Adds Organization JSON-LD schema. |
| SortVision/src/components/seoContent/helmet/SeoMetaTags.jsx | Adds Helmet meta tag rendering (canonical/social/bots/hreflang/etc.). |
| SortVision/src/components/seoContent/helmet/SeoFaqSchemaScript.jsx | Adds FAQPage JSON-LD generation from centralized FAQ data. |
| SortVision/src/components/seoContent/helmet/SeoEducationalResourceSchemaScript.jsx | Adds Course JSON-LD schema. |
| SortVision/src/components/seoContent/helmet/SeoBreadcrumbSchemaScript.jsx | Adds BreadcrumbList JSON-LD for algorithm pages. |
| SortVision/src/components/seoContent/helmet/SeoAlgorithmSpecificFaqSchemaScript.jsx | Adds algorithm-specific FAQPage JSON-LD filtering. |
| SortVision/src/components/seoContent/helmet/SeoAlgorithmHowToSchemaScript.jsx | Adds optional algorithm HowTo JSON-LD injection. |
| SortVision/src/components/seoContent/helmet/SeoAlgorithmCatalogSchemaScript.jsx | Adds algorithm catalog JSON-LD injection. |
| SortVision/src/components/seoContent/SeoHiddenContent.jsx | New composition layer for hidden SEO content blocks. |
| SortVision/src/components/seoContent/SeoHelmetContent.jsx | New composition layer for Helmet meta + structured data. |
| SortVision/src/components/SEOContent.jsx | Refactors old monolith into SeoHelmetContent + SeoHiddenContent. |
| SortVision/src/app/robots.txt/route.js | Removes app-route robots handler (expects public/robots.txt). |
| SortVision/src/app/layout.jsx | Updates robots/googlebot/bingbot directives to remove noarchive. |
| SortVision/src/app/[lang]/sitemap.xml/route.js | Replaces static sitemap file serving with dynamic sitemap generation. |
| SortVision/src/app/[[...slug]]/page.jsx | Adds description normalization/uniqueness logic for dynamic metadata. |
| SortVision/public/sw.js | Adds APP_VERSION constant + logs (but cache naming unchanged). |
| SortVision/package.json | Adds critters dependency. |
| SortVision/pnpm-lock.yaml | Locks critters (and its transitive deps). |
Files not reviewed (1)
- SortVision/pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3b08557 to
b6297cb
Compare
b6297cb to
2dc844f
Compare
There was a problem hiding this comment.
Pull request overview
This PR refactors SortVision’s SEO implementation into modular components, expands sitemap/metadata generation for multilingual + legacy routes, and adjusts robots/meta directives to address Bing duplicate/short metadata recommendations.
Changes:
- Split monolithic SEO rendering into
src/components/seoContent/*(Helmet meta + JSON-LD + hidden semantic blocks) and wire it intosrc/components/SEOContent.jsx. - Centralize site/version/author constants and apply them across schema/meta generation (plus service worker cache versioning).
- Expand dynamic sitemap generation and enhance Next.js
generateMetadatato produce more unique titles/descriptions and richer alternates.
Reviewed changes
Copilot reviewed 31 out of 31 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| _typos.toml | Adds spelling dictionary entries for typo checking. |
| SortVision/src/constants/version.js | Introduces centralized app/site/author/version constants used by SEO modules. |
| SortVision/src/components/seoContent/shared/seoFaqData.js | Centralizes FAQ content used in hidden HTML and JSON-LD. |
| SortVision/src/components/seoContent/hidden/* | Adds hidden SEO content blocks (global + algorithm-specific). |
| SortVision/src/components/seoContent/helmet/* | Adds modular meta tags + structured data JSON-LD scripts. |
| SortVision/src/components/seoContent/SeoHiddenContent.jsx | Composes global + algorithm hidden content sections. |
| SortVision/src/components/seoContent/SeoHelmetContent.jsx | Composes Helmet meta tags + JSON-LD scripts. |
| SortVision/src/components/SEOContent.jsx | Replaces inline SEO implementation with modular Helmet/hidden components. |
| SortVision/src/app/robots.txt/route.js | Removes dynamic robots route to avoid routing conflicts (static public file expected). |
| SortVision/src/app/layout.jsx | Updates robots/bot directives to remove noarchive. |
| SortVision/src/app/[lang]/sitemap.xml/route.js | Generates a richer multilingual sitemap including legacy + canonical route families. |
| SortVision/src/app/[[...slug]]/page.jsx | Enhances metadata generation (unique tab/section titles, padded descriptions, locale/alternate improvements). |
| SortVision/public/sw.js | Updates SW cache naming/version reporting using an app version constant. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This Pull Request improves SEO infrastructure and resolves Bing Webmaster recommendations around duplicate/short metadata.
It changes the following:
src/components/seoContent(helmet scripts, hidden content blocks, shared FAQ data, constants).src/constants/version.jsand wire them across the SEO stack.src/app/[lang]/sitemap.xml/route.jsto include canonical + legacy route families and multilingual variants.robots.txtrouting conflict by relying on staticpublic/robots.txtand removing conflicting app route.noarchivefrom robots/bot directives (Bing/Copilot grounding compatibility),Testing
pnpm run build