Skip to content

Improve docs SEO: sitemap cleanup, noindex for unreleased pages, and add meta tags#761

Open
oshankkkk wants to merge 3 commits into
wso2:mainfrom
oshankkkk:feat/docs-seo-improve
Open

Improve docs SEO: sitemap cleanup, noindex for unreleased pages, and add meta tags#761
oshankkkk wants to merge 3 commits into
wso2:mainfrom
oshankkkk:feat/docs-seo-improve

Conversation

@oshankkkk
Copy link
Copy Markdown

@oshankkkk oshankkkk commented Apr 27, 2026

Purpose

This PR improves the SEO configuration of the documentation site by ensuring only canonical, production-ready content is indexed.

Changes

  • Configure sitemap to include only the latest docs version
  • Exclude non-canonical and preview routes from sitemap
  • Add noindex to unreleased (current) docs version
  • Add meta title and description tags to docs pages

Why

  • Prevents search engines from indexing outdated or duplicate content
  • Ensures only the latest, canonical docs appear in search results
  • Improves search result quality with proper meta tags

Summary by CodeRabbit

  • Documentation

    • Standardized documentation front matter with improved titles and descriptions across multiple guides, including getting started, tutorials, concepts, and contribution pages for better content organization and discoverability.
  • Chores

    • Updated site configuration with SEO enhancements including sitemap generation settings, refined documentation version handling, and improved routing.

@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Apr 27, 2026

CLA assistant check
All committers have signed the CLA.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 27, 2026

📝 Walkthrough

Walkthrough

This pull request adds YAML frontmatter with title and description metadata to multiple documentation pages across components, concepts, contributing, getting-started, overview, and tutorials directories. Additionally, it updates the Docusaurus configuration to add sitemap settings, adjust noIndex behavior for the current/Next version, and refine ignored URL patterns.

Changes

Cohort / File(s) Summary
Component Documentation
documentation/docs/components/amp-instrumentation.mdx
Added YAML frontmatter with title and description; normalized file ending with trailing newline.
Concept Documentation
documentation/docs/concepts/evaluation.mdx, documentation/docs/concepts/observability.mdx
Added YAML frontmatter with title and description metadata to both concept pages; adjusted file endings.
Contributing Documentation
documentation/docs/contributing/contributing.mdx
Added YAML frontmatter with title and description; normalized file ending with trailing newline.
Getting Started Documentation
documentation/docs/getting-started/on-k3d.mdx, documentation/docs/getting-started/on-your-environment.mdx, documentation/docs/getting-started/quick-start.mdx
Added YAML frontmatter with title and description to all three getting-started guides.
Overview Documentation
documentation/docs/overview/what-is-amp.mdx
Added YAML frontmatter with title and description for the Agent Manager overview page.
Tutorial Documentation
documentation/docs/tutorials/configure-agent-llm-configuration.mdx, documentation/docs/tutorials/custom-evaluators.mdx, documentation/docs/tutorials/evaluation-monitors.mdx, documentation/docs/tutorials/observe-first-agent.mdx, documentation/docs/tutorials/register-ai-gateway.mdx, documentation/docs/tutorials/register-llm-service-provider.mdx
Added YAML frontmatter with title and description to all tutorial pages; adjusted file endings where needed.
Docusaurus Configuration
documentation/docusaurus.config.ts
Added noIndex: true to current/Next version docs; introduced sitemap configuration with lastmod, changefreq, and priority settings; expanded ignorePatterns to exclude per-version doc routes and additional ignored paths; reformatted editUrl and theme CSS configuration blocks.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 A rabbit hops through pages bright,
With titles penned and descriptions tight,
Metadata blooms where once was bare,
Config renewed with utmost care!
Documentation springs to life—hooray! 🌱✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description lacks required sections like Goals, Approach, User stories, Release notes, Documentation, Training, Certification, Marketing, Automation tests, Security checks, and other template sections. Expand the description to include all relevant sections from the template, particularly Goals, Approach, Release notes, Documentation impact, and Security checks.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title directly summarizes the main changes: improving SEO through sitemap cleanup, adding noindex for unreleased pages, and adding meta tags to documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
documentation/docs/tutorials/configure-agent-llm-configuration.mdx (1)

58-83: ⚠️ Potential issue | 🟡 Minor

Fix the environment variable table to match the actual generated variable name.

The table documents <NAME>_BASE_URL but the platform generates <NAME>_URL (confirmed in agent_configuration_service.go). Update line 63 from:

| `<NAME>_BASE_URL` | Base URL of the LLM Provider API endpoint |

to:

| `<NAME>_URL` | Base URL of the LLM Provider API endpoint |

The code snippet is correct and reads the properly named variable OPENAI_GPT5_URL. The OpenAI SDK initialization pattern with empty api_key and custom headers is also valid.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@documentation/docs/tutorials/configure-agent-llm-configuration.mdx` around
lines 58 - 83, The table entry for the environment variable is incorrect:
replace the documented `<NAME>_BASE_URL` with `<NAME>_URL` so the docs match the
actual generated variable name (the code in agent_configuration_service.go
produces `<NAME>_URL`), and ensure any surrounding descriptive text also
references `<NAME>_URL` to match the Python example that uses `OPENAI_GPT5_URL`.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@documentation/docs/tutorials/custom-evaluators.mdx`:
- Line 4: Summary: Normalize the capitalization of "LLM-Judge" in the
description. Replace the lowercase "LLM-judge" token in the description string
("description: Create custom code-based and LLM-judge evaluators in the AMP
Console for domain-specific quality checks.") with the standardized casing
"LLM-Judge" to match the rest of the page and ensure consistent terminology
across the document.

In `@documentation/docusaurus.config.ts`:
- Around line 98-106: Remove the unintended exclusion from the sitemap by
deleting the '/agent-manager/docs/getting-started/quick-start/' entry inside the
ignorePatterns array (the array built from versions.filter((version) => version
!== latestVersion).map(...) and the hardcoded strings); update the
ignorePatterns so it no longer contains that quick-start path, ensuring the
quick-start remains discoverable and consistent with the redirect targeting the
latest version.

---

Outside diff comments:
In `@documentation/docs/tutorials/configure-agent-llm-configuration.mdx`:
- Around line 58-83: The table entry for the environment variable is incorrect:
replace the documented `<NAME>_BASE_URL` with `<NAME>_URL` so the docs match the
actual generated variable name (the code in agent_configuration_service.go
produces `<NAME>_URL`), and ensure any surrounding descriptive text also
references `<NAME>_URL` to match the Python example that uses `OPENAI_GPT5_URL`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 5a830fa9-f6c9-4d8f-baa7-92c710315fcb

📥 Commits

Reviewing files that changed from the base of the PR and between abc5b15 and 248fee8.

📒 Files selected for processing (15)
  • documentation/docs/components/amp-instrumentation.mdx
  • documentation/docs/concepts/evaluation.mdx
  • documentation/docs/concepts/observability.mdx
  • documentation/docs/contributing/contributing.mdx
  • documentation/docs/getting-started/on-k3d.mdx
  • documentation/docs/getting-started/on-your-environment.mdx
  • documentation/docs/getting-started/quick-start.mdx
  • documentation/docs/overview/what-is-amp.mdx
  • documentation/docs/tutorials/configure-agent-llm-configuration.mdx
  • documentation/docs/tutorials/custom-evaluators.mdx
  • documentation/docs/tutorials/evaluation-monitors.mdx
  • documentation/docs/tutorials/observe-first-agent.mdx
  • documentation/docs/tutorials/register-ai-gateway.mdx
  • documentation/docs/tutorials/register-llm-service-provider.mdx
  • documentation/docusaurus.config.ts

---
sidebar_position: 3
title: Custom Evaluators in WSO2 Agent Manager
description: Create custom code-based and LLM-judge evaluators in the AMP Console for domain-specific quality checks.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Standardize “LLM-Judge” capitalization in the description.

Use the same casing as the rest of the page to keep terminology consistent.

✏️ Suggested wording tweak
-description: Create custom code-based and LLM-judge evaluators in the AMP Console for domain-specific quality checks.
+description: Create custom code-based and LLM-Judge evaluators in the AMP Console for domain-specific quality checks.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: Create custom code-based and LLM-judge evaluators in the AMP Console for domain-specific quality checks.
description: Create custom code-based and LLM-Judge evaluators in the AMP Console for domain-specific quality checks.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@documentation/docs/tutorials/custom-evaluators.mdx` at line 4, Summary:
Normalize the capitalization of "LLM-Judge" in the description. Replace the
lowercase "LLM-judge" token in the description string ("description: Create
custom code-based and LLM-judge evaluators in the AMP Console for
domain-specific quality checks.") with the standardized casing "LLM-Judge" to
match the rest of the page and ensure consistent terminology across the
document.

Comment on lines +98 to +106
ignorePatterns: [
...versions
.filter((version) => version !== latestVersion)
.map((version) => `/agent-manager/docs/${version}/**`),
'/agent-manager/docs/next/**',
'/agent-manager/docs/',
'/agent-manager/search/',
'/agent-manager/docs/getting-started/quick-start/',
],
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Apr 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Confirm whether quick-start is intended to remain indexable.
rg -n 'quick-start' documentation/docs documentation/docusaurus.config.ts documentation/sidebars.ts

Repository: wso2/agent-manager

Length of output: 2075


Remove /agent-manager/docs/getting-started/quick-start/ from the sitemap ignore patterns.

The quick-start guide is a primary onboarding resource (referenced in sidebars navigation, tutorials, and overview pages) and excluding it from the sitemap will harm search engine discoverability. This appears to be an unintended exclusion—the actual served path structure differs from the ignore pattern, and a redirect rule on line 178 explicitly directs to the quick-start for the latest version.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@documentation/docusaurus.config.ts` around lines 98 - 106, Remove the
unintended exclusion from the sitemap by deleting the
'/agent-manager/docs/getting-started/quick-start/' entry inside the
ignorePatterns array (the array built from versions.filter((version) => version
!== latestVersion).map(...) and the hardcoded strings); update the
ignorePatterns so it no longer contains that quick-start path, ensuring the
quick-start remains discoverable and consistent with the redirect targeting the
latest version.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/agent-manager/docs/getting-started/quick-start/ is a redirect page, not actual content. The canonical content lives under versioned paths like /agent-manager/docs/{version}/getting-started/quick-start/.

Including the redirect in the sitemap could lead to duplicate/low-value indexing, so it’s excluded on purpose.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@oshankkkk, that makes complete sense — excluding the unversioned redirect path from the sitemap is the right call. Serving the canonical versioned URL (e.g., /agent-manager/docs/{version}/getting-started/quick-start/) avoids duplicate content signals, while the redirect itself adds no indexable value. Thanks for the clarification!


✏️ Learnings added
Learnt from: oshankkkk
Repo: wso2/agent-manager PR: 761
File: documentation/docusaurus.config.ts:98-106
Timestamp: 2026-04-28T10:06:12.055Z
Learning: In the wso2/agent-manager docs site (documentation/docusaurus.config.ts), the path `/agent-manager/docs/getting-started/quick-start/` is a redirect page, not actual content. The canonical content lives under versioned paths like `/agent-manager/docs/{version}/getting-started/quick-start/`. It is intentionally excluded from the sitemap's `ignorePatterns` to prevent duplicate/low-value indexing.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.


🧠 Learnings used
Learnt from: AnoshanJ
Repo: wso2/agent-manager PR: 609
File: documentation/docusaurus.config.ts:118-120
Timestamp: 2026-03-20T09:02:05.237Z
Learning: In Docusaurus projects that use `docusaurus/preset-classic`, ensure Algolia DocSearch is configured via `themeConfig.algolia` and does not require installing a separate Algolia theme plugin. If you want an offline/local search fallback, you may add `docusaurus-lunr-search` alongside Algolia; both integrations can be configured together in the same `docusaurus.config.ts`.

hanzjk
hanzjk previously approved these changes May 8, 2026
@AnoshanJ
Copy link
Copy Markdown
Contributor

@oshankkkk could you resolve the merge conflicts

@AnoshanJ
Copy link
Copy Markdown
Contributor

@oshankkkk We should not modify the titles of the current documentation.
image

Earlier version titles should be retained
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants