I started blogging quite recently. For me, it's connected to a bigger project ongoing so I keep doing thorough research on the topic. In the previous article I shared my analysis on Which hosting provider to choose. Here I will share my SEO discoveries illustrated with Hashnode examples. Most of the information is relative to the websites in general and search engines in general, specifics will be added as well. Let's go!
How does the search work? Crawlers get info from internet pages and search for the links in them, follow links, discover new websites, get their page data, and index it for keywords. When you search - the search engine looks up the index -> done.
To get any website searchable asap:
- Owner (you or your blog hosting provider) should give the crawler a hint to fetch the page
- Crawler processes the page, determines if it's worth indexing (is it duplicate? is it mobile friendly? is it redirect? etc)
- Crawler indexes page for keywords and determines its rank (how much user can trust a website? is it well-known?)
In simple terms that's it - all the work goes around these stages. So how do we get most of our blog?
1. Pick the right topics / keywords / tags
It's quite obvious that the internet is full of information and to be searchable and popular you have such options:
- Target unique/new topics: more audience percentage from the probably smaller audience, can target a more specific group of people
- Target the most popular topics: get less percentage from a bigger and broader audience
You can use https://trends.google.com/ to help you with that:
If your blog is not related to any product you can relax and pick whatever topic you are more comfortable with, as the quality of content matters as well. If it`s related to some specific product, you can target a related audience that might be interested in it.
People search for the same topic differently. You can try the search yourself and see how relevant results are for you in that case
In the same Google Trends tool you have a dedicated panel to investigate:
As well as Google Search suggestions:
To get even more information, you can use Keyword Planner from Google. It gives better information on how much users search typically for some keyword, as well as other insights.
Tags can be used on your personal domain/website but here we'll look at them as tools that help you rank inside the blogging platform.
If you are posting on some blogging platform - investigate the tags and their impact. The tags should be:
- Relative to your material
On dev.to you cannot see the number of subscribers to a tag, but you can estimate how much relative attention posts get and see the number of how many posts are in general.
On Hashnode you have more information allowing you to estimate attention to your post as
number of users / number of posts:
Not all tags are visible on UI - check them using URLs specific to platform, for example:
2. Ensure your meta tags are optimal
Whenever using your own solution or blogging platform, take a look what are the meta tags on the resulting blog page. They look like this in browser's developer tools
I will mention only the 3 most popular ones as they are usually controllable on most blog platforms:
- title - title of the page in search, should be < 60 chars.
- description - description of the page in search, should be < 160 chars
- canonical - links another page as original version (used in cross-posting), can be ignored by crawler in some cases, for example when the page is too different.
On Hashnode canonical is controlled in the post's settings. The other 2 are the post title and the first paragraph after it. It can be a subtitle, if there is no subtitle - the first paragraph of your post.
Those 2 are important as they will be indexed by google and shown in search results.
If you are just making posts on some blog platform under their own domain - you can skip to the Should I cross-post? . If you are hosting your own blog or using a platform allowing custom domain, read next.
3. Use google search console, bing webmasters (own domain)
In case you have your own domain - you get abilities to see how the website appears on the search and impact that. In another case, you have to rely on a blogging platform to provide you with similar info.
So, to control how your website appears in search go visit:
Google Search Console
After visiting the tool you will be provided with several ways of confirming ownership, either for the whole domain or subdomains. I recommend registering here first as Bing has an import tool to get ownership info from Google, so you proceed faster
This is how the menu will look like. When you just start most of the parts will have no data, some sections lag 1-2 days usually to be accumulated. I won't dive deep into that tool, will just make a short overview of the most important parts:
- Inspect URL - this is your tool to get the freshest information (from day 0) on any URL in your domain, you can see if it was crawled, if it was indexed, what were the issues with that, request indexing, see if the page was treated as a duplicate.
- Performance - accumulated info on all your pages, see which appear on search, which is not. Also the search terms, clicks, etc. Lags 2 days
- Coverage - accumulated info on how many pages are there in the index and how many are excluded. Lags 2 days
- Sitemap - though, google can detect sitemap itself, better inject here sitemap if you have one. (Hashnode is providing you with a link)
- Links - should show who is referring to your page, internal/external links. Lags a lot.
The tool is quite similar to google's - I won't take your time describing it. After importing info from google console you can do similar actions there, but there are some differences:
- Bing enforces more SEO tips into rules for a page to get indexed. The page might get indexed, but the more issues it has - the less is the chance.
- too short / long header
- too short / long description
- multiple h1 tags
Bing is not accepting my Hashnode blog. For now, the last reason is 3rd one, which I cannot control. Hope Hashnode devs will fix that soon.
4. Use analytics
Where does the traffic come from? How long users stay on the site? What they do? You can answer these questions with analytics. The default choice would be Google Analytics, as it's free and works great. It has troubles with EU GDPR and is trying to fix the situation. When going big - you will need to properly handle cookie consent, ensure you comply with the government's law, etc. But that's the next level of the problem. Think of it when the time comes. In the very beginning, analytics will be super useful to understand how you can improve.
Depending on the solution you are using you can inject it into the site manually, or via Cloudflare App if you are proxying a website with it https://www.cloudflare.com/apps/google-analytics.
Hashnode is not proxiable through Cloudflare, it has its own CDN - but provides integration with Google Analytics. NOTE: currently Hashnode supports only Universal Analytics, while current version is GA4. Be sure to create this kind of property - it will be buried into advanced settings on property creation. Hope the devs will migrate to GA4 properties soon.
5. Growing domain trust
New domains need time to get noticed and rise. Multiple factors are impacting this like:
- Quantity of links to the domain, trust/quality of links to the domain
- Keywords, content quantity/relevance
- Offline usage of brand/domain name, mentions of brand/domain in news/media/press
- Social sites shares
- Performance, mobile-friendliness
- Web traffic
You can try Ubersuggest extension to get a feel of that
Still, my domain comes up 4th with domain authority 1 - that's something to be happy about :)
So surely what you can do - is to share a link to your blog on social media, on other resources. That will help. Also, this gives a chance to focus on different keywords (for example using the title on the reddit post) and drive traffic from more search queries.
And this leads us to the next question - what about cross-posting?
6. Should I cross-post?
This question is debatable. I would appreciate everyone reading this section to share their experience and engage in the discussion.
First of all, when cross-posting, you should be aware that the same posts on different platforms will get different traction. As a content creator, you naturally want to distribute content to a broader audience. But like was already mentioned previously, new domains need time to earn trust. Thus when posting some new content on the fresh domain you risk being invisible to google. The same applies if you are using a blogging platform that is not so popular and you want to engage a bigger audience.
Should I let my post on another platform dominate?
Let's put arguments into the table (assuming your main platform is your own domain):
|Own domain for post||Popular dev platform for post|
|Result appear lower||Result might get higher position|
|Traffic from search is directed to your domain||Traffic from search partially directed to your domain via links|
|Traffic from platform partially directed to your domain (On Hashnode - fully)||Traffic from platform partially directed to your domain via links|
|Traffic sources visible from analytics and search console giving an opportunity to tune up the blog||No direct means to see analytics and optimize visibility of blog post|
As you might guess either approach might be better, you have to experiment. For unique topics where you have chances to get high in search, you should definitely focus on your own domain. If your post is buried deep and you cannot get it higher, another platform might do it better due to its domain trust and traffic.
> As I am investigating and due to Hashnode unique benefits I am sticking to my own domain. I want users to see my blog in search, and additionally corresponding posts on each platform via the platform's own means.
I want to focus on my blog. Can I post the same content somewhere and not break SEO?
Here comes the
canonical link meta tag. This functionality is present on most blogging platforms: hashnode, medium, devto, devdojo, etc.
For example, in medium it is buried in "Advanced" settings:
It basically tells the crawler which page should be treated as original and be displayed. If canonical is not set - then the oldest / most trusted page wins. You will see the result during the inspection in Google Search Console:
If two pages are different and you set canonical to one of them - they most likely will arrive both to the search.
If you don't set
canonical meta tag google most probably will exclude your own blog post from search. Consequences were described in Should I let my post on another platform dominate?
canonical is not guaranteed to protect your page. Recheck search results after your actions.
Here's what I tried and results (using
canonical in each case):
|Blogging platform used for repost|
|Devto||No 👎(Issues on Github)|
As of now (04.2021) I don't recommend reposting on devto
Does reposting give your website additional value?
canonical link give additional trust to your page? I haven't found guaranteed information on the internet, theoretically, should not. But linkining to your page - does.
For some reason (I guess because of some google algorithm or implementation) on blog platforms only their "tag" pages are giving links. Meaning - they won't last long, as the post will go down on those pages with time.
Be careful with changing titles of blog posts on blogging platforms
Ensure the URL slug stays the same. One time I made some changes to the Hashnode blog title and the slug changed - meaning I got 2 pages indexed. Old one - not existing anymore, a new one - not having canonical links set to it. So I renamed the slug back once noticed that in Google Analytics
How to remove a non-existing page from google index?
Use Google Remove Outdated Content tool
Should I enable AMP on Hashnode?
AMP provides a "reduced" version of your website. So it might miss some crucial elements of branding and links that are not related to the post itself. So It depends on your use case. From my personal feeling - I will more likely visit a page with a "thunder" icon - so I enabled it for now and will watch how it goes.
Thanks for reading - it is a complicated topic, so I'm would gladly consider any additions or corrections! 🍺