Skip to content
Dawit.

engineering

SEO without a marketing team

Part two of building this blog — the complete technical SEO layer for a personal site, and the inputs that actually move rankings.

· 3 min read

Contents

Part one built a content model that cannot break. This part builds the layer that makes the content findable. The thesis: for a personal site, technical SEO is a finite, completable checklist — not a dark art — and once it is built into the templates, ongoing “SEO work” reduces to writing things people want to read.

What search engines actually need

Strip away the industry noise and a crawler needs a small set of things from a blog:

Complete HTML without JavaScript. The article, its headings, and its links must exist in the initial response. A static build satisfies this by construction.

One canonical URL per page. Every page declares its own authoritative URL, so ?utm_source= variants and stray query strings collapse into one entry in the index instead of competing as duplicates.

Honest metadata. A unique title under ~60 characters and a description under ~155 — which our schema from part one enforces as types, so this bullet is already impossible to get wrong.

Structured data. A BlogPosting JSON-LD block per article — headline, dates, author, word count — plus Person on the about page and BreadcrumbList on articles. This is how a crawler stops parsing your HTML heuristically and starts reading facts.

A map and a feed. A sitemap index with accurate modification dates, a robots.txt pointing at it, and full-content RSS and JSON feeds. Feeds are not nostalgia; they are how your most loyal readers and half the syndication ecosystem consume you.

Every item on that list is template work. Build it once, and article number two hundred gets it identically to article number one.

The parts people over-build

Two temptations deserve naming. First, fabricated schema — inventing an Organization publisher for a one-person site because it looks more serious. Search engines’ guidelines penalize markup that misrepresents reality; a personal blog’s author and publisher are the same person, and saying so is both accurate and fine.

Second, index bloat as ambition — letting every tag page, every paginated shell, every thin variant into the sitemap on the theory that more indexed pages means more traffic. It means the opposite: crawl budget spent on pages with nothing on them, competing with your real articles. Thin pages get noindex; the sitemap lists things worth ranking.

What actually moves rankings

The honest hierarchy, having watched this work: content that answers a real query dwarfs everything else. Then internal linking — every article linking to related ones, in context, so both crawlers and readers can walk the graph. Then page speed, a genuine ranking signal, which our architecture gets nearly free. The technical layer’s job is mostly to not lose rankings the writing earned — a losable game you make unlosable by template.

That framing is liberating for a solo writer. There is no ongoing SEO grind. There is a one-time engineering task, a schema that keeps metadata honest, and then the actual work: writing, weekly, about a small set of subjects until depth accumulates into authority.

Verifying it

Before calling the layer done: run key pages through a structured-data validator, submit the sitemap in Search Console, fetch a page with JavaScript disabled and confirm the article is fully present, and load the RSS feed in a real reader. Fifteen minutes, once — then the layer is invisible until part three, where we make the site searchable without adding a server.

One essay on building for the web, most weeks

No digests, no product updates — the same articles that appear here, in your inbox. Unsubscribe with one click, any time. Or take the RSS feed instead.

Double opt-in — you'll get a confirmation email first. Your address is used for nothing else.