Adds future plan for SEO
This commit is contained in:
+122
@@ -0,0 +1,122 @@
|
||||
# SEO Plan for KMountain Flower Radio
|
||||
|
||||
## Objective
|
||||
Improve crawlability, indexability, and ranking quality for a JavaScript-rendered Angular site where core content is loaded after app bootstrap.
|
||||
|
||||
## Current Baseline
|
||||
- The app is client-rendered Angular (no SSR/prerender in current build pipeline).
|
||||
- Nginx serves SPA fallback routes to index.html.
|
||||
- Initial HTML is a minimal shell and most meaningful content is populated after JavaScript executes and API calls complete.
|
||||
- Route-specific SEO metadata is not currently implemented (title updates are global/dynamic only).
|
||||
- robots.txt and sitemap.xml are not currently present in public assets.
|
||||
|
||||
## Target Outcomes
|
||||
- Reliable indexing of all public routes.
|
||||
- Better SERP snippets and relevance for branded and non-branded queries.
|
||||
- Less dependence on crawler JavaScript/render budget.
|
||||
|
||||
## Priority 1 (High Impact, Low Risk)
|
||||
|
||||
### 1) Add robots.txt
|
||||
- Allow crawling of public pages.
|
||||
- Block sensitive/admin/auth endpoints if needed.
|
||||
- Add a sitemap reference.
|
||||
|
||||
### 2) Add sitemap.xml
|
||||
- Include canonical URLs for:
|
||||
- /
|
||||
- /about
|
||||
- /schedule
|
||||
- /events
|
||||
- /contact
|
||||
- Keep lastmod values updated during deploys.
|
||||
- Submit sitemap in Google Search Console and Bing Webmaster Tools.
|
||||
|
||||
### 3) Implement route-level metadata
|
||||
- Set unique title and meta description per public route.
|
||||
- Add canonical tags per route.
|
||||
- Add Open Graph and Twitter card defaults plus per-route overrides.
|
||||
- Mark login/admin routes as noindex.
|
||||
|
||||
### 4) Strengthen crawl path discovery
|
||||
- Keep static crawlable links to all public pages in global navigation/footer.
|
||||
- Ensure key public routes are linked from multiple relevant pages.
|
||||
|
||||
### 5) Add structured data
|
||||
- Add Organization schema site-wide.
|
||||
- Add Event schema for upcoming events content.
|
||||
- Include station identity fields consistently (name, URL, logo, contact where appropriate).
|
||||
|
||||
## Priority 2 (Bigger Lift, Larger Upside)
|
||||
|
||||
### 6) Introduce prerender or SSR for public routes
|
||||
- Preferred first step: prerender static public routes.
|
||||
- Alternative: full SSR if dynamic metadata/content requires runtime generation.
|
||||
- Goal: deliver meaningful HTML to crawlers before JS execution.
|
||||
|
||||
### 7) Ensure metadata appears in initial HTML
|
||||
- Validate title/description/canonical in rendered source for each route.
|
||||
- Ensure each route has a clear H1 and meaningful introductory text in server-delivered HTML.
|
||||
|
||||
### 8) Keep baseline content available without API dependence
|
||||
- Include useful fallback content for core sections (home/about/schedule/events intros).
|
||||
- Treat API-loaded content as enhancement rather than sole source of indexable copy.
|
||||
|
||||
## Priority 3 (Quality + Ranking Support)
|
||||
|
||||
### 9) Improve Core Web Vitals
|
||||
- Optimize home LCP image and dimensions.
|
||||
- Defer non-critical work below the fold.
|
||||
- Reduce layout shifts around async content blocks.
|
||||
|
||||
### 10) Expand internal linking depth
|
||||
- Add contextual links between About, Schedule, Events, and Contact pages.
|
||||
- Use descriptive anchor text aligned with user intent.
|
||||
|
||||
### 11) Media SEO pass
|
||||
- Keep decorative images with empty alt attributes.
|
||||
- Add descriptive alt text for content-bearing images.
|
||||
|
||||
## Implementation Notes for This Repo
|
||||
- Place robots.txt and sitemap.xml in public assets so they are copied to build output.
|
||||
- Keep SPA fallback behavior in Nginx; SEO assets still resolve directly.
|
||||
- Use a centralized route-to-metadata mapping to avoid duplicate/incorrect canonical logic.
|
||||
|
||||
## Measurement Plan
|
||||
|
||||
### Week 1 Baseline
|
||||
- Capture Search Console index coverage and excluded reasons.
|
||||
- Record impressions/clicks for branded and local intent queries.
|
||||
- Run Lighthouse on all public routes.
|
||||
|
||||
### Weeks 2-3 (after Priority 1)
|
||||
- Validate robots.txt and sitemap accessibility.
|
||||
- Validate route metadata and canonical correctness.
|
||||
- Track indexed-page growth and snippet quality.
|
||||
|
||||
### Weeks 4-8 (after Priority 2)
|
||||
- Compare crawl stats and indexing completeness before/after prerender or SSR.
|
||||
- Track ranking movement for schedule/events/community-intent terms.
|
||||
- Validate rich result eligibility for structured data.
|
||||
|
||||
## Acceptance Criteria
|
||||
- robots.txt and sitemap.xml are live and valid.
|
||||
- All public routes have unique title, description, and canonical.
|
||||
- Public routes are indexable and admin/login are noindex.
|
||||
- Search Console shows healthy discovery/indexing across primary routes.
|
||||
- Public pages render useful content for crawlers without relying solely on JS.
|
||||
|
||||
## Risks and Mitigations
|
||||
- Risk: JS render delays cause partial indexing.
|
||||
- Mitigation: prerender/SSR and stronger baseline HTML.
|
||||
- Risk: API issues reduce crawler-visible content.
|
||||
- Mitigation: robust fallback copy and error handling.
|
||||
- Risk: canonical misconfiguration causes duplicate indexing.
|
||||
- Mitigation: centralized canonical helper + validation checks.
|
||||
|
||||
## Recommended Execution Order
|
||||
1. robots.txt + sitemap.xml
|
||||
2. route-level metadata and canonicals
|
||||
3. structured data (Organization + Event)
|
||||
4. prerender for public routes
|
||||
5. performance and internal-linking refinement
|
||||
Reference in New Issue
Block a user