The Tech Pulse

February 10, 20262 min read
Tags
  • seo
  • canonical
  • metadata
Share

SEO URL Policy

This is the source of truth for URL behavior on the blog.

When I add or change routes, I use this policy to avoid canonical drift.


Canonical Rule

Base domain is always:

https://blog.andreszenteno.com

Canonical must match the exact rendered route:

  • Articles: /articles/{slug}
  • Notes: /notes/{slug}
  • Docs: /docs/{slug}
  • Firestore listing page: /fb-articles
  • Tags: /tags/{tag}

Metadata expectations

  • alternates.canonical must equal the live route.
  • openGraph.url must equal canonical.
  • Social image URLs should be absolute.

Optional OG fallback:

  • set NEXT_PUBLIC_DYNAMIC_OG_ENABLED=true
  • route: /og?title=... when frontmatter image is missing

Sitemap and robots

  • app/sitemap.ts defines crawlable routes.
  • app/robots.ts publishes sitemap and host directives.
  • Feed routes are indexed as static URLs:
    • /rss.xml
    • /atom.xml
    • /feed.json

Operational checks

When routes change, I update metadata and sitemap in the same PR.

Before merge, verify:

  • canonical URL correctness
  • sitemap entries for new routes
  • robots reference to sitemap

Final note

SEO issues here usually come from inconsistency, not missing tooling.

If route, canonical, and sitemap move together, indexing stays stable.

Related reading

Get New Posts

Follow on your preferred channel for new articles, notes, and experiments.