Subscriptions, Adsense, 20Booksto50K. Oh My!

I’m done with my Medium vs Adsense experiment here. This is all part of a passive income strategy evaluation game I’m playing. I’m trying to see if I can build a $100,000 a year passive income portfolio. I know it will take time but I like playing these kinds of games.

Right now I’m evaluating a mix of different things such as dividend-producing stocks, web monetization, and Adsense. So far for February, Adsense is beating the pants off my Medium income.

Why? That’s an interesting question and without access to the data Google has on my site, I can’t be conclusive but I can guess. My guess? It’s my search engine optimization (SEO).

Optimizing SEO & Adsense

I spent a ton of time last year optimizing my old blog for SEO so I can rank higher on Google search results. I switched from Pelican to Hugo — both static CMS generators — and ported it all to AWS Amplify.

…a hosting platform like Medium can toss you and all your hard work off of it on a whim.

That’s given me blazing speed load times and because of that, I was able to put Adsense on and not affect page load times. Yes, I took a small hit but the load times vastly outperform my old WordPress and Pelican site.

Optimizing my SEO with fast load times has given me a big bump on the Google SERP rankings, almost all of my tutorials are now ranking on the first or second page. The only negative thing about that is that my tutorials are niche topics so the audience will always be small for them. Still, it’s nice to see the fruits of my labor paying off.

Fast forward to the beginning of 2021, I started writing more about passive income topics there as a way to diversify my content and attract a diverse readership.

When I added Adsense back in (my guess here), Google saw a site that started in 2007 with newly SEO optimized posts and load times and went wild. It started to serve relevant ads and kept learning what makes people click on the ads.

I use Medium to generate traffic to my site by crossposting articles.

Granted Adsense was slow on the uptake for the first half of the month but I’m generating daily clicks and impression income. Right now it’s paying for my AWS Amplify hosting and that’s a BIG win in my book.

Medium Publishing & The Porn Apocalypse

What about Medium? I like Medium a lot and you can get a lot of notoriety there if you’re a good and entertaining writer. There are several writers that I follow that seem to make a living writing on Medium and kudos to them!

However, Medium feels like a single point of failure if you exclusively write and derive your main income from there. Why? Because you are at the whim of some publication you post to and your topics might not be all that interesting.

If you’ve seen what’s happening with the porn apocalypse (aka pornocalypse), a hosting platform like Medium can toss you and all your hard work off of it on a whim. For those that don’t know about this pornocalypse ( NSFW link), it’s where sites like Tumblr — who have hosted adult content for years — suddenly decide that it’s no longer a safe corporate thing to do and kick off adult content from their service.

Whether or not you do adult content, it’s always best to have your own hosted domain on the Internet. This way you can sell a product, service, or subscription without fear of being shut down. Of course, if you do something illegal then all bets are off, so don’t do anything illegal.

Or in the immortal words of Arnold Schwarzenegger, “kill me now!”

If you do have your own site then you have to think about attracting views to your articles or pages. You have to work on SEO (most modern CMS’s do that well) and build a ‘go to’ market strategy.

I use Medium to generate traffic to my site by crossposting articles. You can post your articles on social media and even buy Ads from Google to drive more traffic to your site. I know buying Ads from Google just feels ‘yucky’ but coupled with a good strategy it can do wonders.

It reminds me a lot of my effort vs time curve.

Remember, all of us are just some person or company screaming in the void of the Internet something like “I’m over here! I got something to say!” Or in the immortal words of Arnold Schwarzenegger, “kill me now!”

Don’t Monetize Your Hobby

There’s a reason why I bring up the ‘go to’ market strategy, it’s because of these two Reddit posts I recently read. They both got me thinking long a hard about what the hell I’m doing with my blogs.

The first Reddit post is about a writer who is giving up on self-publishing.

I can sympathize with him, when you self-publish you perform every single task that a traditional publisher would do for you. You would just focus on writing a great novel and they would market it, distribute it, book your ‘meet and greets,’ etc. Doing all this in addition to writing can be overwhelming.

The other post supports the idea that you shouldn’t monetize your hobby, to which I partly agree.

The idea is with the right cover, right story, and right price point you should generate $50,000 a year from your work.

I’m sure we heard that saying that if you find what you love and earn a living at it, you’ll never have to work a day in your life.

How romantic!

How full of shit that is.

If you’ve got a fun side hustle or hobby it might be a bad idea to try to turn it into a full-time job. There’s nothing wrong with having fun, making a few bucks (or not) from it, and doing it for the rest of your life.

For me, it’s baking sourdough bread. While I find it romantic to have a small bakery making sourdough bread, it’s NOT something I want to make a living at.

20BooksTo50K Strategy

There’s nothing wrong with doing a lot of things for fun and if you can learn from it. For example, I recently found this 20BooksTo50K Facebook group. That group is filled with writers that are writing a minimum of 20 books to be published on Kindle or Kindle Unlimited.

The idea is with the right cover, right story, and right price point you should generate $50,000 a year from your work.

Because blogging was new and no one wanted to pay for it.

That group is filled with advice on how to do all the stuff the original Reddit poster complained about. Yes, you have to bust your butt but the sales from their books sure sound like passive income to me.

It reminds me a lot of my effort vs time curve.

You have to write a novel or novella, then design and make a cover, then market it. Once the writing, cover design, and distribution is out of the way, you can focus on small amounts of marketing to keep your novel in the mind space of people.

This is part of the reason I restarted my ThomasOtt.IO blog again. One reason was to see if I could migrate to the Ghost CMS and the other is I needed a new place for my writings. It’s another watering hole for me to lament about things, analyze data, and play the passive income game.

Ghost has some really nice features. For example, I can create a members-only and a paid-members-only section. I experimented with that setup years ago on Neural Market Trends but it failed, but it still remains in my mind space. Maybe this time I could get it to work.

Why did it fail? Because blogging was new back then and no one wanted to pay for it. Now, people will pay for things if the price point is right AND you have something of value to share.

There are ways to make a living by blogging and building content. Medium has shown us the way with subscriptions and I like that method a lot. The trick is to build up a big enough following to get them to come and pay a monthly subscription at the right price point.

Medium charges $50 per year, which comes out to $4.17 per month. I could make a subscription site for $3.99 a month but my problem would be what to share with you all?

Or, I could try the 20BooksTo50K route and write my stories, which I enjoy a lot. I certainly don’t mind doing the book cover designs, the marketing, the analytics (that’s right up my alley), and the SEO. That’s almost second nature to me now.

For example, I didn’t know that Mystery and Fantasy books are more popular than Young Adult and Erotic books. I’m not sure which genre would be harder to break into from a self-publishing aspect but this data shows some interesting trends.

My research phase will continue for the next several months and the data will direct me where to go. In the meantime, I’ll continue to write what I like. I hope you do too.

Migrate away from WordPress to Hugo

I’m no stranger to trying different CMS’s to see which one works best in terms of functionality, speed, and ease of SEO use. Over time – and many mistakes later – I’ve found that Hugo is the best for all three of those criteria. It’s very functional, fast to build, and easy to tweak for SEO. When you couple that together with the AWS backbone, you get a fast loading website where all the static builds happen automatically as soon as you update your Github repository. I’m writing this post on how I migrated away from WordPress to Hugo and used AWS Amplify to host my blog & website.

Introduction – WordPress Years

I started this blog on WordPress and then transferred it to Jekyll, then back to WordPress, and so on. You can read about my ‘passion’ for trying different CMS platforms by checking out my CMS tag, but the reality is that WordPress is really easy for newbies to get up and running quickly. Many popular blogs and sites run WordPress reliably and manage all their content with it. This is why it’s super sticky and it has some great themes to use out of the box. It’s when you want to ‘pimp’ or optimize your WordPress installation where you start running into problems.

For example, it relies on a database backend, and every time you visit the site it dynamically serves up the page. This is all good until you realize that you pay a loading time penalty for it. It can take a while. Plus you have to worry about malicious code injections from hackers that spam your site for the latest penis enhancement drug or Bitcoin scam. These code injections were the main impetus for me to start looking to migrate to a static blog generator.

If you want to do any SEO with WordPress you have to know PHP. I guess that’s ok but I never really cared much for PHP and found it boring. If you’re in that same boat, you’re going to have to use a plugin like Yoast. That’s great until you realize you have to start paying for it to get any benefit out of it. Do you need to modify your footer uniquely? You need to use a plugin. Want to back up your entire website? You have to use another plugin (and pay usually). Before you know it, you have like 10 or more plugins that are costing you money on top of what you pay for hosting.

All these plugins you need end up slowing your site down a lot too, which affects your SEO in a really big way. At the end of the day, you’re out of money and have a slow site. Sure it might look pretty but if you want to grow organic traffic you have to focus on great and valuable content that loads fast, is SEO optimized, costs a hell of a lot less, and makes YOUR life easy.

Hugo and AWS Amplify (and Github)

Let me be the first to warn you. Running Hugo on AWS Amplify (and Github) is not as easy as running WordPress with plugins. If you’re happy with your WordPress infrastructure and process, then just close your browser now and move on. However, if you want to have fine-grained control over your blog/website and feel comfortable doing a bit of ‘hacking,’ then please continue reading.

I just settled on using Hugo to make running my blog easier. I no longer have to deal with plugins and pay for them. Of course, this forces me to be more hands-on with how I want to maximize SEO, how I want to leverage the Indie Web, and even Web Monetization. I also have to do manual backups now instead of using Vaultpress, but with Github, that’s become so easy that it happens on autopilot.

Writing content for a Hugo-generated site is like a dream. The build times are fast, it has great image processing ability, and I can check out how my site will look before I deploy it if I run the development server. So I can do a lot of ‘offline things’ and know that once I push my update to my Github repo, AWS will rebuild and deploy my site automatically.

Of course, I have to pay for the usage of AWS Amplify but it will be A LOT cheaper than using the VPS at Dreamhost ($16/month). Sorry, Dreamhost but I think you’re not getting renewed this year.

Install Hugo

First things first. The move will take some time and if you follow these steps, should go off without a problem. However to prevent any mishaps we’re going to start with setting up a ‘staging’ environment. The goal is to build a clone of your existing WordPress site with Hugo and AWS Amplify so that when it’s all up and running you just ‘cut over’ to it.

Follow these steps:

  1. Download Hugo to your local machine and then read the quickstart introduction on how to build a site
  2. Grab a theme and install it for your Hugo installation
  3. Configure the config.toml file to your liking, especially on how your permalink structure is
  4. Startup your Hugo dev server using hugo server and then navigate to http://localhost:1313

You should see an empty local website running at that web address.

One of the biggest mistakes I made was NOT reading up on the permalink structure setting in the config.toml. I created hours of work for myself in creating canonical aliases for posts that I reorganized. So pay close attention to the configuration of permalinks in your config.toml file.

Sign up for an AWS account

The next step is easy, sign up for an AWS account here. We’ll get back to this later!

Sign up for a Github Account

This step is also easy, you’ll need to sign up for a Github account. You could use Gitlab, Bitbucket, and others, but I use Github for personal and work projects. It’s really easy to use for backing up your code and files BUT a little harder to use. You will need to get familiar with Git and I plan on writing a Git tutorial in the future.

How to Migrate Posts from WordPress to Hugo

Now we get into the fun part, the porting of your WordPress posts and pages to your local Hugo installation! First, you’ll need to extract your WordPress posts from your database. WordPress has a generic Export function but that’s not going to map the WordPress fields to the Hugo fields out of the box. What you will need is to use a Hugo Importer from WordPress.

If the WordPress exporter doesn’t work, try using WordPress to Jekyll exporter plugin AND then the Jekyll to Hugo importer.

Once you have your files, open one up to see if the YAML front end is correctly formatted. The YAML front end is where all the fine-grained control happens for your Hugo-powered website. It’s where you can control all aspects of your SEO metadata as well as options for Table of Contents, Keywords, Categories, Slugs (permalinks), titles, drafts, aliases, etc.

It should look something like this:

title: Post Title
date: 2020-07-21
slug: post-title  << this builds to /content-directory-post-is-in/post-title/index.html
- Word1
- Word2
- Word1
- Word2

The key is to have all your post metadata in between the ---‘s at the top of the post. Note, this will be a markdown file with a .md extension. If you’re not familiar with markdown, you can read up on it here. It takes a moment to get used to markdown but once you do you never have to worry about formatting what you write in the ‘frontend’, markdown handles all that for you when your post gets translated into HTML.

Take all your exported posts to move them to your local instance of Hugo and put them in the /content/posts/ directory. Note, Hugo loves content organization and you should think about if you want to use content folders or not. You can read up on content organization here.

Hugo’s Development Server

Once the posts are in the /content/posts/ directory, you should see Hugo rebuilding the site in your terminal.

It will then generate the website as a live preview. Any editing that’s saved will automatically rebuild and you can see your results in real-time. The great part about this is the debugging part. Since Hugo is written in Go, it doesn’t ‘suffer fools’ and will break if it’s not perfect. This is good and bad, it’s good because it will tell you exactly what went wrong. It’s bad because you need to fix that mistake first before you can build your website in production.

I use this development server ALL the time. It lets me confirm if what I’m about to push to Github is what I want the world to see. This is where I test new partial templates, new shortcodes, and try new Hugo features. The development server will become your best friend and you can read up on some more of its functionality here.

Use Github to backup your site

I use Github for my code and project-related stuff. The concept of Git is just brilliant. It’s version control, process control, and backup all rolled into one. Granted, Github is an extra step in my regular workflow but it makes sure that my blog remains consistent over time. No weird hiccups unless I screw up! If I screw up, Git has a ‘rollback feature’ so I can undo my mistake quickly. The older I get the more I realize that Git is the true power here, especially if you’re in a heavy development environment.

You’re not going to take your entire local installation of Hugo plus your content and sync them with a Github repository. The terminology you will hear is that you’re going to ‘push your code to a remote repo.’ Github is the remote repository where you’re going to push your content and files too.

You can use the git command line but I like to use Github Desktop. Makes things easy!

  1. First, you’re going to create local repository in Github Desktop
  2. You’re going to select the folder of your entire Hugo website, I name my folder and when I create a local repo, it automatically names the remote repo the same name.
  3. Then you click ‘Publish’ and it will create the remote repo on Github. Note: your site is NOT backed up yet
  4. To back up the site in your remote repo you will need to create a commit message and then push it
  5. Once you push it to your Github repo, it should populate

Make sure that your repository is marked as private, this way no one can see your posts and stuff.


How to Put Hugo into Production with AWS Amplify

Once I had my blog backed up on Github I just followed the AWS Amplify instructions and generated the site successfully!

There was one big tweak that I made. AWS Amplify uses Hugo version 0.55 and that’s not compatible with many of the better themes. I had to update the version of Hugo the build was using to 0.74.2. It’s not hard, all I had to do was go to the Build Settings and follow these instructions.

End Notes

I migrated to AWS Amplify for selfish reasons. I was about to renew my VPS at DreamHost for over $200 and thought that it was a tad bit high. Using AWS Amplify I expect to pay around $5 a month based on my past traffic, if it gets more active then I’ll pay more but that’s ok.

The added benefit to migrating here is that I get a wicked fast load time on the AWS backbone. I get like 1 second mobile device load times and millisecond desktop device load times. Wowsers!


I realize that doing this migration is tricky for many non-hacker types of people, but you can learn if you want to. One of the things we didn’t go over in this post is using a custom domain with AWS Amplify. That was a bit tricking to set up and I’ll write another post on that shortly. Still, these steps should get you to a mirrored site of your WordPress blog on AWS Amplify.

Coil & Web Monetization in Hugo

I was on Twitter one day and I came across an announcement that HackerNoon had joined the micropayment world and gotten an infusion of cash from That’s a cool $1 million to implement a new method of web monetization.

I think the current web monetization model is broken and power is concentrated into too many corporate silos. Granted is one of those corporate silos too but they’re building their model on a proposed web monetization W3C standard, which is a great first start to ‘leveling’ the playing field for content creators.

Make Content – Get Screwed Over by the Big Dawgs

For years content creators, artists, writers, whoever, struggled with being at the mercy of Google Adsense, YouTube, or Medium to earn some money for their content. Their content was siloed behind those corporate systems and if terms changed or they didn’t like your content, it was booted or hidden. They had the power to censor or not, based on whatever corporate policy they decide.

For example, YouTube changed how Creators were able to earn money from ads by making you have a minimum subscriber base of 2,000 people and something like 4,000 view hours per year. This killed the income for many small-time content creators that were actually supplementing their incomes or just making a plain living from it.

I’ve been around the blogosphere since about 2004 but not in an organized manner since 2007 with this blog, so I’ve seen a thing or two. It all started going downhill once Google killed off its Google Reader. The blogosphere fractured and in one fell swoop pushed people to other social media platforms and away from blogs.

Sure there are other RSS readers out there but Google intended to push people from syndicating their content to syndicating content on their platform.

Why would they do this? It’s all about the data, your data. Sure it’s all free but that means YOU are the product. In my opinion, Facebook is even worse when you see how they handle privacy over the years.

So you can see that whoever has the most data, the more they can make money off you. The more they can sell to marketers or politicians, the more they divine the patterns and ‘next best action’ you’re going to take.

Over time, your content was being packaged up on someone else’s platform and your data (which you gave them freely when you accepted their TOS) was being sold to marketers.

Rise of the Indie Web

I’m a big fan of the Indie Web since I discovered it. It starts to pull back YOUR content away from these big silos. I dare to dream that it will reinvigorate a new Blogosphere renaissance but that remains to be seen if it will happen or not.

Taking back your content and your work is really important for Creators. It’s who you are and if you choose you, you should be able to charge for access. That’s what a lot of Creators have been doing via Patreons or toll-gating their entire site. I too did try this many years ago. I experimented with ‘member only’ content here but it turned out to be too hard to manage and no one cared.

While I’m against the idea of ‘toll-gating’ your entire content, I don’t have anything against providing ‘bonus’ content under some ‘pay as you go’ model. The regular content is free and open-source while some stuff is there for readers will pay a few pennies to read it.

Monetizing viewing time

I will be the first to admit that I’ve used Google Ads on this site. At one point I was making like $100 a month at it. It was great, and if I lived in a country where the GDP was low, $100 could be the difference between food and shelter or starving and freezing. So Google Ads were good at one time.

The money was nothing to sneeze at but then the Internet went another way. Google Ads became too onerous. They slow your site down and clutter up how nice your site looks. I’ve since abandoned them for good but there might be one or two bits of code hiding somewhere, like a ghost in the machine.

The thing with Google Ads is that they require you to click on them which is annoying in itself. Firefox and other browsers figured out a way to hide Google Ads when the page loads and that’s led Google to stop this on their Chrome browser. After all, Google Ads is a HUGE revenue generator and it can only work based on YOUR content. See how this all ties back to how you’re getting screwed over by the big dawgs?

There has to be a better way to monetize your content without being obtrusive and fair. Instead of a click-thru model, a viewer time model was adopted. That’s where Coil and the Web monetization system comes in.

Now Coil is the first mover and they remind me a lot of Medium BUT you don’t have to use their platform. You pay Coil $5 a month to view anything that’s subscriber content (locked by the web monetization protocol) and the longer people read or watch your videos, the more micropayments you get. If your content is any good, then people will spend time on it. If it’s full of fluff, like a lot of stuff out there today, then you won’t earn any money. In a sense, it’s going to force you to make great content again.

You need to install the browser extension which picks up the web monetization protocol on your site and then starts streaming money to your account when someone views your content.

The cool thing is that this works with the interledger system, a type of blockchain where payments and transactions are recorded and money USD is deposited to your account. This happens in near-real time and sure as hell beats waiting for someone to click on an Ad on your site.

But you’re stuck on Coil?

Yes, this is true for the time being. Coil is pretty darn new but they’re being adopted like crazy. Since the Interledger system and the Webmonetization protocol is open (not yet adopted by the W3C), it will make sense that other providers will emerge in time.

Web Monetization with Hugo

Now we come to the bonus part of this post which will be locked for non Coil subscribers. If you want to know how I implemented it for this site, which runs on Hugo then just follow the link below. Note, this isn’t perfect but it’s a start.

Coil subscribers will see the bonus video content below.

And that’s it. It’s super simple and I plan on making this more elegant over the next few months. You can download the sample coil.html and exclusive.html files. Just remember to call the partial template in your header file. Thanks so much for watching and supporting me.

End Notes

In the long run, I don’t know if I’ll be toll-gating anything. I’ll probably continue writing content in a completely open manner but I’ll have the web monetization code running in the background. This means if you use Coil and come to my site, I’ll get a few pennies. If you don’t use Coil, well then thank you for reading! As always, I appreciate you coming by here to support and read my site.

Custom Reports in Google Analytics

Recently I imported some custom reports in Google Analytics that I found online. They have been eye opening indeed!  My most favorite ones are the Profit Index and Time of Day custom reports.

Profit Index

Google Analytics assigns a page value to each and every page you have, provided you use Goals. Without using Goals, this won’t work! In my previous post, I wrote about how I started using Goals to see how readers interacted with my site. I arbitrarily assigned a value of $1 each time the reader clicked on a tag or stayed on a post for more than 5 minutes.

I began searching through Google to see if could find a way to lower my bounce rates because I switched back to WordPress (that’s for another post altogether).  As soon as I switched back, I noticed an increase in bounce rates and that bothered me.

I found out that bounce rates are really just people going to one page (usually my home page) and then dropping off. The majority of the visitors have no desire or incentive to continue through the site. The ones that do usually end up on my Tutorial or Archive page.

In my sleuthing I found something called the Profit Index. This is a fantastic report you can build for you Google Analytics as a custom report. The Profit Index can show you what posts have a high value but have the highest bounce rates! You can also see which pages have the highest Adsense revenue vs bounce rates. Once you know where the problem is, you can work to fix it.


For the most part all my posts are incredibly sticky and OK page value vs bounce rate, but I never dreamed that the Stock Trend Following post has such a high drop off rate.

Time of Day

This custom report is a fun one for me. It let’s me look at what time of day readers come to my site, what day the come to my site, and most importantly what time AND day they come to my site. Originally written by Dan Barker, it’s very enlightening for me!


Over the course of the last 30 days, my most popular visit days have been Thursdays at 11AM, 1PM, and 5PM. The numbers change when I look at them from across the year but Thursday at 11AM appears to be the winner. Is it any wonder why I scheduled this post for today and at this time?

Note: Day 0 is Sunday.

Get Custom Reports in Google Analytics

Getting custom reports in Google Analytics is pretty easy if the creator has shared them. With the exception of the Profit Index, the Time of Day report is shareable and easy to install in your Google Analytics dashboard. You can easily rebuild the Profit Index report by following the instructions on the their website, it’s pretty easy but eye opening!

If you want more reports, just visit this page here. They have some great free ones!


Rebuilding a Blog – Part 4

In this post I wanted to review some goals I created in Google Analytics. These goals were created to see how people are interacting with my site.


I created a total of 7 goals:

The chart shows some interesting results. I have any amazing amount of sticky time and people read more than 1 post. This makes me think I should abandon Google Ads and sell some space on my own.

On top of this, there’s some activity in the use of the search box and people do click on the Tutorial tags. No one cares about the SEO, and RSS.


I like looking at Google Alerts. It’s nice to see that all things are green and there is some activity in new users and page sessions.

Overall, things are improving here but the lack of tag click – except the Tutorials tag – leads me to guess that:

  1. People don’t care about those tags, or
  2. People don’t know enough about navigating to those tags.

Next Steps

I think I will make some small navigation changes to allow users to search via tags OR via the search box. I’ll examine my top read content and determine which articles need to be refreshed” in my next post.

This post on rebuilding a blog is continuation of my previous post.

Rebuilding a Blog – Part 2

This is my second post in rebuiling a blog series. This time I check out where my readers are coming from. It’s not suprising that my readers come from all over the world. The map below are where they came from in the first half of 2016. The majority of them came from the USA, followed by Europe, and then Asia. This does not come as a surprise and makes complete sense because the users were searching for RapidMiner Tutorials.

Neural Market Trends Reader LocationsNeural Market Trends Reader Locations

As a continuation to my previous post, I’m still sleuthing through my Google Analytics data trying to understand what is happening and why. Mostly I want to figure out a strategy so I can succeed in my roll of film quest” but if yesterday’s post was an indicator, my quest is off to a rough start!

Mobile Traffic

I got curious as I dug through my Google Analytics data. How are my readers interacting with my site? Is it mobile or is it desktop. Once again, the results aren’t surprising. 11.88% visit my site from mobile devices but the overwhelming majority (88.12%) is a desktop or tablet.

Neural Market Trends Mobile User MapNeural Market Trends Mobile User Map

Neural Market Trends Mobile SessionsNeural Market Trends Mobile Sessions

Smartphones are becoming ubiquitous and if my kids and nephews are an indicator, the desktop will go away one day. With technologies like AirDrop and Chromecast, do we really need a desktop to consume content? In the future, probably not. I think that mobile friendly blogging is a must in the near future here so this as part of my blog rebuilding, I will focus on making this site more pro-mobile.”

New vs Returning Readers

The following chart is truly interesting. The rate of returning mobile users is the same as the rate of returning desktop/tablet users.

Neural Market Trends New vs Returning Users with Mobile Pie ChartNeural Market Trends New vs Returning Users with Mobile Pie Chart

SEO Tutorials

I’m in the process of merging and updating old posts with fresh insights and content. I dropped the AI part because what it really means is automation in this sense. Building blog traffic is always about writing great content and observing what Google’s AI does to get you to the top of the search results

AI is just an algorithm that’s built on top of the existing data you have. In a sense, you fit an algorithm, to the data instead of fitting the data to the algorithm.

What that means for SEO and your blog traffic is this. You write content and Google and other search engines index it. Based on your blog’s metadata and content it will spit out a ranking in the Search Engine Results Page (SERP). If people find your content valuable and visit/link to it, Google then adjusts your ranking accordingly. So it’s a continuous learning feedback loop. Posting valuable content that’s shared and linked is what gets you to the top of the results page.

This, of course, has a lot of great benefits. If you’re running a blog to make money or a business, then this can generate lots of revenue for you. It could make you famous or change your life (which it did mine), but maintaining a blog is hard work. Google periodically changes its algorithm to thwart spammers, spammers, and blackhat SEO’ers from cluttering up the SERP with junk.

No Black Hat SEO

This goes without saying but doesn’t take the easy way out by buying backlinks or fake traffic, Google will find out one day and you’re site will drop in the rankings. So don’t think of trying any Black Hat SEO tricks. There are tons of places that offer 200 backlinks for $5 or 10,000 unique visitors for $25. They’re really shady and if it’s too good to be true, don’t do it. If Google penalizes you it will take a lot of time and effort to get out of the penalty box.

Write Great Content

It all comes down to this, writing great content. If you want a serious blog that attracts loyal readers and has ‘staying’ power, you have to write detailed and informative content. This is sometimes called evergreen content, meaning that it’s still applicable today even if you wrote it 10 years ago. Your posts need to be over 300 words minimum because anything less will be penalized by Google as just a nonserious blog, at least that’s been my experience. The norm for high-ranking posts on a given topic is somewhere between 2,000 and 5,000 words per post. Once you cross 5,000 you’re in the mini-novel area and only a very few bloggers get to 10,000 words. Those that do consistently rank on the first page of Google.

Imagine writing 10,000 words?

Use Google Analytics

You can use Google Analytics or some other script to monitor your site’s traffic. From that, you can gather a lot of clues on how people use your site. For example, I found that:

  • Tuesday’s are my busiest days.
  • My most popular topics are RapidMiner and Python tutorials
  • My SEO traffic started dropping in January 2020 hitting a low point in April 2020. Now it’s trending back to December 2019 levels

The moral of this story is, you can’t manage anything if you don’t measure it. Measuring is the first way for you to take a hard data approach to fix what’s wrong and build your traffic back up again.

Use Google Adwords

I extract great ranking keyword information from a Google Adwords data dump that I put into an Excel Pivot Chart report. There’s no AI magic behind this and you could do this quite easily yourself. Building this report is a great way to see keyword trends in Google and if your posts and content ‘align’ with it and your readership.

You can edit your content to switch out some words here and there without diluting your content. For example, if you run a travel blog and the word ‘vacation’ has more meaning than ‘trip,’ you should use that word instead of ‘trip’ in your content.

Over time you’ll see things happening on your site you can start asking questions like, “what type of content drives the most traffic, and on what days?” Building an Excel Pivot Table report won’t be able to answer that question but it can answer the question, “what’s my busiest day”, “what’s my optimal post per day quantity”, and “what’s my most popular category.”

Excel Pivot Table

  1. Gather Data. If you use Google Adwords, or another site statistic monitor, download your visitor data. You can choose what ever time frame you like, a good rule of thumb is about 2 months worth of data. You’ll need to get the number of hits and the date of the hits. Next, add this information to an Excel spreadsheet and add the following columns: Weekday, Number of Posts, and Category.
  2. Transform the Data

    Go back between the dates of your data download and fill in the columns for Weekday, make sure to match the date with the right weekday. Next, fill in the Number of Posts column with, you guessed it, the number of posts you did that day.

  3. Create a Category. When you get to the step of data mining your traffic, you’ll want to know what content drives your traffic and on what days. Adding a key of categories will help you accomplish that. I entered the number “1” if the post that day was about Forex, “2” if it was for stocks, etc. You get the point. If you posted more than one post on any given day and it was about more than one topic, you can add a second or third category column. You get as detailed as you want, its really up to you.
  4. Build the Excel Pivot Table. Once you have all your information, you can build the table. Go to Data > Pivot Table and follow the instructions. You can place the table in your existing worksheet or a new one (I usually go for a new worksheet). Select your data range to include the Weekday, # of Visitors, Posts Per Day, and Category.
  5. Once you did that you’ll see your new worksheet with a little floating menu system. You can drag and drop the fields into your new table. Drag the # of Visitors into the Drop Data Items area, drag the Weekday field into the Drop Column Fields area, drag Posts per Day to the Drop Row Fields area, and lastly drag the Category field to the Drop Page Fields area.

  6. Format the Table. Use Excel’s auto format function in the Pivot Table wizard to select the style of table you’d like to see. When your all done, your spreadsheet should look something like this below. Click on the image to download the actual Excel spreadsheet.

Small SEO Tools

There are a lot of free SEO tools out there that you can use too to do some analysis of your website. The best one is called Small SEO Tools. It’s not an integrated site like Moz or some other SEO checkup platform, but it can get the job done.

Tweak your Robots.txt file

In an effort to help search engines index my site better, I installed a robots.txt file. The reason why I did this will become clear in a minute. When you run a blog, search engines will parse your site and index it with a lot of duplicate data and posts. Duplicate data and posts can have a negative effect whereas the spider might think that your blog is a spam blog (splog). In the long run, this can cause lower rankings.

Why the spiders think that way is pretty logical, at least how I think they work! If you write a blog post, and it’s current, it will be on your main index page (1 copy). At least two more copies will reside in your category and archive sections. Essentially you’ll have three copies of the same post if the spider parses your site that day!

As soon as your post drops off the front page it will end up in your category and archive sections; you’ll still have two copies of the same post! The best solution is to tell the spider NOT to index one of those sections! It’s that simple!

I found a version of an optimized WordPress robots.txt file and discussion here. I then modified it to my needs and installed it in the root directory. So far it seems to be working but only time will tell how effective it will be. From what I’ve read, using a robots.txt file is a long-running experiment and you have to tweak it over time to maximize its effectiveness.

Switching Your CMS HURTS YOU!

It’s no secret that I’ve switched CMS’s so many times that it makes my head and my reader’s heads spin.  I’ve switched CMS’s many times as I struggled with WordPress, Expression Engine, Text Pattern, and Blot. Every time I did that I lost SEO.

I made a big migration to Jekyll and loved the static type of CMS’s ever since. Fast forward to today and I’ve pretty much settled on Pelican. Why? It’s a static CMS and its python powered. It does a great job of streamlining the YAML front end of a post and it’s fast to regenerate. The best part? I use rsync to upload new posts to my server and I use the S3 upload to make a backup of my site on Amazon. 

Yet, there’s ONE big problem that I’ve noticed. 100’s of my inbound links are all now dead and that messes with my SEO ranking. 

The solution is to create RewriteRules in my .htaccess file and here are some friendly tips on how to do it.

Moving away from WordPress

The biggest inbound link killer on my WordPress site was when I switched my permalink slug.  I went from a classic format of  ‘/year/month/day/my-post’ to the simpler one ‘/my-post.’  WordPress handles this change if you do it in WordPress. If you migrate out of WordPress, well all hell will break loose.

The simple fix is to add the following regular expression to your .htaccess file:

RewriteRule /[0-9] /[0-9] /[0-9] /(.*) /$1 [L,R=301] 

What this does is select any /year/month/day/my-post formatted URL and returns /my-post!  Awesome, but what about those pesky /_wp-content/uploads directory?  There are tons of images I put into my blog posts and now all those inserts don’t work.

The solution for me was to download the /wp-content folder and rename the folder as /_wp-content. I did this because I was using Blot.Im at the time and if I didn’t add the _, it would generate 100’s of images as blog posts.

RewriteRule /wp-content/uploads/(.*) /_wp-content/uploads/$1 [L,R=301] 

Of course, you don’t have to do this. You can move the /wp-content folder to its final destination and have all the links resolved. 

Moving away from Expression Engine

Oh, Expression Engine (EE) how I love and loathe thee. EE is a serious CMS. You can do a lot with it if you spend the time to architect it out. It’s powerful but complex. It’s too powerful for running a small blog like mine, but I liked it when I used it. 

The thing with EE is that it creates /blog/entry/my-post permalinks. the /blog/ part is the name of the channel and it could be anything you like. It could be /radio/entry/my-post or /store/entry/my-post. For the extended time my blog ran EE, several inbound links went to /blog/entry/my-post.

To solve this problem I created the following rule:

RewriteRule /blog/entry/(.*) /$1 [L,R=301] 

Now EE also had a URL for each category and that created havoc too. WordPress uses this method too and since I use Pelican now, the categories have become tags, or rather ‘tag.’

The solution was this:

RewriteRule /category/(.*) /tag/$1.html [L,R=301] 

Moving away from Blot.Im

Blot.Im is a favorite of mine. It’s simple to use and it’s making improvements with every update. Still, it’s not as feature-rich enough for my taste. I’m sure one day it will be. 

Blot uses ‘tagged’ instead of ‘tags’ and to solution to that is doing:

RewriteRule /tagged/(.*) /tag/$1.html [L,R=301] 

When Blogging first came out no one knew how the URL of your post would affect SEO. Hell, SEO wasn’t even a thing back then. Over time that’s changed and it’s become a big thing to think about as you build your content. I wrote about evergreen content before and you should always write content that will remain fresh for years to play the long SEO game. That doesn’t mean you can’t update it, no! You should frequently update your content with new and relevant information as it’s warranted, but let’s focus on the content and the url (permalink) first.

I write a lot of tutorials and if I want to start ranking for them I should think of the main keyword or keywords that describe my tutorials page. For example, I’ve written a lot of tutorials on RapidMiner and Python. So my main keywords will be ‘rapidminer’ and ‘tutorials.’ I’ve built my content page with loads of tutorials on one page and set the permalink to rapidminer-tutorials. Why? When someone goes to Google and they want to serach for RapidMiner Tutorials, they’ll write into the search box “rapidminer tutorials.” If my website ranks, then my permalink will have a search query in it! This tends to make the searcher click on your site!

Combining a well-thought-out permalink with evergreen content will have long-term benefits for your SEO!

Use Tags or Categories

I use Tags in my posts but I don’t choose them at random. I have a methodical process to create and use them because I think of them as trailblazing road signs for my readers. The theme I use autogenerates ‘Tag Pages’ and lists every page with an associated tag. If I make too many tags then I generate too many pages with short content. That gives me an SEO strikeout.

Before I tag any post I look at my list of predefined tags that I use. My list is pretty narrow but uses tags like:

  • SEO Strategy
  • Tutorials
  • RapidMiner
  • Python

Those tags are pretty powerful keywords and if there’s a page that lists all content related to ‘Python’ then I get a new page for Google to Index with the word [python](/tags/python/) in the Permalink (see my previous discussion above)!

Now, you don’t have to use tags but you can use categories so it’s really up to you and your site. Just make sure you have a handy way to change your tags or categories if you have to. It’s really hard to manually update each post with a new tag or category if you haven’t thought it through!

End Notes

This post is not done, I have way more to write about this topic because it’s always changing. If you liked this post update, please share it or drop me a comment on Twitter.

%d bloggers like this: