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)
Comments
No comments yet. Start the discussion.