Six months ago I launched a free coding platform with zero SEO knowledge.
I built 100+ pages, submitted a sitemap, and waited.
Nothing happened.
So I did what any developer would do: I wrote a Python script to audit every page on my site and find out exactly what was wrong.
Here's what I found — and it might surprise you.
The Problem With 90% of Beginner Sites
When I ran my first audit, I found:
· 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.
Let me break down the ones that mattered most.
- Canonical URLs (The Silent Killer)
If you've ever moved a site from username.github.io to a custom domain — you probably broke your SEO.
Every page needs this tag:
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. 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:
· Star ratings
· FAQ dropdowns
· Step-by-step guides
· Course carousels
· Product prices
Adding this to a How-To page:
{ "@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 had zero pages with structured data. Now every page has 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:
Free Programming Courses – Learn HTML, Python, AI | UI Studio
becomes
Free Programming Courses – Learn HTML, Python, AI | UI...
Ugly. 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, 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.
I write about free coding education and building in public. Find everything at makuistudio.com.
Top comments (0)