Commit fed921a
authored
feat(seo): comprehensive SEO, social sharing, and LLM discoverability (#1060)
* feat(seo): comprehensive SEO, social sharing, and LLM discoverability 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.
* fix(seo): redesign OG social card with proper MOABB brand identity
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.
* fix(seo): redesign OG card with data visualization and updated stats
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
* fix(seo): redesign OG card with MOABB bubble plot and updated stats
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
* fix(seo): redesign OG card with MOABB bubble plot and updated stats
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.
* fix(seo): allow crawlers to access _static/ for OG image and CSS
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.
* feat(seo): add Google Search Console verification file
Add google07a8f2e31a591297.html to html_extra_path so it deploys at
the docs root for domain ownership verification in Google Search
Console.
* fix(docs): update dataset and subject counts across all pages
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.
* fix(seo): update OG card with full logo, Speech Imagery, and Resting 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
* fix(seo): fix OG card logo rendering and missing footer bar
- 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
* fix(seo): fix logo rendering - show full brain+mountain detail
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.
* fix(seo): bigger logo, matching wordmark, simpler code snippet
- Logo icon: 160px → 220px
- Wordmark: 58px → 72px to match logo proportions
- Code snippet simplified to 3-line working example:
paradigm, evaluation, results = process(pipelines)
* fix(seo): enlarge logo, remove flat base rectangle
- 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
* fix(seo): remove hidden BSD-3 license label from OG card
* fix(seo): add CITE IF YOU USE label next to DOI in footer
* fix(ci): exclude social_card_gen.html from codespell (base64 false positive)1 parent 0d88362 commit fed921a
18 files changed
Lines changed: 1181 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | | - | |
| 53 | + | |
54 | 54 | | |
55 | 55 | | |
56 | 56 | | |
| |||
Loading
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
| 20 | + | |
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
5 | 103 | | |
6 | 104 | | |
7 | 105 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
1 | 5 | | |
2 | 6 | | |
3 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
1 | 5 | | |
2 | 6 | | |
3 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
53 | 57 | | |
54 | 58 | | |
55 | 59 | | |
| |||
85 | 89 | | |
86 | 90 | | |
87 | 91 | | |
| 92 | + | |
88 | 93 | | |
89 | 94 | | |
90 | 95 | | |
| |||
315 | 320 | | |
316 | 321 | | |
317 | 322 | | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
318 | 356 | | |
319 | 357 | | |
320 | 358 | | |
| |||
385 | 423 | | |
386 | 424 | | |
387 | 425 | | |
388 | | - | |
| 426 | + | |
389 | 427 | | |
390 | 428 | | |
391 | 429 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
1 | 5 | | |
2 | 6 | | |
3 | 7 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments