IAnswerable

Technical SEO for a Developer Blog

15 May 2026

Writing a good post doesn’t get it indexed. Google has to be able to crawl it, understand it’s the canonical version, and decide it’s worth showing. Most developer blogs lose traffic to plumbing, not prose.

1. Ship a real sitemap

If you’re on Hugo, you already have one at /sitemap.xml — verify it’s actually populated and not silently empty because of a config typo:

curl -s https://yoursite.com/sitemap.xml | grep -c '<loc>'

Submit it in Google Search Console once, under Sitemaps. You don’t need to resubmit on every post — Google recrawls it on its own schedule once it trusts the site.

2. Set canonical tags, always

Every page needs a self-referencing canonical unless it’s intentionally a duplicate:

<link rel="canonical" href="https://yoursite.com/posts/my-post/" />

This matters more than people think if you syndicate to Medium or dev.to, or if your site is reachable on both www and bare domain. Without it, Google picks a canonical for you, and it’s not always the one you want.

3. Pick a URL structure and don’t change it

/posts/my-post/ beats /2026/09/16/my-post/. Dates in URLs signal staleness and break the moment you update a post. Once you pick a pattern, don’t change it — a slug change without a 301 redirect kills every backlink and every cached ranking signal pointing at the old URL.

If you must rename a slug, redirect the old one:

location = /posts/old-slug/ {
  return 301 /posts/new-slug/;
}

4. Don’t accidentally noindex or disallow yourself

Check what’s actually being served, not what you think you configured:

curl -sI https://yoursite.com/posts/my-post/ | grep -i x-robots
curl -s https://yoursite.com/posts/my-post/ | grep -i 'meta name="robots"'

A staging config that leaked noindex into production is the single most common reason a developer blog vanishes from search overnight.

Internal links are the cheapest SEO move available and the one developers skip most. When you write a new post, link back to 2-3 older, relevant ones from the body text — not a “related posts” widget bolted on at the bottom, actual contextual links. This is how Google learns your posts relate to each other and which ones are most important.

6. Structure headings like a document, not a design

One <h1> (your title, handled by the template), then <h2> for major sections, <h3> only nested under an <h2>. Don’t skip levels for visual size — that’s what CSS is for. Screen readers and crawlers both use heading structure to build an outline of the page; a broken hierarchy confuses both.

What to check after publishing

Check Command/Tool
Page is indexable Search Console URL Inspection
No broken internal links wget --spider -r -l 2 yoursite.com
Sitemap includes the new URL curl sitemap.xml | grep slug
Canonical points to itself View source, check <link rel="canonical">

None of this gets you to page one on its own. But skip it and good content never gets the chance to try.