← ジャーナルに戻る
· 5 分で読了

SEO for Developers: A No-Nonsense Guide (2026)

A practical SEO guide written for developers. Learn how search engines crawl, render, and rank your site — and the exact technical checklist to fix common issues that kill rankings.

Most SEO guides are written for marketers. This one is written for the people who actually build the sites.

If you’re a developer, you already understand HTTP, HTML, and rendering. SEO is just another layer on top of what you already know — but the terminology and the “guru” noise make it seem harder than it is.

Here’s what actually matters.

How Search Engines Work (Developer’s Mental Model)

Think of Googlebot as a headless browser with a budget.

  1. Crawl: Googlebot fetches URLs from its queue. Your robots.txt controls access. Your sitemap submits URLs for consideration.
  2. Render: Googlebot executes JavaScript (via Web Rendering Service, essentially Chrome 41+). But rendering is deferred — heavy JS pages may wait hours or days in a “render queue.”
  3. Index: The rendered DOM is parsed and stored. Pages that require client-side rendering for critical content are at a disadvantage.
  4. Rank: Hundreds of signals determine position. Content relevance and links dominate, but technical issues can disqualify you entirely.

The key insight: if Googlebot can’t see your content in the initial HTML response, it might not see it at all.

The Technical SEO Checklist

1. Server-Side Rendering or Prerendering

If your site is a SPA (React/Vue/Svelte), Google sees an empty <div id="root"></div> on first paint. Content loaded via useEffect or onMounted may not be indexed.

Bad:  Client-side only rendering
Good: SSR (Next.js Nuxt, Astro SSR) or SSG (prerendered HTML)

Astro gives you this by default — pages are prerendered to static HTML. If you’re on Next.js, use getStaticProps or the App Router with generateStaticParams.

2. Canonical Tags

Every page needs exactly one canonical URL:

<link rel="canonical" href="https://example.com/page/" />

Without it, Google may index duplicate URLs (with trailing slashes, query params, uppercase) and split your ranking signals across duplicates.

Pitfall: Astro’s directory build format adds trailing slashes. Make sure your canonical URLs match your actual served URLs to avoid redirect chains.

3. Sitemap and robots.txt

Your sitemap is the map. robots.txt is the gate.

# robots.txt
Allow: /
Disallow: /admin/
Disallow: /api/

Sitemap: https://example.com/sitemap-index.xml

Every URL in your sitemap should return 200, have a canonical tag, and be reachable via internal links (not orphaned).

Run a quick audit:

python3 -m zens_ink.site_audit --dist dist --sitemap dist/sitemap.xml

This catches orphan pages, broken links, missing canonicals, missing H1s — the silent killers.

4. Core Web Vitals

Google measures real user experience via three metrics:

  • LCP (Largest Contentful Paint): < 2.5s. Usually your hero image or main heading. Optimize image loading, use preload for critical assets.
  • INP (Interaction to Next Paint): < 200ms. Replaced FID in 2024. Measures responsiveness to user input.
  • CLS (Cumulative Layout Shift): < 0.1. Caused by images without dimensions, late-loading fonts, or dynamic content insertion.

For static sites (Astro, Hugo), these are usually excellent by default. The killers are heavy JS bundles and unoptimized images.

5. Structured Data (JSON-LD)

Structured data tells Google exactly what your content is. It’s not a ranking factor directly, but it enables rich results (stars, FAQ accordions, breadcrumbs) that increase click-through rate.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "ZensInk",
  "applicationCategory": "DeveloperApplication",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  }
}
</script>

At minimum, add Organization, WebSite, and Article (for blog posts) schemas.

6. Internal Linking

This is the most underused SEO technique. Every page should link to at least 3 related pages using descriptive anchor text.

Internal links do two things:

  • Help Googlebot discover pages (reduces crawl depth)
  • Pass “link equity” from popular pages to new pages

If your blog has 50 articles but zero cross-links, you’re leaving ranking power on the table.

7. Meta Tags That Matter

Three tags that actually affect rankings and CTR:

  • <title>: 50-60 characters. Primary keyword first, brand last. This is the single most important on-page element.
  • <meta name="description">: 120-160 characters. Not a ranking factor, but directly affects CTR. Write it like ad copy.
  • <meta name="robots">: index, follow by default. Use noindex for thin pages, search results, admin panels.

8. hreflang for Multi-Language Sites

If your site has multiple languages, hreflang tags prevent duplicate content issues and ensure the right language version ranks in the right region:

<link rel="alternate" hreflang="en" href="https://example.com/page/" />
<link rel="alternate" hreflang="zh" href="https://example.com/zh/page/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/page/" />

9. Page Speed (Not Just Vitals)

Google’s crawl budget is finite. Slow pages eat into it. If your server responds in 3 seconds, Googlebot crawls fewer pages per visit.

Deploy behind a CDN (Cloudflare, Vercel, Netlify). Cache aggressively. Serve static HTML when possible.

10. Don’t Block Your JS/CSS

Googlebot needs to see your page as users do. Blocking JS/CSS in robots.txt prevents Google from rendering your page correctly:

# BAD — blocks rendering
Disallow: /assets/
Disallow: /*.css$
Disallow: /*.js$

The Developer’s SEO Stack

You don’t need Ahrefs ($200/mo) or SEMrush ($130/mo). Here’s a free stack that covers 90% of what you need:

NeedToolCost
Keyword discoveryGoogle Autocomplete (via zens_ink.keyword_research)Free
Search volumeBing Webmaster API (via zens_ink.keyword_volume)Free
Keyword difficultySERP structure analysis (via zens_ink.kd)Free
Competitor gapsSitemap comparison (via zens_ink.competitor_gap)Free
Technical auditStatic build scanner (via zens_ink.site_audit)Free
PerformancePageSpeed Insights / LighthouseFree
Indexing statusGoogle Search ConsoleFree
SubmissionIndexNow protocolFree

Common Developer Mistakes

  • Trusting client-side rendering for critical content — Google’s render queue is not guaranteed
  • Forgetting canonical tags on paginated URLs — creates duplicate content
  • Blocking JS/CSS — Google can’t render your page
  • No internal links — orphans never get crawled
  • Missing alt text on images — lost image search traffic
  • Slow Time to First Byte — CDN and edge caching fix this instantly
  • No sitemap — Google has to discover URLs by crawling, which is slow

FAQ

Do I need a sitemap if my site is small?

Yes. Even for 10 pages, a sitemap ensures Google knows about all of them immediately. Without one, discovery depends on crawling, which can take weeks.

Does Google still use meta keywords?

No. Google has ignored <meta name="keywords"> since 2009. Don’t waste time on it.

How long does it take to get indexed?

For a new domain, 3-14 days after submission via Google Search Console. For an established domain with good internal linking, often within 24 hours. Use IndexNow to speed up Bing/Yandex.

Should I use client-side routing or separate pages for SEO?

Separate pages with real URLs. Client-side routing (React Router, Vue Router) creates a single-page experience where Google may not associate content with unique URLs. Use SSR or prerendering for any page you want indexed.

Does hosting location matter for SEO?

Minimally for ranking, but significantly for speed. A server in Singapore serving US visitors will have higher latency. Use a CDN with edge nodes near your audience.


This guide is part of our SEO toolkit for indie builders. For a deeper dive into keyword strategy, read our keyword research without Ahrefs walkthrough.

Want to run this analysis on your own site?

ZensInk Pro automates this pipeline. One command, from seed keywords to content plan.

Get Pro →