I've got a few domains up for renewal that I've been holding on to for a rainy day side project. Time to try this building-in-public thing. I'll show you how I build a site, create content, get search traffic, and monetize it.
I've done this a few times in the past, usually motivated by an expiring domain, and it's worked out well. It's been a while, so I'm eager to see if these SEO/content techniques are still relevant today.
It usually starts with a domain that matches a keyword phrase that people are searching for. I bought these domains a few years back with this in mind. Let's ask Google what to expect for search volume:
I'd usually go for something with higher search volume, but I can already tell there's some easy-to-reach data sets to build content with (more on that soon) and this will be fun to see the results.
I find it easier to get search ranking for something you can create lots of content for. In this case, I am envisioning a page per make/model with MPG data. Although "mpg calculator" has more search traffic, "mpg rating(s)" is probably better suited for a content site.
Between the mpg ratings .net and .org, I'll pick the the .org. It'll look slightly more authoritative and it matches mpg calculator. This gives us an option to build a smaller sister site that has a calculator tool and lean on the main site for "link juice".
Ideally we want to quickly create a large body of content for this site. Lots of unique pages with content that differentiates them from each other. I usually like to find an existing site to scrape for an initial data set. Looks like the US government has one!
Being a government website, chances are good they publish the raw data, too. That'll save us a ton of time scraping (but we do miss out on the joy of scraping).
Ah hah! CSV downloads: https://www.fueleconomy.gov/feg/download.shtml
And docs for each CSV column: https://www.fueleconomy.gov/feg/ws/index.shtml
And docs for each CSV column: https://www.fueleconomy.gov/feg/ws/index.shtml
I'm aiming to get this online sooner than later, so I'm gonna pick familiar (and fun) tools: Node.js, Bootstrap, Heroku. We can change/iterate on these later if they don't feel right.
Since we'll be in a JS environment, I'll convert that CSV to JSON to be easier to work with. I'm lazy, so I'll find some random CSV-to-JSON tool in Google to do it for me.
Oof, that blew it up. 18mb CSV to 77mb JSON. I know that's still well within Heroku, etc. memory limits, so it's fine for now. I'll wait to clean up this data set until we figure out what to display on each page.
I should probably get the domain's DNS propagating so we don't get stuck waiting for this later. I'll set up a really basic Node.js app on Heroku, point the domains at Cloudflare, and get it all wired up.
Shoutout to @namedotcom for the registrar with the best nameserver UI: auto-generated, one-click nameserver templates based on other domains in my account. I never have to look up my Cloudflare nameservers.
DNS is still propagating, but I got a barebones Express app up on Heroku: https://mpgratings.herokuapp.com/
I'll push code here: https://github.com/holic/mpgratings
(I may make this repo private in the future to reduce copy cats)
I'll push code here: https://github.com/holic/mpgratings
(I may make this repo private in the future to reduce copy cats)
I spent a bit going back and forth about whether or not I wanted this to be a React app, but I opted for Express + Nunjucks for now. Moving on!
Let's get Bootstrap in first before we display anything. It's hard to tell (just a font change), but it's there.
The title of the home page is one of the more important pieces. I find the most effective page titles combine plain, understandable, concise English and include many of the high value/traffic keywords from the earlier search traffic research.
I try not to stuff every keyword and phrase into the title, just a combination of all of them where you can pick out any given phrase from the title.
I grabbed an example template from Bootstrap's website and filled it in with some of the JSON data. Another good spot for rehashing your target keywords is the first heading and paragraph on the home page. I'm just throwing words on the page to get us going, will tweak later.
That's probably too many makes to reasonably display on the page. Plus a lot of esoteric ones. Sorting makes by number of vehicles in the data set, we can probably pluck off the first 20 or 30 to display on the home page. We'll save the rest for a dedicated makes page.
After stylizing the list with a Bootstrap list group, I decided it only needed ~10 items. Now to wire up pages for each of these.
Oh look, DNS finally propagated: https://mpgratings.org/
Since we're live now, I added Google Analytics. This will let us track progress on organic search traffic and later help with monetizing and/or selling the site.
Before filling the site with pages, it's usually worth thinking about your page structure. We'll apply the same keyword-rich approach in our URLs, using them strategically and sanely without too much stuffing.
I tend to prefer a REST-like approach to URLs, so my first instinct is a structure that looks like:
/makes
/makes/ford
/models
/models/mustang
/years
/years/1968
/1968-ford-mustang
This gives us a lot of options for creating different types of pages, powerful filters, etc.
/makes
/makes/ford
/models
/models/mustang
/years
/years/1968
/1968-ford-mustang
This gives us a lot of options for creating different types of pages, powerful filters, etc.
It's not irreversible, but the closer we can land on the *final* page structure ahead of time the better we are. Moving page structures and redirecting *kills* search ranking and is hard to recover from, even if you follow all the guidance from Google, etc.
I expect much of our easiest traffic will be long tail searches for things like "97 ford f150 gas mileage", so I've put the year-make-model pages as top-level URLs so that search engines place the appropriate level of importance in ranking these vs. other pages.
After some data munging on server start, each car now has associated URLs for each kind of page. This will help us build directory-like pages for all makes, all models, all years. I'm working on makes first:
Now that I can see pages for each make, it's clear to me that we'll need to do a bit more data clean up. Using Chevrolet as an example, we can probably remove "2WD" variants and split out "G10" from "G20", as most people probably search for one or the other, not both.
The copy used on this page is still a work in progress and will evolve over time, but I'm intentionally repeating some of the copy in both the page title and first heading/paragraph to make sure search engines notice.
I might make a list of variants for the phrase "gas mileage", "fuel economy", etc. to sprinkle into spots like this, but we can optimize that later. I hope with some more make-specific information and media on these pages, we can avoid penalties for duplicate content.
That's it for today. I hoped to have more pages created, but there was a lot of boilerplate to take care of first. I'll continue this thread as I find time to work on this. Thanks for tagging along so far!
I started on the pages for each car model, showing all the years that the model was made/released. It looks like there's multiple options within each year that we'll need to account for. (I don't know anything about cars :))
I assume most people will be searching by make-model-year, so I grouped those together instead of making a page for each variant. We can display the variants on the single make-model-year page, which has a nice side effect of more unique content per page.