LearnNewsExamplesServices
Frontmatter
id7446
titleEnhance SEO for Neo.mjs Website
stateClosed
labels
epicai
assigneestobiu
createdAtOct 10, 2025, 10:06 PM
updatedAtNov 11, 2025, 7:30 PM
githubUrlhttps://github.com/neomjs/neo/issues/7446
authortobiu
commentsCount0
parentIssuenull
subIssues
7448 Create DocumentHead Addon with Canonical URL Support
7449 Create Sitemap & LLM.txt Generator Script
7451 Generate sitemap.xml File via Build Script
7452 Generate LLM.txt File via Build Script
7453 Update robots.txt for SEO
7460 Refactor SEO Generator Script with Correct Data Sources
7742 Enhance Sitemap Generation: Add `lastmod` based on Git History
7743 Enhance Sitemap Generation: Include Top-Level Application Routes
7744 Refactor Release Preparation Script: Rename `injectPackageVersion` to `prepareRelease` and Integrate SEO File Generation
7745 Refactor `generate-seo-files.mjs`: Implement CLI Option Parsing with Commander
7746 Enhance Release Preparation: Auto-update `datePublished` in `index.html`
7747 Integrate SEO File Copying into `buildAll.mjs` for Application Builds
7748 Bug: `copySeoFiles.mjs` Fails to Copy SEO Files to Correct `dist` Paths for Applications
subIssuesCompleted13
subIssuesTotal13
blockedBy[]
blocking[]
closedAtNov 11, 2025, 7:30 PM

Enhance SEO for Neo.mjs Website

Closed v11.1.0 epicai
tobiu
tobiu commented on Oct 10, 2025, 10:06 PM

This epic aims to improve the search engine optimization (SEO) of the Neo.mjs website, specifically focusing on making the blog and learning content discoverable by search engines and Large Language Models (LLMs). The goal is to increase organic traffic and improve the visibility of the Neo.mjs framework.

Top-Level Items & Implementation Phases

Phase 1: LLM & Sitemap Integration

  • Goal: Implement LLM.txt and a sitemap to enhance content discoverability for search engines and LLMs.

Strategic Overview

Our strategy to enhance SEO is a two-pronged approach that addresses both the initial server response and the client-side navigation within our Single-Page Application (SPA), all while working within the constraints of a static hosting environment like GitHub Pages.

1. Fixing the Root Domain (neomjs.com)

The most critical issue is that our root domain serves a meta-refresh redirect, offering no content to search engines. We will fix this by modifying our deployment process to serve a real, content-rich index.html at the root.

  • The <base> Tag Solution: The deployment script will copy the portal app's index.html to the root and inject a <base href="/dist/production/apps/portal/"> tag into its head. This ensures that crawlers see real content immediately, while all relative asset paths for our live IDE continue to function correctly.

2. Managing SPA Routes (Client-Side)

Once the app is loaded, we need to handle client-side route changes to prevent duplicate content issues and provide accurate metadata for each page.

  • The HeadManager Addon: We will build a new main thread addon responsible for dynamically manipulating the document's <head>. Its primary job will be to set the canonical URL for each route, which is essential for telling search engines the "true" address of a page and consolidating our SEO authority. It will also manage titles and other meta tags.

3. Automating Content Discovery

To ensure search engines have an up-to-date map of our site, we will automate the generation of discovery files.

  • Generator Script: A new build script will parse our content manifests (like learn/tree.json) to automatically generate a complete sitemap.xml and llm.txt. This ensures these files are never out of date and requires zero manual maintenance.

This combination of a server-side deployment fix and a client-side management addon, supported by automated file generation, provides a robust and sustainable solution to dramatically improve the project's visibility.

tobiu assigned to @tobiu on Oct 10, 2025, 10:06 PM
tobiu added the epic label on Oct 10, 2025, 10:06 PM
tobiu added the ai label on Oct 10, 2025, 10:06 PM
tobiu added sub-issue #7447 on Oct 10, 2025, 10:08 PM
tobiu added sub-issue #7448 on Oct 10, 2025, 10:09 PM
tobiu added sub-issue #7449 on Oct 10, 2025, 10:10 PM
tobiu added sub-issue #7451 on Oct 10, 2025, 10:14 PM
tobiu added sub-issue #7452 on Oct 10, 2025, 10:16 PM
tobiu added sub-issue #7453 on Oct 10, 2025, 10:20 PM
tobiu referenced in commit 3e7b454 - "#7446 tickets as md files" on Oct 10, 2025, 10:23 PM
tobiu added sub-issue #7460 on Oct 11, 2025, 11:36 AM
tobiu referenced in commit ab89104 - "#7446 early stage draft versions of the generated files" on Nov 10, 2025, 10:05 PM
tobiu referenced in commit 5e018bf - "#7446 buildScripts/generate-seo-files.mjs => #-based routes" on Nov 11, 2025, 12:09 PM
tobiu referenced in commit f64d61c - "#7446 updated llm.txt" on Nov 11, 2025, 12:18 PM
tobiu added sub-issue #7742 on Nov 11, 2025, 12:38 PM
tobiu added sub-issue #7743 on Nov 11, 2025, 12:59 PM
tobiu added sub-issue #7744 on Nov 11, 2025, 1:06 PM
tobiu added sub-issue #7745 on Nov 11, 2025, 1:33 PM
tobiu referenced in commit 502790a - "#7446 generate-seo-files.mjs: switched sitemap url to https" on Nov 11, 2025, 2:08 PM
tobiu added sub-issue #7746 on Nov 11, 2025, 6:29 PM
tobiu added sub-issue #7747 on Nov 11, 2025, 7:18 PM
tobiu added sub-issue #7748 on Nov 11, 2025, 7:27 PM
tobiu removed sub-issue #7447 on Nov 11, 2025, 7:30 PM
tobiu closed this issue on Nov 11, 2025, 7:30 PM