Skip to content

docs: SEO enhancements#175

Merged
HennerM merged 1 commit into
mainfrom
claude/seo-sphinx-docs-XN8IH
Apr 22, 2026
Merged

docs: SEO enhancements#175
HennerM merged 1 commit into
mainfrom
claude/seo-sphinx-docs-XN8IH

Conversation

@HennerM
Copy link
Copy Markdown
Collaborator

@HennerM HennerM commented Apr 22, 2026

Summary

This PR adds comprehensive SEO (Search Engine Optimization) enhancements to the Noether Framework documentation site, including sitemap generation, Open Graph metadata, Twitter cards, and robots.txt configuration.

Key Changes

  • Sphinx Extensions: Added sphinx-sitemap and sphinxext-opengraph extensions to generate sitemap.xml and rich metadata for social media link previews
  • HTML Metadata: Configured html_title, html_short_title, and language settings for improved search engine crawling and accessibility
  • Canonical URLs: Set html_baseurl (configurable via DOCS_BASEURL environment variable) to prevent duplicate content penalties and enable proper sitemap generation
  • Open Graph Tags: Configured OGP metadata including site name, image, description length, and custom Twitter card tags for rich previews on Google, LinkedIn, X, Slack, etc.
  • robots.txt: Added site root robots.txt file to declare sitemap location and allow all crawlers
  • Page-Level SEO: Added meta description and keywords to the documentation index page via Sphinx .. meta:: directive
  • Dependencies: Added sphinx-sitemap>=2.6.0 and sphinxext-opengraph>=0.9.1 to the docs dependencies in pyproject.toml

Implementation Details

  • The html_baseurl is configurable via the DOCS_BASEURL environment variable with a sensible default, allowing flexibility across deployment environments
  • Per-page metadata (description, keywords) is placed in individual page directives rather than global config to ensure crawlers see page-specific SERP snippets
  • Open Graph social card generation is disabled by default (requires matplotlib) but can be enabled if needed
  • The sitemap uses a simple URL scheme without language or version suffixes for cleaner URLs

https://claude.ai/code/session_012jSNcmj4bA83zeEHNFB5dL

Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 22, 2026

Coverage

Tests Skipped Failures Errors Time
1269 24 💤 0 ❌ 0 🔥 30.489s ⏱️

@HennerM HennerM force-pushed the claude/seo-sphinx-docs-XN8IH branch from b1c9abb to 57cffe3 Compare April 22, 2026 09:53
@HennerM HennerM changed the title Add SEO enhancements to documentation site docs: SEO enhancements Apr 22, 2026
Copy link
Copy Markdown
Member

@Ndles Ndles left a comment

Choose a reason for hiding this comment

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

that's neat!

Adds canonical URLs, sitemap.xml, robots.txt, Open Graph / Twitter
card metadata, and per-page description/keywords so crawlers and link
unfurlers get rich, correct metadata for noether-docs.emmi.ai.

- Wire up sphinx-sitemap + sphinxext-opengraph in the docs dep group
- Set html_baseurl (overridable via DOCS_BASEURL env var), html_title,
  html_short_title, language="en"
- Emit per-page <link rel="canonical"> and Open Graph tags (title,
  type, url, site_name, description, image, image:alt)
- Add global twitter:card, twitter:site, robots meta via custom tags
- Serve robots.txt with a Sitemap: directive from the site root
- Add a .. meta:: description/keywords block on the landing page so
  the SERP snippet is precise instead of auto-extracted
@HennerM HennerM force-pushed the claude/seo-sphinx-docs-XN8IH branch from 57cffe3 to 5265ead Compare April 22, 2026 12:57
@HennerM HennerM merged commit 9102e04 into main Apr 22, 2026
9 checks passed
@HennerM HennerM deleted the claude/seo-sphinx-docs-XN8IH branch April 22, 2026 13:09
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants