|
| 1 | +# Epic: Enhance SEO for Neo.mjs Website |
| 2 | + |
| 3 | +GH ticket id: #7446 |
| 4 | + |
| 5 | +**Assignee:** tobiu |
| 6 | +**Status:** To Do |
| 7 | + |
| 8 | +## Scope |
| 9 | + |
| 10 | +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. |
| 11 | + |
| 12 | +## Top-Level Items & Implementation Phases |
| 13 | + |
| 14 | +### Phase 1: LLM & Sitemap Integration |
| 15 | + |
| 16 | +- **Goal:** Implement `LLM.txt` and a sitemap to enhance content discoverability for search engines and LLMs. |
| 17 | + |
| 18 | +## Strategic Overview |
| 19 | + |
| 20 | +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. |
| 21 | + |
| 22 | +### 1. Fixing the Root Domain (`neomjs.com`) |
| 23 | + |
| 24 | +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. |
| 25 | + |
| 26 | +- **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. |
| 27 | + |
| 28 | +### 2. Managing SPA Routes (Client-Side) |
| 29 | + |
| 30 | +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. |
| 31 | + |
| 32 | +- **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. |
| 33 | + |
| 34 | +### 3. Automating Content Discovery |
| 35 | + |
| 36 | +To ensure search engines have an up-to-date map of our site, we will automate the generation of discovery files. |
| 37 | + |
| 38 | +- **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. |
| 39 | + |
| 40 | +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. |
| 41 | + |
| 42 | +## Sub-Tasks |
| 43 | + |
| 44 | +### Phase 1: Foundational Tooling |
| 45 | + |
| 46 | +- **To Do:** ticket-fix-root-domain-seo-with-base-href.md |
| 47 | +- **To Do:** ticket-create-head-manager-addon.md |
| 48 | +- **To Do:** ticket-create-sitemap-generator-script.md |
| 49 | +- **To Do:** ticket-generate-sitemap-file.md |
| 50 | +- **To Do:** ticket-generate-llm-txt-file.md |
| 51 | +- **To Do:** ticket-create-update-robots-txt-for-seo.md |
0 commit comments