Skip to content

[FEATURE]: SEO & SEM optimization sitemap, robots.txt, per-article metadata, and structured data #103

@Atharva0506

Description

@Atharva0506

Feature and its Use Cases

Since Stable Viewpoints is a blogging platform, SEO is pretty much the lifeline for organic traffic. Right now the site is missing some fundamental pieces that prevent search engines from properly indexing and ranking the articles.

I checked the live site and found these gaps:

  • No sitemap.xml : viewpoints.stability.nexus/sitemap.xml returns 404. Google literally can't discover our articles.
  • No robots.txt : viewpoints.stability.nexus/robots.txt also 404. No crawl instructions for any bot.
  • Every article shows the same title and description in search results : The <title> tag on all article pages just says "Stable Viewpoints" instead of the actual article title. Same issue with meta descriptions. This is because app/a/[slug]/page.tsx doesn't export a generateMetadata function.
  • Canonical URLs on all articles point to the homepage (/) : This makes Google think every article is a duplicate of the homepage. Huge ranking penalty.
  • No JSON-LD structured data : No BlogPosting or WebSite schema, so we'll never get rich results (article cards, breadcrumbs, etc.) in search.
  • No Google Search Console verification : We can't even monitor how Google sees the site.

What needs to be done

  1. Add app/sitemap.ts : Generate sitemap from articles-index.json with all article URLs, dates, and priorities
  2. Add app/robots.ts : Allow all crawlers, link to sitemap
  3. Add generateMetadata() to app/a/[slug]/page.tsx : Per-article title, description, OG tags, Twitter cards, and canonical URL
  4. Add JSON-LD structured data : WebSite + Organization on homepage, BlogPosting schema on each article page
  5. Add Google Search Console verification tag in app/layout.tsx
  6. Add public/manifest.json and link it in layout

How users (and the project) benefit

  • Articles actually show up in Google search with proper titles and descriptions
  • Each article gets its own rich preview when shared on Twitter/LinkedIn/Discord
  • GSC gives us data on impressions, clicks, and indexing issues
  • Sitemap lets Google discover new articles automatically after deploy

I'd suggest splitting this into 2-3 PRs by priority. happy to pick some of these up.

Additional Context

I used my own portfolio https://atharvanaik.me as a reference : it's built with the same stack (Next.js 15, App Router, static export) and has all of these implemented. Here are the specific files for reference:

  • sitemap.ts : dynamic sitemap generation from content
  • robots.ts : multi-bot rules with sitemap link
  • layout.tsx : JSON-LD schema, GSC verification, manifest
  • posts/page.tsx : per-page metadata + CollectionPage schema

Useful tools for validation after implementation:

Code of Conduct

  • I have joined the Discord server and will post updates there
  • I have searched existing issues to avoid duplicates

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions