Skip to content

Improve SEO and AI/LLM discoverability - #802

Merged
RaananW merged 2 commits into
masterfrom
raananw-seo-and-ai-readiness
Nov 5, 2026
Merged

RaananW merged 2 commits into
masterfrom
raananw-seo-and-ai-readiness

Conversation

@RaananW

@RaananW RaananW commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Summary

Makes www.babylonjs.com easier for search engines and AI/LLM crawlers to discover and understand.

Changes

  • Per-page metadata: a shared seoHead.njk partial (used by both layouts) renders the title, unique meta description, canonical URL, robots, Open Graph and Twitter tags for each page. Previously every page shared the homepage's social metadata, and per-page metaTags produced duplicate og:title tags and tags with empty attributes.
  • Structured data (JSON-LD): Organization, WebSite, and WebPage (or FAQPage for pages with an FAQ block), plus SoftwareSourceCode on the homepage and BreadcrumbList on the other pages.
  • /sitemap.xml, which previously returned 404: generated from the indexable pages plus all 86 compiled demos, with lastmod taken from git history. robots.txt now references it.
  • /llms.txt and /llms-full.txt: generated in the llmstxt.org format. They replace the stale hand-written llms.txt, which still described the old Gulp/Handlebars build. They include guidance to prefer the @babylonjs/* ES module packages over UMD.
  • Content: real titles and descriptions for pages that had placeholders (for example "BabylonJS - tools"). The empty /tools/ and /industries/ pages are now noindex and excluded from the sitemap.
  • Accessibility and SEO:
    • Every generated page now has exactly one <h1> (a visually hidden fallback where the page has none); previously only 2 of 20 did.
    • Every image has an alt attribute; the homepage previously had 33 without one.
    • The humans.txt link is now absolute.
  • Restored assets/logo-babylonjs-social-twitter.png, the social share image that was missing from the source after the Eleventy migration.

Validation

  • npm run build passes.
  • All 20 generated pages: one h1, one canonical, one og:title, a description, valid JSON-LD, and no images without alt.
  • sitemap.xml passes xmllint and contains 104 URLs.

Follow-ups needed outside this repo

  • Azure Front Door: 301 babylonjs.com → www.babylonjs.com Done: ApexToWww rule set on the website route (profile babylonjscdn).
  • Search Console / Bing Webmaster Tools: submit https://www.babylonjs.com/sitemap.xml in both so the new sitemap is picked up.
  • Analytics: the site still uses the retired Universal Analytics tag (UA-41767310-1), which needs a GA4 measurement ID.
  • Optional: add meta descriptions to the compiled demo pages and remove or update the legacy static/features/ page.

- Per-page canonical URLs, meta descriptions, robots, Open Graph and
  Twitter tags via a shared seoHead partial (no more homepage-only social
  metadata or duplicate og:title tags)
- JSON-LD structured data: Organization, WebSite, WebPage/FAQPage,
  SoftwareSourceCode and BreadcrumbList
- Generated /sitemap.xml (pages + compiled demos, git-based lastmod) and
  Sitemap entry in robots.txt
- Generated /llms.txt (llmstxt.org) and /llms-full.txt replace the stale
  hand-written llms.txt
- Unique titles/descriptions for content pages; noindex for empty pages
- Alt text for images and a visually hidden h1 fallback on every page
- Restore the social share image missing since the Eleventy migration

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings November 5, 2026 10:14
Comment thread scripts/seo/llmsFull.js Fixed
Comment thread scripts/seo/llmsFull.js Fixed
Comment thread scripts/seo/llmsFull.js Fixed
Comment thread src/_data/pages.js Fixed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Changes recommended

The export strips image tags before extracting link labels, causing image-only partner links and logo alt text to disappear from /llms-full.txt.

1 open issue
What changed in this PR

Improves search-engine and AI discoverability for the Babylon.js website through shared SEO metadata and generated crawler resources.

Changes:

  • Centralizes per-page metadata, canonical URLs, social tags, and structured data.
  • Generates a sitemap and LLM-friendly summaries from site content and the demo manifest.
  • Updates page descriptions and adds fallback headings and image alt attributes.
File Description
static/​robots.txt Advertises the sitemap and permits crawling.
static/​llms.txt Removes the outdated handwritten summary.
src/​sitemap.njk Lists indexable pages and compiled demos.
src/​llms.njk Generates the LLM-friendly resource index.
src/​content/​viewer/​config.json Adds viewer metadata.
src/​content/​tools/​config.json Replaces the placeholder title.
src/​content/​testimonials/​config.json Adds a testimonials description.
src/​content/​specifications/​config.json Adds an engine specifications description.
src/​content/​reactnative/​config.json Adds React Native metadata.
src/​content/​pressRelease/​config.json Updates Havok announcement metadata.
src/​content/​partners/​config.json Adds a partners description.
src/​content/​native/​config.json Adds Babylon Native metadata.
src/​content/​metaverse/​config.json Adds a metaverse description.
src/​content/​learn/​config.json Replaces placeholder learning-page metadata.
src/​content/​industries/​config.json Replaces the placeholder title.
src/​content/​games/​config.json Adds game-engine metadata.
src/​content/​featureDemos/​config.json Adds a feature demos description.
src/​content/​ecommerce/​config.json Adds e-commerce metadata.
src/​content/​digitalTwinIot/​config.json Adds digital twin and IoT metadata.
src/​content/​creation/​config.json Adds creation and authoring metadata.
src/​content/​config.json Updates homepage metadata.
src/​content/​community/​config.json Adds a community demos description.
src/​assets/​styles/​styles.css Styles visually hidden fallback headings.
src/​_includes/​seoHead.njk Renders shared metadata and structured data.
src/​_includes/​litePartners.njk Adopts the shared SEO partial.
src/​_includes/​blocks/​viewerCarouselBlock.njk Adds carousel image alt attributes.
src/​_includes/​blocks/​topBlock.njk Labels the logo and marks decorative images.
src/​_includes/​blocks/​miniTopBlock.njk Adds logo alt text.
src/​_includes/​blocks/​linkListBlock.njk Marks link decorations with empty alt text.
src/​_includes/​blocks/​imagesBlock.njk Marks decorative frames with empty alt text.
src/​_includes/​blocks/​galleryBlock.njk Marks gallery frames with empty alt text.
src/​_includes/​blocks/​downTriangle.njk Marks the decorative background image.
src/​_includes/​base.njk Integrates SEO metadata, fallback headings, and image labels.
src/​_data/​seo.js Defines shared SEO defaults.
src/​_data/​pages.js Derives page metadata, indexing rules, and structured data.
src/​_data/​demos.js Exposes compiled demos for the sitemap.
scripts/​seo/​llmsFull.js Converts rendered pages into the full-text export.
eleventy.config.js Registers escaping filters and the export hook.

Review effort: Balanced

Comment thread scripts/seo/llmsFull.js Resolved
- Keep image alt text so image-only links (partner logos) are exported
- Strip comments and script-like blocks until stable
- Skip data: and vbscript: links alongside javascript:
- Compare the sameAs filter on hostname instead of a URL substring

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@RaananW
RaananW merged commit 7106a38 into master Nov 5, 2026
5 checks passed
@RaananW
RaananW deleted the raananw-seo-and-ai-readiness branch November 5, 2026 13:30
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.

3 participants