From aad61fa4a3d48319be288ceea445276ec3dadd24 Mon Sep 17 00:00:00 2001 From: Neha Gupta Date: Fri, 23 Oct 2026 21:26:31 +0530 Subject: [PATCH 1/3] SEO/GEO audit fixes: FAQ schema, canonicals, sitemap, TechArticle - FAQPage JSON-LD via dangerouslySetInnerHTML so it is not entity-escaped - Glossary regression-testing / black-box-testing: self-canonical - SoftwareApplication @id #software, DeveloperApplication; Wikidata sameAs - Exclude /docs/search/ from sitemap - Neutralize /docs/robots.txt (rules belong in root robots.txt) - Add H2 sections to What is Keploy?; strip emoji from doc H1s - Self-host OS logos on platform requirements table Co-Authored-By: Claude Opus 5.5 Signed-off-by: Neha Gupta --- docusaurus.config.js | 2 + src/remark/remarkFaqSchema.js | 66 ++++++++----- src/schema/siteEntities.js | 5 +- static/robots.txt | 98 +------------------ .../concepts/platform-requirements.md | 6 +- .../reference/glossary/black-box-testing.md | 5 - .../reference/glossary/regression-testing.md | 5 - .../version-4.0.0/concepts/what-is-keploy.md | 6 ++ .../keploy-explained/ai-models.md | 2 +- .../keploy-explained/api-testing-faq.md | 2 +- .../keploy-explained/debugger-guide.md | 2 +- .../keploy-explained/integrations-pr-agent.md | 2 +- .../keploy-explained/keploy-privacy.md | 2 +- .../keploy-explained/keploy-security.md | 2 +- .../keploy-explained/supported-languages.md | 2 +- .../keploy-explained/testing-guide.md | 2 +- .../version-4.0.0/quickstart/code-coverage.md | 2 +- .../quickstart/go-fasthttp-postgres.md | 2 +- .../version-4.0.0/quickstart/go-gin-redis.md | 4 +- .../version-4.0.0/quickstart/go-mux-mysql.md | 4 +- .../version-4.0.0/quickstart/go-mux-sql.md | 4 +- .../quickstart/samples-go-gin-mongo.md | 4 +- .../running-keploy/about-api-testing.md | 2 +- .../running-keploy/about-unit-testing.md | 2 +- .../running-keploy/api-test-architecture.md | 2 +- .../running-keploy/test-generate.md | 2 +- .../running-keploy/test-run-reports.md | 2 +- .../running-keploy/unit-test-architecture.md | 2 +- 28 files changed, 84 insertions(+), 157 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index fa11adc6b9..c0405c66ee 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -557,6 +557,8 @@ s.parentNode.insertBefore(b, s);})(window.lintrk);`, "/docs/tags/**", "/docs/1.0.0/**", "/docs/2.0.0/**", + "/docs/search", + "/docs/search/**", "/tags/**", "/1.0.0/**", "/2.0.0/**", diff --git a/src/remark/remarkFaqSchema.js b/src/remark/remarkFaqSchema.js index 0d20461973..a251fe03d8 100644 --- a/src/remark/remarkFaqSchema.js +++ b/src/remark/remarkFaqSchema.js @@ -98,31 +98,14 @@ function remarkFaqSchema() { })), }; - // The script child is a JS string-literal expression `{"...json..."}`, so - // the JSX evaluates back to the exact JSON string at render time (matches - // the DocItem JSON-LD pattern). MDX needs an estree AST on expression - // nodes, so build a minimal Program(Literal) rather than only a raw value. - const jsonString = JSON.stringify(schema); + // React entity-escapes text children of