I Analyzed 100 Pages of My Own Site - Here's What I Learned About SEO for Developers
DEV Community

I Analyzed 100 Pages of My Own Site - Here's What I Learned About SEO for Developers

I Analyzed 100 Pages of My Own Site - Here's What I Learned About SEO for Developers

The Problem With 90% of Beginner Sites

When I launched a free coding platform six months ago with zero SEO knowledge, I built 100+ pages, submitted a sitemap, and waited. Nothing happened. So I wrote a Python script to audit every page on my site and discover exactly what was wrong. Here's what I found - and it might surprise you.

Key Issues Found

During my initial audit, I identified several critical problems that are often invisible to developers but critical to Google:

  • 42 pages had canonical URLs pointing to the wrong domain
  • Every single page was missing structured data
  • 26 pages had titles over 60 characters
  • 50 pages had zero internal links
  • 8 pages had thin content (under 300 words)

Every one of these is invisible to you but critical to Google.


Canonical URLs (The Silent Killer)

If you've ever moved a site from username.github.io to a custom domain, you likely broke your SEO. Every page needs a canonical tag:

<link rel="canonical" href="https://your-custom-domain.com/page-url">

If it points to the wrong URL - even to an old .github.io address - Google treats the wrong version as the real page. Your site will never rank because Google is indexing a different URL.

I had 42 pages with this problem. Fixing it took a 20-line Python script.


Structured Data (Free Rich Snippets)

Google shows enhanced search results for pages with JSON-LD structured data, including star ratings, FAQ dropdowns, step-by-step guides, course carousels, and product prices.

Adding this to a How-To page looks like:

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Install Python",
  "step": [
    {
      "@type": "HowToStep",
      "name": "Download the installer",
      "text": "Go to python.org/downloads"
    }
  ]
}

Google can then show your 5 steps directly in the search results - no click required. I went from having zero pages with structured data to every page having it.


Internal Linking (The Free Ranking Boost)

Internal links - links between pages on your own site - are the most underused SEO tool. Google uses them to:

  • Discover new pages
  • Pass authority from popular pages to new ones
  • Understand your site's structure

If a page has zero internal links, Google treats it as an orphan. My lesson pages had zero. My How-To guides had zero. My snippets had zero. I added a "Related Resources" section to every page with 4 relevant links each. That's 400+ new internal links across the site. This one change matters more than any backlink.


Title Length (Affects CTR, Not Rankings)

Google truncates titles longer than 60 characters. For example:

Before: Free Programming Courses - Learn HTML, Python, AI | UI Studio
After:  Free Programming Courses - Learn HTML, Python, AI | UI Studio

Fix: keep titles between 40-60 characters. Put the important words first.


Thin Content (Google Won't Rank It)

Pages under 300 words rarely rank, unless they're answering a very specific question. My lesson pages averaged 250 words - not terrible, but not enough to compete. The fix wasn't to pad them. It was to add genuine value:

  • A "common mistakes" section
  • A "pro tips" section
  • Related resources
  • Interactive demos

Every lesson now averages 400+ words of useful content.


The Python Script That Did All the Work

I wrote scripts to audit and fix every issue automatically. Here's the general approach:

from bs4 import BeautifulSoup
import requests

def audit_page(url):
    r = requests.get(url)
    soup = BeautifulSoup(r.text, "html.parser")
    issues = []

    # Check title length
    title = soup.title.string if soup.title else ""
    if len(title) > 60:
        issues.append(f"Title too long: {len(title)} chars")

    # Check canonical
    canonical = soup.find("link", attrs={"rel": "canonical"})
    if not canonical or "github.io" in canonical.get("href", ""):
        issues.append("Wrong or missing canonical")

    # Check structured data
    if not soup.find("script", attrs={"type": "application/ld+json"}):
        issues.append("Missing JSON-LD")

    # Check internal links
    internal = sum(1 for a in soup.find_all("a", href=True) if a["href"].startswith("/"))
    if internal < 3:
        issues.append(f"Few internal links: {internal}")

    return issues

Run it across your sitemap, get a CSV of every issue, and fix them in priority order.


What Changed in 30 Days

Metric Before After
Pages with correct canonicals 22 100
Pages with JSON-LD 0 100
Avg internal links per page 0.4 5.2
Pages with proper titles 74 100
Average word count 280 420

Google is now crawling roughly 5x more pages per week than before.


What I Learned

SEO is 20% technical, 80% consistency. The technical fixes take a weekend. Getting Google to trust you takes 6 months. Don't optimize for rankings - optimize for clicks. A page can rank #3 and still get zero clicks if the title and description don't entice.

Internal links matter more than backlinks (for beginners). You can build 100 internal links in an afternoon. Getting 1 real backlink takes weeks. Every fix compounds.

The 42 canonical fixes I made in month 2 helped the 20 new lessons I added in month 3 rank faster.


The Full Guide

I turned everything I learned into a 13-part guide for developers who want to skip the guessing: "How to Make Your Website SEO-Friendly". It covers canonical tags, structured data, sitemaps, internal linking, and everything else I learned the hard way. If you're building a side project, learn from my mistakes. Save yourself 6 months.

Find everything at makuistudio.com.


Top comments (0)

Read on DEV Community ↗ ← Back to News

Comments

No comments yet. Start the discussion.