{"id":9724,"date":"2023-06-01T12:46:26","date_gmt":"2023-06-01T12:46:26","guid":{"rendered":"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/"},"modified":"2023-06-01T12:46:26","modified_gmt":"2023-06-01T12:46:26","slug":"3-ways-to-use-ai-for-sitewide-entity-optimization","status":"publish","type":"post","link":"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/","title":{"rendered":"3 ways to use AI for sitewide entity optimization"},"content":{"rendered":"<p>Ready to discover three incredibly simple (yet powerful) strategies that will help you optimize quicker and more effectively?<\/p>\n<p>Here\u2019s what you\u2019ll learn in this article:<\/p>\n<p>How to use AI to provide a data source for on-page optimization.\u00a0<\/p>\n<p>Using AI to quickly create multiple schema types for every blog article on your website.\u00a0<\/p>\n<p>A free internal link solution that makes internal linking a breeze.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#Key_terminology\" >Key terminology<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#Entities\" >Entities<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#Internal_links\" >Internal links<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#Schema\" >Schema<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#EAV_Entity-Attribute-Value\" >EAV (Entity-Attribute-Value)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#1_The_hexa_grammarian_prompt_sequence\" >1. The hexa grammarian prompt sequence<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#2_Schema_and_AI\" >2. Schema and AI<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#Setting_up\" >Setting up<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#The_schema_prompt\" >The schema prompt<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#FAQPage_Schema\" >FAQPage Schema<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#3_The_internal_link_script\" >3. The internal link script<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/craighordlow.com\/index.php\/2023\/06\/01\/3-ways-to-use-ai-for-sitewide-entity-optimization\/#Using_AI_for_entity_SEO\" >Using AI for entity SEO<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Key_terminology\"><\/span>Key terminology<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Before we begin, it\u2019s important to connect these concepts to entities.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Entities\"><\/span>Entities<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>In machine learning, particularly in natural language processing, an entity is a significant thing or concept in a specific context.\u00a0<\/p>\n<p>For instance, \u201cApple\u201d could be an entity that represents the technology company or an entity that represents a type of fruit, depending on the context.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Internal_links\"><\/span>Internal links<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Internal links are hyperlinks that direct to another page on the same website. They help to establish an information hierarchy for the given website and guide visitors to high-priority sites.\u00a0<\/p>\n<p>From an SEO perspective, these links aid search engines in discovering, indexing, and understanding all the pages on your site.\u00a0<\/p>\n<p>Internal links can also help search engines understand the context and relationship between different pages and their content. This can assist the search engine in identifying relevant entities on your site.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Schema\"><\/span>Schema<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Schema (or Schema.org) is a collaborative, community-driven project with a mission to create, maintain, and promote schemas for structured data on the Internet.\u00a0<\/p>\n<p>In other words, it\u2019s a way to tag and categorize information on your webpage so that search engines can better understand what your page is about. This could be anything from a product review to an event announcement.\u00a0<\/p>\n<p>By using schema markup, you\u2019re helping search engines identify and understand the entities present on your webpage.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"EAV_Entity-Attribute-Value\"><\/span>EAV (Entity-Attribute-Value)<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>EAV is a data model used to describe entities where the number of attributes (properties, parameters) that can be used to describe them is potentially vast.\u00a0<\/p>\n<p>This is particularly useful in SEO because it helps represent information about entities flexibly, which can be beneficial in situations where the attributes used to describe an entity can vary widely.<\/p>\n<p>Search engines seek to understand the searcher\u2019s intent and the contextual meaning of terms as they appear in the searchable dataspace.\u00a0<\/p>\n<p>The concept of entities, backed by the use of schema, EAV, and internal links, enables the search engine to comprehend a website\u2019s content more effectively and present the most relevant results to users.\u00a0<\/p>\n<p><!-- START INLINE FORM --><\/p>\n<div class=\"nl-inline-form border py-2 px-1 my-2\">\n<div class=\"row align-items-center\">\n<div class=\"col-12 col-lg-3 col-xl-4 pe-md-0 pb-2 pb-lg-0\">\n<p class=\"inline-form-text text-center mb-0\">Get the daily newsletter search marketers rely on.<\/p>\n<\/div>\n<div class=\"col-12 col-lg-7 col-xl-6  pe-lg-0\">\n<div class=\"form-nl-inline\">\n<div class=\"row g-0\">\n<div class=\"form-group col-12 col-lg-8 mb-0\"><\/div>\n<div class=\"col-12 col-lg-4 col-xl-4 mb-0\">\n<div class=\"d-none\">\n<p>Processing\u2026Please wait.<\/p>\n<\/div>\n<p>\t\t\t\t\t\t\t<button class=\"btn btn-dark inlineButton w-100 rounded-0 font-weight-bold\">SUBSCRIBE<\/button>\n\t\t\t\t\t\t<\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"col-12 col-lg-2 col-xl-2 ps-1\">\n<p class=\"text-center mb-0\"><a class=\"nl-terms\" href=\"https:\/\/searchengineland.com\/termsofuse\" target=\"_blank\" rel=\"noopener noreferrer\">See terms.<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- END INLINE FORM --><\/p>\n<p>Overall, the following three tactics enhance the \u201csemantic understanding\u201d of your website. Along with other SEO practices, they can help improve your site\u2019s visibility in the SERPs.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"1_The_hexa_grammarian_prompt_sequence\"><\/span>1. The hexa grammarian prompt sequence<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>This prompt is specifically designed around entities. As we\u2019ve covered in the <a href=\"https:\/\/searchengineland.com\/entity-seo-guide-395264\" target=\"_blank\" rel=\"noopener\">definitive guide to entities<\/a>, entity understanding is largely tied to grammar.\u00a0<\/p>\n<p>The nouns, adjectives, verbs, adverbs, prepositions, and EAV are all integrally tied to entities.\u00a0<\/p>\n<p>While it sounds confusing, it\u2019s simpler than you might think. Here\u2019s what ChatGPT says about its importance.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>Here are the six prompts:<\/p>\n<p>\u201cProvide a comprehensive list of the most common verbs associated with the topic. Cluster the list and nest associated verbs.\u201d<\/p>\n<p>\u201cProvide a comprehensive list of the most common nouns associated with the topic. Cluster the list and nest associated nouns.\u201d<\/p>\n<p>\u201cProvide a comprehensive list of the most common adjectives associated with the topic. Cluster the list and nest associated adjectives.\u201d<\/p>\n<p>\u201cProvide a comprehensive list of the most common adverbs associated with the topic. Cluster the list and nest associated verbs.\u201d<\/p>\n<p>\u201cProvide a comprehensive list of the most common predicates associated with the topic.\u201d<\/p>\n<p>\u201cProvide a comprehensive list of attributes associated with the topic.\u201d<\/p>\n<p>When you get your answers, you can save them however you like. I prefer a Google sheet.<\/p>\n<p>I suggest using this list in a couple of different ways.<\/p>\n<p>You can use the hexa-list to inform your content briefs. You could use the hexa-list to optimize existing content. You could even use this list to help you craft clever prompts for OpenAI.\u00a0<\/p>\n<p>I can\u2019t give away all of the in-house secrets, but suffice it to say that this list can be used to help you with programmatic AI content deployment.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"2_Schema_and_AI\"><\/span>2. Schema and AI<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Creating schema for hundreds of web pages is an absolute slog. Over the past few years, agencies have productized schema because it&#8217;s one of those tasks that no one wants to do.<\/p>\n<p>Since schema is hard to understand and the benefits aren\u2019t always understood, many people use an out-of-the-box solution (e.g., SEOpress, RankMath, Yoast).<\/p>\n<p>This article\u2019s co-author, Andrew Ansley, developed a straightforward system for schema generation. You don\u2019t need to understand anything about schema to make this work. <\/p>\n<p>All you need is an OpenAI playground and access to GPT-4.<\/p>\n<p>For this example, we are going to use webpage schema so we can create a clear and structured declaration of the entities that are found in the blog article.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Setting_up\"><\/span>Setting up<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Step 1: <\/strong>Grab the URL for your blog article.<\/p>\n<p><strong>Step 2:<\/strong> Provide the author, website URL, organization name, publisher name, and web page URL in the system text.<\/p>\n<p><strong>Step 3:<\/strong> Copy and paste your blog article text into the system text.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>As you can see from the image, the system text is on the left. The actual prompting is in the middle of the page, functioning exactly like ChatGPT \u2013 with a major upgrade.\u00a0<\/p>\n<p>In playground, you can adjust settings and the system text functions as memory\/context.<\/p>\n<p>Inside the playground, you can use around 8,000 tokens (.75 words per token = 6,000 words).\u00a0<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_schema_prompt\"><\/span>The schema prompt<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The prompt is straightforward. All you need to enter into the user box is:\u00a0<\/p>\n<p>\u201cCreate WebPage JSON-LD schema. Use about and mentions. The about and the mentions should use entities and the associated Wikipedia page.\u201d\u00a0<\/p>\n<p>After you\u2019re done, you\u2019ll get some pro schema to add to your article. We typically use a plugin to inject header code into a blog article, but that is just one of many options.<\/p>\n<p>If you don\u2019t trust the AI, you can go to <a href=\"https:\/\/validator.schema.org\/#\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/validator.schema.org\/<\/a> and provide the code to see if it has any errors.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>As you can see from the image, my pro schema code designed for entity optimization is free from flaws. Huzzah!<\/p>\n<p>Another schema type that you can easily add to a blog is FAQPage schema.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"FAQPage_Schema\"><\/span>FAQPage Schema<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This schema type is simpler than the previous example. For this schema, you can delete your article text from the system and you can replace it with whatever you like.<\/p>\n<p>The prompt is:\u00a0<\/p>\n<p>\u201cCreate FAQ schema.\u201d<\/p>\n<p>If you have the text inside of the system, it will generate something like the following example.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>For those who prefer ChatGPT, you can just use the web browsing plugin (which is even simpler to use).<\/p>\n<p>The only prompt you need is:\u00a0<\/p>\n<p>\u201cCreate FAQ schema for the URL <em>[insert link here]<\/em>.\u201d\u00a0<\/p>\n<p>If you want to do multiple URLs, you can add additional URLs and ask ChatGPT to create FAQ Schema for each URL.<\/p>\n<p>I can\u2019t help but nerd out over how easy it is to accomplish SEO tasks with AI. While I am showing a non-programmatic example here, you can literally explain what you want to build, and the AI will provide the code.<\/p>\n<p>You don\u2019t even need to ask the AI for code to accomplish a more programmatic approach to schema. You can use this simple prompt sequence:<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>\u201cCreate FAQ schema in JSON-LD format. Process one URL and when you are done with that task, initiate another prompt that continues the task until you process the final URL in the list.\u201d<\/p>\n<p>The answer looks like this:<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>When you use this method, the generation of results will end around the 6th URL.\u00a0<\/p>\n<p>If you give a list of URLs that exceed the output length, you can type the word \u201ccontinue,\u201d and then the AI will continue down the list of URLs.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"3_The_internal_link_script\"><\/span>3. The internal link script<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Internal links are incredibly important for passing authority between pages, improving crawlability for Google Bot, and communicating topic relationships for entity optimization.\u00a0<\/p>\n<p>Here\u2019s a script that Ansley created that only needs three things.\u00a0<\/p>\n<p>A Google Doc.<\/p>\n<p>A Google Sheet.<\/p>\n<p>App Scripts.<\/p>\n<p>The doc is the article you&#8217;re writing that will link out to your other articles.<\/p>\n<p>The Google Sheet contains all of your keywords and URLs. I use a sitemap.\u00a0<\/p>\n<p>The next step is to ask ChatGPT to identify the keyword from the URL slug.<\/p>\n<p>Here is the script.<\/p>\n<p>function addLinksFromSheet() {<br \/>\n\/\/ Your Google Sheets ID<br \/>\nvar sheet = SpreadsheetApp.openById(&#8216;<strong>1AOvyOL0PCVVjY86aEEx77RqUWthV1m5Vzs2SyXE2f7g<\/strong>&#8216;).getActiveSheet();<br \/>\n\/\/ Get all the rows of data in the Sheet, excluding the headers<br \/>\nvar data = sheet.getRange(&#8220;<strong>A2:B<\/strong>&#8221; + sheet.getLastRow()).getValues();<br \/>\n\/\/ Iterate over all the rows<br \/>\nfor (var i = 0; i &lt; data.length; i++) {<br \/>\n\/\/ The first column in the row contains the text to be hyperlinked<br \/>\nvar searchPhrase = data[i][0];<br \/>\n\/\/ The second column contains the URL<br \/>\nvar hyperlink = data[i][1];<br \/>\n\/\/ Use your addLinks function to add the hyperlink to the doc<br \/>\naddLinks(searchPhrase, hyperlink);<br \/>\n}<br \/>\n}<br \/>\nfunction addLinks(searchPhrase, hyperlink) {<br \/>\nif (!searchPhrase) {<br \/>\nreturn;<br \/>\n}<br \/>\n\/\/ Your Google Doc ID<br \/>\nconst document = DocumentApp.openById(&#8216;<strong>1_T5BRHiNi3iPnEL6xtys2qEV9WNzPZAwsQdIqtgiFtI<\/strong>&#8216;);<br \/>\nconst body = document.getBody();<br \/>\nlet search = null;<br \/>\nlet count = 0;<br \/>\nwhile (count &lt; 1) {<br \/>\nsearch = body.findText(searchPhrase, search ? search : null);<br \/>\nif (!search) {<br \/>\nbreak;<br \/>\n}<br \/>\nconst searchElement = search.getElement();<br \/>\nconst startIndex = search.getStartOffset();<br \/>\nconst endIndex = search.getEndOffsetInclusive();<br \/>\nsearchElement.asText().setLinkUrl(startIndex, endIndex, hyperlink);<br \/>\ncount++;<br \/>\n}<br \/>\ndocument.saveAndClose();<br \/>\n}<\/p>\n<p>I emphasized the part of the script that requires your own unique document slug.\u00a0<\/p>\n<p>The inspiration for this script came from Hamish\u2019s YoTtube channel, Income Surfers. Hamish is a new YouTuber, but his content is solid if you\u2019re wanting AI + SEO.<\/p>\n<p>The GIF below demonstrates what to do with Google App Scripts.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>Save project.<\/p>\n<p>Click <em>Run<\/em> and accept permissions.<\/p>\n<p>The results look like the screenshot below.<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>The perk of this setup is you can essentially equip any of your writers with an easy way to internally link.\u00a0<\/p>\n<p>One of the most difficult aspects of internal linking is the fact that most outsourced writers don\u2019t know what to link to.\u00a0<\/p>\n<p>Set up a database and maintain that list so your writers can apply all the internal links you want them to use.<\/p>\n<p>If you\u2019d like to include additional keywords, you can go to ChatGPT and paste your data. I used five keywords and five URLs for illustration purposes.<\/p>\n<p><strong>Prompt<\/strong>:\u00a0<\/p>\n<p>\u201cI want to expand this table further. Repeat each URL 5 times and provide 4 additional keywords associated to each URL. The new keywords should have high semantic relevance to the original keyword in the list.\u201d<\/p>\n<p><strong>Output<\/strong>:<\/p>\n<div class=\"wp-block-image\">\n<\/div>\n<p>As you can see, I now have five keywords to choose from. To avoid linking to the same URL, you\u2019ll need to modify the script. Here is the new version:<\/p>\n<p>function addLinksFromSheet() {<br \/>\n  \/\/ Your Google Sheets ID<br \/>\n  var sheet = SpreadsheetApp.openById(&#8216;1jTwgsEgz5X4BbiNDjQeHJrRVtYdGi3LEKEBvPgIYtg8&#8217;).getActiveSheet();<br \/>\n  \/\/ Get all the rows of data in the Sheet, excluding the headers<br \/>\n  var data = sheet.getRange(&#8220;A2:B&#8221; + sheet.getLastRow()).getValues();<br \/>\n  \/\/ Keep track of the used URLs<br \/>\n  var usedUrls = [];<br \/>\n  \/\/ Iterate over all the rows<br \/>\n  for (var i = 0; i &lt; data.length; i++) {<br \/>\n    \/\/ The first column in the row contains the text to be hyperlinked<br \/>\n    var searchPhrase = data[i][0];<br \/>\n    \/\/ The second column contains the URL<br \/>\n    var hyperlink = data[i][1];<br \/>\n    \/\/ Check if this URL has been used already<br \/>\n    if (usedUrls.indexOf(hyperlink) === -1) {<br \/>\n      \/\/ It hasn&#8217;t, so add the hyperlink to the doc<br \/>\n      addLinks(searchPhrase, hyperlink);<br \/>\n      \/\/ And mark this URL as used<br \/>\n      usedUrls.push(hyperlink);<br \/>\n    }<br \/>\n  }<br \/>\n}<\/p>\n<p>function addLinks(searchPhrase, hyperlink) {<br \/>\n  if (!searchPhrase) {<br \/>\n    return;<br \/>\n  }<br \/>\n  \/\/ Your Google Doc ID<br \/>\n  const document = DocumentApp.openById(&#8216;1rLL9J6Lag6McZ6F22R3ptyb7XFqg9Bc1qmEgobrTa3w&#8217;);<br \/>\n  const body = document.getBody();<br \/>\n  let search = null;<br \/>\n  let count = 0;<br \/>\n  while (count &lt; 1) {<br \/>\n    search = body.findText(searchPhrase, search ? search : null);<br \/>\n    if (!search) {<br \/>\n      break;<br \/>\n    }<br \/>\n    const searchElement = search.getElement();<br \/>\n    const startIndex = search.getStartOffset();<br \/>\n    const endIndex = search.getEndOffsetInclusive();<br \/>\n    searchElement.asText().setLinkUrl(startIndex, endIndex, hyperlink);<br \/>\n    count++;<br \/>\n  }<br \/>\n  document.saveAndClose();<br \/>\n}<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Using_AI_for_entity_SEO\"><\/span>Using AI for entity SEO<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The three specific examples above show how AI can be used to dramatically reduce the time involved in optimizing for entities.\u00a0<\/p>\n<p>We always recommend utilizing AI for any repetitive or highly technical task and spending more of your time on the strategy or creative functions of SEO.\u00a0 Entity SEO is no different.<\/p>\n<p>However, it is important to know that there are many other uses for AI when optimizing for entities, and this is by no means an exhaustive list.\u00a0\u00a0<\/p>\n<p><em><strong>Make sure to attend my session at SMX Advanced, taking place June 13-14, to learn more about Entity SEO and AI and why we believe Entity SEO will be crucial to top SERP positions in the future. <\/strong><\/em><\/p>\n<p><em>This article was co-authored by <\/em><a href=\"https:\/\/www.linkedin.com\/in\/andrew-ansley-marketing\" target=\"_blank\" rel=\"noopener noreferrer\"><em>Andrew Ansley<\/em><\/a><em>.<\/em><\/p>\n<p>This is the third article in the entity SEO series. If you would like to start by reading the first two articles, they are linked here:<\/p>\n<p><a href=\"https:\/\/searchengineland.com\/entity-seo-guide-395264\" target=\"_blank\" rel=\"noopener\">The definitive guide to entity SEO<\/a><\/p>\n<p><a href=\"https:\/\/searchengineland.com\/optimize-for-entities-424286\" target=\"_blank\" rel=\"noopener\">How to optimize for entities<\/a><\/p>\n<p>The post <a href=\"https:\/\/searchengineland.com\/ai-sitewide-entity-optimization-427734\" target=\"_blank\" rel=\"noopener\">3 ways to use AI for sitewide entity optimization<\/a> appeared first on <a href=\"https:\/\/searchengineland.com\/\" target=\"_blank\" rel=\"noopener\">Search Engine Land<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Ready to discover three incredibly simple (yet powerful) strategies that will help you optimize quicker and more effectively? Here\u2019s what you\u2019ll learn in this article: How to use AI to provide a data source for on-page optimization.\u00a0 Using AI to quickly create multiple schema types for every blog article on your website.\u00a0 A free internal link solution that makes internal linking a breeze. Key terminology Before we begin, it\u2019s important to connect these concepts to entities. Entities In machine learning, particularly in natural language processing, an [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"h5ap_radio_sources":[],"cybocfi_hide_featured_image":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-9724","post","type-post","status-publish","format-standard","hentry","category-best-seo-blogs"],"featured_image_src":null,"featured_image_src_square":null,"author_info":{"display_name":false,"author_link":"https:\/\/craighordlow.com\/author\/"},"_links":{"self":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts\/9724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/comments?post=9724"}],"version-history":[{"count":0,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/posts\/9724\/revisions"}],"wp:attachment":[{"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/media?parent=9724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/categories?post=9724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/craighordlow.com\/index.php\/wp-json\/wp\/v2\/tags?post=9724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}