OP Custom Tag - Other SEO Details
This custom script captures additional SEO details. Under variable summary, select ObservePoint data and under SEO Data is the relevant information.
- metaDescription: Collects the full value of the description Meta tag.
- metaKeywords: Collects all the terms in the keywords Meta tag.
- pageTitle: Shows the title of each URL.
- imageAlt: Shows the caption that goes with each URL.
- canonical URL: An HTML element for each URL that prevents duplicate content problems.
- robots meta tag: Shows which pages have a robot text file. Robot text files instruct search engines on which pages they should crawl.
- h1 - h6: Shows the presence of header tags on each page.
To capture these details in an Audit or Journey, paste the snippet below into an Execute Action:
function opReqGetAsync(paramObject, acct, callback) { var baseURL = "https://opreq.observepoint.com/?acct=" + acct; var opReq = new XMLHttpRequest(); opReq.onreadystatechange = function() { if (opReq.readyState == 4 && opReq.status == 200) { callback(opReq.responseText); } } opReq.open("POST", baseURL, true); opReq.send(JSON.stringify(paramObject)); } var metaDescription = 'No meta description found', metaKeywords = 'No meta keywords found', pageTitle = 'No page title found', pageURL = window.location.href, imageAlt = '0 alt tags found', canonicalURL = 'No canonical URL found', robots = 'No robots.txt found', h1 = '0 h1 tags found', h2 = '0 h2 tags found', h3 = '0 h3 tags found', h4 = '0 h4 tags found', h5 = '0 h5 tags found', h6 = '0 h6 tags found'; /* meta description */ var metaDescLower = document.querySelector('meta[name="description"'), metaDescCap = document.querySelector('meta[name="DESCRIPTION"'); if (metaDescLower != null && metaDescLower.getAttribute('content') !== '') { var metaDesc = metaDescLower.getAttribute('content'); var chars = metaDesc.length; metaDescription = metaDesc + ' [' + chars + ' characters]'; } else if (metaDescCap.length != null && metaDescCap.getAttribute('content') !== '') { var metaDesc = metaDescCap.getAttribute('content'); var chars = metaDesc.length; metaDescription = metaDesc + ' [' + chars + ' characters]'; } /* meta keywords */ var metaKeyLower = document.querySelector('meta[name="keywords"'), metaKeyCap = document.querySelector('meta[name="KEYWORDS"'); if (metaKeyLower != null && metaKeyLower.getAttribute('content') !== '') { metaKeywords = metaKeyLower.getAttribute('content'); } else if (metaKeyCap != null && metaKeyCap.getAttribute('content') !== '') { metaKeywords = metaKeyCap.getAttribute('content'); } /* page title */ if (document.title) { pageTitle = document.title; } /* all image alt attributes */ var allImages = document.querySelectorAll('img'); if (allImages.length > 0) { imageAlt = []; for (var x = 0; x < allImages.length; x++) { alt = allImages[x].getAttribute('alt'); if (alt) { imageAlt.push(alt); } } imageAlt = (imageAlt.length > 0) ? imageAlt.join(', ') : '0 alt tags found'; } /* canonical URL */ if (document.querySelectorAll('[rel="canonical"]').length > 0) { canonicalURL = document.querySelectorAll('[rel="canonical"]')[0].getAttribute('href'); } /* robots.txt */ if (document.querySelectorAll('[name*="robots"]').length > 0) { robots = 'true'; } /* all H1s */ var allH1s = document.querySelectorAll('h1'); if (allH1s.length > 0) { h1 = []; for (var x = 0; x < allH1s.length; x++) { h1.push(allH1s[x].textContent); } h1 = h1.join(', '); } /* all H2s */ var allH2s = document.querySelectorAll('h2'); if (allH2s.length > 0) { h2 = []; for (var x = 0; x < allH2s.length; x++) { h2.push(allH2s[x].textContent); } h2 = h2.join(', '); } /* all H3s */ var allH3s = document.querySelectorAll('h3'); if (allH3s.length > 0) { h3 = []; for (var x = 0; x < allH3s.length; x++) { h3.push(allH3s[x].textContent); } h3 = h3.join(', '); } /* all H4s */ var allH4s = document.querySelectorAll('h4'); if (allH4s.length > 0) { h4 = []; for (var x = 0; x < allH4s.length; x++) { h4.push(allH4s[x].textContent); } h4 = h4.join(', '); } /* all H5s */ var allH5s = document.querySelectorAll('h5'); if (allH5s.length > 0) { h5 = []; for (var x = 0; x < allH5s.length; x++) { h5.push(allH5s[x].textContent); } h5 = h5.join(', '); } /* all H6s */ var allH6s = document.querySelectorAll('h6'); if (allH6s.length > 0) { h6 = []; for (var x = 0; x < allH6s.length; x++) { h6.push(allH6s[x].textContent); } h6 = h6.join(', '); } var seoDataObj = { "Meta_Description": metaDescription, "Page_Title": pageTitle, "Page_URL": pageURL, "Image_Alt": imageAlt, "Canonical_URL": canonicalURL, "Robots.txt": robots, "h1": h1, "h2": h2, "h3": h3, "h4": h4, "h5": h5, "h6": h6 }; opReqGetAsync(seoDataObj, "SEO Data");