< back to knowledge

True Internal Page Rank (TIPR) and Value Optimised Website Architectures

by Andreas Voniatis Founder. Fractional SEO Consultant.

A search value driven site architecture is one that makes use of statistics to prioritise a site’s pages within a website. But what constitutes priority? The simple answer is the search value of the content. For ecommerce sites, that would be revenue.

There’s a few steps that are required to achieve that:

1. Determine the True Internal Page Rank (TIPR)

The TIPR will help you work out what the intrinsic value of a page is for internal link placement. It’s a bit abstract as a TIPR of 1 won’t mean anything.

You’ll need a dataframe (df) with the following columns as minimum:

  • ‘url’: the page address which you’ll want to ensure is live. For more accurate values you’ll want to incorporate any equity accrued from redirects.
  • ‘content’: type of content such as a blog post, PLP etc
  • ‘ur’: The internal page rank as calculated from your crawling software
  • ‘page_authority’: The value of the inbound backlink from the external page which can be obtain from backlink analytics software such as AHREFs, SEMRush or other. 

Here’s the code in Python below:

Import your libraries.

from sklearn.preprocessing import MinMaxScaler

Create an alias for the rescaling function.

scaler = MinMaxScaler()

Transform the data so that missing values are converted to 0 to avoid complications in rescaling.

df['page_authority'] = np.where(df['page_authority'].isnull(), 0, df['page_authority'])
df['ur'] = np.where(df['ur'].isnull(), 0, df['ur'])

Get the minimum and maximum ‘page_authority’ i.e. external page rank.

min_pa = min(list(df['page_authority']))
max_pa = max(list(df['page_authority']))

Rescale ‘page_authority’

df['page_authority_rsc'] = [(x - min_pa) / max_pa for x in df['page_authority']]

Create unscaled TIPR by multiplying the internal and external page rank per URL.

df['tipr_unsc'] = (df['ur'] * df['page_authority_rsc']).round(2) 

Get the minimum and maximum ‘tipr’ i.e. external page rank.

min_tipr_unsc = min(list(df['tipr_unsc']))
max_tipr_unsc = max(list(df['tipr_unsc']))

Rescale ‘tipr_unsc’for ‘tipr’

df['tipr'] = [(x - min_tipr_unsc) / max_tipr_unsc for x in df['max_tipr_unsc']]


The code uses MinMaxScaler function from the sklearn library, which helps rescale the values of the ‘page_authority’ metric from 0 to 100 without changing the underlying shape of the distribution. There are more details and code  in my book

There’s a whole science on why and how a statistical property of a metric should be changed which is beyond the scope here. 

In any case, rescaling the metric from 0 to 100 is easier to understand the relative importance of a page from a TIPR perspective.


2. Identify underperforming content with Revenue Internal Page Rank (RIPR) / Search Value Internal Page Rank (SVIPR)

Once you know how much TIPR an internal link offers, you’re ready to identify underperforming content according to their place in the website architecture.

There’s 2 difference metrics because not all sites are ecommerce; Revenue Internal Page Rank (RIPR) for ecommerce and Search Value Internal Page Rank (SVIPR) for non ecommerce.

Search Value Internal Page Rank (SVIPR) could be based on search impressions for example.

The principle of both metrics is to identify underperformers by taking a page’s value and comparing it to their TIPR. That way, any page with a high score will require more internal links from significantly lower RIPR pages to increase their rank position potential.


3. Find out how much RIPR an internal link from a page is worth

The calculations can get rather complicated as there are a number of factors such as the placement of the link (header, footer, sidebar, in body), number of links (internal and external), and anchor texts. This is ultimately trying to determine the probability of the random surfer finding the link and clicking on it.

If you’re not ambitious enough to endeavour an attempt to write code that replicates the Google search engine, my advice would be to model according to what is actionable.

Once you know what the RIPR/SVIPR of a page offers, you can then select the pages to link from.


Download Our SEO Guide