Decoration Circle
Advanced SEO Textbook

Keyword Verticals

In this chapter, we take an in-depth look at how Keyword Verticals and graph visualisation software such as Neo4j and ElasticSearch can help you create a solid keyword strategy.

Topic Details
Clock icon Time: 13
Difficulty Intermediate

As a webmaster, you want to rank for as many keywords as possible on each of your core landing pages.

Even if you have a page that has a single target keyword in mind, Google will likely still rank it for relevant queries that are only tangentially related. This is because, as we’ve established in our LSI section, Google’s algorithm favours topic-based content.

In this section, we’ll explore how keyword groups and graph visualisation software like Neo4j, combined with ElasticSearch will help you create a solid keyword strategy.

Keyword Grouping

Keyword grouping (or “keyword clustering”), is the process of comprising a list of semantically related search terms for a given topic. These keyword groups (or clusters) can then be used to create content that is optimised for several queries by using multiple related keywords from the group across different pages.

The idea here is to push your creativity when it comes to keyword research by adopting the mindset of both the searcher and the marketer.

In other words, you want to create a page that addresses the intent of the searcher (your broad search term), but as a marketer, you also want to rank for other related terms that are more specific – these, are your vertical keywords.

Weight Loss Keyword Grouping

Why Bother With Keyword Groups?

Reach A Wider Audience

Optimising a page for just one keyword limits your potential for traffic despite the fact that the content on your page answers the query. Therefore, optimising for semantically related keywords will help your website appear more relevant to the search engine and as a result, reach a wider audience.

Prevents Keyword Cannibalisation

Keyword grouping helps to prevent keyword cannibalisation, this occurs when multiple pages are competing for the same keyword – more on this in the next module! If all of the content on your site is trying to rank for just one keyword, it becomes increasingly difficult for other pages to rank.

It Can Be Automated!

As we’ll see later in this section, keyword grouping can be automated using graph visualisation tools and ElasticSearch – saving you both time, and effort.

Automating Keyword Grouping

Keyword grouping is a powerful concept that’s been around for quite some time now, but is an incredibly time-consuming task to perform manually. There are now several tools that automatically create keyword groups for you such as SE Ranking’s Keyword Grouper Tool and Keyword Clarity.

At SUSO (thanks for all the help to Robert Niechcial from, we have our very own software tool for Keyword Grouping that uses a combination of ElasticSearch and Neo4j with a sprinkling of PageRank.

Before that though, let’s take a closer look at these tools.

What is ElasticSearch and How Does it Work?

Elastic Search


First released in 2010 by Elasticsearch N.V. (now operating as Elastic), ElasticSearch is an open-source distributed search and analytics engine that is commonly used for full-text search within websites. It is known for its simple REST APIs, speed and scalability.

ElasticSearch takes raw data (usually in the form of JSON documents) from different sources (system metrics, web applications etc), processes and organises the data before it is indexed. Once this data has been indexed, complex queries can be run against the data to create visualizations etc.

An inverted index (ring a bell?) is used as it enables you to process full-text searches extremely quickly. This is because an inverted index lists each unique word that appears in a document and identifies this to other documents that contain this word through tokenization.

ElasticSearch also allows us to specify how particular terms should be matched, so for example, we could give higher relevance to keywords with higher search volume, determine matches based on the intent of the keyword etc.

How does this relate to keyword grouping?

Well, if we had a huge list of keywords, we can utilise ES’s inverted indexing and processing capabilities to semantically group the keywords together.

What is Neo4j and How Does it Work?



Neo4j is one of the most popular graph database management systems that allows you to traverse nodes and the relationships between them.

How does it do this? And how can this be applied to SEO?

The PageRank algorithm!

Here’s a quick refresher on the core concepts for the PageRank algorithm which we looked at in more detail earlier in the course:

  • Higher relevance is given to pages that have more pages linked to it
  • Having links from high relevance pages increases relevance
  • Relevance is passed to neighbours of pages that they link to
PageRank with weights

In the example above, Node B has the highest PageRank because it has many nodes linking to it, but also because these nodes have a relatively high relevance themselves. Likewise, although Node C has just one link, it has a high PageRank because that link is coming from Node B aka the most important node in this group.

Neo4j provides an implementation of PageRank within its Graph Algorithms library.

So, in the context of keyword grouping, we can see how the application of the PageRank algorithm allows us to create keyword clusters, where keywords with higher estimated organic traffic search volume and the combined number of unique referring domains (where UR score divided by 10 is directly translated to PageRank values) or, if working on all internal pages, the neo4j’s PageRank value, are given higher topical relevance.

Bringing It All Together – The SUSO Method

Now, let’s take a look at how our tool creates keyword groups using the power of ElasticSearch and Neo4.

Let’s have a look at a specific topic: pet food.

We first need 2 lists of keywords:

  1. All keywords that our competitors are currently ranking for – you can take them from Ahrefs by looking up your competitor domains and downloading all of their keywordsAhrefs Keywords - Competitor
  2. All keywords that our site is currently ranking for – same as above, but go to Site Explorer of your own domain.

We then simply import the CSV files into our tool, which works its magic using ElasticSearch’s APIs and Neo4j’s PageRank algorithm to create keyword clusters.

The screenshot below shows how the tool has grouped the keywords but also contains incredibly useful information about the groups.

  • #Keywords – the number of keywords within the group
  • Potential Volume – the total potential search volume for this keyword cluster
  • Current Coverage – the percentage of the keywords we currently rank for compared to all our competitors’ keywords
  • Current Traffic – the current estimated traffic organic traffic received from this keyword cluster (if we have any coverage – if we rank for any keywords within this group)
  • Average Position – the average ranking position of our site within this keyword cluster
  • Average Difficulty – the average difficulty of the keywords within this cluster (measured by Ahrefs’ keyword difficulty)
  • Intent – the primary user’s search intent behind this keyword cluster discovered using the SERP feature analysis
SUSO Keyword Vertex Groups

If we were to click on the group “6 week old puppy”, we can then see a list of all the related keywords under this group, with their search volumes, intent, difficulty and (if the site is already ranking for them) current rankings.

SUSO Keyword Vertex Groupped Keywords

Let’s take a look at how we can use Neo4j and ElasticSearch to visualise these keyword clusters.

The example below shows a neo4j graph for the search term “puppy” with the following parameters:

  • Seed Keyword: puppy
  • Limit: 20 (the number of keywords including “puppy” that will be visible on the graph)
  • Offset: 0 (this way we move between keyword groups – with offset 20, this would show 20 new keyword groups on the graph, but with offset 10, we’d see the same 10 keyword groups as with offset 0 and 10 new ones)
  • Minimum KW Count: 10 (minimum number of keywords available in a given cluster)
  • Maximum KW Count: 50 (maximum number of keywords available in a given cluster)


SUSO Keyword Vertex neo4j representation

We can see that one of the nodes (keyword group) is “best large breed dog food” which is broken into further nodes composed of vertical keywords to target.

  • The combined search volume for the cluster is 4,290 monthly searches
  • There is a coverage of 2% for our site
  • On average our particular website is ranking in position 49 for these search terms, so there’s a lot of work to put into this cluster

Now that we have our keyword groups, the next step is to create the content!