feat(seo): comprehensive SEO, social sharing, and LLM discoverability#1060
Merged
bruAristimunha merged 16 commits intodevelopfrom Apr 16, 2026
Merged
feat(seo): comprehensive SEO, social sharing, and LLM discoverability#1060bruAristimunha merged 16 commits intodevelopfrom
bruAristimunha merged 16 commits intodevelopfrom
Conversation
… optimization Add OpenGraph + Twitter Cards via sphinxext-opengraph with per-page auto-generated social preview cards. Add JSON-LD structured data (SoftwareApplication, DataCatalog, Dataset, BreadcrumbList) to layout.html. Create robots.txt with AI crawler rules (GPTBot, ClaudeBot, PerplexityBot, Google-Extended). Add meta descriptions to 7 key pages. Create llms.txt and llms-full.txt for AI agent discoverability. Expand PyPI metadata with 18 keywords, 16 classifiers, and 8 project URLs. Generate OG social card image (1200x630). Configure sitemap_excludes and html_title for cleaner search results. Add sphinxext-opengraph to docs dependencies.
Replace generic card with brand-aligned design using the actual MOABB palette (navy, teal, sky blue), signature three-mountain curves as visual motif, brain logo, paradigm tag chips, stat highlights, and a clean footer with URL, pip install command, and DOI.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 11103d448b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Replace card with editorial-scientific design featuring: - Paradigm distribution horizontal bar chart (P300:69, MI:62, SSVEP:16, c-VEP:8, RS:3) with colorblind-safe palette - Updated stats: 158 datasets, 3.5K subjects, 9.1K sessions - Evaluation strategies section - Decorative EEG waveform traces - MOABB brand logo and palette - Clean footer with URL, pip, Python version, license, DOI
Replace card with data-driven design featuring: - Packed-circle visualization of all 158 datasets colored by paradigm (blue=MI, coral=P300, green=SSVEP, mauve=c-VEP), circle area proportional to subject count — the signature MOABB visual - Updated stats: 158 datasets, 3,513 subjects - Light background for contrast on social feeds - Clean left panel: logo, title, subtitle, stats, color legend - Readable at thumbnail size (600x315): title + stats + data clusters all clearly visible
Replace PIL-generated card with HTML-rendered design using headless Chrome at 2x retina resolution for crisp typography. Split-panel layout with navy gradient left panel (clip-path diagonal, mountain motif overlay), teal accent stripe, and light right panel featuring: - Headline: "158 open EEG datasets for reproducible BCI benchmarking" - Syntax-highlighted code snippet showing the real MOABB API - Stats row: 158 datasets, 3,513 subjects, 9.1k sessions - Paradigm pills (Motor Imagery, P300/ERP, SSVEP, c-VEP) with per-paradigm colors, plus tool pills (MNE-Python, scikit-learn) - DOI and URL footer Typography: JetBrains Mono (code/stats) + Source Serif 4 (headlines) matching the documentation font system. Generator HTML kept at docs/source/_static/social_card_gen.html for re-rendering when stats change.
Remove Disallow for /docs/_static/ in robots.txt. Blocking it prevented Googlebot and social preview crawlers from fetching the OG card image and stylesheets, suppressing rich link previews — directly undermining the social sharing features added in this PR. Addresses review comment on robots.txt:17.
Add google07a8f2e31a591297.html to html_extra_path so it deploys at the docs root for domain ownership verification in Google Search Console.
Update outdated "67+ datasets, 1735+ subjects" to the current "158 datasets, 3500+ subjects" in homepage hero, conf.py OG/carousel, index.rst meta description, dataset_summary.rst meta description, llms.txt, and llms-full.txt.
…State - Use full MOABB logo (mountains + brain + wordmark) instead of icon-only - Add Speech Imagery and Resting State paradigm pills - Verified example code snippet imports work correctly
- Use moabb_notext.svg (no background rect) + HTML wordmark instead of moabb_logo.svg which had a white rect that broke the invert filter - Fix footer bar not rendering: switch from position:absolute to position:fixed for reliable anchoring in headless Chrome - Footer now shows: moabb.neurotechx.com, pip install moabb, DOI - BSD-3-Clause label visible on left panel above footer
Remove CSS filter (brightness(0) invert(1)) that was flattening the logo into a featureless white silhouette. The original SVG colors (light blue, teal, dark slate mountains + white brain circuits) render correctly on the dark navy panel without any filter. Also increase logo size from 120px to 160px for better visibility.
- Logo icon: 160px → 220px - Wordmark: 58px → 72px to match logo proportions - Code snippet simplified to 3-line working example: paradigm, evaluation, results = process(pipelines)
- Logo enlarged to 340px (fills left panel), wordmark 86px - Cropped flat colored base from mountain SVG (the rectangular block at the bottom) — now shows only the mountain peaks + brain icon - Logo embedded as data URI PNG to avoid SVG rendering issues
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Comprehensive SEO optimization for the MOABB documentation site and PyPI package listing:
sphinxext-opengraphfor automatic social preview metadata on all 580+ pages, with per-page auto-generated social cards and a custom 1200x630 OG fallback imageSoftwareApplication(homepage),DataCatalog(dataset summary),Dataset(all 67+ dataset pages), andBreadcrumbList(all non-homepage pages) for rich search snippets.. meta::directives with SEO descriptions and keywords to 7 key landing pages (homepage, dataset catalog, API, install, cite, benchmark results, changelog)genindex,py-modindex,search,sg_execution_times) viasitemap_excludeshtml_titlefor shorter, cleaner page titles in search resultsFiles changed
docs/source/conf.pydocs/source/_templates/layout.htmldocs/source/robots.txtdocs/source/llms.txtdocs/source/llms-full.txtdocs/source/_static/moabb_og_card.pngdocs/source/index.rstdocs/source/dataset_summary.rstdocs/source/api.rstdocs/source/cite.rstdocs/source/paper_results.rstdocs/source/install/install.rstdocs/source/whats_new.rstpyproject.tomlPost-merge actions (manual)
After deploying, maintainers should:
NeuroTechX/moabb.github.iorepo (Settings > Pages > Enforce HTTPS) — currentlyhttp://does not redirect tohttps://sitemap.xmland request indexing for key pagesTest plan
docsCI builds successfully with newsphinxext.opengraphextensionog:title,og:description,og:imagemeta tags (inspect page source)<script type="application/ld+json">blocks on homepage, dataset_summary, and dataset pagesrobots.txtis accessible at build output root (not under_static/)llms.txtandllms-full.txtare accessible at build output rootgenindex.html,py-modindex.html,search.html<title>tags show "Page — MOABB Documentation" instead of "Page — moabb 1.5.0dev0-dev documentation"