Web Optimization

An SEO’s Guide to Writing Structured Data (JSON-LD)

Posted on

Posted by briangormanh

The Schema.org vocabulary is the ultimate collab.

Thanks to a mutual handshake between Google, Microsoft, Yahoo, and Yandex, we have a library of fields we can use to highlight and more aptly define the information on web pages. By utilizing structured data, we provide search engines with more confidence (i.e. a better understanding of page content), as Alexis Sanders explains in this wonderful podcast. Doing so can have a number of positive effects, including eye-catching SERP displays and improved rankings.

If you’re an SEO, how confident are you in auditing or creating structured data markup using the Schema.org vocabulary? If you just shifted in your seat uncomfortably, then this is the guide for you. In it, I aim to demystify some of the syntax of JSON-LD as well as share useful tips on creating structured data for web pages.


Understanding the syntax of JSON-LD

While there’s a couple of different ways you can mark up on-page content, this guide will focus on the format Google prefers; JSON-LD. Additionally, we won’t get into all of its complexities, but rather, those instances most commonly encountered by and useful to SEOs.

Curly braces

The first thing you’ll notice after the opening <script> tag is an open curly brace. And, just before the closing </script> tag, a closed curly brace.

All of our structured data will live inside these two curly braces. As we build out our markup, we’re likely to see additional curly braces, and that’s where indentation really helps keep things from getting too confusing!

Quotation marks

The next thing you’ll notice is quotation marks. Every time we call a Schema type, or a property, or fill in a field, we’ll wrap the information in quotation marks.


Colons

Next up are colons (no giggling). Basically, every time we call a type or a property, we then need to use a colon to continue entering information. It’s a field separator.


Commas

Commas are used to set the expectation that another value (i.e. more information) is coming.

Notice that after the informational field for the “logo” property is filled, there is no comma. That is because there is no additional information to be stated.

Brackets

When we’ve called a property that includes two or more entries, we can use an open bracket and a closed bracket as an enclosure.

See how we’ve included Go Fish Digital’s Facebook and Twitter profiles within the “sameAs” property? Since there’s more than one entry, we enclose the two entries within brackets (I call this an array). If we only included the Facebook URL, we wouldn’t use brackets. We’d simply wrap the value (URL) in quotes.

Inner curly braces

Whenever we’ve called a property that has an expected “type,” we’ll use inner curly braces to enclose the information.

In the above image, the “contactPoint” property was called. This particular property has an expected type of “ContactPoint.” Isn’t that nice and confusing? We’ll go over that in more detail later, but for now just notice that after the “contactPoint” property is called, an inner curly brace was opened. On the very next line, you’ll see the ContactPoint type called. The properties within that type were stated (“telephone” and “contactType”), and then the inner curly braces were closed out.

There’s something else in this use case that, if you can understand now, will save you a lot of trouble in the future:

Look how there’s no comma after “customer service.” That’s because there is no more information to share within that set. But there is a comma after the closed inner curly brace, since there is more data to come (specifically, the “sameAs” property).

Creating structured data markup with an online generator

Now that we know a little bit about syntax, let’s start creating structured data markup.

Online generators are great if you’re a beginner or as a way to create baseline markup to build off of (and to save time). My favorite is the Schema markup generator from Merkle, and it’s the one I’ll be using for this portion of the guide.

Next, you’ll need to choose a page and a markup type. For this example, I’ve chosen https://gofishdigital.com/ as our page and Organization as our markup type.

After filling in some information, our tool has created some fantastic baseline markup for the home page:

Hopefully, after our lesson on syntax, you can read most (or all) of this example without a problem!

Creating custom structured data markup with a text editor

Baseline markup will do just fine, but we can go beyond the online generator presets, take full control, and write beautiful custom structured data for our page. On https://schema.org/Organization, you’ll see all the available properties that fall under the Organization markup type. That’s a lot more than the online tools offer, so let’s roll up our sleeves and get into some trouble!

Download a text editor

At this point, we have to put the training wheels away and leave the online tools behind (single tear). We need somewhere we can edit and create custom markup. I’m not going to be gentle about this — get a text editor NOW. It is well worth the money and will serve you far beyond structured data markup. I’ll be using my favorite text editor, Sublime Text 3.

Pro tip: Go to View > Syntax > Javascript > JSON to set your syntax appropriately.

I’ve gone ahead and pasted some baseline Organization markup from the generator into Sublime Text. Here’s what it looks like:


Adding properties: Easy mode

The page at https://schema.org/Organization has all the fields available to us for the Organization type. Our baseline markup doesn’t have email information, so I reviewed the Schema page and found this:

The first column shows that there is a property for email. Score! I’ll add a comma after our closing bracket to set up the expectation for more information, then I’ll add the “email” property:

The second column on Schema.org is the “expected type.” This time, it says “text,” which means we can simply type in the email address. Gosh, I love it when it’s easy.

Let’s keep pushing. I want to make sure our phone number is part of this markup, so let’s see if there’s a property for that…

Bingo. And the expected type is simply “text.” I’m going to add a comma after the “email” property and toss in “telephone.” No need to highlight anything in this example; I can tell you’re getting the hang of it.


Adding properties: Hard mode

Next, we’re going to add a property that’s a bit more complicated — the “address” property. Just like “email” and “telephone,” let’s track it on https://schema.org/Organization.

So, I do see “text,” but I also see an expected type of “PostalAddress.” The name of the game with data markup is: if you can be more specific, be more specific. Let’s click on “PostalAddress” and see what’s there.

I see a number of properties that require simple text values. Let’s choose some of these properties and add in our “address” markup!

Here are the steps I took to add this markup:

Placed a comma after the “telephone” propertyCalled the “address” propertySince the “address” property has an expected type, I opened inner curly bracesCalled the “PostalAddress” typeCalled the properties within the “PostalAddress” typeClosed out the inner curly braces

Can you spot all that from the image above? If so, then congratulations — you have completed Hard Mode!

Creating a complex array

In our discussion about brackets, I mentioned an array. Arrays can be used when a property (e.g. “sameAs”) has two or more entries.

That’s a great example of a simple array. But there will be times when we have to create complex arrays. For instance, Go Fish Digital has two different locations. How would we create an array for that?

It’s not all that complex if we break it down. After the North Carolina information, you’ll see a closed inner curly brace. I just entered a comma and then added the same type (PostalAddress) and properties for the Virginia location. Since two entries were made for the “address” property, I enclosed the entire thing in brackets.

Creating a node array using @graph

On April 16th, 2019, Joost de Valk from Yoast announced the arrival of Yoast SEO 11.0, which boasted new structured data markup capabilities. You can get an overview of the update in this post and from this video. However, I’d like to dive deeper into a particular technique that Yoast is utilizing to offer search engines fantastically informative, connected markup: creating a node array using @graph (*the crowd gasps).

The code opens with “@graph” and then an open bracket, which calls an array. This is the same technique used in the section above titled “Creating a Complex Array.” With the array now open, you’ll see a series of nodes (or, Schema types):

OrganizationWebSiteWebPageBreadcrumbListArticlePerson

I’ve separated each (see below) so you can easily see how the array is organized. There are plenty of properties called within each node, but the real magic is with “@id.”

Under the WebSite node, they call “@id” and state the following URL: https://yoast.com/#website. Later, after they’ve established the WebPage node, they say the web page is part of the yoast.com website with the following line:

“isPartOf”:{“@id”:”https://yoast.com/#website“}.

How awesome is that? They established information about the website and a specific web page, and then made a connection between the two.

Yoast does the same thing under the Article node. First, under WebPage, they call “@id” again and state the URL as https://yoast.com/wordpress-seo/#webpage. Then, under Article, they tell search engines that the article (or, blog post) is part of the web page with the following code:

“isPartOf”:{“@id”:”https://yoast.com/wordpress-seo/#webpage“}

As you read through the markup below, pay special attention to these two things:

The 6 nodes listed above, each separated to better visualizationThe “@id” and “isPartOf” calls, which define, establish, and connect items within the array

Bravo, Yoast!

Source page: https://yoast.com/wordpress-seo/

<script type=”application/ld+json”>

{“@context”:”https://schema.org“,

“@graph”:[

{

“@type”:”Organization”,

“@id”:”https://yoast.com/#organization“,

“name”:”Yoast”,

“url”:”https://yoast.com/“,

“sameAs”:[

https://www.facebook.com/yoast“,

https://www.instagram.com/yoast/“,

https://www.linkedin.com/company/1414157/“,

https://www.youtube.com/yoast“,

https://www.pinterest.com/yoast/“,

https://en.wikipedia.org/wiki/Yoast“,

https://twitter.com/yoast“],

“logo”:{“@type”:”ImageObject”,

“@id”:”https://yoast.com/#logo“,

“url”:”https://yoast.com/app/uploads/2015/09/Yoast-Logo-Icon-120×120.png“,

“caption”:”Yoast”},

“image”:{“@id”:”https://yoast.com/#logo“}},

{

“@type”:”WebSite”,

“@id”:”https://yoast.com/#website“,

“url”:”https://yoast.com/“,

“name”:”Yoast”,

“publisher”:{“@id”:”https://yoast.com/#organization“},

“potentialAction”:{“@type”:”SearchAction”,

“target”:”https://yoast.com/?s={search_term_string}“,

“query-input”:”required name=search_term_string”}},

{

“@type”:”WebPage”,

“@id”:”https://yoast.com/wordpress-seo/#webpage“,

“url”:”https://yoast.com/wordpress-seo/“,

“inLanguage”:”en-US”,

“name”:”WordPress SEO Tutorial \u2022 The Definitive Guide \u2022 Yoast”,

“isPartOf”:{“@id”:”https://yoast.com/#website“},

“image”:{“@type”:”ImageObject”,

“@id”:”https://yoast.com/wordpress-seo/#primaryimage“,

“url”:”https://yoast.com/app/uploads/2008/04/WordPress_SEO_definitive_guide_FI.png“,

“caption”:””},

“primaryImageOfPage”:{“@id”:”https://yoast.com/wordpress-seo/#primaryimage“},

“datePublished”:”2019-03-28T14:05:01+00:00″,

“dateModified”:”2019-04-11T12:24:14+00:00″,

“description”:”This is the ONLY tutorial you’ll need to hugely increase your search engine traffic by improving your WordPress SEO. Want higher rankings? Read on!”,

“breadcrumb”:{“@id”:”https://yoast.com/wordpress-seo/#breadcrumb“}},

{

“@type”:”BreadcrumbList”,

“@id”:”https://yoast.com/wordpress-seo/#breadcrumb“,

“itemListElement”:[

{

“@type”:”ListItem”,

“position”:1,

“item”:

{“@type”:”WebPage”,

“@id”:”https://yoast.com/“,

“url”:”https://yoast.com/“,

“name”:”Home”}},

{

“@type”:”ListItem”,

“position”:2,

“item”:{“@type”:”WebPage”,

“@id”:”https://yoast.com/seo-blog/“,

“url”:”https://yoast.com/seo-blog/“,

“name”:”SEO blog”}},

{

“@type”:”ListItem”,

“position”:3,

“item”:{“@type”:”WebPage”,

“@id”:”https://yoast.com/tag/wordpress/“,

“url”:”https://yoast.com/tag/wordpress/“,

“name”:”WordPress”}},

{

“@type”:”ListItem”,

“position”:4,

“item”:{“@type”:”WebPage”,

“@id”:”https://yoast.com/wordpress-seo/“,

“url”:”https://yoast.com/wordpress-seo/“,

“name”:”WordPress SEO: the definitive guide”}}]},

{

“@type”:”Article”,

“@id”:”https://yoast.com/wordpress-seo/#article“,

“isPartOf”:{“@id”:”https://yoast.com/wordpress-seo/#webpage“},

“author”:{“@id”:”https://yoast.com/about-us/team/joost-de-valk/#author“,

“name”:”Joost de Valk”},

“publisher”:{“@id”:”https://yoast.com/#organization“},

“headline”:”WordPress SEO: the definitive guide”,

“datePublished”:”2019-03-28T14:05:01+00:00″,

“dateModified”:”2019-04-11T12:24:14+00:00″,

“commentCount”:”4″,

“mainEntityOfPage”:”https://yoast.com/wordpress-seo/#webpage“,

“image”:{“@id”:”https://yoast.com/wordpress-seo/#primaryimage“},

“keywords”:”Content SEO, Google Analytics, Mobile SEO, Security, Site Speed, Site Structure, Technical SEO, WordPress, Yoast SEO”},

{

“@type”:”Person”,

“@id”:”https://yoast.com/about-us/team/joost-de-valk/#author“,

“name”:”Joost de Valk”,

“image”:{“@type”:”ImageObject”,

“@id”:”https://yoast.com/#personlogo“, “url”:”https://yoast.com/app/uploads/2018/09/avatar_user_1_1537774226.png“,

“caption”:”Joost de Valk”},

“description”:”Joost de Valk is the founder and Chief Product Officer of Yoast and the Lead Marketing & Communication for WordPress.org. He’s a digital marketer, developer and an Open Source fanatic.”,

“sameAs”:[

https://www.facebook.com/jdevalk“,

http://www.linkedin.com/in/jdevalk“,

https://twitter.com/jdevalk“]}

]}</script

Troubleshooting your markup

With all these brackets, braces, and commas in play, mistakes can happen. So how do we detect and fix them?

Sublime Text error reporting

If you followed my pro tip above and set your syntax to JSON, Sublime Text will highlight certain errors for you.

Sublime Text has detected an error and made a highlight. It’s important to note that errors are “reported” in three ways:

The error is the highlighted item.The error is somewhere on the highlighted line.The error is somewhere in a previous field.

In this case, it’s the third option. Did you spot it? There’s a missing comma after “info@gofishdigital.com.”

Honestly, this error reporting can be confusing at first, but you’ll quickly get used to it and will start pinpointing the mistake(s) fairly easily.

Google’s structured data tool error reporting

Go to https://search.google.com/structured-data/testing-tool > New Test > Code Snippet. Paste and run your code. If there is an error, this is what you’ll see:

Click the error report and the tool will highlight the field after the error. As you’ll see, the missing comma after “info@gofishdigital” has caused the tool to highlight “telephone.” The logic there is that without the comma, that line actually is the error. It makes logical sense, but can be confusing, so it’s worth pointing out.

Sublime Text’s “hidden” underscore feature

Validating structured data markup can be maddening, and every little trick helps. As your structured data gets more complicated, the number of sections and brackets and curly braces is likely to increase. Sublime Text has a feature you may not have noticed that can help you keep track of everything!

In the above image, I’ve placed my cursor on the first line associated with the “sameAs” property. Look closely and you’ll notice that Sublime Text has underscored the brackets associated with this grouping. If the cursor is placed anywhere inside the grouping, you’ll need those underscores.

I often use this feature to match up my brackets and/or curly braces to be sure I haven’t left any out or added in an extra.

Validating your structured data

Of course, the ultimate goal of all this error checking is to get your code to validate. The troubleshooting tips above will help you develop a bulletproof method of error checking, and that you’ll end up with the euphoric feeling that validated markup gives!


Using Google search for unique cases

The lessons and examples in this guide should provide a solid, versatile knowledge base for most SEOs to work with. But you may run into a situation that you’re unsure how to accommodate. In those cases, Google it. I learned a lot about JSON-LD structured data and the Schema vocabulary by studying use cases (some that only loosely fit my situation) and fiddling with the code. You’ll run into a lot of clever and unique nesting techniques that will really get your wheels spinning.

Structured data and the future of search

The rumblings are that structured data is only going to become more important in moving forward. It’s one of the ways Google gathers information about the web and the world in general. It’s in your best interest as an SEO to untie the knot of JSON-LD structured data and the Schema vocabulary, and I hope this guide has helped do that. 

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Read more: tracking.feedpress.it

Web Optimization

10 Basic SEO Tips to Index + Rank New Content Faster – Whiteboard Friday

Posted on

Posted by Cyrus-Shepard

In SEO, speed is a competitive benefit.

When you release brand-new material, you desire users to discover it ranking in search engine result as quick as possible. There are a number of suggestions and techniques in the SEO tool kit to assist you achieve this objective. Relax, show up your volume, and let Cyrus Shepard reveal you precisely how in this week’s Whiteboard Friday.

[Keep in mind: # 3 isn’t covered in the video, however we’ve consisted of in the post listed below. Take pleasure in!]

Click on the white boards image above to open a high-resolution variation in a brand-new tab!

.Video Transcription.

Howdy, Moz fans. Invite to another edition of Whiteboard Friday. I’m Cyrus Shepard, back in front of the white boards. Delighted to be here today. We’re speaking about 10 suggestions to index and rank brand-new material much faster.

You release some brand-new material on your blog site, on your site, and you relax and you wait. You wait on it to be in Google’s index. You wait on it to rank. It’s an aggravating procedure that can take months or weeks to see those rankings increase. There are a couple of easy things we can do to assist push Google along, to assist them index it and rank it quicker. Some really fundamental things and some advanced things too. We’re going to dive right in.

.Indexing.1. URL Inspection/ Fetch &&Render.

So essentially, indexing material is not that tough in Google. Google offers us with a variety of tools. The easiest and fastest is most likely the URL Inspection tool . It’s in the brand-new Search Console, formerly Render and bring. Since this shooting, both tools still exist. They are diminishing Fetch and Render. The brand-new URL Inspection tool permits you to inform and send a url Google to crawl it. They put it in their concern crawl line when you do that. That just merely suggests Google has a list of URLs to crawl. It enters into the top priority, and it’s going to get crawled much faster and indexed much faster.

.2. Sitemaps!

Another typical method is just utilizing sitemaps. If you’re not utilizing sitemaps, it is among the most convenient, quickest methods to get your URLs indexed. You desire to let Google understand that they’re really there when you have them in your sitemap. There’s a variety of various strategies that can in fact enhance this procedure a bit more.

The very first and one of the most standard one that everyone speaks about is basically it in your robots.txt file. In your robots.txt, you have a list of instructions, and at the end of your robots.txt, you just state sitemap and you inform Google where your sitemaps are. You can do that for sitemap index files. You can note several sitemaps. It’s truly simple.

 Sitemap in robots.txt

You can likewise do it utilizing the Search Console Sitemap Report , another report in the brand-new Search Console. You can enter there and you can send sitemaps. You can eliminate sitemaps, confirm. You can likewise do this through the Search Console API.

But an actually cool method of notifying Google of your sitemaps, that a great deal of individuals do not utilize, is just pinging Google. You can do this in your web browser URL. You merely enter google.com/ping, and you put in the sitemap with the URL. You can attempt this out today with your present sitemaps. Type it into the internet browser bar and Google will quickly queue that sitemap for crawling, and all the URLs in there ought to get indexed rapidly if they fulfill Google’s quality requirement.

Example: https://www.google.com/ping?sitemap=https://example.com/sitemap.xml

3. Google Indexing API.

( BONUS: This wasn’’ t in the video, however we wished to include it’due to the fact that it ’ s quite incredible) Within the previous couple of months, both Google and Bing have actually presented brand-new APIs to assist accelerate and automate the crawling and indexing of URLs.Both of these services enable the capacity of enormously accelerating indexing by sending 100s or 1000s of URLs through an API.While the Bing API is meant for any new/updated URL, Google specifies that their API is particularly for ““ either task publishing or livestream structured information.” ” That stated, numerous SEOs like David Sottimano have explore Google APIs and discovered it to deal with a range of material types.If you wish to utilize these indexing APIs yourself, you have a variety of possible choices:

.Richard Baxter composed an outstanding post on utilizing SEO Tools for Excel with Google’’ s API Google ’ s Indexing API paperwork .

Yoast revealed they will quickly assistance live indexing throughout both Google and Bing within their SEO WordPress plugin.

. Indexing &ranking.

That’s speaking about indexing. Now there are some other manner ins which you can get your material indexed faster and assist it to rank a bit greater at the very same time.

. 4. Hyperlinks from crucial pages.

When you release brand-new material, the standard, if you not do anything else, you wish to make certain that you are connecting from crucial pages. Important pages might be your homepage, including links to the brand-new material, your blog site, your resources page. This is a fundamental action that you wish to do. You do not wish to orphan those pages on your website without any inbound links.

.

Adding the links informs Google 2 things. It states we require to crawl this link at some point in the future, and it gets put in the routine crawling line. It likewise makes the link more crucial. Google can state,” Well, we have essential pages connecting to this. We have some quality signals to assist us figure out how to rank it. “Connecting from crucial pages.

. 5. Update old material.

But an action that individuals usually forget is not just link from your essential pages,however you wish to return to your older material and discover pertinent locations to put those links. A great deal of individuals utilize a link on their homepage or link to older posts, however they forget that action of returning to the older short articles on your website and including links to the brand-new material.

.

Now what pages should you include from? Among my preferred strategies is to utilize this search operator here, where you enter the keywords that your material has to do with and after that you do a website: example.com. This permits you to discover pertinent pages on your website that have to do with your target keywords, and those make truly great targets to include those links to from your older material.

. 6. Share socially.

Really apparent action, sharing socially. When you have brand-new material, sharing socially, there’s a high connection in between social shares and content ranking.Particularly when you share on material aggregators, like Reddit, those develop real links for Google to crawl. Google can see those signals, see that social activity, websites like Reddit and Hacker News where they include real links, which does the very same thing as including links from your own material, other than it’s even a little much better due to the fact that it’s external links. It’s external signals.

. 7. Create traffic to the URL.

This is sort of an innovative method, which is a little questionable in regards to its efficiency, however we see it anecdotally working time and time once again.That’s just producing traffic to the brand-new material.

.

Now there is some argument whether traffic is a ranking signal. There are some old Google patents that speak about determining traffic, and Google can definitely determine traffic utilizing Chrome.They can see where those websites are originating from. As an example, Facebook advertisements, you introduce some brand-new material and you drive a huge quantity of traffic to it through Facebook advertisements. You’re spending for that traffic, however in theory Google can see that traffic due to the fact that they’re determining things utilizing the Chrome internet browser.

.

When they see all that traffic going to a page, they can state,” Hey, perhaps this is a page that we require to have in our index and perhaps we require to rank it properly. “

. Ranking.

Once we get our material indexed, speak about a couple of concepts for possibly ranking your material much faster.

. 8. Create search clicks.

Along with creating traffic to the URL, you can in fact create search clicks.

.

Now what do I indicate by that? Picture you share a URL on Twitter. Rather of sharing straight to the URL, you share to a Google search results page. Individuals click the link, and you take themto a Google search engine result that has the keywords you’re attempting to rank for, and individuals will browse and they clickyour outcome.

.

You see tv commercials do this, like in a Super Bowl business they’ll state, “Go to Google and look for Toyota vehicles 2019. “What this does is Google can see that searcher habits. Rather of going straight to the page, they’re seeing individuals click Google and picking your outcome.

. Rather of this: https://moz.com/link-explorerShare this: https://www.google.com/search?q=link+tool+moz

This does a number of things. It assistsincrease your click-through rate, which might or might not be a ranking signal. It likewise assists you rank for auto-suggest inquiries. When Google sees individuals browse for” finest automobiles 2019 Toyota,” that may appear in the recommend bar, which likewise assists you to rank if you’re ranking for those terms. Producing search clicks rather of connecting straight to your URL is one of those innovative strategies that some SEOs utilize.

. 9. Target question should have freshness.

When you’re producing the brand-new material, you can assist it to rank quicker if you select terms that Google believes should have freshness . If I simply utilize a couple of examples here, it’s finest possibly.

.

Consider a user looking for the term “coffee shops open Christmas 2019.” That’s an outcome that Google wishes to provide an extremely fresh outcome for. You desire the best news about coffee shops and dining establishments that are going to be open Christmas 2019. Google is going to choice pages that are produced more just recently. When you target those questions, you can perhaps rank a little faster.

.

Compare that to a question like “history of the Bible.” If you Google that today, you’ll most likely discover a great deal of older pages, Wikipedia pages. Those outcomes do not upgrade much, which’s going to be harder for you to split into those SERPs with more recent material.

.

The method to inform this is just key in the questions that you’re attempting to rank for and see how old the most current outcomes are. That will offer you a sign of what Google believes just how much freshness this question should have. Select questions that are worthy of a bit more freshness and you may be able to get in a little earlier.

. 10. Take advantage of URL structure.

Finally, last suggestion, this is something a great deal of websites do and a great deal of websites do not do due to the fact that they’re just not familiar with it. Take advantage of URL structure. When Google sees a brand-new URL, a brand-new page to index, they do not have all the signals yet to rank it. They have a great deal of algorithms that attempt to think where they ought to rank it.They’ve shown in the past that they take advantage of the URL structure to identify a few of that.

.

Consider The New York Times puts all its book examines under the very same URL, newyorktimes.com/book-reviews. They have a great deal of recognized ranking signals for all of these URLs. When a brand-new URL is released utilizing the very same structure, they can designate it some short-term signals to rank it properly.

.

If you have URLs that are high authority, perhaps it’s your blog site, perhaps it’s your resources on your website, and you’re leveraging an existing URL structure, brand-new material released utilizing the very same structure may have a bit of a ranking benefit, a minimum of in the brief run, up until Google can figure these things out.

.

These are just a few of the methods to get your material indexed and ranking quicker. It is by no suggests a detailed list. There are a great deal of other methods. We ‘d enjoy to hear a few of your suggestions and concepts. Please let us understand in the remarks listed below. Please share it for me if you like this video. Thanks, everyone.

.

Video transcription by Speechpad.com

Sign up for The Moz Top 10 , a semimonthly mailer upgrading you on the leading 10 most popular pieces of SEO news, ideas, and rad links discovered by the Moz group. Consider it as your special absorb of things you do not have time to pursue however wish to check out!

Read more: tracking.feedpress.it

Web Optimization

Google Ads Mistakes to Avoid – Whiteboard Friday

Posted on

Posted by DiTomaso

Contrary to common belief, SEO and PPC aren’t at opposite ends of the spectrum. There are a lot of methods the 2 search disciplines can collaborate for advantages all around, particularly when it concerns enhancing your Google Ads. In this week’s edition of Whiteboard Friday, we’re enjoyed invite Dana DiTomaso as she describes how you can harness the power of both SEO and PPC for a much better Google experience in general.

Click on the white boards image above to open a high-resolution variation in a brand-new tab!

.Video Transcription.

Hey, Moz readers. My name is Dana DiTomaso, and I’m President and partner at Kick Point . We’re a digital marketing company method up in the frozen wilds of Edmonton, Alberta. Today I’m going be speaking to you about PPC, and I understand you’re believing, “This is an SEO blog site. What are you doing here speaking about PPC?”

But among my resolutions for 2019 is to combine SEO and PPC individuals, since SEO can find out a lot from PPC, and yes, PPC, you likewise can discover a lot from SEO. I understand PPC individuals resemble, “We simply do paid. It’s so fantastic.” Trust me, both can work together. In our firm, we do both SEO and PPC, and we deal with a great deal of business who have someone, often 2 and they’re doing whatever.

One of the important things we attempt to do is assist them run much better Ads projects. Here I have suggestions on things that we see all the time, when we begin dealing with a brand-new Ads account, that we wind up repairing, and ideally I can pass this on to you so you can repair it prior to you need to call a company to come and repair it for you. Among the important things is this is in fact a lot longer piece than what I can provide on this white boards. There’s just a lot space.

There is really an article on our site, which you can discover here . Please inspect that out which will have the complete 9 ideas. I’m simply going to break it down to a couple of today.

.1. A lot of keywords.

First thing, a lot of keywords. We see this a lot where individuals, in Google it states ensure to assemble keywords that have the very same sort of style.

But your style can be actually particular, or it can be type of unclear. This is an example, a genuine example that we got, where the keyword examples were all legal representative styles, so “defense attorney,” “criminal attorney,”” dui attorney,” “attack legal representative,” “sexual attack attorney.” Technically, they all have the exact same style of “legal representative,” however that’s method too unclear for it to be all in one single advertisement group, due to the fact that what sort of advertisement are you going to reveal?

” We are legal representatives. Call us.” It’s not particular enough. Consider example “dui attorney,” which I understand is an actually extremely competitive specific niche, and after that you can do [dui attorney], [dui legal representative seattle], and after that “dui attorney” and +dui+ attorney+ seattle defined a bit in a different way. I’ll speak about that in a 2nd. By taking this one thing and after that simplifying into a far more particular advertisement group, you can truly have far more control.

This is a constant style in all the ideas I speak about is far more control over where you’re investing your loan, what keywords you’re investing it on, what your advertisements are, having a far better landing page to advertisement match, which is likewise actually crucial. When you’ve got it in all of those advertisement groups, it simply makes your advertisement life so much simpler. I understand it may appear daunting. It’s like, “Well, I have 3 advertisement groups now.If I follow your suggestions, I’m going to have 40.”

But at the exact same time, it’s method much easier to handle 40 well arranged groups than it is to handle 3 truly severely orderly groups. Keep that in mind.

.2. Selecting the ideal match type.

The next thing is choosing the best match type. You can see here I’ve got this bracket things and this expression things and these plus indications. There are actually 4 match types.

.Broad match.

There’s broad match, which is horrible and do not ever utilize it. Broad match is simply you drawing up the keyword, and after that Google simply shows it for whatever it seems like relates to that specific search. We’ve seen examples where it’s like a catering business and they’ll have “catering” as a keyword, and they’re revealing up for all sorts of expressions in catering where they can’t supply catering, so browsing for a location that just does internal catering. Or they’re investing cash on a catering conference or simply absolutely unimportant things. Do not utilize broad match.

.Broad match modifier (BMM).

The upgrade from that is what’s called broad match modifier or BMM, which’s where these plus indications can be found in. This is actually the words dui, attorney, and seattle in any order, however they all need to exist and other things can exist around that. It might be, “I require a DUI attorney in Seattle.” “I reside in Seattle. I require a DUI attorney.” That would likewise work for that specific keyword.

.Expression match.

The next type is expression, which’s in the quotes. This “dui attorney” is the example here, and after that you can have anything prior to it or you can have anything after it, however you can’t have something in between it. It could not be “dui who is actually excellent at being an attorney”. Weak example, however you understand. You can’t simply push things in the middle of an expression match.

.Precise match.

Then precise match is what’s in the brackets here, which is simply those words and absolutely nothing else. , if I have [ dui legal representative], this keyword, if I didn’t have [dui attorney seattle], this keyword would not activate if someone searches [dui legal representative seattle] That’s as particular as possible. You actually wish to attempt that for your most competitive keywords.

This is the actually costly things, due to the fact that you do not wish to squander one single cent on anything that is unimportant to that specific search. This is your head on, it’s actually pricey every click. I’ve got to make certain I’m getting the most loan possible for those clicks. That’s where you truly wish to utilize precise match.

.3. Just one advertisement per group.

Next, ideas. The next thing is what we see is a great deal of individuals who have just one advertisement per group.

.Have at least 3 advertisements per group.

This is not a pointer. This is a criticism up here. The important things is that perhaps, once again, you believe it’s simple for management, however it’s truly difficult to see what’s going to work, since if you’re not constantly screening, how are you going to understand if you could do much better? Ensure to have at least 3 advertisements per group.

.Include psychological triggers into your advertisement copy.

Then take a look at your advertisement copy. We see a great deal of simply generic like, “We are the very best attorneys. Call us.” There’s absolutely nothing there that states I require to call these individuals. Actually consider how you can include those psychological triggers into your copy. Talk with your customer or your group, if you work internal, and discover what are the important things that individuals state when they call. What are the important things where they state, “Wow, you actually assisted me with this” or, “I was seeming like this and after that you was available in and I simply felt a lot better.”

That can truly assist to enliven your advertisements. We do not wish to get too expensive with this, however we definitely wish to make something that’s going to assist you stand apart. Actually include those psychological triggers into your advertisement copy.

.Ensure to have a call to action.

Then the next thing is ensuring to have a call to action, which appears fundamental due to the fact that you believe it’s an advertisement. That’s the call to action if you click it. Often individuals on the Internet, they’re not always believing. You simply wish to state, “You understand what? Simply call me or email me or we’re open 24 hours.”

.When they look at the advertisement, #ppppp> Just be actually particular on what you desire the individual to do. Simply spell it out for them. I understand it appears silly. Simply inform them. Simply inform them what you desire them to do. That’s all you require to do.

.Usage extensions!

Then make certain you include all of the extensions. In Google Ads, if you’re not extremely knowledgeable about the platform, there’s an area called Extensions. These are things like when the address reveals up under an advertisement, or you’ve got those little links that come up, or you’ve got someone stating we’re open 24 hours. There are all sorts of various extensions that you can utilize. Simply put in all the extensions that you potentially can for each single among your groups.

Then they will not all activate all at the exact same time, however a minimum of they’re there and it’s possible that they might set off. If they do, that’s provide your advertisement more realty versus your competitors, which is actually terrific on mobile since advertisements use up a great deal of area at the top of a mobile search. You wish to make certain to push your competitors as far as you potentially can down that search so you own as much of that home as you perhaps can. Something that I do see individuals doing improperly with extensions, however, is setting extensions at state the project level, and after that you have various advertisement groups that cover various styles.

Going back to this example over here, with the various kinds of legal representatives, let’s state you had an extension that talks particularly about DUI law, however then it was setting off on state sexual attack law. You do not desire that to take place. Make certain you have actually fine-tuned control over your various extensions so you’re revealing the best extension with the best kind of keyword and the ideal kind of advertisement. The other thing that we see a lot is where individuals have place extensions and they’re revealing all the area extensions where they must not be revealing all the place extensions.

You’ve got an advertisement group for, state, Seattle, and it’s speaking about this brand-new house advancement that you have, and since you simply filled in all of your area extensions, unexpectedly you’re revealing extensions for something in say San Francisco. Due to the fact that you have not filtered correctly, it’s simply. Actually double-check to make certain that you’ve got your filter established correctly for your area extensions which you’re revealing the right place extension for the ideal advertisement.

I understand that Google states, “We’ll choose the areas closest to the customer.” You do not understand where that individual is browsing right there. They might be in San Francisco at that minute and looking for brand-new house integrate in Seattle, due to the fact that perhaps they’re thinking of moving from San Francisco to Seattle. You do not desire them to see the things that exists. You desire them to see the things that’s at the location where they’re planning to be. Truly make certain you manage that.

.4. Keep screen and search different.

Last, however not least, keep display screen and search different.

By default, Google so helpfully states, “We’ll simply reveal your advertisements all over. It’s absolutely cool. This is what we desire everybody to do.” Do not do that. This is what makes Google cash. It does not make you cash. The reason is since screen network, which is where you’re going to a site and after that you see an advertisement, and search network, when you enter the things and you see an advertisement, are 2 absolutely various monsters.

.Prevent revealing text advertisements on the display screen network for higher project control.

It’s truly a various kind of experience. To be truthful, if you take your search projects, which are text-based advertisements, and now you’re revealing them on sites, you’re revealing a dull text advertisement on a site that currently has like 50 blinky things and click on this link. They’re most likely not seeing us and perhaps they have an advertisement blocker set up. If they are, definitely your text advertisement, which is kind of boring and not meant for that medium, is not going to be the thing that stands out.

Really you’re simply losing your loan due to the fact that you’ll wind up with lower relevance, less clicks, and after that Google believes that your group is bad. You’ll end up paying more due to the fact that Google believes your group is bad. It actually provides you that additional control by stating, “This is the search project. It’s just on search. This is the screen project. It’s just on display screen.” Keep the 2 of them absolutely different. You have lots of control over the search advertisements being for search and the display screen advertisements being for screen.

Don’t blend those 2 up. Ensure to uncheck that by default. Certainly there are more pointers on our blog site here . I hope that this will assist you get begun. SEOs, if you’ve never ever done a PPC project in your life, I suggest simply setting one up. Put 50 dollars behind that thing. Simply attempt it out, due to the fact that I believe what will truly assist you is comprehending more of how individuals search, since as we get less and less keyword information from the various tools that we utilize to find out what the heck are individuals googling when they attempt to look for our service, advertisements provide you a few of that information back.

That’s where advertisements can be a truly fantastic ally in attempting to improve SEO results. I hope you discovered this satisfying. Thanks a lot.

Video transcription by Speechpad.com

Sign up for The Moz Top 10 , a semimonthly mailer upgrading you on the leading 10 most popular pieces of SEO news, ideas, and rad links revealed by the Moz group. Think about it as your unique absorb of things you do not have time to hound however wish to check out!

Read more: tracking.feedpress.it

Web Optimization

Creating Quality Content in 2019 (For Search Engines and People)

Posted on

Posted by jchamp86

Think back to the last question you typed into Google. Did you find a blog post on the search engine result page that attracted your attention? Did you find the content on the page helpful? Did the page offer a relevant next step to continue learning and engaging with your brand?

If you answered “yes” to all of these questions, then the author who wrote this piece of content did their job very well: They created a piece of content that fulfilled your intent. In 2019, that’s what search engines like Google care about — solving for their searcher’s intent. 

Read on to learn how to solve for searcher intent to create successful, quality content that makes people (and Google) happy.

Effective content comes with a blueprint

Before we dive in, you may be asking yourself: “How do I solve for searcher intent?”

You can start by creating an experience for website visitors that tells a practical story. That story should educate and inspire them to make a transformation and put their interests and needs above your bottom line. Yes, you want to inform your visitors, but doing that alone is not enough. To really help them transform, you need to make their experience a meaningful one, and that means you need to help them apply what they’re learning. When done correctly this builds trust, and if someone trusts you they’re more likely to do business with you when they’re ready to make a purchasing decision. This is effective content.

Luckily, all effective content like this has a blueprint. You may not easily see it, but it’s there, and it’s meant to help you, the reader, through your journey to making a well-informed, confident decision— whatever that decision may be.

When getting started with creating blog content, you want readers to easily comprehend what it is you’re trying to tell them. If your content is too complicated and unengaging, then chances are readers will abandon it and go elsewhere. There are thousands of blog posts being published every minute, so it’s safe to say you’re not the only resource out there competing for attention.

Let’s review 10 tips that will help you start drafting a successful blueprint for your next blog post.

1. Choose a topic to write about

At a high level, write educational content.

I’m not saying you can’t write about your business when it makes sense, but in order to attract someone to your blog, you need to answer the questions and problems that they’re searching for answers to. Put yourself in the shoes of your audience (aka buyer personas):

What will they be searching for? What do they want to know about? What will resonate with them?

Consider what you know about your buyer personas and their interests while you’re coming up with a topic for your blog post.

And when it comes to a topic, make sure to write about your industry, not yourself. Remember, you’re trying to attract strangers to your blog who have never heard of your company before — so they’re not going to find you through search engines if you’re just blogging about yourself. You have the rest of your website to provide that information.

If you’re looking for a place to start with creating content that’ll positively impact your audience, then ask your co-workers from other teams like sales and services for some ideas. Here are a few questions that you could ask and they could answer:

What are the most frequently asked questions you hear? What do our prospects and customers need help with? What do you wish people knew about our industry? What are industry bloggers, social media, and even our competitors talking about?

Before you write anything, you need to pick a topic to write about. The topic can be pretty general to start with. For example, if you provide running shoes, then it might be a good idea to write about the topic of running. Expand off of this topic — in other words, iterations or different ways of approaching that topic to help you focus your writing. For example, you might decide to narrow your topic to “best running shoes for marathons” or “lifetime of running shoes.”


2. Do keyword research

Keywords are the words and phrases typed into search engines. They’re the topics that people are trying to learn more about. Which keywords do your buyer personas use? Which are associated with your industry?

If you’re looking for a place to get started when doing keyword research, then check out Moz’s Keyword Explorer. Keyword Explorer is a time-saving keyword research tool that helps you find profitable keywords and organize work.

Optimizing your blog posts for keywords is not about incorporating as many keywords into your posts as possible. Nowadays, this actually hurts your search engine optimization because search engines consider this keyword stuffing.

Mention your keyword at a normal cadence throughout the body of your post and in the headers when it makes sense. That means including your keywords in your copy but only in a natural, reader-friendly way. Don’t go overboard, though, at the risk of being penalized for keyword stuffing.

Whenever you create content, your priority should be to educate and inspire your audience, not how many times you can include a specific keyword on the page. Instead of writing the same words over and over, write synonyms of it to keep it fresh and readable. For example, digital nomad is a topic I write about often, but instead of repeating that keyword, I change it up with synonyms like “remote worker.”


3. Form a long-tail keyword

A good rule of thumb is to focus on one long-tail keyword per blog post. A long-tail keyword is a very targeted search phrase that contains three or more words. It often contains a head term, which is a more generic search term, one or two words in length. The head terms you choose should align with the topics that you want your business and website to be known for and build authority around. For example, if you want your business to be known for SEO terminology like “featured snippets,” then a blog post on “How to Optimize for Google’s Featured Snippets” is a great example of a long-tail keyword in support of this topic.

And why should you focus on long-tail keywords for blog post titles? These longer, often question-based keywords keep your post focused on the specific goals of your audience. Website visitors searching long-tail terms are more likely to read the whole post, and then seek more information from you. In other words, you’ll attract the right type of traffic to your website.

If you’re brainstorming ideas to write about, there’s a good chance you’ll create a long list of ideas for topics you can cover and posts you can create. This will help create a longer-term blogging strategy, making a list of topics that support a specific conversion. For example, if you have an ebook or guide that you want to create and promote, then consider making a list of blog ideas that support this guide’s content. This way, if someone finds your blog post and finds the content helpful, that increases the chances of them wanting to click a call-to-action, aka CTA, to access a relevant offer.

If you’re looking for assistance with blog ideas, then check out HubSpot’s blog ideas generator. This free tool will help jump-start your creative process.

4. Expand long-tail keyword into a working title

Think about how you read things online. You read the title first before you commit. It needs to catch your interest, especially since it’s the first thing that will catch a reader’s attention.

Start by creating a working title for your blog post.

A working title is something to “work” off of as you begin to write your post. Start here to narrow your topic down and focus on one angle. A broad term, like “social media,” could breed multiple blog post ideas. A working title, like “top social media channels for live video in 2019” is now long-tail and specific.

Once you finish the piece, you’ll come back to this title and refine it to be more aligned with the direction you ended up taking in the post.

For almost every piece of content, come up with at least 5–10 different titles. Make it a rule that you spend a minimum of five minutes of brainstorming titles. And once you make a list, send to a co-worker to get their opinion.

Also, make the value of the post clear in the title. Your title should help readers and search engines understand what your post is about. Set the right expectations — what is the reader going to get out of your blog post? What information is covered? What format is the blog post going to take?

In this example, the blog post title explicitly tells you that you’ll be reading about how to create an infographic. Not only that, but it sets the expectations that it only takes an hour to do, and there’s also free templates included. You know exactly what you’re going to get from this blog post — how it’s valuable to you and how much information it contains.

When it comes to the art of the perfect blog post title, HubSpot did some research and looked at how our own titles have performed. Here are the consistent principles that were found:

The ideal blog post title length is 60 characters.Headlines between 8 and 12 words are shared most often on Twitter.Headlines between 12 and 14 words are liked most often on Facebook.

HubSpot also found that headlines ending with a bracketed clarification — like the earlier example with “15 free infographic templates” in brackets at the end of the post — performed 38% better than titles without that clarification.

If you’re having trouble trimming down the length of a title, run it through Moz’s Title Tag Preview Tool to see how the title will appear on a search engine results page. Google typically displays the first 50–60 characters of a title tag. If you keep your titles under 60 characters, you can expect about 90 percent of your titles to display properly.

Title too long? That’s okay! Make sure to create a title for your reader first. When you have a lengthy headline, it’s a good idea to put your primary keyword (aka the head term) at the beginning of the title since it might get cut off toward the end on a search engine results page. In this example, the title got caught off, but the focus keyword, “data visualization,” is at the front.


5. Shorten your URL

The URL doesn’t have to match the title of the blog exactly. Instead, make it a best practice to shorten the URL without losing context to what the page is about. For example, notice how the URL of this blog post is shorter than the title. This way, Moz can update the content over time without updating the URL.

Here’s a pro tip: Don’t include numbers in your URL, like year or steps. This way, if you update the content in the future, you won’t have to update the URL. Updating the URL creates a 301 redirect. A 301 redirect is a permanent redirect from one URL to another. Making updates to URLs hurts your SEO, and you don’t want that.

6. Optimize image alt-text

Search engines don’t just look for images. Rather, they look for images with alt-text. Because search engines can’t “see” images the same way humans can, an image’s alt-text tells them what an image is about – which ultimately helps those images rank in the image section of search engine results. Consider optimizing your images with different descriptive variations of your long-tail keyword.


7. Create a compelling meta description

Your meta description is meant to give search engines and readers information about your blog post’s content. The maximum suggested length of a meta description is 150–160 characters. Anything longer than that will most likely be cut off.

While meta descriptions might not directly impact your SEO, keep in mind that copy matters a great deal for clickthrough rates because it satisfies certain readers’ intent. The more engaging, and the more context you include that backs up your title tag, the better. In addition to being reader-friendly (compelling and relevant), your meta description should include a variation of your long-tail keyword for which you’re optimizing the post around. But keep in mind that a search engine may not choose to use your meta description as the descriptive text in search results. Search engines are funny that way.

8. Insert links strategically throughout your blog post

As you attract more and more visitors to your blog, that increased traffic means an increased opportunity to build a relationship, gain trust, and generate more leads and eventually customers.

Let’s review some best practices when it comes to using links effectively in your blog posts.

First, link to external content when it’s helpful or supports a stat or claim you’re making.

It takes a lot of work to attract someone to your site and gain their trust. The last thing you want to do is send them off your site unless it’s something that supports your content. I’m not saying you shouldn’t link to content that’s not your own, but just do so thoughtfully and make sure it provides value.

Here’s a pro tip: When linking to external websites, consider having that content open in a new window. This way, you’re being helpful without redirecting people off of your site.

Next, link to other helpful blog posts on your site.

If you find yourself typing a sentence or paragraph that can be explained in more detail on another blog post, then link to it. This helps in two ways: It solves for the reader, allowing and encouraging them to continue bingeing your content; and it solves for the search engine as it communicates to them that there’s a cluster of related content on your site. And if search engines deem your cluster of web content around a specific topic as a credible source, then that can help boost your visibility on the search engines.

Which brings me to my last point: Link to important content on your site that supports conversions.

When it comes to deciding on where to insert CTAs on your blog posts, here are four places to consider. Let’s review each.

First, consider inserting a CTA after the first few paragraphs. To avoid looking too pushy too soon, try including a passive CTA through hyperlinked text as opposed to using an image. It’s important to include these passive CTAs near the top, as you can’t always count on your visitor reading your entire post to take the next step. Think about it: Do you read to the end of every blog post that you click on? Probably not.

HubSpot performs CTA tests all the time. From image and text CTAs to placement of the CTAs, we’re always looking for ways to improve clickthrough rate. Interestingly enough, we found that text CTAs near the top of blogs posts produce the highest clickthrough rates— something you might want to keep in mind and test on your blog posts.

I recommend linking to pillar pages with CTAs at the top of the page as the content is not gated, meaning you’re not forcing someone to give you their email address just yet in exchange for something. Instead, you can lead with educational content, which solves for your reader first. Plus, your educational site pages should support one, if not multiple, conversions so that you can help the reader through their journey accordingly while gaining their trust along the way.

Next, include an image or text CTA near the most relevant content in the body of the post. The best time to support a conversion is just after educating someone. For example, Townsend Security, a full-service data security provider, included an image CTA to a relevant podcast download in this blog post. Notice how the CTA content is similar to the content it’s paired with.

Next, include an image CTA at the end of each post. If someone reads your post to the end, then you want to offer them a helpful next step. This is a CTA at the end of a post titled “Data Visualization 101: How to Choose the Right Chart or Graph for Your Data,” and at the bottom, there’s a CTA for an ebook on how to present data people can’t ignore. When it comes to image CTAs at the end of blog posts, I recommend linking these to a relevant landing page with a form.

Another option, which brings me to the last CTA placement, is a pop-up form that the reader sees as they scroll down the page. This is a great way to have your offer stick around so that the reader can’t just scroll past it.

If you really want to engage your users and have a helpful conversation, then consider offering live chat or a chatbot. A chatbot is a computer program that automates certain tasks, typically by chatting with a user through a conversational interface.

Most bots follow a set of rules programmed by a human via a bot-building platform. It’s as simple as ordering a list of if-then statements and writing canned responses, often without needing to know a line of code. The benefit? A bot will guide you, the visitor, through the various options available and help you get from point A to point B quickly. Behind the curtain, the bot is leading you through a series of dependent questions to collect the necessary information to understand your intent, and then deliver the right content to satisfy your needs.


9. Include other forms of media to keep your visitors engaged

I always save the best for last. If you want to keep people engaged, then offer other forms of media like a quiz or video.

Adding a video to your website can increase the chance of a front-page Google result by 53 times. This is especially helpful if you include a video near the top of the page. Why? Because if people take the time to watch your video, then it’ll reduce bounce rate. Your website’s bounce rate is the percentage of people who land on one of your website pages, then leave. They don’t click on anything else. They just get to one of your pages, then leave quickly. Having a low bounce rate is a strong indicator to Google that people find value in your content. And if Google thinks your content provides value, then that can lead to first page rankings for the topics you want to show up for. For example, this page ranks #1 on Google for a list of high-volume terms related to a truck camper.

When you click through to the page, you’ll notice there’s a YouTube video embedded at the top that’s 4 minutes and 13 seconds long. In most cases, the majority of people who visit your site — 79% to be exact — would rather watch a video to learn, than read text on a page. That’s exactly why I included a video at the top of this page to engage the visitor with video content first. In case you’re curious, the average time a visitor spends on this page is five minutes.

Moz has been optimizing their content with video effectively since 2007 with their Whiteboard Friday segment. What I love most about Moz’s Whiteboard Friday series is how they transcribe the content underneath each video — very smart and efficient. For example, the below Whiteboard Friday segment video is eight minutes and two seconds long, which equates to 1,477 words.

This might be something to keep in mind if your business creates video content, and wants to find a way to maximize your content output.

10. Work with industry thought leaders to create a compelling story

Even if you’re not a subject matter expert on a specific topic, that doesn’t mean you can’t create something memorable… And I don’t mean just regurgitating what’s already being said online. If you did that, then you’d just be creating noise, and not adding anything new to the conversation.

Instead, when performing research look for people who author content on a given topic and put your journalist hat on. What do you find interesting about their content? Is there anything you think would be helpful to dig into deeper? Asking questions like this could lead to a new angle for a blog post idea — adding something new to the conversation.

Once you find a few thought leaders, consider connecting with them to see if you can collaborate on a piece of content. By talking to the people you want your blog posts to speak to, you’re able to find out exactly what is on their minds, what they want to know, what they are concerned about, how they feel on pressing issues and all sorts of other important-to-them topics that may make for brilliant blog posts.

Conclusion

And that’s it! 10 tips you can use to create the next blueprint for. Keep these tips in mind when creating and optimizing your blog posts, as it will ensure you’re getting the most out of your business blogging efforts.

If you’re feeling inspired and want to get started on your next blog post, then check out this helpful resource to learn a few more tips and tricks.

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Read more: tracking.feedpress.it

Web Optimization

Visualizing Speed Metrics to Improve SEO, UX, & Revenue – Whiteboard Friday

Posted on

Posted by sam.marsden

We know how important page speed is to Google, but why is that, exactly? With increasing benefits to SEO, UX, and customer loyalty that inevitably translates to revenue, there are more reasons than ever to both focus on site speed and become adept at communicating its value to devs and stakeholders. In today’s Whiteboard Friday, Sam Marsden takes us point-by-point through how Google understands speed metrics, the best ways to access and visualize that data, and why it all matters.

Click on the whiteboard image above to open a high-resolution version in a new tab!

Video Transcription

Hi, Moz fans, and welcome to another Whiteboard Friday. My name is Sam Marsden, and I work as an SEO at web crawling platform DeepCrawl. Today we’re going to be talking about how Google understands speed and also how we can visualize some of the performance metrics that they provide to benefit things like SEO, to improve user experience, and to ultimately generate more revenue from your site.

Google & speed

Let’s start by taking a look at how Google actually understands speed. We all know that a faster site generally results in a better user experience. But Google hasn’t actually directly been incorporating that into their algorithms until recently. It wasn’t until the mobile speed update, back in July, that Google really started looking at speed. Now it’s likely only a secondary ranking signal now, because relevance is always going to be much more important than how quickly the page actually loads.

But the interesting thing with this update was that Google has actually confirmed some of the details about how they understand speed. We know that it’s a mix of lab and field data. They’re bringing in lab data from Lighthouse, from the Chrome dev tools and mixing that with data from anonymized Chrome users. So this is available in the Chrome User Experience Report, otherwise known as CrUX.

CrUX metrics

Now this is a publicly available database, and it includes five different metrics. You’ve got first paint, which is when anything loads on the page. You’ve then got first contentful paint, which is when some text or an image loads. Then you’ve DOM content loaded, which is, as the name suggests, once the DOM is loaded. You’ve also got onload, which is when any additional scripts have loaded. That’s kind of like the full page load. The fifth and final metric is first input delay, and that’s the time between when a user interacts with your site to when the server actually responds to that.

These are the metrics that make up the CrUX database, and you can actually access this CrUX data in a number of different ways. 

Where is CrUX data?

1. PageSpeed Insights

The first and easiest way is to go to PageSpeed Insights. Now you just plug in whatever page you’re interested in, and it’s going to return some of the CrUX metrics along with Lighthouse and a bunch of recommendations about how you can actually improve the performance of your site. That’s really useful, but it just kind of provides a snapshot rather than it’s not really good for ongoing monitoring as such.

2. CrUX dashboard

Another way that you can access CrUX data is through the CrUX dashboard, and this provides all of the five different metrics from the CrUX database. What it does is it looks at the percentage of page loads, splitting them out into slow, average, and fast loads. This also trends it from month to month so you can see how you’re tracking, whether you’re getting better or worse over time. So that’s really good. But the problem with this is you can’t actually manipulate the visualization of that data all that much.

3. Accessing the raw data

To do that and get the most out of the CrUX database, you need to query the raw data. Because it’s a freely available database, you can query the database by creating a SQL query and then putting this into BigQuery and running it against the CrUX database. You can then export this into Google Sheets, and then that can be pulled into Data Studio and you can create all of these amazing graphs to visualize how speed is performing or the performance of your site over time.



It might sound like a bit of a complicated process, but there are a load of great guides out there. So you’ve got Paul Calvano, who has a number of video tutorials for getting started with this process. There’s also Rick Viscomi, who’s got a CrUX Cookbook, and what this is, is a number of templated SQL queries, where you just need to plug in the domains that you’re interested in and then you can put this straight into BigQuery.

Also, if you wanted to automate this process, rather than exporting it into Google Sheets, you could pull this into Google Cloud Storage and also update the SQL query so this pulls in on a monthly basis. That’s where you kind of want to get to with that.

Why visualize?

Once you’ve got to this stage and you’re able to visualize the data, what should you actually do with it? Well, I’ve got a few different use cases here.

1. Get buy-in

The first is you can get buy-in from management, from clients, whoever you report into, for various optimization work. If you can show that you’re flagging behind competitors, for example, that might be a good basis for getting some optimization initiatives rolling. You can also use the Revenue Impact Calculator, which is a really simple kind of Google tool which allows you to put in some various details about your site and then it shows you how much more money you could be making if your site was X% faster.

2. Inform devs

Once you’ve got the buy-in, you can use the CrUX visualizations to inform developers. What you want to do here is show exactly the areas that your site is falling down. Where are these problem areas? It might be, for example, that first contentful paint is suffering. You can go to the developers and say, “Hey, look, we need to fix this.” If they come back and say, “Well, our independent tests show that the site is performing fine,” you can point to the fact that it’s from real users. This is how people are actually experiencing your site.

3. Communicate impact

Thirdly and finally, once you’ve got these optimization initiatives going, you can communicate the impacts that they’re actually having on performance and also business metrics. You could trend these various performance metrics from month to month and then overlay various business metrics. You might want to look at conversion rates. You might want to look at bounce rates, etc. and showing those side-by-side so that you can see whether they’re improving as the performance of the site is improving as well.

Faster site = better UX, better customer loyalty, and growing SEO benefit

These are different ways that you can visualize the CrUX database, and it’s really worthwhile, because if you have a faster site, then it’s going to result in better user experience. It’s going to result in better customer loyalty, because if you’re providing your users with a great experience, then they’re actually more likely to come back to you rather than going to one of your competitors.

There’s also a growing SEO benefit. We don’t know how Google is going to change their algorithms going forward, but I wouldn’t be surprised if speed is coming in more and more as a ranking signal.

This is how Google understands page speed, some ways that you can visualize the data from the CrUX database, and some of the reasons why you would want to do that.

I hope that’s been helpful. It’s been a pleasure doing this. Until the next time, thank you very much.

Video transcription by Speechpad.com

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Read more: tracking.feedpress.it

Web Optimization

SEO & Progressive Web Apps: Looking to the Future

Posted on

Posted by tombennet

Practitioners of SEO have always been mistrustful of JavaScript.

This is partly based on experience; the ability of search engines to discover, crawl, and accurately index content which is heavily reliant on JavaScript has historically been poor. But it’s also habitual, born of a general wariness towards JavaScript in all its forms that isn’t based on understanding or experience. This manifests itself as dependence on traditional SEO techniques that have not been relevant for years, and a conviction that to be good at technical SEO does not require an understanding of modern web development.

As Mike King wrote in his post The Technical SEO Renaissance, these attitudes are contributing to “an ever-growing technical knowledge gap within SEO as a marketing field, making it difficult for many SEOs to solve our new problems”. They also put SEO practitioners at risk of being left behind, since too many of us refuse to explore – let alone embrace – technologies such as Progressive Web Apps (PWAs), modern JavaScript frameworks, and other such advancements which are increasingly being seen as the future of the web.

In this article, I’ll be taking a fresh look at PWAs. As well as exploring implications for both SEO and usability, I’ll be showcasing some modern frameworks and build tools which you may not have heard of, and suggesting ways in which we need to adapt if we’re to put ourselves at the technological forefront of the web.

1. Recap: PWAs, SPAs, and service workers

Progressive Web Apps are essentially websites which provide a user experience akin to that of a native app. Features like push notifications enable easy re-engagement with your audience, while users can add their favorite sites to their home screen without the complication of app stores. PWAs can continue to function offline or on low-quality networks, and they allow a top-level, full-screen experience on mobile devices which is closer to that offered by native iOS and Android apps.

Best of all, PWAs do this while retaining – and even enhancing – the fundamentally open and accessible nature of the web. As suggested by the name they are progressive and responsive, designed to function for every user regardless of their choice of browser or device. They can also be kept up-to-date automatically and — as we shall see — are discoverable and linkable like traditional websites. Finally, it’s not all or nothing: existing websites can deploy a limited subset of these technologies (using a simple service worker) and start reaping the benefits immediately.

The spec is still fairly young, and naturally, there are areas which need work, but that doesn’t stop them from being one of the biggest advancements in the capabilities of the web in a decade. Adoption of PWAs is growing rapidly, and organizations are discovering the myriad of real-world business goals they can impact.

You can read more about the features and requirements of PWAs over on Google Developers, but two of the key technologies which make PWAs possible are:

App Shell Architecture: Commonly achieved using a JavaScript framework like React or Angular, this refers to a way of building single page apps (SPAs) which separates logic from the actual content. Think of the app shell as the minimal HTML, CSS, and JS your app needs to function; a skeleton of your UI which can be cached.
Service Workers: A special script that your browser runs in the background, separate from your page. It essentially acts as a proxy, intercepting and handling network requests from your page programmatically.

Note that these technologies are not mutually exclusive; the single page app model (brought to maturity with AngularJS in 2010) obviously predates service workers and PWAs by some time. As we shall see, it’s also entirely possible to create a PWA which isn’t built as a single page app. For the purposes of this article, however, we’re going to be focusing on the ‘typical’ approach to developing modern PWAs, exploring the SEO implications — and opportunities — faced by teams that choose to join the rapidly-growing number of organizations that make use of the two technologies described above.

We’ll start with the app shell architecture and the rendering implications of the single page app model.

2. The app shell architecture
URLs

In a nutshell, the app shell architecture involves aggressively caching static assets (the bare minimum of UI and functionality) and then loading the actual content dynamically, using JavaScript. Most modern JavaScript SPA frameworks encourage something resembling this approach, and the separation of logic and content in this way benefits both speed and usability. Interactions feel instantaneous, much like those on a native app, and data usage can be highly economical.

Credit to https://developers.google.com/web/fundamentals/architecture/app-shell

As I alluded to in the introduction, a heavy reliance on client-side JavaScript is a problem for SEO. Historically, many of these issues centered around the fact that while search crawlers require unique URLs to discover and index content, single page apps don’t need to change the URL for each state of the application or website (hence the phrase ‘single page’). The reliance on fragment identifiers — which aren’t sent as part of an HTTP request — to dynamically manipulate content without reloading the page was a major headache for SEO. Legacy solutions involved replacing the hash with a so-called hashbang (#!) and the _escaped_fragment_ parameter, a hack which has long-since been deprecated and which we won’t be exploring today.

Thanks to the HTML5 history API and pushState method, we now have a better solution. The browser’s URL bar can be changed using JavaScript without reloading the page, thereby keeping it in sync with the state of your application or site and allowing the user to make effective use of the browser’s ‘back’ button. While this solution isn’t a magic bullet — your server must be configured to respond to requests for these deep URLs by loading the app in its correct initial state — it does provide us with the tools to solve the problem of URLs in SPAs.

// Run this in your console to modify the URL in your
// browser – note that the page doesn’t actually reload.
history.pushState(null, “Page 2”, “/page2.html”);

The bigger problem facing SEO today is actually much easier to understand: rendering content, namely when and how it gets done.

Rendering content

Note that when I refer to rendering here, I’m referring to the process of constructing the HTML. We’re focusing on how the actual content gets to the browser, not the process of drawing pixels to the screen.

In the early days of the web, things were simpler on this front. The server would typically return all the HTML that was necessary to render a page. Nowadays, however, many sites which utilize a single page app framework deliver only minimal HTML from the server and delegate the heavy lifting to the client (be that a user or a bot). Given the scale of the web this requires a lot of time and computational resource, and as Google made clear at its I/O conference in 2018, this poses a major problem for search engines:

“The rendering of JavaScript-powered websites in Google Search is deferred until Googlebot has resources available to process that content.”

On larger sites, this second wave of indexation can sometimes be delayed for several days. On top of this, you are likely to encounter a myriad of problems with crucial information like canonical tags and metadata being missed completely. I would highly recommend watching the video of Google’s excellent talk on this subject for a rundown of some of the challenges faced by modern search crawlers.

Google is one of the very few search engines that renders JavaScript at all. What’s more, it does so using a web rendering service that until very recently was based on Chrome 41 (released in 2015). Obviously, this has implications outside of just single page apps, and the wider subject of JavaScript SEO is a fascinating area right now. Rachel Costello’s recent white paper on JavaScript SEO is the best resource I’ve read on the subject, and it includes contributions from other experts like Bartosz Góralewicz, Alexis Sanders, Addy Osmani, and a great many more.

For the purposes of this article, the key takeaway here is that in 2019 you cannot rely on search engines to accurately crawl and render your JavaScript-dependent web app. If your content is rendered client-side, it will be resource-intensive for Google to crawl, and your site will underperform in search. No matter what you’ve heard to the contrary, if organic search is a valuable channel for your website, you need to make provisions for server-side rendering.

But server-side rendering is a concept which is frequently misunderstood…

“Implement server-side rendering”

This is a common SEO audit recommendation which I often hear thrown around as if it were a self-contained, easily-actioned solution. At best it’s an oversimplification of an enormous technical undertaking, and at worst it’s a misunderstanding of what’s possible/necessary/beneficial for the website in question. Server-side rendering is an outcome of many possible setups and can be achieved in many different ways; ultimately, though, we’re concerned with getting our server to return static HTML.

So, what are our options? Let’s break down the concept of server-side rendered content a little and explore our options. These are the high-level approaches which Google outlined at the aforementioned I/O conference:

Dynamic Rendering — Here, normal browsers get the ‘standard’ web app which requires client-side rendering while bots (such as Googlebot and social media services) are served with static snapshots. This involves adding an additional step onto your server infrastructure, namely a service which fetches your web app, renders the content, then returns that static HTML to bots based on their user agent (i.e. UA sniffing). Historically this was done with a service like PhantomJS (now deprecated and no longer developed), while today Puppeteer (headless Chrome) can perform a similar function. The main advantage is that it can often be bolted into your existing infrastructure.

Hybrid Rendering — This is Google’s long-term recommendation, and it’s absolutely the way to go for newer site builds. In short, everyone — bots and humans — get the initial view served as fully-rendered static HTML. Crawlers can continue to request URLs in this way and will get static content each time, while on normal browsers, JavaScript takes over after the initial page load. This is a great solution in theory, and comes with many other advantages for speed and usability too; more on that soon.

The latter is cleaner, doesn’t involve UA sniffing, and is Google’s long-term recommendation. It’s also worth clarifying that ‘hybrid rendering’ is not a single solution — it’s an outcome of many possible approaches to making static prerendered content available server-side. Let’s break down how a couple of ways such an outcome can be achieved.

Isomorphic/universal apps

This is one way in which you might achieve a ‘hybrid rendering’ setup. Isomorphic applications use JavaScript which runs on both the server and the client. This is made possible thanks to the advent of Node.js, which – among many other things – allows developers to write code which can run on the backend as well as in the browser.

Typically you’ll configure your framework (React, Angular Universal, whatever) to run on a Node server, prerendering some or all of the HTML before it’s sent to the client. Your server must, therefore, be configured to respond to deep URLs by rendering HTML for the appropriate page. In normal browsers, this is the point at which the client-side application will seamlessly take over. The server-rendered static HTML for the initial view is ‘rehydrated’ (brilliant term) by the browser, turning it back into a single page app and executing subsequent navigation events with JavaScript.

Done well, this setup can be fantastic since it offers the usability benefits of client-side rendering, the SEO advantages of server-side rendering, and a rapid first paint (even if Time to Interactive is often negatively impacted by the rehydration as JS kicks in). For fear of oversimplifying the task, I won’t go into too much more detail here, but the key point is that while isomorphic JavaScript / true server-side rendering can be a powerful solution, it is often enormously complex to set up.

So, what other options are there? If you can’t justify the time or expense of a full isomorphic setup, or if it’s simply overkill for what you’re trying to achieve, are there any other ways you can reap the benefits of the single page app model — and hybrid rendering setup — without sabotaging your SEO?

Prerendering/JAMstack

Having rendered content available server-side doesn’t necessarily mean that the rendering process itself needs to happen on the server. All we need is for rendered HTML to be there, ready to serve to the client; the rendering process itself can happen anywhere you like. With a JAMstack approach, rendering of your content into HTML happens as part of your build process.

I’ve written about the JAMstack approach before. By way of a quick primer, the term stands for JavaScript, APIs, and markup, and it describes a way of building complex websites without server-side software. The process of assembling a site from front-end component parts — a task a traditional site might achieve with WordPress and PHP — is executed as part of the build process, while interactivity is handled client-side using JavaScript and APIs.

Think of it this way: everything lives in your Git repository. Your content is stored as plain text markdown files (editable via a headless CMS or other API-based solution) and your page templates and assembly logic are written in Go, JavaScript, Ruby, or whatever language your preferred site generator happens to use. Your site can be built into static HTML on any computer with the appropriate set of command line tools before it’s hosted anywhere. The resulting set of easily-cached static files can often be securely hosted on a CDN for next to nothing.

I honestly think static site generators – or rather the principles and technologies which underpin them — are the future. There’s every chance I’m wrong about this, but the power and flexibility of the approach should be clear to anyone who’s used modern npm-based automation software like Gulp or Webpack to author their CSS or JavaScript. I’d challenge anyone to test the deep Git integration offered by specialist webhost Netlify in a real-world project and still think that the JAMstack approach is a fad.

The popularity of static site generators on GitHub, generated using https://stars.przemeknowak.com

The significance of a JAMstack setup to our discussion of single page apps and prerendering should be fairly obvious. If our static site generator can assemble HTML based on templates written in Liquid or Handlebars, why can’t it do the same with JavaScript?

There is a new breed of static site generator which does just this. Frequently powered by React or Vue.js, these programs allow developers to build websites using cutting-edge JavaScript frameworks and can easily be configured to output SEO-friendly, static HTML for each page (or ‘route’). Each of these HTML files is fully rendered content, ready for consumption by humans and bots, and serves as an entry point into a complete client-side application (i.e. a single page app). This is a perfect execution of what Google termed “hybrid rendering”, though the precise nature of the pre-rendering process sets it quite apart from an isomorphic setup.

A great example is GatsbyJS, which is built in React and GraphQL. I won’t go into too much detail, but I would encourage everyone who’s read this far to check out their homepage and excellent documentation. It’s a well-supported tool with a reasonable learning curve, an active community (a feature-packed v2.0 was released in September), an extensible plugin-based architecture, rich integrations with many CMSs, and it allows developers to utilize modern frameworks like React without sabotaging their SEO. There’s also Gridsome, based on VueJS, and React Static which — you guessed it — uses React.

Nike’s recent Just Do It campaign, which utilized the React-powered static site generator GatsbyJS and is hosted on Netlify.

Enterprise-level adoption of these platforms looks set to grow; GatsbyJS was used by Nike for their Just Do It campaign, Airbnb for their engineering site airbnb.io, and Braun have even used it to power a major e-commerce site. Finally, our friends at SEOmonitor used it to power their new website.

But that’s enough about single page apps and JavaScript rendering for now. It’s time we explored the second of our two key technologies underpinning PWAs. Promise you’ll stay with me to the end (haha, nerd joke), because it’s time to explore Service Workers.

3. Service Workers

First of all, I should clarify that the two technologies we’re exploring — SPAs and service workers — are not mutually exclusive. Together they underpin what we commonly refer to as a Progressive Web App, yes, but it’s also possible to have a PWA which isn’t an SPA. You could also integrate a service worker into a traditional static website (i.e. one without any client-side rendered content), which is something I believe we’ll see happening a lot more in the near future. Finally, service workers operate in tandem with other technologies like the Web App Manifest, something that my colleague Maria recently explored in more detail in her excellent guide to PWAs and SEO.

Ultimately, though, it is service workers which make the most exciting features of PWAs possible. They’re one of the most significant changes to the web platform in its history, and everyone whose job involves building, maintaining, or auditing a website needs to be aware of this powerful new set of technologies. If, like me, you’ve been eagerly checking Jake Archibald’s Is Service Worker Ready page for the last couple of years and watching as adoption by browser vendors has grown, you’ll know that the time to start building with service workers is now.

We’re going to explore what they are, what they can do, how to implement them, and what the implications are for SEO.

What can service workers do?

A service worker is a special kind of JavaScript file which runs outside of the main browser thread. It sits in-between the browser and the network, and its powers include:

Intercepting network requests and deciding what to do with them programmatically. The worker might go to network as normal, or it might rely solely on the cache. It could even fabricate an entirely new response from a variety of sources. That includes constructing HTML.
Preloading files during service worker installation. For SPAs this commonly includes the ‘app shell’ we discussed earlier, while simple static websites might opt to preload all HTML, CSS, and JavaScript, ensuring basic functionality is maintained while offline.
Handling push notifications, similar to a native app. This means websites can get permission from users to deliver notifications, then rely on the service worker to receive messages and execute them even when the browser is closed.
Executing background sync, deferring network operations until connectivity has improved. This might be an ‘outbox’ for a webmail service or a photo upload facility. No more “request failed, please try again later” – the service worker will handle it for you at an appropriate time.

The benefits of these kinds of features go beyond the obvious usability perks. As well as driving adoption of HTTPS across the web (all the major browsers will only register service workers on the secure protocol), service workers are transformative when it comes to speed and performance. They underpin new approaches and ideas like Google’s PRPL Pattern, since we can maximize caching efficiency and minimize reliance on the network. In this way, service workers will play a key role in making the web fast and accessible for the next billion web users.

So yeah, they’re an absolute powerhouse.

Implementing a service worker

Rather than doing a bad job of writing a basic tutorial here, I’m instead going to link to some key resources. After all, you are in the best position to know how deep your understanding of service workers needs to be.

The MDN Docs are a good place to learn more about service workers and their capabilities. If you’re already confident with the essentials of web development and enjoy a learn-by-doing approach, I’d highly recommend completing Google’s PWA training course. It includes a whole practical exercise on service workers, which is a great way to familiarize yourself with the basics. If ES6 and promises aren’t yet a part of your JavaScript repertoire, prepare for a baptism of fire.

They key thing to understand — and which you’ll realize very quickly once you start experimenting — is that service workers hand over an incredible level of control to developers. Unlike previous attempts to solve the connectivity conundrum (such as the ill-fated AppCache), service workers don’t enforce any specific patterns on your work; they’re a set of tools for you to write your own solutions to the problems you’re facing.

One consequence of this is that they can be very complex. Registering and installing a service worker is not a simple exercise, and any attempts to cobble one together by copy-pasting from StackExchange are doomed to failure (seriously, don’t do this). There’s no such thing as a ready-made service worker for your site — if you’re to author a suitable worker, you need to understand the infrastructure, architecture, and usage patterns of your website. Uncle Ben, ever the web development guru, said it best: with great power comes great responsibility.

One last thing: you’ll probably be surprised how many sites you visit are already using a service worker. Head to chrome://serviceworker-internals/ in Chrome or about:debugging#workers in Firefox to see a list.

Service workers and SEO

In terms of SEO implications, the most relevant thing about service workers is probably their ability to hijack requests and modify or fabricate responses using the Fetch API. What you see in ‘View Source’ and even on the Network tab is not necessarily a representation of what was returned from the server. It might be a cached response or something constructed by the service worker from a variety of different sources.

Credit: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API

Here’s a practical example:

Head to the GatsbyJS homepage
Hit the link to the ‘Docs’ page.
Right-click – View Source

No content, right? Just some inline scripts and styles and empty HTML elements — a classic client-side JavaScript app built in React. Even if you open the Network tab and refresh the page, the Preview and Response tabs will tell the same story. The actual content only appears in the Element inspector, because the DOM is being assembled with JavaScript.

Now run a curl request for the same URL (https://www.gatsbyjs.org/docs/), or fetch the page using Screaming Frog. All the content is there, along with proper title tags, canonicals, and everything else you might expect from a page rendered server-side. This is what a crawler like Googlebot will see too.

This is because the website uses hybrid rendering and a service worker — installed in your browser — is handling subsequent navigation events. There is no need for it to fetch the raw HTML for the Docs page from the server because the client-side application is already up-and-running – thus, View Source shows you what the service worker returned to the application, not what the network returned. Additionally, these pages can be reloaded while you’re offline thanks to the service worker’s effective use of the cache.

You can easily spot which responses came from the service worker using the Network tab — note the ‘from ServiceWorker’ line below.

On the Application tab, you can see the service worker which is running on the current page along with the various caches it has created. You can disable or bypass the worker and test any of the more advanced functionality it might be using. Learning how to use these tools is an extremely valuable exercise; I won’t go into details here, but I’d recommend studying Google’s Web Fundamentals tutorial on debugging service workers.

I’ve made a conscious effort to keep code snippets to a bare minimum in this article, but grant me this one. I’ve put together an example which illustrates how a simple service worker might use the Fetch API to handle requests and the degree of control which we’re afforded:

The result:

I hope that this (hugely simplified and non-production ready) example illustrates a key point, namely that we have extremely granular control over how resource requests are handled. In the example above we’ve opted for a simple try-cache-first, fall-back-to-network, fall-back-to-custom-page pattern, but the possibilities are endless. Developers are free to dictate how requests should be handled based on hostnames, directories, file types, request methods, cache freshness, and loads more. Responses – including entire pages – can be fabricated by the service worker. Jake Archibald explores some common methods and approaches in his Offline Cookbook.

The time to learn about the capabilities of service workers is now. The skillset required for modern technical SEO has a fair degree of overlap with that of a web developer, and today, a deep understanding of the dev tools in all major browsers – including service worker debugging – should be regarded as a prerequisite.

4. Wrapping Up
SEOs need to adapt

Until recently, it’s been too easy to get away with not understanding the consequences and opportunities posed by PWAs and service workers.

These were cutting-edge features which sat on the periphery of what was relevant to search marketing, and the aforementioned wariness of many SEOs towards JavaScript did nothing to encourage experimentation. But PWAs are rapidly on their way to becoming a norm, and it will soon be impossible to do an effective job without understanding the mechanics of how they function. To stay relevant as a technical SEO (or SEO Engineer, to borrow another term from Mike King), you should put yourself at the forefront of these kinds of paradigm-shifting developments. The technical SEO who is illiterate in web development is already an anachronism, and I believe that further divergence between the technical and content-driven aspects of search marketing is no bad thing. Specialize!

Upon learning that a development team is adopting a new JavaScript framework for a new site build, it’s not uncommon for SEOs to react with a degree of cynicism. I’m certainly guilty of joking about developers being attracted to the latest shiny technology or framework, and at how rapidly the world of JavaScript development seems to evolve, layer upon layer of abstraction and automation being added to what — from the outside — can often seem to be a leaning tower of a development stack. But it’s worth taking the time to understand why frameworks are chosen, when technologies are likely to start being used in production, and how these decisions will impact SEO.

Instead of criticizing 404 handling or internal linking of a single page app framework, for example, it would be far better to be able to offer meaningful recommendations which are grounded in an understanding of how they actually work. As Jono Alderson observed in his talk on the Democratization of SEO, contributions to open source projects are more valuable in spreading appreciation and awareness of SEO than repeatedly fixing the same problems on an ad-hoc basis.

Beyond SEO

One last thing I’d like to mention: PWAs are such a transformative set of technologies that they obviously have consequences which reach far beyond just SEO. Other areas of digital marketing are directly impacted too, and from my standpoint, one of the most interesting is analytics.

If your website is partially or fully functional while offline, have you adapted your analytics setup to account for this? If push notification subscriptions are a KPI for your website, are you tracking this as a goal? Remembering that service workers do not have access to the Window object, tracking these events is not possible with ‘normal’ tracking code. Instead, it’s necessary to configure your service worker to build hits using the Measurement Protocol, queue them if necessary, and send them directly to the Google Analytics servers.

This is a fascinating area that I’ve been exploring a lot lately, and you can read the first post in my series of articles on PWA analytics over on the Builtvisible blog.

That’s all from me for now! Thanks for reading. If you have any questions or comments, please leave a message below or drop me a line on Twitter @tomcbennet.

Many thanks to Oliver Mason and Will Nye for their feedback on an early draft of this article.

Sign up for The Moz Top 10, a semimonthly mailer updating you on the top ten hottest pieces of SEO news, tips, and rad links uncovered by the Moz team. Think of it as your exclusive digest of stuff you don’t have time to hunt down but want to read!

Read more: tracking.feedpress.it