Project configuration
Full project JSON for on-page-seo-auditor
Canonical byte length: 146,424 - the length of the canonical form the digest covers.
Canonical digest: fcba8379586e34cd2b9564a664ae92917d9529ba32604229dabe23f9c0d6e430
Copy
About the delivered configuration encoding
At launch the backend delivers this configuration to the launcher as plain JSON.
The block below is the complete project definition the launcher receives.
What you are reading has machine-readable equivalents, and the JSON at those routes
is the same document as the JSON rendered on this page: the
listing overview ,
the per-listing
detail document
and the
configuration document .
The digest and byte count shown in the panel header are computed over that document's canonical
JSON form - recursively sorted keys, two-space indentation, no trailing newline - which is the
form the provisioning pipeline signs and the reconcile control re-digests; it differs from the
highlighted block above in key order and by that trailing newline, so hashing the visible text
will not reproduce the digest.
{
"name" : "On-Page SEO Auditor" ,
"settings" : {
"urls" : [
"${urls_to_audit}"
],
"headless" : false ,
"max_concurrent_workers" : 4 ,
"humanoidEnabled" : false ,
"proxyEnabled" : false ,
"captchaEnabled" : false ,
"matchTimezoneAndLocale" : false ,
"block_resources" : false ,
"get_urls_from_sitemap" : false ,
"respect_robots_txt" : false ,
"skip_initial_navigation" : true ,
"variables" : [
{
"name" : "urls_to_audit" ,
"value" : "https://rtila.com/ \n https://example.com/" ,
"required" : true ,
"is_list" : true
},
{
"name" : "title_pixel_limit" ,
"value" : "580" ,
"required" : false ,
"is_list" : false
},
{
"name" : "desc_pixel_limit" ,
"value" : "990" ,
"required" : false ,
"is_list" : false
},
{
"name" : "low_content_words" ,
"value" : "300" ,
"required" : false ,
"is_list" : false
},
{
"name" : "max_outbound_links" ,
"value" : "100" ,
"required" : false ,
"is_list" : false
}
]
},
"datasets" : {
"Response_Indexability" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "Final_URL" ,
"type" : "text" ,
"selector" : "variable=last_final_url"
},
{
"name" : "Status_Code" ,
"type" : "text" ,
"selector" : "variable=last_http_status"
},
{
"name" : "Status_Text" ,
"type" : "text" ,
"selector" : "variable=last_http_status_text"
},
{
"name" : "Navigation_OK" ,
"type" : "text" ,
"selector" : "variable=last_navigation_ok"
},
{
"name" : "Navigation_Error" ,
"type" : "text" ,
"selector" : "variable=last_navigation_error"
},
{
"name" : "Response_Time_ms" ,
"type" : "text" ,
"selector" : "variable=last_response_time_ms"
},
{
"name" : "HTTP_Protocol" ,
"type" : "text" ,
"selector" : "variable=last_protocol"
},
{
"name" : "Server_Header" ,
"type" : "text" ,
"selector" : "variable=last_server"
},
{
"name" : "Content_Type" ,
"type" : "text" ,
"selector" : "variable=last_content_type"
},
{
"name" : "Charset_Header" ,
"type" : "text" ,
"selector" : "variable=last_charset"
},
{
"name" : "Content_Length" ,
"type" : "text" ,
"selector" : "variable=last_content_length"
},
{
"name" : "Cache_Control" ,
"type" : "text" ,
"selector" : "variable=last_cache_control"
},
{
"name" : "ETag" ,
"type" : "text" ,
"selector" : "variable=last_etag"
},
{
"name" : "Last_Modified" ,
"type" : "text" ,
"selector" : "variable=last_last_modified"
},
{
"name" : "X_Robots_Tag" ,
"type" : "text" ,
"selector" : "variable=last_x_robots_tag"
},
{
"name" : "Redirect_Count" ,
"type" : "text" ,
"selector" : "variable=last_redirect_count"
},
{
"name" : "Set_Cookie_Names" ,
"type" : "text" ,
"selector" : "variable=last_set_cookie_names" ,
"transformations" : [
{
"type" : "script" ,
"code" : "if(!value)return '';if(Array.isArray(value))return value.join(', ');if(typeof value==='object')return Object.keys(value).join(', ');return String(value);" ,
"default_value" : ""
}
]
},
{
"name" : "Redirect_Chain" ,
"type" : "text" ,
"selector" : "variable=last_redirect_chain" ,
"transformations" : [
{
"type" : "script" ,
"code" : "if(!Array.isArray(value)||!value.length)return '';return value.map(function(h){return (h&&h.status?h.status:'?')+' '+(h&&h.url?h.url:'')+(h&&h.location?' -> '+h.location:'');}).join(' | ');" ,
"default_value" : ""
}
]
},
{
"name" : "All_Response_Headers" ,
"type" : "text" ,
"selector" : "variable=last_response_headers" ,
"transformations" : [
{
"type" : "script" ,
"code" : "if(!value)return '';try{return JSON.stringify(value);}catch(e){return String(value);}" ,
"default_value" : ""
}
]
},
{
"name" : "Status_Class" ,
"type" : "text" ,
"selector" : "variable=last_http_status" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var n=Number(value);if(!isFinite(n)||n===0)return '0xx No Response';if(n<200)return '1xx Informational';if(n<300)return '2xx Success';if(n<400)return '3xx Redirect';if(n<500)return '4xx Client Error';return '5xx Server Error';" ,
"default_value" : "0xx No Response"
}
]
},
{
"name" : "Is_Success" ,
"type" : "text" ,
"selector" : "variable=last_http_status" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var n=Number(value);return String(isFinite(n)&&n>=200&&n<300);" ,
"default_value" : "false"
}
]
},
{
"name" : "Is_Redirect" ,
"type" : "text" ,
"selector" : "variable=last_http_status" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var n=Number(value);return String(isFinite(n)&&n>=300&&n<400);" ,
"default_value" : "false"
}
]
},
{
"name" : "Is_Client_Error" ,
"type" : "text" ,
"selector" : "variable=last_http_status" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var n=Number(value);return String(isFinite(n)&&n>=400&&n<500);" ,
"default_value" : "false"
}
]
},
{
"name" : "Is_Server_Error" ,
"type" : "text" ,
"selector" : "variable=last_http_status" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var n=Number(value);return String(isFinite(n)&&n>=500);" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Length" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(String(value).length);" ,
"default_value" : "0"
}
]
},
{
"name" : "URL_Depth" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return String(new URL(String(value)).pathname.split('/').filter(function(s){return s.length>0;}).length);}catch(e){return '0';}" ,
"default_value" : "0"
}
]
},
{
"name" : "URL_Protocol" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return new URL(String(value)).protocol.replace(':','');}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Host" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return new URL(String(value)).hostname;}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Path" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return new URL(String(value)).pathname;}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Query_String" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return new URL(String(value)).search.replace(/^ \\ ?/,'');}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Fragment" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return new URL(String(value)).hash.replace(/^#/,'');}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Param_Count" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return String(Array.from(new URL(String(value)).searchParams.keys()).length);}catch(e){return '0';}" ,
"default_value" : "0"
}
]
},
{
"name" : "URL_Param_Names" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return Array.from(new URL(String(value)).searchParams.keys()).join(', ');}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Has_Parameters" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return String(new URL(String(value)).search.length>1);}catch(e){return 'false';}" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Has_Fragment" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return String(new URL(String(value)).hash.length>1);}catch(e){return 'false';}" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Has_Session_ID" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(/(?:^|[?&;/])(phpsessid|jsessionid|aspsessionid[a-z]*|sid|sessionid|session_id|cfid|cftoken)(?:=|;|$)/i.test(String(value)));" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Tracking_Params" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var m=String(value).match(/[?&](utm_[a-z]+|gclid|fbclid|msclkid|dclid|gbraid|wbraid|twclid|igshid|mc_[a-z]+|yclid|_ga|_hs[a-z]+|vero_[a-z]+|ref|source|medium|campaign)(?==|&|$)/gi);if(!m)return '';var out=[];for(var i=0;i<m.length;i++){var k=m[i].replace(/^[?&]/,'');if(out.indexOf(k)===-1)out.push(k);}return out.join(', ');" ,
"default_value" : ""
}
]
},
{
"name" : "URL_File_Extension" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{var p=new URL(String(value)).pathname;var m=p.match(/ \\ .([a-z0-9]{1,5})$/i);return m?m[1].toLowerCase():'';}catch(e){return '';}" ,
"default_value" : ""
}
]
},
{
"name" : "URL_Is_Non_HTML" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(/ \\ .(pdf|docx?|xlsx?|pptx?|zip|rar|gz|tar|7z|exe|dmg|csv|txt|rtf|epub|mp[34]|avi|mov|wmv|flv|webm|png|jpe?g|gif|svg|webp|ico|css|js|json|xml)(?:$| \\ ?)/i.test(String(value)));" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Word_Count" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{var p=new URL(String(value)).pathname;return String(p.split(/[ \\ /_ \\ - \\ .]+/).filter(function(s){return s.length>1;}).length);}catch(e){return '0';}" ,
"default_value" : "0"
}
]
},
{
"name" : "URL_Uses_Underscores" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return String(new URL(String(value)).pathname.indexOf('_')!==-1);}catch(e){return 'false';}" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Has_Uppercase" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{var p=new URL(String(value)).pathname;return String(p!==p.toLowerCase());}catch(e){return 'false';}" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Is_Secure" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{return String(new URL(String(value)).protocol==='https:');}catch(e){return 'false';}" ,
"default_value" : "false"
}
]
},
{
"name" : "URL_Is_Pretty" ,
"type" : "page_url" ,
"selector" : "" ,
"transformations" : [
{
"type" : "script" ,
"code" : "try{var u=new URL(String(value));return String(u.search.length<=1 && !/ \\ .[a-z0-9]{2,5}$/i.test(u.pathname) && u.pathname===u.pathname.toLowerCase());}catch(e){return 'false';}" ,
"default_value" : "false"
}
]
},
{
"name" : "Meta_Robots" ,
"type" : "attribute" ,
"selector" : "css=meta[name='robots']" ,
"attribute" : "content"
},
{
"name" : "Meta_Robots_Count" ,
"type" : "count" ,
"selector" : "css=meta[name='robots']"
},
{
"name" : "Meta_Robots_All" ,
"type" : "text" ,
"selector" : "css=meta[name='robots']"
},
{
"name" : "Canonical_URL" ,
"type" : "attribute" ,
"selector" : "css=link[rel='canonical']" ,
"attribute" : "href"
},
{
"name" : "Canonical_Count" ,
"type" : "count" ,
"selector" : "css=link[rel='canonical']"
},
{
"name" : "Meta_Refresh" ,
"type" : "attribute" ,
"selector" : "css=meta[http-equiv='refresh' i]" ,
"attribute" : "content"
},
{
"name" : "Base_Href" ,
"type" : "attribute" ,
"selector" : "css=base[href]" ,
"attribute" : "href"
},
{
"name" : "HTML_Lang" ,
"type" : "attribute" ,
"selector" : "css=html" ,
"attribute" : "lang"
},
{
"name" : "Charset_Meta" ,
"type" : "attribute" ,
"selector" : "css=meta[charset]" ,
"attribute" : "charset"
},
{
"name" : "Viewport_Content" ,
"type" : "attribute" ,
"selector" : "css=meta[name='viewport']" ,
"attribute" : "content"
},
{
"name" : "Indexability" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};function s(x){return (x===null||x===undefined)? \"\" :String(x);}function lo(x){return s(x).toLowerCase();}function n(x){var v=parseInt(x,10);return isFinite(v)?v:0;}var pageUrl=s(it.page_url),finalUrl=s(it.final_url)||pageUrl;var statusNum=(it.status===null||it.status===undefined||it.status=== \"\" )?0:Number(it.status);if(!isFinite(statusNum))statusNum=0;var pu=null,fu=null;try{pu=new URL(pageUrl);}catch(e){}try{fu=new URL(finalUrl);}catch(e){}var metaRaw=s(it.metarobots),xRaw=s(it.xrobots);var combined=(metaRaw+ \" , \" +xRaw).toLowerCase();var has=function(d){return combined.indexOf(d)!==-1;};var directives=[];combined.split( \" , \" ).forEach(function(d){d=d.trim();if(d)directives.push(d);});function dv(name){for(var i=0;i<directives.length;i++){var p=directives[i].split( \" : \" );if(p[0].trim()===name)return p.slice(1).join( \" : \" ).trim();}return \"\" ;}var noindex=has( \" noindex \" )||has( \" none \" );var nofollow=has( \" nofollow \" )||has( \" none \" );var noindexSources=[];if(lo(metaRaw).indexOf( \" noindex \" )!==-1||lo(metaRaw).indexOf( \" none \" )!==-1)noindexSources.push( \" meta robots \" );if(lo(xRaw).indexOf( \" noindex \" )!==-1||lo(xRaw).indexOf( \" none \" )!==-1)noindexSources.push( \" X-Robots-Tag \" );var ct=lo(it.content_type);var isHtml=ct.indexOf( \" html \" )!==-1||ct=== \"\" ;var isPdf=ct.indexOf( \" pdf \" )!==-1;var isDoc=!isHtml&&ct!== \"\" ;var blockers=[];if(statusNum===0)blockers.push( \" No HTTP response \" );else if(statusNum>=400)blockers.push( \" HTTP \" +statusNum);if(noindexSources.length)blockers.push( \" noindex ( \" +noindexSources.join( \" + \" )+ \" ) \" );if(s(it.metarefresh).trim()!== \"\" )blockers.push( \" meta refresh \" );if(!isHtml)blockers.push( \" Non-HTML content type: \" +ct);var indexable=blockers.length===0;var canonRaw=s(it.canonical).trim(),canonCount=n(it.canonical_n);var canonAbs=/^https?: \\ / \\ //i.test(canonRaw),canonUrl= \"\" ,cu=null;if(canonRaw){try{cu=new URL(canonRaw,pageUrl);canonUrl=cu.href;}catch(e){canonUrl=canonRaw;}}var canonSelf=(cu&&pu)?(cu.origin===pu.origin&&cu.pathname===pu.pathname&&cu.search===pu.search):false;var canonFinal=(cu&&fu)?(cu.origin===fu.origin&&cu.pathname===fu.pathname&&cu.search===fu.search):false;var canonIssues=[];if(!canonRaw)canonIssues.push( \" Missing \" );if(canonCount>1)canonIssues.push( \" Multiple ( \" +canonCount+ \" ) \" );if(canonRaw&&!canonAbs)canonIssues.push( \" Relative \" );if(canonRaw&&cu&&pu&&cu.protocol!==pu.protocol)canonIssues.push( \" Scheme mismatch \" );if(canonRaw&&cu&&pu&&cu.hostname!==pu.hostname)canonIssues.push( \" Cross-host \" );if(canonRaw&&cu&&cu.search.indexOf( \" = \" )!==-1)canonIssues.push( \" Has parameters \" );if(canonRaw&&!canonSelf&&!canonFinal)canonIssues.push( \" Points elsewhere \" );var mr=s(it.metarefresh).trim(),mrDelay=null,mrTarget= \"\" ;if(mr){var m1=mr.match(/^ \\ s*( \\ d+) \\ s*; \\ s*url \\ s*= \\ s*(.+)$/i);if(m1){mrDelay=parseInt(m1[1],10);mrTarget=m1[2].trim().replace(/^[' \" ]|[' \" ]$/g, \"\" );}else{var m2=mr.match(/^ \\ s*( \\ d+)/);if(m2)mrDelay=parseInt(m2[1],10);}}var hostChanged=(pu&&fu)?(pu.hostname!==fu.hostname):false;var protoUp=(pu&&fu)?(pu.protocol!==fu.protocol):false;var wwwChanged=(pu&&fu)?(pu.hostname.replace(/^www \\ ./, \"\" )!==fu.hostname.replace(/^www \\ ./, \"\" )):false;var slashChanged=(pu&&fu)?((pu.pathname.slice(-1)=== \" / \" )!==(fu.pathname.slice(-1)=== \" / \" )):false;var caseChanged=(pu&&fu)?(pu.pathname!==fu.pathname&&pu.pathname.toLowerCase()===fu.pathname.toLowerCase()):false;var pathChanged=(pu&&fu)?(pu.pathname!==fu.pathname):false;var paramsChanged=(pu&&fu)?(pu.search!==fu.search):false;var metaCharset=lo(it.charset_meta),hdrCharset=lo(it.charset_hdr);var charsetMatch=(!metaCharset||!hdrCharset)?null:(metaCharset===hdrCharset);var vp=s(it.viewport).trim();var vpPresent=vp!== \"\" ;var vpBlocks=vpPresent&&(vp.indexOf( \" user-scalable=no \" )!==-1||/maximum-scale \\ s*= \\ s*1( \\ .0)? \\ b/.test(vp));var cookies=Array.isArray(it.cookies)?it.cookies:[];var cookieStr=cookies.join( \" , \" ).toLowerCase();return {indexable:String(indexable),indexability_verdict:indexable? \" Indexable \" : \" Non-Indexable \" ,indexability_blockers:blockers.join( \" ; \" ),noindex:String(noindex),noindex_sources:noindexSources.join( \" , \" ),nofollow:String(nofollow),noarchive:String(has( \" noarchive \" )),nosnippet:String(has( \" nosnippet \" )),noimageindex:String(has( \" noimageindex \" )),max_snippet:dv( \" max-snippet \" ),max_image_preview:dv( \" max-image-preview \" ),max_video_preview:dv( \" max-video-preview \" ),unavailable_after:dv( \" unavailable_after \" ),robots_directives_all:directives.join( \" , \" ),canonical_is_self:String(canonSelf),canonical_is_absolute:String(canonAbs),canonical_resolved:canonUrl,canonical_issues:canonIssues.join( \" ; \" ),canonical_verdict:canonIssues.length===0? \" OK \" :canonIssues.join( \" ; \" ),host_changed:String(hostChanged),protocol_upgraded:String(protoUp),www_changed:String(wwwChanged),trailing_slash_changed:String(slashChanged),case_changed:String(caseChanged),path_changed:String(pathChanged),params_changed:String(paramsChanged),meta_refresh_present:String(mr!== \"\" ),meta_refresh_delay:mrDelay===null? \"\" :String(mrDelay),meta_refresh_target:mrTarget,content_type_is_html:String(isHtml),is_pdf:String(isPdf),is_document_resource:String(isDoc),charset_matches_header:charsetMatch===null? \"\" :String(charsetMatch),charset_declared:String(metaCharset!== \"\" ||hdrCharset!== \"\" ),viewport_present:String(vpPresent),viewport_blocks_scaling:String(vpBlocks),is_mobile_friendly:String(vpPresent&&!vpBlocks),html_lang_present:String(s(it.html_lang).trim()!== \"\" ),cookie_count:String(cookies.length),has_analytics_cookie:String(/_ga|ga_|_gid|_utm|_fbp|_fbc|_hj/.test(cookieStr)),has_session_cookie:String(/sess|jsessionid|phpsessid|sid|cfid|cftoken|asp \\ .net_sessionid/.test(cookieStr))};"
}
],
"properties" : [
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "final_url" ,
"type" : "text" ,
"selector" : "variable=last_final_url"
},
{
"name" : "status" ,
"type" : "text" ,
"selector" : "variable=last_http_status"
},
{
"name" : "xrobots" ,
"type" : "text" ,
"selector" : "variable=last_x_robots_tag"
},
{
"name" : "content_type" ,
"type" : "text" ,
"selector" : "variable=last_content_type"
},
{
"name" : "charset_hdr" ,
"type" : "text" ,
"selector" : "variable=last_charset"
},
{
"name" : "protocol" ,
"type" : "text" ,
"selector" : "variable=last_protocol"
},
{
"name" : "metarobots" ,
"type" : "text" ,
"selector" : "css=meta[name='robots']"
},
{
"name" : "canonical" ,
"type" : "attribute" ,
"selector" : "css=link[rel='canonical']" ,
"attribute" : "href"
},
{
"name" : "canonical_n" ,
"type" : "count" ,
"selector" : "css=link[rel='canonical']"
},
{
"name" : "metarefresh" ,
"type" : "attribute" ,
"selector" : "css=meta[http-equiv='refresh' i]" ,
"attribute" : "content"
},
{
"name" : "charset_meta" ,
"type" : "attribute" ,
"selector" : "css=meta[charset]" ,
"attribute" : "charset"
},
{
"name" : "viewport" ,
"type" : "attribute" ,
"selector" : "css=meta[name='viewport']" ,
"attribute" : "content"
},
{
"name" : "html_lang" ,
"type" : "attribute" ,
"selector" : "css=html" ,
"attribute" : "lang"
},
{
"name" : "cookies" ,
"type" : "text" ,
"selector" : "variable=last_set_cookie_names"
},
{
"name" : "indexable" ,
"type" : "index"
},
{
"name" : "indexability_verdict" ,
"type" : "index"
},
{
"name" : "indexability_blockers" ,
"type" : "index"
},
{
"name" : "noindex" ,
"type" : "index"
},
{
"name" : "noindex_sources" ,
"type" : "index"
},
{
"name" : "nofollow" ,
"type" : "index"
},
{
"name" : "noarchive" ,
"type" : "index"
},
{
"name" : "nosnippet" ,
"type" : "index"
},
{
"name" : "noimageindex" ,
"type" : "index"
},
{
"name" : "max_snippet" ,
"type" : "index"
},
{
"name" : "max_image_preview" ,
"type" : "index"
},
{
"name" : "max_video_preview" ,
"type" : "index"
},
{
"name" : "unavailable_after" ,
"type" : "index"
},
{
"name" : "robots_directives_all" ,
"type" : "index"
},
{
"name" : "canonical_is_self" ,
"type" : "index"
},
{
"name" : "canonical_is_absolute" ,
"type" : "index"
},
{
"name" : "canonical_resolved" ,
"type" : "index"
},
{
"name" : "canonical_issues" ,
"type" : "index"
},
{
"name" : "canonical_verdict" ,
"type" : "index"
},
{
"name" : "host_changed" ,
"type" : "index"
},
{
"name" : "protocol_upgraded" ,
"type" : "index"
},
{
"name" : "www_changed" ,
"type" : "index"
},
{
"name" : "trailing_slash_changed" ,
"type" : "index"
},
{
"name" : "case_changed" ,
"type" : "index"
},
{
"name" : "path_changed" ,
"type" : "index"
},
{
"name" : "params_changed" ,
"type" : "index"
},
{
"name" : "meta_refresh_present" ,
"type" : "index"
},
{
"name" : "meta_refresh_delay" ,
"type" : "index"
},
{
"name" : "meta_refresh_target" ,
"type" : "index"
},
{
"name" : "content_type_is_html" ,
"type" : "index"
},
{
"name" : "is_pdf" ,
"type" : "index"
},
{
"name" : "is_document_resource" ,
"type" : "index"
},
{
"name" : "charset_matches_header" ,
"type" : "index"
},
{
"name" : "charset_declared" ,
"type" : "index"
},
{
"name" : "viewport_present" ,
"type" : "index"
},
{
"name" : "viewport_blocks_scaling" ,
"type" : "index"
},
{
"name" : "is_mobile_friendly" ,
"type" : "index"
},
{
"name" : "html_lang_present" ,
"type" : "index"
},
{
"name" : "cookie_count" ,
"type" : "index"
},
{
"name" : "has_analytics_cookie" ,
"type" : "index"
},
{
"name" : "has_session_cookie" ,
"type" : "index"
}
]
},
{
"name" : "Security" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};var h=(it.headers&&typeof it.headers=== \" object \" )?it.headers:{};function g(n){var v=h[n];return (typeof v=== \" string \" )?v: \"\" ;}function lo(x){return String(x).toLowerCase();}var hsts=g( \" strict-transport-security \" );var hm=hsts.match(/max-age \\ s*= \\ s*( \\ d+)/i);var hstsDays=hm?Math.round(parseInt(hm[1],10)/86400):0;var csp=g( \" content-security-policy \" )||g( \" content-security-policy-report-only \" );var xfo=g( \" x-frame-options \" );var xcto=g( \" x-content-type-options \" );var rp=g( \" referrer-policy \" );var pp=g( \" permissions-policy \" )||g( \" feature-policy \" );var xxp=g( \" x-xss-protection \" );var coop=g( \" cross-origin-opener-policy \" );var coep=g( \" cross-origin-embedder-policy \" );var corp=g( \" cross-origin-resource-policy \" );var srv=g( \" server \" );var leak=/ \\ d+ \\ . \\ d+/.test(srv)?srv: \"\" ;var powered=g( \" x-powered-by \" )||g( \" x-aspnet-version \" )||g( \" x-aspnetmvc-version \" );var present=[],missing=[];if(hsts)present.push( \" HSTS \" );else missing.push( \" Strict-Transport-Security \" );if(csp)present.push( \" CSP \" );else missing.push( \" Content-Security-Policy \" );if(xfo)present.push( \" X-Frame-Options \" );else missing.push( \" X-Frame-Options \" );if(lo(xcto)=== \" nosniff \" )present.push( \" X-Content-Type-Options \" );else missing.push( \" X-Content-Type-Options \" );if(rp)present.push( \" Referrer-Policy \" );else missing.push( \" Referrer-Policy \" );if(pp)present.push( \" Permissions-Policy \" );else missing.push( \" Permissions-Policy \" );if(coop)present.push( \" COOP \" );else missing.push( \" Cross-Origin-Opener-Policy \" );var score=Math.round((present.length/7)*100);var grade=score>=90? \" A \" :score>=75? \" B \" :score>=55? \" C \" :score>=35? \" D \" : \" F \" ;var pageUrl=String(it.page_url|| \"\" );var isHttps=/^https:/i.test(pageUrl);return {hsts:hsts,hsts_max_age_days:String(hstsDays),hsts_includesubdomains:String(hsts.toLowerCase().indexOf( \" includesubdomains \" )!==-1),hsts_preload:String(hsts.toLowerCase().indexOf( \" preload \" )!==-1),csp:csp,csp_unsafe_inline:String(csp.indexOf( \" unsafe-inline \" )!==-1),csp_unsafe_eval:String(csp.indexOf( \" unsafe-eval \" )!==-1),x_frame_options:xfo,x_content_type_options:xcto,referrer_policy:rp,permissions_policy:pp,x_xss_protection:xxp,coop:coop,coep:coep,corp:corp,server_version_leak:leak,powered_by_leak:powered,headers_present:present.join( \" , \" ),headers_missing:missing.join( \" , \" ),security_score:String(score),security_grade:grade,mixed_content_risk:String(isHttps? \" Check outlinks for http:// resources \" : \" Page served over HTTP \" ),header_count:String(Object.keys(h).length)};"
}
],
"properties" : [
{
"name" : "headers" ,
"type" : "text" ,
"selector" : "variable=last_response_headers"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "hsts" ,
"type" : "index"
},
{
"name" : "hsts_max_age_days" ,
"type" : "index"
},
{
"name" : "hsts_includesubdomains" ,
"type" : "index"
},
{
"name" : "hsts_preload" ,
"type" : "index"
},
{
"name" : "csp" ,
"type" : "index"
},
{
"name" : "csp_unsafe_inline" ,
"type" : "index"
},
{
"name" : "csp_unsafe_eval" ,
"type" : "index"
},
{
"name" : "x_frame_options" ,
"type" : "index"
},
{
"name" : "x_content_type_options" ,
"type" : "index"
},
{
"name" : "referrer_policy" ,
"type" : "index"
},
{
"name" : "permissions_policy" ,
"type" : "index"
},
{
"name" : "x_xss_protection" ,
"type" : "index"
},
{
"name" : "coop" ,
"type" : "index"
},
{
"name" : "coep" ,
"type" : "index"
},
{
"name" : "corp" ,
"type" : "index"
},
{
"name" : "server_version_leak" ,
"type" : "index"
},
{
"name" : "powered_by_leak" ,
"type" : "index"
},
{
"name" : "headers_present" ,
"type" : "index"
},
{
"name" : "headers_missing" ,
"type" : "index"
},
{
"name" : "security_score" ,
"type" : "index"
},
{
"name" : "security_grade" ,
"type" : "index"
},
{
"name" : "mixed_content_risk" ,
"type" : "index"
},
{
"name" : "header_count" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"OnPage_Elements" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "Title" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "trim"
}
]
},
{
"name" : "Title_Count" ,
"type" : "count" ,
"selector" : "css=head title"
},
{
"name" : "Meta_Description" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content"
},
{
"name" : "Meta_Description_Count" ,
"type" : "count" ,
"selector" : "css=meta[name='description']"
},
{
"name" : "Meta_Keywords" ,
"type" : "attribute" ,
"selector" : "css=meta[name='keywords']" ,
"attribute" : "content"
},
{
"name" : "Meta_Author" ,
"type" : "attribute" ,
"selector" : "css=meta[name='author']" ,
"attribute" : "content"
},
{
"name" : "Meta_Robots" ,
"type" : "text" ,
"selector" : "css=meta[name='robots']"
},
{
"name" : "Meta_Google_Site_Verification" ,
"type" : "attribute" ,
"selector" : "css=meta[name='google-site-verification']" ,
"attribute" : "content"
},
{
"name" : "Generator" ,
"type" : "attribute" ,
"selector" : "css=meta[name='generator']" ,
"attribute" : "content"
},
{
"name" : "Favicon" ,
"type" : "attribute" ,
"selector" : "css=link[rel='icon'],link[rel='shortcut icon'],link[rel='apple-touch-icon']" ,
"attribute" : "href"
},
{
"name" : "Favicon_Count" ,
"type" : "count" ,
"selector" : "css=link[rel='icon'],link[rel='shortcut icon'],link[rel='apple-touch-icon']"
},
{
"name" : "Theme_Color" ,
"type" : "attribute" ,
"selector" : "css=meta[name='theme-color']" ,
"attribute" : "content"
},
{
"name" : "Manifest" ,
"type" : "attribute" ,
"selector" : "css=link[rel='manifest']" ,
"attribute" : "href"
},
{
"name" : "AMP_Link" ,
"type" : "attribute" ,
"selector" : "css=link[rel='amphtml']" ,
"attribute" : "href"
},
{
"name" : "Is_AMP_Page" ,
"type" : "count" ,
"selector" : "css=html[amp],html[âš¡]"
},
{
"name" : "Rel_Next" ,
"type" : "attribute" ,
"selector" : "css=link[rel='next']" ,
"attribute" : "href"
},
{
"name" : "Rel_Prev" ,
"type" : "attribute" ,
"selector" : "css=link[rel='prev']" ,
"attribute" : "href"
},
{
"name" : "Total_Meta_Tags" ,
"type" : "count" ,
"selector" : "css=head meta:not([name^='rtila-'])"
},
{
"name" : "Total_Link_Tags" ,
"type" : "count" ,
"selector" : "css=head link"
},
{
"name" : "Title_Chars" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(String(value==null?'':value).trim().length);" ,
"default_value" : "0"
}
]
},
{
"name" : "Title_Words" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var t=String(value==null?'':value).trim();return String(t?t.split(/ \\ s+/).length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "Title_Pixels" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var W={ \" \" :278, \" ! \" :278, \"\\\"\" :355, \" # \" :556, \" $ \" :556, \" % \" :889, \" & \" :667, \" ' \" :191, \" ( \" :333, \" ) \" :333, \" * \" :389, \" + \" :584, \" , \" :278, \" - \" :333, \" . \" :278, \" / \" :278, \" : \" :278, \" ; \" :278, \" < \" :584, \" = \" :584, \" > \" :584, \" ? \" :556, \" @ \" :1015, \" [ \" :278, \"\\\\\" :278, \" ] \" :278, \" ^ \" :469, \" _ \" :556, \" ` \" :333, \" { \" :334, \" | \" :260, \" } \" :334, \" ~ \" :584, \" A \" :667, \" B \" :667, \" C \" :722, \" D \" :722, \" E \" :667, \" F \" :611, \" G \" :778, \" H \" :722, \" I \" :278, \" J \" :500, \" K \" :667, \" L \" :556, \" M \" :833, \" N \" :722, \" O \" :778, \" P \" :667, \" Q \" :778, \" R \" :722, \" S \" :667, \" T \" :611, \" U \" :722, \" V \" :667, \" W \" :944, \" X \" :667, \" Y \" :667, \" Z \" :611, \" a \" :556, \" b \" :556, \" c \" :500, \" d \" :556, \" e \" :556, \" f \" :278, \" g \" :556, \" h \" :556, \" i \" :222, \" j \" :222, \" k \" :500, \" l \" :222, \" m \" :833, \" n \" :556, \" o \" :556, \" p \" :556, \" q \" :556, \" r \" :333, \" s \" :500, \" t \" :278, \" u \" :556, \" v \" :500, \" w \" :722, \" x \" :500, \" y \" :500, \" z \" :500}; for(var d=0;d<=9;d++){W[String(d)]=556;} var t=String(value==null? \"\" :value).trim(); var u=0; for(var i=0;i<t.length;i++){u+=(W[t.charAt(i)]||600);} return String(Math.round(u*20/1000));" ,
"default_value" : "0"
}
]
},
{
"name" : "Title_SERP_Truncated" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var W={ \" \" :278, \" ! \" :278, \"\\\"\" :355, \" # \" :556, \" $ \" :556, \" % \" :889, \" & \" :667, \" ' \" :191, \" ( \" :333, \" ) \" :333, \" * \" :389, \" + \" :584, \" , \" :278, \" - \" :333, \" . \" :278, \" / \" :278, \" : \" :278, \" ; \" :278, \" < \" :584, \" = \" :584, \" > \" :584, \" ? \" :556, \" @ \" :1015, \" [ \" :278, \"\\\\\" :278, \" ] \" :278, \" ^ \" :469, \" _ \" :556, \" ` \" :333, \" { \" :334, \" | \" :260, \" } \" :334, \" ~ \" :584, \" A \" :667, \" B \" :667, \" C \" :722, \" D \" :722, \" E \" :667, \" F \" :611, \" G \" :778, \" H \" :722, \" I \" :278, \" J \" :500, \" K \" :667, \" L \" :556, \" M \" :833, \" N \" :722, \" O \" :778, \" P \" :667, \" Q \" :778, \" R \" :722, \" S \" :667, \" T \" :611, \" U \" :722, \" V \" :667, \" W \" :944, \" X \" :667, \" Y \" :667, \" Z \" :611, \" a \" :556, \" b \" :556, \" c \" :500, \" d \" :556, \" e \" :556, \" f \" :278, \" g \" :556, \" h \" :556, \" i \" :222, \" j \" :222, \" k \" :500, \" l \" :222, \" m \" :833, \" n \" :556, \" o \" :556, \" p \" :556, \" q \" :556, \" r \" :333, \" s \" :500, \" t \" :278, \" u \" :556, \" v \" :500, \" w \" :722, \" x \" :500, \" y \" :500, \" z \" :500}; for(var d=0;d<=9;d++){W[String(d)]=556;} var t=String(value==null? \"\" :value).trim(); var u=0; for(var i=0;i<t.length;i++){u+=(W[t.charAt(i)]||600);} return String(Math.round(u*20/1000) > 580);" ,
"default_value" : "false"
}
]
},
{
"name" : "Title_Verdict" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var t=String(value==null?'':value).trim();if(!t)return 'MISSING';var L=t.length;if(L<10)return 'TOO SHORT';if(L>60)return 'TOO LONG';return 'OK';" ,
"default_value" : "MISSING"
}
]
},
{
"name" : "Description_Chars" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(String(value==null?'':value).trim().length);" ,
"default_value" : "0"
}
]
},
{
"name" : "Description_Words" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var t=String(value==null?'':value).trim();return String(t?t.split(/ \\ s+/).length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "Description_Pixels" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var W={ \" \" :278, \" ! \" :278, \"\\\"\" :355, \" # \" :556, \" $ \" :556, \" % \" :889, \" & \" :667, \" ' \" :191, \" ( \" :333, \" ) \" :333, \" * \" :389, \" + \" :584, \" , \" :278, \" - \" :333, \" . \" :278, \" / \" :278, \" : \" :278, \" ; \" :278, \" < \" :584, \" = \" :584, \" > \" :584, \" ? \" :556, \" @ \" :1015, \" [ \" :278, \"\\\\\" :278, \" ] \" :278, \" ^ \" :469, \" _ \" :556, \" ` \" :333, \" { \" :334, \" | \" :260, \" } \" :334, \" ~ \" :584, \" A \" :667, \" B \" :667, \" C \" :722, \" D \" :722, \" E \" :667, \" F \" :611, \" G \" :778, \" H \" :722, \" I \" :278, \" J \" :500, \" K \" :667, \" L \" :556, \" M \" :833, \" N \" :722, \" O \" :778, \" P \" :667, \" Q \" :778, \" R \" :722, \" S \" :667, \" T \" :611, \" U \" :722, \" V \" :667, \" W \" :944, \" X \" :667, \" Y \" :667, \" Z \" :611, \" a \" :556, \" b \" :556, \" c \" :500, \" d \" :556, \" e \" :556, \" f \" :278, \" g \" :556, \" h \" :556, \" i \" :222, \" j \" :222, \" k \" :500, \" l \" :222, \" m \" :833, \" n \" :556, \" o \" :556, \" p \" :556, \" q \" :556, \" r \" :333, \" s \" :500, \" t \" :278, \" u \" :556, \" v \" :500, \" w \" :722, \" x \" :500, \" y \" :500, \" z \" :500}; for(var d=0;d<=9;d++){W[String(d)]=556;} var t=String(value==null? \"\" :value).trim(); var u=0; for(var i=0;i<t.length;i++){u+=(W[t.charAt(i)]||600);} return String(Math.round(u*14/1000));" ,
"default_value" : "0"
}
]
},
{
"name" : "Description_SERP_Truncated" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var W={ \" \" :278, \" ! \" :278, \"\\\"\" :355, \" # \" :556, \" $ \" :556, \" % \" :889, \" & \" :667, \" ' \" :191, \" ( \" :333, \" ) \" :333, \" * \" :389, \" + \" :584, \" , \" :278, \" - \" :333, \" . \" :278, \" / \" :278, \" : \" :278, \" ; \" :278, \" < \" :584, \" = \" :584, \" > \" :584, \" ? \" :556, \" @ \" :1015, \" [ \" :278, \"\\\\\" :278, \" ] \" :278, \" ^ \" :469, \" _ \" :556, \" ` \" :333, \" { \" :334, \" | \" :260, \" } \" :334, \" ~ \" :584, \" A \" :667, \" B \" :667, \" C \" :722, \" D \" :722, \" E \" :667, \" F \" :611, \" G \" :778, \" H \" :722, \" I \" :278, \" J \" :500, \" K \" :667, \" L \" :556, \" M \" :833, \" N \" :722, \" O \" :778, \" P \" :667, \" Q \" :778, \" R \" :722, \" S \" :667, \" T \" :611, \" U \" :722, \" V \" :667, \" W \" :944, \" X \" :667, \" Y \" :667, \" Z \" :611, \" a \" :556, \" b \" :556, \" c \" :500, \" d \" :556, \" e \" :556, \" f \" :278, \" g \" :556, \" h \" :556, \" i \" :222, \" j \" :222, \" k \" :500, \" l \" :222, \" m \" :833, \" n \" :556, \" o \" :556, \" p \" :556, \" q \" :556, \" r \" :333, \" s \" :500, \" t \" :278, \" u \" :556, \" v \" :500, \" w \" :722, \" x \" :500, \" y \" :500, \" z \" :500}; for(var d=0;d<=9;d++){W[String(d)]=556;} var t=String(value==null? \"\" :value).trim(); var u=0; for(var i=0;i<t.length;i++){u+=(W[t.charAt(i)]||600);} return String(Math.round(u*14/1000) > 990);" ,
"default_value" : "false"
}
]
},
{
"name" : "Description_Verdict" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var t=String(value==null?'':value).trim();if(!t)return 'MISSING';var L=t.length;if(L<50)return 'TOO SHORT';if(L>160)return 'TOO LONG';return 'OK';" ,
"default_value" : "MISSING"
}
]
},
{
"name" : "H1_Count" ,
"type" : "count" ,
"selector" : "css=h1"
},
{
"name" : "H1_Text" ,
"type" : "text" ,
"selector" : "css=h1" ,
"transformations" : [
{
"type" : "trim"
}
]
},
{
"name" : "H2_Count" ,
"type" : "count" ,
"selector" : "css=h2"
},
{
"name" : "H3_Count" ,
"type" : "count" ,
"selector" : "css=h3"
},
{
"name" : "H4_Count" ,
"type" : "count" ,
"selector" : "css=h4"
},
{
"name" : "H5_Count" ,
"type" : "count" ,
"selector" : "css=h5"
},
{
"name" : "H6_Count" ,
"type" : "count" ,
"selector" : "css=h6"
},
{
"name" : "Heading_Count_Total" ,
"type" : "count" ,
"selector" : "css=h1,h2,h3,h4,h5,h6"
},
{
"name" : "Hreflang_Count" ,
"type" : "count" ,
"selector" : "css=link[rel='alternate'][hreflang]"
},
{
"name" : "Hreflang_Raw" ,
"type" : "attribute" ,
"selector" : "css=link[rel='alternate'][hreflang]" ,
"attribute" : "hreflang"
},
{
"name" : "Heading_Structure" ,
"type" : "list" ,
"selector" : "css=h1,h2,h3,h4,h5,h6" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var counts={1:0,2:0,3:0,4:0,5:0,6:0};var outline=[],orderIssues=[],emptyCount=0,longCount=0,seen={},dupes=[];var h1First= \"\" ,headingWords=0,firstLevel=0,maxLevel=0;for(var i=0;i<rows.length;i++){var tag=String(rows[i].tag|| \"\" ).toLowerCase();var lvl=parseInt(tag.replace( \" h \" , \"\" ),10);if(!isFinite(lvl)||lvl<1||lvl>6)continue;counts[lvl]++;if(!firstLevel)firstLevel=lvl;if(lvl>maxLevel)maxLevel=lvl;var txt=String(rows[i].text|| \"\" ).replace(/ \\ s+/g, \" \" ).trim();if(txt=== \"\" )emptyCount++;if(txt.length>120)longCount++;headingWords+=txt?txt.split(/ \\ s+/).length:0;outline.push(tag.toUpperCase()+ \" : \" +(txt.substring(0,90)||(txt? \"\" : \" (empty) \" )));if(seen[txt]&&txt!== \"\" )dupes.push(txt.substring(0,60));else seen[txt]=1;if(i>0){var prev=parseInt(String(rows[i-1].tag|| \" h0 \" ).toLowerCase().replace( \" h \" , \"\" ),10);if(isFinite(prev)&&lvl-prev>1)orderIssues.push( \" H \" +prev+ \" -> H \" +lvl+ \" at # \" +(i+1));}}var h1Texts=[];for(var j=0;j<rows.length;j++){if(String(rows[j].tag|| \"\" ).toLowerCase()=== \" h1 \" ){var t2=String(rows[j].text|| \"\" ).replace(/ \\ s+/g, \" \" ).trim();if(t2)h1Texts.push(t2);}}h1First=h1Texts[0]|| \"\" ;var verdict=[];if(counts[1]===0)verdict.push( \" Missing H1 \" );if(counts[1]>1)verdict.push( \" Multiple H1 ( \" +counts[1]+ \" ) \" );if(orderIssues.length)verdict.push(orderIssues.length+ \" order violation(s) \" );if(emptyCount)verdict.push(emptyCount+ \" empty heading(s) \" );if(dupes.length)verdict.push(dupes.length+ \" duplicate heading(s) \" );return {outline:outline.join( \" | \" ).substring(0,8000),h1_count:String(counts[1]),h1_missing:String(counts[1]===0),h1_multiple:String(counts[1]>1),h1_first_text:h1First,h1_chars:String(h1First.length),h2_texts: \"\" ,order_violations:String(orderIssues.length),order_violation_list:orderIssues.join( \" ; \" ),empty_headings:String(emptyCount),duplicate_headings:String(dupes.length),long_headings:String(longCount),heading_word_total:String(headingWords),first_heading_level:firstLevel?String(firstLevel): \"\" ,max_heading_level:String(maxLevel),headings_verdict:verdict.length?verdict.join( \" ; \" ): \" OK \" };"
}
],
"properties" : [
{
"name" : "tag" ,
"type" : "property" ,
"selector" : "css=self"
},
{
"name" : "text" ,
"type" : "text" ,
"selector" : "css=self"
},
{
"name" : "outline" ,
"type" : "index"
},
{
"name" : "h1_count" ,
"type" : "index"
},
{
"name" : "h1_missing" ,
"type" : "index"
},
{
"name" : "h1_multiple" ,
"type" : "index"
},
{
"name" : "h1_first_text" ,
"type" : "index"
},
{
"name" : "h1_chars" ,
"type" : "index"
},
{
"name" : "h2_texts" ,
"type" : "index"
},
{
"name" : "order_violations" ,
"type" : "index"
},
{
"name" : "order_violation_list" ,
"type" : "index"
},
{
"name" : "empty_headings" ,
"type" : "index"
},
{
"name" : "duplicate_headings" ,
"type" : "index"
},
{
"name" : "long_headings" ,
"type" : "index"
},
{
"name" : "heading_word_total" ,
"type" : "index"
},
{
"name" : "first_heading_level" ,
"type" : "index"
},
{
"name" : "max_heading_level" ,
"type" : "index"
},
{
"name" : "headings_verdict" ,
"type" : "index"
}
]
},
{
"name" : "Hreflang_Audit" ,
"type" : "list" ,
"selector" : "css=link[rel='alternate'][hreflang]" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var pageUrl=rows.length?String(rows[0].page_url|| \"\" ): \" ;var pu=null;try{pu=new URL(pageUrl);}catch(e){}var vals=[],langs=[],regions=[],relative=0,dupes={},dupeList=[],selfRef=false,hasDefault=false;for(var i=0;i<rows.length;i++){var l=String(rows[i].lang|| \"\" ).trim();var hr=String(rows[i].href|| \"\" ).trim();if(l)vals.push(l+ \" : \" +hr);if(l.toLowerCase()=== \" x-default \" )hasDefault=true;var lp=l.split( \" - \" )[0].toLowerCase();if(lp&&langs.indexOf(lp)===-1)langs.push(lp);if(l.indexOf( \" - \" )!==-1){var rg=l.split( \" - \" )[1].toUpperCase();if(regions.indexOf(rg)===-1)regions.push(rg);}if(hr&&!/^https?: \\ / \\ //i.test(hr))relative++;if(dupes[l])dupeList.push(l);else dupes[l]=1;if(hr&&pu){try{var hu=new URL(hr,pageUrl);if(hu.origin===pu.origin&&hu.pathname===pu.pathname&&hu.search===pu.search)selfRef=true;}catch(e){}}}var issues=[];if(rows.length===0)issues.push( \" No hreflang annotations \" );else{if(!selfRef)issues.push( \" Missing self-referencing hreflang \" );if(!hasDefault)issues.push( \" Missing x-default \" );if(relative>0)issues.push(relative+ \" relative hreflang URL(s) \" );if(dupeList.length)issues.push( \" Duplicate hreflang values: \" +dupeList.join( \" , \" ));}return {count:String(rows.length),values:vals.join( \" | \" ).substring(0,4000),languages:langs.join( \" , \" ),regions:regions.join( \" , \" ),has_x_default:String(hasDefault),self_referencing:String(selfRef),relative_urls:String(relative),duplicate_langs:dupeList.join( \" , \" ),issues:issues.join( \" ; \" )};"
}
],
"properties" : [
{
"name" : "lang" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "hreflang"
},
{
"name" : "href" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "href"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "count" ,
"type" : "index"
},
{
"name" : "values" ,
"type" : "index"
},
{
"name" : "languages" ,
"type" : "index"
},
{
"name" : "regions" ,
"type" : "index"
},
{
"name" : "has_x_default" ,
"type" : "index"
},
{
"name" : "self_referencing" ,
"type" : "index"
},
{
"name" : "relative_urls" ,
"type" : "index"
},
{
"name" : "duplicate_langs" ,
"type" : "index"
},
{
"name" : "issues" ,
"type" : "index"
}
]
},
{
"name" : "Social_Meta" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};var head=String(it.head_html|| \"\" );var pageUrl=String(it.page_url|| \"\" );function grab(re){var m=head.match(re);return m?m[1].replace(/&/g, \" & \" ).trim(): \"\" ;}var ogTitle=grab(/property=[ \" ']og:title[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i)||grab(/content=[ \" ']([^ \" ']*)[ \" '][^>]*property=[ \" ']og:title[ \" ']/i);var ogDesc=grab(/property=[ \" ']og:description[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i)||grab(/content=[ \" ']([^ \" ']*)[ \" '][^>]*property=[ \" ']og:description[ \" ']/i);var ogImage=grab(/property=[ \" ']og:image[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i)||grab(/content=[ \" ']([^ \" ']*)[ \" '][^>]*property=[ \" ']og:image[ \" ']/i);var ogImageSecure=grab(/property=[ \" ']og:image:secure_url[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogW=grab(/property=[ \" ']og:image:width[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogH=grab(/property=[ \" ']og:image:height[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogAlt=grab(/property=[ \" ']og:image:alt[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogUrl=grab(/property=[ \" ']og:url[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogType=grab(/property=[ \" ']og:type[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogSite=grab(/property=[ \" ']og:site_name[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogLocale=grab(/property=[ \" ']og:locale[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var twCard=grab(/name=[ \" ']twitter:card[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var twTitle=grab(/name=[ \" ']twitter:title[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var twDesc=grab(/name=[ \" ']twitter:description[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var twImage=grab(/name=[ \" ']twitter:image[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var twSite=grab(/name=[ \" ']twitter:site[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var twCreator=grab(/name=[ \" ']twitter:creator[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var artPub=grab(/property=[ \" ']article:published_time[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var artMod=grab(/property=[ \" ']article:modified_time[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var artAuthor=grab(/property=[ \" ']article:author[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var artSection=grab(/property=[ \" ']article:section[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/i);var ogCount=(head.match(/property=[ \" ']og:/gi)||[]).length;var twCount=(head.match(/name=[ \" ']twitter:/gi)||[]).length;var artTags=[];var re=/property=[ \" ']article:tag[ \" '][^>]*content=[ \" ']([^ \" ']*)[ \" ']/gi;var mm;while((mm=re.exec(head))!==null){artTags.push(mm[1]);}var ogMissing=[];if(!ogTitle)ogMissing.push( \" og:title \" );if(!ogDesc)ogMissing.push( \" og:description \" );if(!ogImage)ogMissing.push( \" og:image \" );if(!ogUrl)ogMissing.push( \" og:url \" );if(!ogType)ogMissing.push( \" og:type \" );var twMissing=[];if(!twCard)twMissing.push( \" twitter:card \" );if(!twTitle)twMissing.push( \" twitter:title \" );if(!twDesc)twMissing.push( \" twitter:description \" );if(!twImage)twMissing.push( \" twitter:image \" );var ogUrlMatch=false;if(ogUrl&&pageUrl){try{var a=new URL(ogUrl),b=new URL(pageUrl);ogUrlMatch=(a.origin===b.origin&&a.pathname===b.pathname);}catch(e){}}var ogImgAbs=/^https?: \\ / \\ //i.test(ogImage);var score=0,total=9;if(ogTitle)score++;if(ogDesc)score++;if(ogImage)score++;if(ogUrl)score++;if(ogType)score++;if(twCard)score++;if(twTitle)score++;if(twDesc)score++;if(twImage)score++;var pct=Math.round((score/total)*100);var verdict=pct>=90? \" Excellent \" :pct>=70? \" Good \" :pct>=40? \" Incomplete \" : \" Missing \" ;return {og_title:ogTitle,og_description:ogDesc,og_image:ogImage,og_image_secure:ogImageSecure,og_image_width:ogW,og_image_height:ogH,og_image_alt:ogAlt,og_url:ogUrl,og_type:ogType,og_site_name:ogSite,og_locale:ogLocale,og_count:String(ogCount),og_missing:ogMissing.join( \" , \" ),twitter_card:twCard,twitter_title:twTitle,twitter_description:twDesc,twitter_image:twImage,twitter_site:twSite,twitter_creator:twCreator,twitter_count:String(twCount),twitter_missing:twMissing.join( \" , \" ),article_published:artPub,article_modified:artMod,article_author:artAuthor,article_section:artSection,article_tags:artTags.join( \" , \" ),og_url_matches_page:String(ogUrlMatch),og_image_is_absolute:String(ogImgAbs),social_score:String(pct),social_verdict:verdict};"
}
],
"properties" : [
{
"name" : "head_html" ,
"type" : "html" ,
"selector" : "css=head"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "og_title" ,
"type" : "index"
},
{
"name" : "og_description" ,
"type" : "index"
},
{
"name" : "og_image" ,
"type" : "index"
},
{
"name" : "og_image_secure" ,
"type" : "index"
},
{
"name" : "og_image_width" ,
"type" : "index"
},
{
"name" : "og_image_height" ,
"type" : "index"
},
{
"name" : "og_image_alt" ,
"type" : "index"
},
{
"name" : "og_url" ,
"type" : "index"
},
{
"name" : "og_type" ,
"type" : "index"
},
{
"name" : "og_site_name" ,
"type" : "index"
},
{
"name" : "og_locale" ,
"type" : "index"
},
{
"name" : "og_count" ,
"type" : "index"
},
{
"name" : "og_missing" ,
"type" : "index"
},
{
"name" : "twitter_card" ,
"type" : "index"
},
{
"name" : "twitter_title" ,
"type" : "index"
},
{
"name" : "twitter_description" ,
"type" : "index"
},
{
"name" : "twitter_image" ,
"type" : "index"
},
{
"name" : "twitter_site" ,
"type" : "index"
},
{
"name" : "twitter_creator" ,
"type" : "index"
},
{
"name" : "twitter_count" ,
"type" : "index"
},
{
"name" : "twitter_missing" ,
"type" : "index"
},
{
"name" : "article_published" ,
"type" : "index"
},
{
"name" : "article_modified" ,
"type" : "index"
},
{
"name" : "article_author" ,
"type" : "index"
},
{
"name" : "article_section" ,
"type" : "index"
},
{
"name" : "article_tags" ,
"type" : "index"
},
{
"name" : "og_url_matches_page" ,
"type" : "index"
},
{
"name" : "og_image_is_absolute" ,
"type" : "index"
},
{
"name" : "social_score" ,
"type" : "index"
},
{
"name" : "social_verdict" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"Content_Readability" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "Paragraph_Count" ,
"type" : "count" ,
"selector" : "css=body p"
},
{
"name" : "List_Count" ,
"type" : "count" ,
"selector" : "css=body ul,ol"
},
{
"name" : "Table_Count" ,
"type" : "count" ,
"selector" : "css=body table"
},
{
"name" : "Blockquote_Count" ,
"type" : "count" ,
"selector" : "css=body blockquote"
},
{
"name" : "Main_Landmark" ,
"type" : "count" ,
"selector" : "css=main,[role='main'],article"
},
{
"name" : "Content_Metrics" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};var text=String(it.text|| \"\" ).replace(/[ \\ u200B- \\ u200D \\ uFEFF]/g, \" \" ).replace(/ \\ s+/g, \" \" ).trim();var html=String(it.html|| \"\" );var title=String(it.title|| \"\" ).replace(/ \\ s+/g, \" \" ).trim();var h1=String(it.h1|| \"\" ).replace(/ \\ s+/g, \" \" ).trim();var desc=String(it.desc|| \"\" ).replace(/ \\ s+/g, \" \" ).trim();var STOP={the:1,be:1,to:1,of:1,and:1,a:1,in:1,that:1,have:1,i:1,it:1,for:1,not:1,on:1,with:1,he:1,as:1,you:1,do:1,at:1,this:1,but:1,his:1,by:1,from:1,they:1,we:1,say:1,her:1,she:1,or:1,an:1,will:1,my:1,one:1,all:1,would:1,there:1,their:1,what:1,so:1,up:1,out:1,if:1,about:1,who:1,get:1,which:1,go:1,me:1,when:1,make:1,can:1,like:1,time:1,no:1,just:1,him:1,know:1,take:1,people:1,into:1,year:1,your:1,good:1,some:1,could:1,them:1,see:1,other:1,than:1,then:1,now:1,look:1,only:1,come:1,its:1,over:1,think:1,also:1,back:1,after:1,use:1,two:1,how:1,our:1,work:1,first:1,well:1,way:1,even:1,new:1,want:1,because:1,any:1,these:1,give:1,day:1,most:1,us:1,is:1,are:1,was:1,were:1,been:1,has:1,had:1,did:1,does:1};var words=text?text.split( \" \" ).filter(function(w){return w.length>0;}):[];var wc=words.length;var sentences=text.split(/[.!?]+(?: \\ s|$)/).filter(function(s){return s.trim().length>1;});var sc=sentences.length||1;function syl(w){w=w.toLowerCase().replace(/[^a-z]/g, \"\" );if(!w)return 0;if(w.length<=3)return 1;w=w.replace(/(?:[^laeiouy]es|ed|[^laeiouy]e)$/, \"\" ).replace(/^y/, \"\" );var m=w.match(/[aeiouy]{1,2}/g);return m?m.length:1;}var sylTotal=0,longWords=0,chars=0;var uniq={},topMap={};for(var i=0;i<words.length;i++){var raw=words[i];var w=raw.toLowerCase().replace(/[^a-z0-9'-]/g, \"\" );if(!w)continue;chars+=w.length;var sy=syl(w);sylTotal+=sy;if(sy>=3)longWords++;uniq[w]=1;if(w.length>2&&!STOP[w])topMap[w]=(topMap[w]||0)+1;}var uw=Object.keys(uniq).length;var asl=wc/sc;var asw=wc?sylTotal/wc:0;function r2(x){return Math.round(x*100)/100;}var fre=wc?r2(206.835-(1.015*asl)-(84.6*asw)):0;var fkg=wc?r2((0.39*asl)+(11.8*asw)-15.59):0;var fog=wc?r2(0.4*(asl+(wc?(longWords/wc)*100:0))):0;var smog=sc>=30?r2(1.0430*Math.sqrt((longWords*(30/sc)))+3.1291):0;var ari=wc?r2((4.71*(chars/wc))+(0.5*(wc/sc))-21.43):0;var cl=wc?r2((0.0588*(chars/wc*100)/100)*100-(0.296*(wc/sc))-15.8):0;var readVerdict=fre>=90? \" Very Easy \" :fre>=80? \" Easy \" :fre>=70? \" Fairly Easy \" :fre>=60? \" Plain \" :fre>=50? \" Fairly Difficult \" :fre>=30? \" Difficult \" :wc? \" Very Difficult \" : \" No text \" ;var textChars=text.length,htmlChars=html.length;var ratio=htmlChars?r2((textChars/htmlChars)*100):0;var ratioVerdict=ratio===0? \" No text \" :ratio<10? \" Very Low \" :ratio<25? \" Low \" :ratio<70? \" Healthy \" : \" High \" ;var readMin=Math.max(1,Math.round(wc/225));var pairs=Object.keys(topMap).map(function(k){return [k,topMap[k]];});pairs.sort(function(a,b){return b[1]-a[1];});var top=pairs.slice(0,15).map(function(p){return p[0]+ \" ( \" +p[1]+ \" ) \" ;});var stopCount=0;for(var j=0;j<words.length;j++){var lw=words[j].toLowerCase().replace(/[^a-z]/g, \"\" );if(STOP[lw])stopCount++;}var stopRatio=wc?r2((stopCount/wc)*100):0;var longest=0;for(var k2=0;k2<words.length;k2++){if(words[k2].length>longest)longest=words[k2].length;}var avgWordLen=wc?r2(chars/wc):0;function cyrb128(str){var h1=1779033703,h2=3144134277,h3=1013904242,h4=2773480762;for(var q=0,chr;q<str.length;q++){chr=str.charCodeAt(q);h1=Math.imul(h1^chr,2654435761);h2=Math.imul(h2^chr,1597334677);h3=Math.imul(h3^chr,2246822507);h4=Math.imul(h4^chr,3266489909);}h1=Math.imul(h1^(h1>>>16),2246822507)^Math.imul(h2^(h2>>>13),3266489909);h2=Math.imul(h2^(h2>>>16),2246822507)^Math.imul(h1^(h1>>>13),3266489909);h3=Math.imul(h3^(h3>>>16),2246822507)^Math.imul(h4^(h4>>>13),3266489909);h4=Math.imul(h4^(h4>>>16),2246822507)^Math.imul(h3^(h3>>>13),3266489909);return [h1>>>0,h2>>>0,h3>>>0,h4>>>0];}var norm=text.toLowerCase().replace(/[^a-z0-9 \\ s]/g, \" \" ).replace(/ \\ s+/g, \" \" ).trim();var shingles={};var nWords=norm.split( \" \" );for(var s2=0;s2+2<nWords.length;s2++){var sh=nWords[s2]+ \" \" +nWords[s2+1]+ \" \" +nWords[s2+2];shingles[sh]=(shingles[sh]||0)+1;}var shKeys=Object.keys(shingles);var sim=0;if(shKeys.length){var bits=new Array(64);for(var b=0;b<64;b++)bits[b]=0;for(var z=0;z<shKeys.length;z++){var hh=cyrb128(shKeys[z]);var hex= \"\" ;for(var y=0;y<4;y++){hex+=( \" 00000000 \" +hh[y].toString(16)).slice(-8);}for(var bb=0;bb<64;bb++){bits[bb]+=(hex.charAt(bb)=== \" 1 \" ?1:-1)*shingles[shKeys[z]];}}for(var b2=0;b2<64;b2++){if(bits[b2]>0)sim=sim*2+1;else sim=sim*2;}sim=sim>>>0;}var hashArr=cyrb128(norm);var hashHex= \"\" ;for(var w2=0;w2<4;w2++){hashHex+=( \" 00000000 \" +hashArr[w2].toString(16)).slice(-8);}var simHex=( \" 0000000000000000 \" +sim.toString(16)).slice(-16);var langGuess= \"\" ;var hl=String(it.html_lang|| \"\" ).trim();if(hl)langGuess=hl;else{var enScore=(text.match(/ \\ b(the|and|of|to|in|is|for|with) \\ b/gi)||[]).length;var esScore=(text.match(/ \\ b(el|la|de|que|y|en|un|una|los|las) \\ b/gi)||[]).length;if(enScore>esScore&&enScore>5)langGuess= \" en \" ;else if(esScore>5)langGuess= \" es \" ;else langGuess= \" unknown \" ;}function norm2(x){return x.toLowerCase().replace(/[^a-z0-9]/g, \"\" );}var titleInBody=norm2(title).length>6&&norm.indexOf(norm2(title))!==-1;var h1InBody=norm2(h1).length>3&&norm.indexOf(norm2(h1))!==-1;var descInBody=norm2(desc).length>20&&norm.indexOf(norm2(desc))!==-1;var lorem=/lorem \\ s+ipsum/i.test(text);var placeholder=/ \\ b(coming soon|under construction|todo:|tbd|placeholder text|your text here) \\ b/i.test(text);var cy=null;var cym=text.match(/©| \\ (c \\ )|copyright/gi)?text.match(/(?:©| \\ (c \\ )|copyright) \\ s*(?: \\ d{4} \\ s*[-–] \\ s*)?( \\ d{4})/i):null;if(cym)cy=parseInt(cym[1],10);var nowYear=new Date().getFullYear();var cyAge=(cy&&cy>1990&&cy<=nowYear+1)?(nowYear-cy):null;var dateMatches=text.match(/ \\ b(?:19|20) \\ d{2}- \\ d{2}- \\ d{2} \\ b| \\ b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* \\ .?[ \\ s]+ \\ d{1,2},?[ \\ s]+(?:19|20) \\ d{2} \\ b| \\ b \\ d{1,2} \\ s+(?:January|February|March|April|May|June|July|August|September|October|November|December) \\ s+(?:19|20) \\ d{2} \\ b/gi)||[];var latest= \"\" ;for(var d2=0;d2<dateMatches.length;d2++){var dm=dateMatches[d2].match(/(19|20) \\ d{2}/);if(dm){var yr=parseInt(dm[0],10);if(yr>parseInt(latest|| \" 0 \" ,10))latest=String(yr);}}var emails=[];var em=text.match(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+ \\ .[a-zA-Z]{2,}/g)||[];for(var e2=0;e2<em.length;e2++){if(emails.indexOf(em[e2])===-1)emails.push(em[e2]);print}var phones=[];var ph=text.match(/(?: \\ +? \\ d{1,3}[ \\ s.-]?)?(?: \\ ( \\ d{2,4} \\ )[ \\ s.-]?)? \\ d{3}[ \\ s.-]? \\ d{3,4}[ \\ s.-]? \\ d{3,4}/g)||[];for(var p2=0;p2<ph.length&&phones.length<5;p2++){if(ph[p2].replace(/ \\ D/g, \"\" ).length>=9&&phones.indexOf(ph[p2])===-1)phones.push(ph[p2]);}var socialRe=/(?:https?: \\ / \\ /)?(?:www \\ .)?(facebook|instagram|twitter|x|linkedin|youtube|pinterest|tiktok|github|reddit|whatsapp|t \\ .me|telegram) \\ .com \\ /[^ \\ s \" '<>)]+/gi;var socialMatches=html.match(socialRe)||[];var socialDomains={};for(var sm2=0;sm2<socialMatches.length;sm2++){var dm2=socialMatches[sm2].match(/(?:facebook|instagram|twitter|x|linkedin|youtube|pinterest|tiktok|github|reddit|whatsapp|t \\ .me|telegram) \\ ./i);if(dm2)socialDomains[dm2[0].replace(/ \\ .$/, \"\" ).toLowerCase()]=1;}var comments=(html.match(/<!--[ \\ s \\ S]*?-->/g)||[]).length;var sensitive=/<!--[^>]*(password|secret|api[_-]?key|token|debug|do not remove|todo:|fixme)/i.test(html);var stuffScore=0;if(pairs.length&&wc>50){var topFreq=pairs[0][1];var density=(topFreq/wc)*100;stuffScore=Math.round(density*100)/100;}var stuffVerdict=stuffScore>8? \" Keyword stuffing suspected \" :stuffScore>5? \" High density \" : \" Normal \" ;var thin=wc<300;var lenClass=wc===0? \" Empty \" :wc<150? \" Very thin \" :wc<300? \" Thin \" :wc<800? \" Short \" :wc<2000? \" Standard \" : \" Long-form \" ;return {word_count:String(wc),unique_word_count:String(uw),unique_word_ratio:String(wc?r2((uw/wc)*100):0),sentence_count:String(sc),avg_words_per_sentence:String(r2(asl)),syllable_count:String(sylTotal),avg_syllables_per_word:String(r2(asw)),flesch_reading_ease:String(fre),flesch_kincaid_grade:String(fkg),gunning_fog:String(fog),smog_index:String(smog),automated_readability:String(ari),coleman_liau:String(cl),readability_verdict:readVerdict,text_chars:String(textChars),html_chars:String(htmlChars),text_to_html_ratio:String(ratio),text_ratio_verdict:ratioVerdict,reading_time_min:String(readMin),top_words:top.join( \" , \" ),stopword_ratio:String(stopRatio),longest_word:String(longest),avg_word_length:String(avgWordLen),content_hash:hashHex,content_simhash:simHex,near_duplicate_key:simHex.substring(0,8),content_thin:String(thin),content_length_class:lenClass,language_guess:langGuess,title_in_body:String(titleInBody),h1_in_body:String(h1InBody),description_in_body:String(descInBody),has_lorem_ipsum:String(lorem),has_placeholder_text:String(placeholder),copyright_year:cy?String(cy): \"\" ,copyright_age_years:cyAge===null? \"\" :String(cyAge),dates_found:String(dateMatches.length),latest_date_found:latest,emails_found:emails.slice(0,10).join( \" , \" ),phones_found:phones.join( \" , \" ),social_profile_count:String(Object.keys(socialDomains).length),social_profiles:Object.keys(socialDomains).join( \" , \" ),html_comment_count:String(comments),has_sensitive_comment:String(sensitive),keyword_stuffing_score:String(stuffScore),keyword_stuffing_verdict:stuffVerdict};"
}
],
"properties" : [
{
"name" : "text" ,
"type" : "text" ,
"selector" : "css=body"
},
{
"name" : "html" ,
"type" : "html" ,
"selector" : "css=self"
},
{
"name" : "title" ,
"type" : "text" ,
"selector" : "css=head title"
},
{
"name" : "h1" ,
"type" : "text" ,
"selector" : "css=h1"
},
{
"name" : "desc" ,
"type" : "attribute" ,
"selector" : "css=meta[name='description']" ,
"attribute" : "content"
},
{
"name" : "html_lang" ,
"type" : "attribute" ,
"selector" : "css=html" ,
"attribute" : "lang"
},
{
"name" : "word_count" ,
"type" : "index"
},
{
"name" : "unique_word_count" ,
"type" : "index"
},
{
"name" : "unique_word_ratio" ,
"type" : "index"
},
{
"name" : "sentence_count" ,
"type" : "index"
},
{
"name" : "avg_words_per_sentence" ,
"type" : "index"
},
{
"name" : "syllable_count" ,
"type" : "index"
},
{
"name" : "avg_syllables_per_word" ,
"type" : "index"
},
{
"name" : "flesch_reading_ease" ,
"type" : "index"
},
{
"name" : "flesch_kincaid_grade" ,
"type" : "index"
},
{
"name" : "gunning_fog" ,
"type" : "index"
},
{
"name" : "smog_index" ,
"type" : "index"
},
{
"name" : "automated_readability" ,
"type" : "index"
},
{
"name" : "coleman_liau" ,
"type" : "index"
},
{
"name" : "readability_verdict" ,
"type" : "index"
},
{
"name" : "text_chars" ,
"type" : "index"
},
{
"name" : "html_chars" ,
"type" : "index"
},
{
"name" : "text_to_html_ratio" ,
"type" : "index"
},
{
"name" : "text_ratio_verdict" ,
"type" : "index"
},
{
"name" : "reading_time_min" ,
"type" : "index"
},
{
"name" : "top_words" ,
"type" : "index"
},
{
"name" : "stopword_ratio" ,
"type" : "index"
},
{
"name" : "longest_word" ,
"type" : "index"
},
{
"name" : "avg_word_length" ,
"type" : "index"
},
{
"name" : "content_hash" ,
"type" : "index"
},
{
"name" : "content_simhash" ,
"type" : "index"
},
{
"name" : "near_duplicate_key" ,
"type" : "index"
},
{
"name" : "content_thin" ,
"type" : "index"
},
{
"name" : "content_length_class" ,
"type" : "index"
},
{
"name" : "language_guess" ,
"type" : "index"
},
{
"name" : "title_in_body" ,
"type" : "index"
},
{
"name" : "h1_in_body" ,
"type" : "index"
},
{
"name" : "description_in_body" ,
"type" : "index"
},
{
"name" : "has_lorem_ipsum" ,
"type" : "index"
},
{
"name" : "has_placeholder_text" ,
"type" : "index"
},
{
"name" : "copyright_year" ,
"type" : "index"
},
{
"name" : "copyright_age_years" ,
"type" : "index"
},
{
"name" : "dates_found" ,
"type" : "index"
},
{
"name" : "latest_date_found" ,
"type" : "index"
},
{
"name" : "emails_found" ,
"type" : "index"
},
{
"name" : "phones_found" ,
"type" : "index"
},
{
"name" : "social_profile_count" ,
"type" : "index"
},
{
"name" : "social_profiles" ,
"type" : "index"
},
{
"name" : "html_comment_count" ,
"type" : "index"
},
{
"name" : "has_sensitive_comment" ,
"type" : "index"
},
{
"name" : "keyword_stuffing_score" ,
"type" : "index"
},
{
"name" : "keyword_stuffing_verdict" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"Links_Census" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "Total_Anchors" ,
"type" : "count" ,
"selector" : "css=a"
},
{
"name" : "Anchors_NoHref" ,
"type" : "count" ,
"selector" : "css=a:not([href])"
},
{
"name" : "Link_Audit" ,
"type" : "list" ,
"selector" : "css=a" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var origin= \"\" ,hostname= \"\" ,pageUrl= \"\" ,pageSecure=false;for(var q=0;q<rows.length;q++){if(rows[q]&&rows[q].page_url){pageUrl=String(rows[q].page_url);break;}}try{var pu=new URL(pageUrl);origin=pu.origin;hostname=pu.hostname;pageSecure=pu.protocol=== \" https: \" ;}catch(e){}var total=rows.length,internal=0,external=0,fragment=0,mailto=0,tel=0,jsProto=0,emptyHref=0,hashOnly=0,protoRel=0;var nofollow=0,nofollowInt=0,nofollowExt=0,sponsored=0,ugc=0,newTab=0,noopenerMissing=0;var downloadAttr=0,nonHtml=0,insecureOnHttps=0,emptyText=0,imageOnly=0,generic=0,longText=0,toSelf=0,samePage=0;var intSet={},extSet={},hostCounts={},relSeen={},nonHtmlExt={},genericSamples=[],externalSamples=[],depthMax=0,deep=0;var textSeen={},dupeText=0;var GENERIC=/^(click here|here|read more|more|learn more|link|this|details|click|go|visit|source|info|find out more|leer más|lire la suite) \\ .?$/i;var NONHTML=/ \\ .(pdf|docx?|xlsx?|pptx?|zip|rar|gz|tar|7z|exe|dmg|csv|txt|rtf|epub|mp[34]|avi|mov|wmv|flv|webm|png|jpe?g|gif|svg|webp|ico)(?:$| \\ ?|#)/i;for(var i=0;i<rows.length;i++){var r=rows[i]||{};var raw=String(r.raw_href===null||r.raw_href===undefined? \"\" :r.raw_href).trim();var abs=String(r.abs_href===null||r.abs_href===undefined? \"\" :r.abs_href).trim();var rel=String(r.rel|| \"\" ).toLowerCase();var txt=String(r.text|| \"\" ).replace(/ \\ s+/g, \" \" ).trim();var tgt=String(r.target|| \"\" ).toLowerCase();var imgs=parseInt(r.imgs,10)||0;if(rel){rel.split(/ \\ s+/).forEach(function(x){if(x)relSeen[x]=(relSeen[x]||0)+1;});}if(rel.indexOf( \" nofollow \" )!==-1)nofollow++;if(rel.indexOf( \" sponsored \" )!==-1)sponsored++;if(rel.indexOf( \" ugc \" )!==-1)ugc++;if(tgt=== \" _blank \" ){newTab++;if(rel.indexOf( \" noopener \" )===-1&&rel.indexOf( \" noreferrer \" )===-1)noopenerMissing++;}if(raw=== \"\" ){emptyHref++;continue;}if(raw.charAt(0)=== \" # \" ){if(raw.length===1)hashOnly++;else{fragment++;samePage++;}continue;}var rl=raw.toLowerCase();if(rl.indexOf( \" javascript: \" )===0){jsProto++;continue;}if(rl.indexOf( \" mailto: \" )===0){mailto++;continue;}if(rl.indexOf( \" tel: \" )===0){tel++;continue;}if(rl.indexOf( \" data: \" )===0||rl.indexOf( \" blob: \" )===0){continue;}if(raw.indexOf( \" // \" )===0)protoRel++;var au=null;try{au=new URL(raw,pageUrl);}catch(e){}if(!au)continue;if(au.protocol!== \" http: \" &&au.protocol!== \" https: \" ){continue;}if(NONHTML.test(au.pathname+au.search)){nonHtml++;var em=au.pathname.match(/ \\ .([a-z0-9]{2,5})$/i);if(em)nonHtmlExt[em[1].toLowerCase()]=1;if(rel.indexOf( \" nofollow \" )!==-1){}if(r.download!==undefined&&r.download!==null&&r.download!== \"\" )downloadAttr++;}if(pageSecure&&au.protocol=== \" http: \" )insecureOnHttps++;var key=au.origin+au.pathname+au.search;var sameSite=hostname!== \"\" &&(au.hostname===hostname||au.hostname=== \" www. \" +hostname||hostname=== \" www. \" +au.hostname);if(sameSite){internal++;intSet[key]=1;var d=au.pathname.split( \" / \" ).filter(function(s){return s.length>0;}).length;if(d>depthMax)depthMax=d;if(d>4)deep++;if(key===origin+(function(){try{return new URL(pageUrl).pathname+new URL(pageUrl).search;}catch(e){return \"\" ;}})())toSelf++;}else{external++;extSet[key]=1;hostCounts[au.hostname]=(hostCounts[au.hostname]||0)+1;if(externalSamples.length<15&&externalSamples.indexOf(key)===-1)externalSamples.push(key);}if(rel.indexOf( \" nofollow \" )!==-1){if(sameSite)nofollowInt++;else nofollowExt++;}var tl=txt.toLowerCase();if(txt=== \"\" ){emptyText++;if(imgs>0)imageOnly++;}else{if(GENERIC.test(txt)){generic++;if(genericSamples.length<10&&genericSamples.indexOf(txt)===-1)genericSamples.push(txt);}if(txt.length>100)longText++;if(textSeen[tl])dupeText++;else textSeen[tl]=1;}}var hostPairs=Object.keys(hostCounts).map(function(h2){return [h2,hostCounts[h2]];});hostPairs.sort(function(a,b){return b[1]-a[1];});var topHosts=hostPairs.slice(0,15).map(function(p){return p[0]+ \" ( \" +p[1]+ \" ) \" ;});return {total:String(total),internal:String(internal),external:String(external),unique_internal:String(Object.keys(intSet).length),unique_external:String(Object.keys(extSet).length),unique_external_domains:String(hostPairs.length),top_external_domains:topHosts.join( \" , \" ),nofollow_total:String(nofollow),nofollow_internal:String(nofollowInt),nofollow_external:String(nofollowExt),sponsored:String(sponsored),ugc:String(ugc),noopener_missing:String(noopenerMissing),new_tab:String(newTab),fragment_only:String(fragment),mailto:String(mailto),tel:String(tel),javascript_protocol:String(jsProto),empty_href:String(emptyHref),hash_only_href:String(hashOnly),protocol_relative:String(protoRel),insecure_http_on_https:String(insecureOnHttps),download_attr:String(downloadAttr),non_html_targets:String(nonHtml),non_html_extensions:Object.keys(nonHtmlExt).join( \" , \" ),empty_anchor_text:String(emptyText),image_only_anchor:String(imageOnly),generic_anchor_text:String(generic),generic_anchor_samples:genericSamples.join( \" , \" ),long_anchor_text:String(longText),duplicate_anchor_text:String(dupeText),links_to_self:String(toSelf),same_page_anchors:String(samePage),internal_depth_max:String(depthMax),deep_internal_links:String(deep),external_sample:externalSamples.join( \" | \" ),rel_values_seen:Object.keys(relSeen).map(function(k){return k+ \" ( \" +relSeen[k]+ \" ) \" ;}).join( \" , \" ),outbound_verdict:external>300? \" Very high outbound link count \" :external>100? \" High outbound link count \" : \" Normal \" };"
}
],
"properties" : [
{
"name" : "raw_href" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "href"
},
{
"name" : "abs_href" ,
"type" : "property" ,
"selector" : "css=self"
},
{
"name" : "rel" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "rel"
},
{
"name" : "text" ,
"type" : "text" ,
"selector" : "css=self"
},
{
"name" : "target" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "target"
},
{
"name" : "imgs" ,
"type" : "count" ,
"selector" : "css=img,svg"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "total" ,
"type" : "index"
},
{
"name" : "internal" ,
"type" : "index"
},
{
"name" : "external" ,
"type" : "index"
},
{
"name" : "unique_internal" ,
"type" : "index"
},
{
"name" : "unique_external" ,
"type" : "index"
},
{
"name" : "unique_external_domains" ,
"type" : "index"
},
{
"name" : "top_external_domains" ,
"type" : "index"
},
{
"name" : "nofollow_total" ,
"type" : "index"
},
{
"name" : "nofollow_internal" ,
"type" : "index"
},
{
"name" : "nofollow_external" ,
"type" : "index"
},
{
"name" : "sponsored" ,
"type" : "index"
},
{
"name" : "ugc" ,
"type" : "index"
},
{
"name" : "noopener_missing" ,
"type" : "index"
},
{
"name" : "new_tab" ,
"type" : "index"
},
{
"name" : "fragment_only" ,
"type" : "index"
},
{
"name" : "mailto" ,
"type" : "index"
},
{
"name" : "tel" ,
"type" : "index"
},
{
"name" : "javascript_protocol" ,
"type" : "index"
},
{
"name" : "empty_href" ,
"type" : "index"
},
{
"name" : "hash_only_href" ,
"type" : "index"
},
{
"name" : "protocol_relative" ,
"type" : "index"
},
{
"name" : "insecure_http_on_https" ,
"type" : "index"
},
{
"name" : "download_attr" ,
"type" : "index"
},
{
"name" : "non_html_targets" ,
"type" : "index"
},
{
"name" : "non_html_extensions" ,
"type" : "index"
},
{
"name" : "empty_anchor_text" ,
"type" : "index"
},
{
"name" : "image_only_anchor" ,
"type" : "index"
},
{
"name" : "generic_anchor_text" ,
"type" : "index"
},
{
"name" : "generic_anchor_samples" ,
"type" : "index"
},
{
"name" : "long_anchor_text" ,
"type" : "index"
},
{
"name" : "duplicate_anchor_text" ,
"type" : "index"
},
{
"name" : "links_to_self" ,
"type" : "index"
},
{
"name" : "same_page_anchors" ,
"type" : "index"
},
{
"name" : "internal_depth_max" ,
"type" : "index"
},
{
"name" : "deep_internal_links" ,
"type" : "index"
},
{
"name" : "external_sample" ,
"type" : "index"
},
{
"name" : "rel_values_seen" ,
"type" : "index"
},
{
"name" : "outbound_verdict" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"Media_Performance" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "DOM_Node_Count" ,
"type" : "count" ,
"selector" : "css=*"
},
{
"name" : "Img_Count" ,
"type" : "count" ,
"selector" : "css=img"
},
{
"name" : "Script_Count" ,
"type" : "count" ,
"selector" : "css=script"
},
{
"name" : "Stylesheet_Count" ,
"type" : "count" ,
"selector" : "css=link[rel='stylesheet']"
},
{
"name" : "Iframe_Count" ,
"type" : "count" ,
"selector" : "css=iframe"
},
{
"name" : "Form_Count" ,
"type" : "count" ,
"selector" : "css=form"
},
{
"name" : "Input_Count" ,
"type" : "count" ,
"selector" : "css=input,textarea,select"
},
{
"name" : "Button_Count" ,
"type" : "count" ,
"selector" : "css=button"
},
{
"name" : "SVG_Count" ,
"type" : "count" ,
"selector" : "css=svg"
},
{
"name" : "Noscript_Count" ,
"type" : "count" ,
"selector" : "css=noscript"
},
{
"name" : "Inline_Style_Attrs" ,
"type" : "count" ,
"selector" : "css=[style]"
},
{
"name" : "Image_Audit" ,
"type" : "list" ,
"selector" : "css=img" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var total=rows.length,missingAlt=0,emptyAlt=0,goodAlt=0,longAlt=0,missingSrc=0,emptySrc=0;var lazy=0,eager=0,jsLazy=0,hasSrcset=0,missingDims=0,hasDims=0,modern=0,legacy=0;var hasTitle=0,asyncDec=0,extImg=0,insecure=0;var fmt={},srcSeen={},altSamples=[];var pageUrl= \"\" ,hostname= \"\" ;try{pageUrl=String(rows[0].page_url|| \"\" );hostname=new URL(pageUrl).hostname;}catch(e){}for(var i=0;i<rows.length;i++){var r=rows[i]||{};var src=String(r.src|| \"\" ).trim();var cs=String(r.current_src|| \"\" ).trim();var eff=cs||src;var alt=r.alt;var hasAltAttr=(alt!==null&&alt!==undefined);if(!hasAltAttr){missingAlt++;if(altSamples.length<10)altSamples.push(eff.substring(eff.lastIndexOf( \" / \" )+1,eff.lastIndexOf( \" / \" )+60)|| \" (no src) \" );}else if(String(alt).trim()=== \"\" )emptyAlt++;else{goodAlt++;if(String(alt).length>125)longAlt++;}if(!hasAltAttr&&!src)missingSrc++;if(src=== \"\" )emptySrc++;if(String(r.loading|| \"\" ).toLowerCase()=== \" lazy \" )lazy++;else if(src)eager++;if(!src&&String(r.data_src|| \"\" ).trim())jsLazy++;if(String(r.srcset|| \"\" ).trim())hasSrcset++;var w=String(r.w|| \"\" ).trim(),h=String(r.h|| \"\" ).trim();if(w&&h)hasDims++;else missingDims++;if(String(r.title|| \"\" ).trim())hasTitle++;if(String(r.decoding|| \"\" ).toLowerCase()=== \" async \" )asyncDec++;var ext= \"\" ;var em=eff.match(/ \\ .([a-z0-9]{2,5})(?:$| \\ ?|#)/i);if(em)ext=em[1].toLowerCase();else if(eff.indexOf( \" data:image/ \" )===0){var dm=eff.match(/^data:image \\ /([a-z0-9.+-]+)/i);if(dm)ext=dm[1].toLowerCase();}if(ext)fmt[ext]=(fmt[ext]||0)+1;if(ext=== \" webp \" ||ext=== \" avif \" ||ext=== \" jxl \" )modern++;else if(ext)legacy++;if(eff){var key=eff.split( \" ? \" )[0];srcSeen[key]=(srcSeen[key]||0)+1;try{var u=new URL(eff,pageUrl);if(u.hostname&&u.hostname!==hostname)extImg++;if(u.protocol=== \" http: \" &&/^https:/i.test(pageUrl))insecure++;}catch(e){}}}var dupes=0;Object.keys(srcSeen).forEach(function(k){if(srcSeen[k]>1)dupes+=srcSeen[k]-1;});var fmtStr=Object.keys(fmt).map(function(k){return k+ \" ( \" +fmt[k]+ \" ) \" ;}).sort().join( \" , \" );var verdict=[];if(missingAlt>0)verdict.push(missingAlt+ \" img missing alt \" );if(missingDims>0&&total>0&&(missingDims/total)>0.3)verdict.push(Math.round((missingDims/total)*100)+ \" % missing width/height (CLS risk) \" );if(modern===0&&total>3)verdict.push( \" No modern image formats (WebP/AVIF) \" );if(insecure>0)verdict.push(insecure+ \" insecure http:// image(s) \" );return {total:String(total),missing_alt:String(missingAlt),empty_alt:String(emptyAlt),good_alt:String(goodAlt),long_alt:String(longAlt),alt_missing_sample:altSamples.join( \" | \" ),missing_src:String(missingSrc),empty_src:String(emptySrc),lazy_loaded:String(lazy),eager_loaded:String(eager),js_lazy_loaded:String(jsLazy),has_srcset:String(hasSrcset),responsive_coverage:String(total?Math.round((hasSrcset/total)*100):0),missing_dimensions:String(missingDims),has_dimensions:String(hasDims),cls_risk_ratio:String(total?Math.round((missingDims/total)*100):0),modern_format:String(modern),legacy_format:String(legacy),format_breakdown:fmtStr,external_images:String(extImg),insecure_images:String(insecure),has_title_attr:String(hasTitle),async_decoding:String(asyncDec),unique_srcs:String(Object.keys(srcSeen).length),duplicate_srcs:String(dupes),image_verdict:verdict.length?verdict.join( \" ; \" ): \" OK \" };"
}
],
"properties" : [
{
"name" : "src" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "src"
},
{
"name" : "alt" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "alt"
},
{
"name" : "w" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "width"
},
{
"name" : "h" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "height"
},
{
"name" : "loading" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "loading"
},
{
"name" : "srcset" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "srcset"
},
{
"name" : "decoding" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "decoding"
},
{
"name" : "data_src" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "data-src"
},
{
"name" : "current_src" ,
"type" : "property" ,
"selector" : "css=self"
},
{
"name" : "total" ,
"type" : "index"
},
{
"name" : "missing_alt" ,
"type" : "index"
},
{
"name" : "empty_alt" ,
"type" : "index"
},
{
"name" : "good_alt" ,
"type" : "index"
},
{
"name" : "long_alt" ,
"type" : "index"
},
{
"name" : "alt_missing_sample" ,
"type" : "index"
},
{
"name" : "missing_src" ,
"type" : "index"
},
{
"name" : "empty_src" ,
"type" : "index"
},
{
"name" : "lazy_loaded" ,
"type" : "index"
},
{
"name" : "eager_loaded" ,
"type" : "index"
},
{
"name" : "js_lazy_loaded" ,
"type" : "index"
},
{
"name" : "has_srcset" ,
"type" : "index"
},
{
"name" : "responsive_coverage" ,
"type" : "index"
},
{
"name" : "missing_dimensions" ,
"type" : "index"
},
{
"name" : "has_dimensions" ,
"type" : "index"
},
{
"name" : "cls_risk_ratio" ,
"type" : "index"
},
{
"name" : "modern_format" ,
"type" : "index"
},
{
"name" : "legacy_format" ,
"type" : "index"
},
{
"name" : "format_breakdown" ,
"type" : "index"
},
{
"name" : "external_images" ,
"type" : "index"
},
{
"name" : "insecure_images" ,
"type" : "index"
},
{
"name" : "has_title_attr" ,
"type" : "index"
},
{
"name" : "async_decoding" ,
"type" : "index"
},
{
"name" : "unique_srcs" ,
"type" : "index"
},
{
"name" : "duplicate_srcs" ,
"type" : "index"
},
{
"name" : "image_verdict" ,
"type" : "index"
}
]
},
{
"name" : "Resource_Audit" ,
"type" : "list" ,
"selector" : "css=script,link[rel='stylesheet']" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var pageUrl= \"\" ,hostname= \"\" ;for(var q=0;q<rows.length;q++){if(rows[q]&&rows[q].page_url){pageUrl=String(rows[q].page_url);break;}}try{hostname=new URL(pageUrl).hostname;}catch(e){}var scripts=0,scriptsExt=0,scriptsInline=0,scriptsAsync=0,scriptsDefer=0,scriptsBlocking=0,scriptsThird=0,moduleScripts=0;var sheets=0,sheetsBlocking=0,sheetsPrint=0,sheetsThird=0;var thirdDomains={},insecure=0,blockSamples=[];for(var i=0;i<rows.length;i++){var r=rows[i]||{};var tag=String(r.tag|| \"\" ).toLowerCase();var rel=String(r.rel|| \"\" ).toLowerCase();var src=String(r.src|| \"\" ).trim();var href=String(r.href|| \"\" ).trim();var url=src||href;var third=false;if(url&&hostname){try{var u=new URL(url,pageUrl);if(u.hostname&&u.hostname!==hostname){third=true;thirdDomains[u.hostname]=(thirdDomains[u.hostname]||0)+1;}if(u.protocol=== \" http: \" &&/^https:/i.test(pageUrl))insecure++;}catch(e){}}if(tag=== \" script \" ){scripts++;var type=String(r.type_a|| \"\" ).toLowerCase();if(type.indexOf( \" module \" )!==-1)moduleScripts++;if(src){scriptsExt++;if(third)scriptsThird++;}else scriptsInline++;var isAsync=(r.async_a!==null&&r.async_a!==undefined)||(r.defer_a!==null&&r.defer_a!==undefined)||type=== \" module \" ;if(isAsync){if(r.async_a!==null&&r.async_a!==undefined)scriptsAsync++;if(r.defer_a!==null&&r.defer_a!==undefined)scriptsDefer++;}else{scriptsBlocking++;if(blockSamples.length<12&&src)blockSamples.push(src);}}else if(tag=== \" link \" &&rel.indexOf( \" stylesheet \" )!==-1){sheets++;var media=String(r.media_a|| \"\" ).toLowerCase();if(media&&media!== \" all \" &&media.indexOf( \" print \" )!==-1)sheetsPrint++;else{sheetsBlocking++;if(blockSamples.length<12&&href)blockSamples.push(href);}if(third)sheetsThird++;}}var td=Object.keys(thirdDomains).map(function(k){return [k,thirdDomains[k]];});td.sort(function(a,b){return b[1]-a[1];});var total=rows.length;var blockingTotal=sheetsBlocking+scriptsBlocking;var verdict=blockingTotal===0? \" No render-blocking resources \" :blockingTotal<=3? \" Low render-blocking load ( \" +blockingTotal+ \" ) \" :blockingTotal<=8? \" Moderate render-blocking load ( \" +blockingTotal+ \" ) \" : \" Heavy render-blocking load ( \" +blockingTotal+ \" ) \" ;return {total:String(total),scripts_total:String(scripts),scripts_external:String(scriptsExt),scripts_inline:String(scriptsInline),scripts_async:String(scriptsAsync),scripts_defer:String(scriptsDefer),scripts_blocking:String(scriptsBlocking),scripts_third_party:String(scriptsThird),third_party_domains:td.slice(0,20).map(function(p){return p[0]+ \" ( \" +p[1]+ \" ) \" ;}).join( \" , \" ),stylesheets_total:String(sheets),stylesheets_render_blocking:String(sheetsBlocking),stylesheets_print_only:String(sheetsPrint),stylesheets_third_party:String(sheetsThird),render_blocking_total:String(blockingTotal),render_blocking_sample:blockSamples.join( \" | \" ),insecure_resources:String(insecure),module_scripts:String(moduleScripts),blocking_verdict:verdict};"
}
],
"properties" : [
{
"name" : "tag" ,
"type" : "property" ,
"selector" : "css=self"
},
{
"name" : "src" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "src"
},
{
"name" : "href" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "href"
},
{
"name" : "rel" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "rel"
},
{
"name" : "async_a" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "async"
},
{
"name" : "defer_a" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "defer"
},
{
"name" : "type_a" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "type"
},
{
"name" : "media_a" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "media"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "total" ,
"type" : "index"
},
{
"name" : "scripts_total" ,
"type" : "index"
},
{
"name" : "scripts_external" ,
"type" : "index"
},
{
"name" : "scripts_inline" ,
"type" : "index"
},
{
"name" : "scripts_async" ,
"type" : "index"
},
{
"name" : "scripts_defer" ,
"type" : "index"
},
{
"name" : "scripts_blocking" ,
"type" : "index"
},
{
"name" : "scripts_third_party" ,
"type" : "index"
},
{
"name" : "third_party_domains" ,
"type" : "index"
},
{
"name" : "stylesheets_total" ,
"type" : "index"
},
{
"name" : "stylesheets_render_blocking" ,
"type" : "index"
},
{
"name" : "stylesheets_print_only" ,
"type" : "index"
},
{
"name" : "stylesheets_third_party" ,
"type" : "index"
},
{
"name" : "render_blocking_total" ,
"type" : "index"
},
{
"name" : "render_blocking_sample" ,
"type" : "index"
},
{
"name" : "insecure_resources" ,
"type" : "index"
},
{
"name" : "module_scripts" ,
"type" : "index"
},
{
"name" : "blocking_verdict" ,
"type" : "index"
}
]
},
{
"name" : "Embed_Audit" ,
"type" : "list" ,
"selector" : "css=iframe,video,audio,embed,object" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var total=rows.length,iframes=0,ifrNoTitle=0,ifrLazy=0,yt=0,vimeo=0,maps=0,ads=0,videos=0,audios=0,objects=0,insecure=0;var domains={};for(var i=0;i<rows.length;i++){var r=rows[i]||{};var tag=String(r.tag|| \"\" ).toLowerCase();var src=String(r.src|| \"\" ).trim();if(tag=== \" iframe \" ){iframes++;if(!String(r.title|| \"\" ).trim())ifrNoTitle++;if(String(r.loading|| \"\" ).toLowerCase()=== \" lazy \" )ifrLazy++;}else if(tag=== \" video \" )videos++;else if(tag=== \" audio \" )audios++;else if(tag=== \" embed \" ||tag=== \" object \" )objects++;if(src){try{var u=new URL(src, \" about:blank \" );var h=u.hostname.replace(/^www \\ ./, \"\" );domains[h]=(domains[h]||0)+1;if(u.protocol=== \" http: \" )insecure++;if(/youtube \\ .com|youtu \\ .be/.test(h))yt++;else if(/vimeo \\ .com/.test(h))vimeo++;else if(/google \\ .[a-z.]+ \\ /maps|maps \\ .google/.test(h))maps++;else if(/doubleclick|googlesyndication|adsystem|amazon-adsystem|adnxs|criteo|taboola|outbrain/.test(h))ads++;}catch(e){}}}return {total:String(total),iframes:String(iframes),iframes_missing_title:String(ifrNoTitle),iframes_lazy:String(ifrLazy),youtube_embeds:String(yt),vimeo_embeds:String(vimeo),map_embeds:String(maps),ad_embeds:String(ads),videos:String(videos),audios:String(audios),objects:String(objects),embed_domains:Object.keys(domains).map(function(k){return k+ \" ( \" +domains[k]+ \" ) \" ;}).join( \" , \" ),insecure_embeds:String(insecure)};"
}
],
"properties" : [
{
"name" : "tag" ,
"type" : "property" ,
"selector" : "css=self"
},
{
"name" : "src" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "src"
},
{
"name" : "title" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "title"
},
{
"name" : "loading" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "loading"
},
{
"name" : "sandbox" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "sandbox"
},
{
"name" : "total" ,
"type" : "index"
},
{
"name" : "iframes" ,
"type" : "index"
},
{
"name" : "iframes_missing_title" ,
"type" : "index"
},
{
"name" : "iframes_lazy" ,
"type" : "index"
},
{
"name" : "youtube_embeds" ,
"type" : "index"
},
{
"name" : "vimeo_embeds" ,
"type" : "index"
},
{
"name" : "map_embeds" ,
"type" : "index"
},
{
"name" : "ad_embeds" ,
"type" : "index"
},
{
"name" : "videos" ,
"type" : "index"
},
{
"name" : "audios" ,
"type" : "index"
},
{
"name" : "objects" ,
"type" : "index"
},
{
"name" : "embed_domains" ,
"type" : "index"
},
{
"name" : "insecure_embeds" ,
"type" : "index"
}
]
},
{
"name" : "DOM_Performance" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};var html=String(it.html|| \"\" );var domNodes=parseInt(it.dom_nodes,10)||0;var VOID={area:1,base:1,br:1,col:1,embed:1,hr:1,img:1,input:1,link:1,meta:1,param:1,source:1,track:1,wbr:1};var depth=0,maxDepth=0;var tagRe=/<(/)?([a-zA-Z][a-zA-Z0-9-]*)([^>]*)>/g;var m;while((m=tagRe.exec(html))!==null){var closing=m[1]=== \" / \" ;var name=m[2].toLowerCase();var attrs=m[3]|| \"\" ;if(name=== \" script \" ||name=== \" style \" ){if(!closing){var closeIdx=html.indexOf( \" </ \" +name,tagRe.lastIndex);if(closeIdx!==-1)tagRe.lastIndex=closeIdx;}continue;}if(VOID[name]||/ \\ / \\ s*$/.test(attrs))continue;if(closing){if(depth>0)depth--;}else{depth++;if(depth>maxDepth)maxDepth=depth;}}var preload=parseInt(it.preload,10)||0;var prefetch=parseInt(it.prefetch,10)||0;var preconnect=parseInt(it.preconnect,10)||0;var modulepreload=parseInt(it.modulepreload,10)||0;var prerender=parseInt(it.prerender,10)||0;var fontPreload=parseInt(it.fonts_preload,10)||0;var inlineStyles=parseInt(it.inline_styles,10)||0;var styleAttrs=parseInt(it.style_attrs,10)||0;var hints=preload+prefetch+preconnect+modulepreload+prerender;var ttfb=parseInt(it.response_ms,10);if(!isFinite(ttfb))ttfb=0;var bytes=parseInt(it.content_bytes,10);if(!isFinite(bytes))bytes=0;var proto=String(it.protocol|| \"\" ).toLowerCase();var domVerdict=domNodes===0? \" Unknown \" :domNodes<=1500? \" Healthy \" :domNodes<=3000? \" Large \" :domNodes<=5000? \" Very large \" : \" Excessive \" ;var depthVerdict=maxDepth<=15? \" Healthy \" :maxDepth<=25? \" Deep \" : \" Excessively deep \" ;var ttfbVerdict=ttfb===0? \" Unknown \" :ttfb<=200? \" Excellent (<=200ms) \" :ttfb<=600? \" Good (<=600ms) \" :ttfb<=1800? \" Needs improvement \" : \" Poor (>1800ms) \" ;var score=100;if(domNodes>1500)score-=Math.min(25,Math.floor((domNodes-1500)/400));if(maxDepth>20)score-=Math.min(15,Math.floor((maxDepth-20)/5));if(ttfb>600)score-=Math.min(25,Math.floor((ttfb-600)/200));if(bytes>500000)score-=Math.min(15,Math.floor(bytes/500000));if(hints===0)score-=5;if(score<0)score=0;var pVerdict=score>=85? \" Excellent \" :score>=70? \" Good \" :score>=50? \" Needs improvement \" : \" Poor \" ;return {dom_size:String(domNodes),dom_size_verdict:domVerdict,dom_max_depth:String(maxDepth),dom_depth_verdict:depthVerdict,html_bytes:String(html.length),html_kb:String(Math.round(html.length/1024)),resource_hint_count:String(hints),preload_count:String(preload),prefetch_count:String(prefetch),preconnect_count:String(preconnect),font_preload_count:String(fontPreload),inline_style_blocks:String(inlineStyles),inline_style_attrs:String(styleAttrs),ttfb_ms:String(ttfb),ttfb_verdict:ttfbVerdict,transfer_kb:String(Math.round(bytes/1024)),uses_http2:String(proto=== \" h2 \" ),uses_http3:String(proto=== \" h3 \" ||proto=== \" h3-29 \" ),performance_score:String(score),performance_verdict:pVerdict};"
}
],
"properties" : [
{
"name" : "html" ,
"type" : "html" ,
"selector" : "css=self"
},
{
"name" : "dom_nodes" ,
"type" : "count" ,
"selector" : "css=*"
},
{
"name" : "preload" ,
"type" : "count" ,
"selector" : "css=link[rel='preload']"
},
{
"name" : "prefetch" ,
"type" : "count" ,
"selector" : "css=link[rel='prefetch']"
},
{
"name" : "preconnect" ,
"type" : "count" ,
"selector" : "css=link[rel='preconnect'],link[rel='dns-prefetch']"
},
{
"name" : "modulepreload" ,
"type" : "count" ,
"selector" : "css=link[rel='modulepreload']"
},
{
"name" : "prerender" ,
"type" : "count" ,
"selector" : "css=link[rel='prerender']"
},
{
"name" : "fonts_preload" ,
"type" : "count" ,
"selector" : "css=link[rel='preload'][as='font']"
},
{
"name" : "inline_styles" ,
"type" : "count" ,
"selector" : "css=style"
},
{
"name" : "style_attrs" ,
"type" : "count" ,
"selector" : "css=[style]"
},
{
"name" : "canonical_tags" ,
"type" : "count" ,
"selector" : "css=link[rel='canonical']"
},
{
"name" : "response_ms" ,
"type" : "text" ,
"selector" : "variable=last_response_time_ms"
},
{
"name" : "content_bytes" ,
"type" : "text" ,
"selector" : "variable=last_content_length"
},
{
"name" : "protocol" ,
"type" : "text" ,
"selector" : "variable=last_protocol"
},
{
"name" : "dom_size" ,
"type" : "index"
},
{
"name" : "dom_size_verdict" ,
"type" : "index"
},
{
"name" : "dom_max_depth" ,
"type" : "index"
},
{
"name" : "dom_depth_verdict" ,
"type" : "index"
},
{
"name" : "html_bytes" ,
"type" : "index"
},
{
"name" : "html_kb" ,
"type" : "index"
},
{
"name" : "resource_hint_count" ,
"type" : "index"
},
{
"name" : "preload_count" ,
"type" : "index"
},
{
"name" : "prefetch_count" ,
"type" : "index"
},
{
"name" : "preconnect_count" ,
"type" : "index"
},
{
"name" : "font_preload_count" ,
"type" : "index"
},
{
"name" : "inline_style_blocks" ,
"type" : "index"
},
{
"name" : "inline_style_attrs" ,
"type" : "index"
},
{
"name" : "ttfb_ms" ,
"type" : "index"
},
{
"name" : "ttfb_verdict" ,
"type" : "index"
},
{
"name" : "transfer_kb" ,
"type" : "index"
},
{
"name" : "uses_http2" ,
"type" : "index"
},
{
"name" : "uses_http3" ,
"type" : "index"
},
{
"name" : "performance_score" ,
"type" : "index"
},
{
"name" : "performance_verdict" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"Structured_Data" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "JsonLD_Count" ,
"type" : "count" ,
"selector" : "css=script[type='application/ld+json']"
},
{
"name" : "Microdata_Count" ,
"type" : "count" ,
"selector" : "css=[itemtype]"
},
{
"name" : "RDFa_Count" ,
"type" : "count" ,
"selector" : "css=[typeof]"
},
{
"name" : "Tech_Stack" ,
"type" : "text" ,
"selector" : "variable=tech_stack" ,
"transformations" : [
{
"type" : "script" ,
"code" : "if(!value)return '';if(Array.isArray(value))return value.join(', ');return String(value);" ,
"default_value" : ""
}
]
},
{
"name" : "Tech_Stack_Count" ,
"type" : "text" ,
"selector" : "variable=tech_stack" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(Array.isArray(value)?value.length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "Structured_Data_Audit" ,
"type" : "list" ,
"selector" : "css=script[type='application/ld+json']" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var blocks=rows.length,valid=0,invalid=0,errors=[];var types={},ids=[],graphNodes=0,missingCtx=0,missingType=0;function walk(node,depth){if(!node||typeof node!== \" object \" ||depth>8)return;if(Array.isArray(node)){for(var a=0;a<node.length;a++)walk(node[a],depth+1);return;}if(node[ \" @graph \" ]&&Array.isArray(node[ \" @graph \" ])){graphNodes+=node[ \" @graph \" ].length;walk(node[ \" @graph \" ],depth+1);}var t=node[ \" @type \" ];if(t){if(Array.isArray(t)){for(var b=0;b<t.length;b++){var tn=String(t[b]);types[tn]=(types[tn]||0)+1;}}else{var tn2=String(t);types[tn2]=(types[tn2]||0)+1;}}else if(node[ \" @id \" ]||node[ \" @context \" ])missingType++;if(node[ \" @id \" ])ids.push(String(node[ \" @id \" ]).substring(0,120));if(node[ \" @context \" ]===undefined&&node[ \" @graph \" ]===undefined&&node[ \" @type \" ]!==undefined)missingCtx++;var keys=Object.keys(node);for(var k=0;k<keys.length&&k<40;k++){var v=node[keys[k]];if(v&&typeof v=== \" object \" )walk(v,depth+1);}}for(var i=0;i<rows.length;i++){var raw=String(rows[i].json|| \"\" ).trim();if(!raw){invalid++;errors.push( \" Block \" +(i+1)+ \" : empty \" );continue;}try{var parsed=JSON.parse(raw);valid++;walk(parsed,0);}catch(e){invalid++;errors.push( \" Block \" +(i+1)+ \" : \" +String(e.message||e).substring(0,120));}}var typeNames=Object.keys(types);var has=function(re){for(var j=0;j<typeNames.length;j++){if(re.test(typeNames[j]))return true;}return false;};var rich=[];if(has(/^(Product|Offer|AggregateOffer)$/i))rich.push( \" Product/Merchant listing \" );if(has(/^(Article|NewsArticle|BlogPosting|TechArticle)$/i))rich.push( \" Article \" );if(has(/^FAQPage$/i))rich.push( \" FAQ \" );if(has(/^HowTo$/i))rich.push( \" HowTo \" );if(has(/^BreadcrumbList$/i))rich.push( \" Breadcrumb \" );if(has(/^(LocalBusiness|Restaurant|Store|Dentist|LegalService)$/i))rich.push( \" Local Business \" );if(has(/^(Review|AggregateRating)$/i))rich.push( \" Review stars \" );if(has(/^(Event)$/i))rich.push( \" Event \" );if(has(/^(VideoObject)$/i))rich.push( \" Video \" );if(has(/^(Recipe)$/i))rich.push( \" Recipe \" );if(has(/^(JobPosting)$/i))rich.push( \" Job posting \" );if(has(/^(SoftwareApplication)$/i))rich.push( \" Software app \" );if(has(/^(QAPage|Question|Answer)$/i))rich.push( \" Q&A \" );if(has(/^(SpeakableSpecification)$/i))rich.push( \" Speakable \" );if(has(/^(Organization)$/i))rich.push( \" Organization knowledge panel \" );if(has(/^(WebSite)$/i))rich.push( \" Sitelinks searchbox \" );var issues=[];if(blocks===0)issues.push( \" No JSON-LD found \" );if(invalid>0)issues.push(invalid+ \" invalid JSON-LD block(s) \" );if(missingCtx>0)issues.push(missingCtx+ \" node(s) missing @context \" );if(missingType>0)issues.push(missingType+ \" node(s) missing @type \" );var verdict=blocks===0? \" Missing structured data \" :invalid>0? \" Broken structured data \" :rich.length? \" Rich result eligible: \" +rich.join( \" , \" ): \" Valid but no rich-result type \" ;return {blocks:String(blocks),valid_blocks:String(valid),invalid_blocks:String(invalid),parse_errors:errors.join( \" | \" ).substring(0,2000),types:typeNames.map(function(t){return t+ \" ( \" +types[t]+ \" ) \" ;}).join( \" , \" ),type_count:String(typeNames.length),has_organization:String(has(/^(Organization|Corporation|LocalBusiness)$/i)),has_localbusiness:String(has(/LocalBusiness|Restaurant|Store|Dentist|LegalService|AutoDealer|HealthAndBeautyBusiness/i)),has_website:String(has(/^WebSite$/i)),has_webpage:String(has(/^(WebPage|ItemPage|AboutPage|ContactPage|CollectionPage)$/i)),has_breadcrumb:String(has(/^BreadcrumbList$/i)),has_article:String(has(/^(Article|NewsArticle|BlogPosting|TechArticle|ScholarlyArticle)$/i)),has_product:String(has(/^(Product|Offer|AggregateOffer)$/i)),has_faq:String(has(/^FAQPage$/i)),has_howto:String(has(/^HowTo$/i)),has_review:String(has(/^Review$/i)),has_aggregate_rating:String(has(/^AggregateRating$/i)),has_video:String(has(/^(VideoObject)$/i)),has_event:String(has(/^(Event)$/i)),has_person:String(has(/^Person$/i)),has_speakable:String(has(/^(SpeakableSpecification)$/i)),missing_context:String(missingCtx),missing_type:String(missingType),graph_nodes:String(graphNodes),entity_ids:ids.slice(0,20).join( \" , \" ),rich_result_eligible:rich.join( \" , \" ),issues:issues.join( \" ; \" ),structured_data_verdict:verdict};"
}
],
"properties" : [
{
"name" : "json" ,
"type" : "text" ,
"selector" : "css=self"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "blocks" ,
"type" : "index"
},
{
"name" : "valid_blocks" ,
"type" : "index"
},
{
"name" : "invalid_blocks" ,
"type" : "index"
},
{
"name" : "parse_errors" ,
"type" : "index"
},
{
"name" : "types" ,
"type" : "index"
},
{
"name" : "type_count" ,
"type" : "index"
},
{
"name" : "has_organization" ,
"type" : "index"
},
{
"name" : "has_localbusiness" ,
"type" : "index"
},
{
"name" : "has_website" ,
"type" : "index"
},
{
"name" : "has_webpage" ,
"type" : "index"
},
{
"name" : "has_breadcrumb" ,
"type" : "index"
},
{
"name" : "has_article" ,
"type" : "index"
},
{
"name" : "has_product" ,
"type" : "index"
},
{
"name" : "has_faq" ,
"type" : "index"
},
{
"name" : "has_howto" ,
"type" : "index"
},
{
"name" : "has_review" ,
"type" : "index"
},
{
"name" : "has_aggregate_rating" ,
"type" : "index"
},
{
"name" : "has_video" ,
"type" : "index"
},
{
"name" : "has_event" ,
"type" : "index"
},
{
"name" : "has_person" ,
"type" : "index"
},
{
"name" : "has_speakable" ,
"type" : "index"
},
{
"name" : "missing_context" ,
"type" : "index"
},
{
"name" : "missing_type" ,
"type" : "index"
},
{
"name" : "graph_nodes" ,
"type" : "index"
},
{
"name" : "entity_ids" ,
"type" : "index"
},
{
"name" : "rich_result_eligible" ,
"type" : "index"
},
{
"name" : "issues" ,
"type" : "index"
},
{
"name" : "structured_data_verdict" ,
"type" : "index"
}
]
},
{
"name" : "Microdata_RDFa" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};var itemtypes=parseInt(it.itemtypes,10)||0;var itemprops=parseInt(it.itemprops,10)||0;var typeofs=parseInt(it.typeof_nodes,10)||0;var props=parseInt(it.property_nodes,10)||0;var mdTypes=String(it.microdata_types|| \"\" ).split( \"\\ n \" ).map(function(s){return s.trim();}).filter(Boolean);var rdTypes=String(it.rdfa_types|| \"\" ).split( \"\\ n \" ).map(function(s){return s.trim();}).filter(Boolean);var mdClean=[],rdClean=[];for(var i=0;i<mdTypes.length;i++){var p=mdTypes[i].replace(/^https?: \\ / \\ /schema \\ .org \\ //i, \"\" );if(mdClean.indexOf(p)===-1)mdClean.push(p);}for(var j=0;j<rdTypes.length;j++){var p2=rdTypes[j].replace(/^https?: \\ / \\ /schema \\ .org \\ //i, \"\" );if(rdClean.indexOf(p2)===-1)rdClean.push(p2);}var formats=[];if(itemtypes>0||itemprops>0)formats.push( \" Microdata \" );if(typeofs>0||props>0)formats.push( \" RDFa \" );var verdict=formats.length===0? \" No Microdata or RDFa markup \" :formats.join( \" + \" )+ \" detected \" ;return {microdata_total:String(itemtypes),microdata_types_all:mdClean.join( \" , \" ),rdfa_total:String(typeofs),rdfa_types_all:rdClean.join( \" , \" ),markup_formats_used:formats.join( \" , \" ),markup_verdict:verdict};"
}
],
"properties" : [
{
"name" : "itemtypes" ,
"type" : "count" ,
"selector" : "css=[itemtype]"
},
{
"name" : "itemprops" ,
"type" : "count" ,
"selector" : "css=[itemprop]"
},
{
"name" : "typeof_nodes" ,
"type" : "count" ,
"selector" : "css=[typeof]"
},
{
"name" : "property_nodes" ,
"type" : "count" ,
"selector" : "css=[property]"
},
{
"name" : "microdata_types" ,
"type" : "attribute" ,
"selector" : "css=[itemtype]" ,
"attribute" : "itemtype"
},
{
"name" : "rdfa_types" ,
"type" : "attribute" ,
"selector" : "css=[typeof]" ,
"attribute" : "typeof"
},
{
"name" : "microdata_total" ,
"type" : "index"
},
{
"name" : "microdata_types_all" ,
"type" : "index"
},
{
"name" : "rdfa_total" ,
"type" : "index"
},
{
"name" : "rdfa_types_all" ,
"type" : "index"
},
{
"name" : "markup_formats_used" ,
"type" : "index"
},
{
"name" : "markup_verdict" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"Accessibility_AXE" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "Page_URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "AXE_Violations" ,
"type" : "text" ,
"selector" : "variable=axe_report" ,
"transformations" : [
{
"type" : "json_path"
},
{
"type" : "script" ,
"code" : "return String(Array.isArray(value)?value.length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "AXE_Passes" ,
"type" : "text" ,
"selector" : "variable=axe_report" ,
"transformations" : [
{
"type" : "json_path"
},
{
"type" : "script" ,
"code" : "return String(Array.isArray(value)?value.length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "AXE_Incomplete" ,
"type" : "text" ,
"selector" : "variable=axe_report" ,
"transformations" : [
{
"type" : "json_path"
},
{
"type" : "script" ,
"code" : "return String(Array.isArray(value)?value.length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "AXE_Inapplicable" ,
"type" : "text" ,
"selector" : "variable=axe_report" ,
"transformations" : [
{
"type" : "json_path"
},
{
"type" : "script" ,
"code" : "return String(Array.isArray(value)?value.length:0);" ,
"default_value" : "0"
}
]
},
{
"name" : "AXE_Summary" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};var rep=it.report;if(!rep||typeof rep!== \" object \" ){return {ran: \" false \" ,violation_count: \" 0 \" ,critical_count: \" 0 \" ,serious_count: \" 0 \" ,moderate_count: \" 0 \" ,minor_count: \" 0 \" ,affected_nodes: \" 0 \" ,violation_ids: \"\" ,top_violations: \"\" ,wcag_tags: \"\" ,passes_count: \" 0 \" ,incomplete_count: \" 0 \" ,axe_score: \"\" ,axe_grade: \"\" ,axe_verdict: \" AXE did not run (blocked, CSP, or CDN unreachable) \" ,axe_url: \"\" ,axe_engine_version: \"\" };}var v=Array.isArray(rep.violations)?rep.violations:[];var p=Array.isArray(rep.passes)?rep.passes:[];var inc=Array.isArray(rep.incomplete)?rep.incomplete:[];var crit=0,ser=0,mod=0,min=0,nodes=0,ids=[],tops=[],tags={};for(var i=0;i<v.length;i++){var imp=String(v[i].impact|| \"\" ).toLowerCase();var nc=Array.isArray(v[i].nodes)?v[i].nodes.length:0;nodes+=nc;if(imp=== \" critical \" )crit++;else if(imp=== \" serious \" )ser++;else if(imp=== \" moderate \" )mod++;else min++;ids.push(v[i].id);tops.push((v[i].id|| \" ? \" )+ \" [ \" +(imp|| \" ? \" )+ \" : \" +nc+ \" ] \" +String(v[i].help|| \"\" ).substring(0,70));var t=Array.isArray(v[i].tags)?v[i].tags:[];for(var j=0;j<t.length;j++){if(/^wcag/i.test(t[j])||/^best-practice/i.test(t[j])||/^section508/i.test(t[j]))tags[t[j]]=1;}}tops.sort(function(a,b){var oa=[ \" critical \" , \" serious \" , \" moderate \" , \" minor \" ];var ai=9,bi=9;for(var k=0;k<oa.length;k++){if(a.indexOf( \" [ \" +oa[k])!==-1)ai=k;if(b.indexOf( \" [ \" +oa[k])!==-1)bi=k;}return ai-bi;});var checked=p.length+v.length+inc.length;var score=checked?Math.round((p.length/checked)*100):100;var grade=score>=95? \" A \" :score>=90? \" B \" :score>=80? \" C \" :score>=70? \" D \" : \" F \" ;var verdict=(crit+ser)===0?(v.length===0? \" No accessibility violations \" :v.length+ \" minor/moderate violation(s) \" ):(crit+ \" critical, \" +ser+ \" serious violation(s) \" );var engine= \"\" ;try{engine=(rep.testEngine&&rep.testEngine.name|| \"\" )+ \" \" +((rep.testEngine&&rep.testEngine.version)|| \"\" );}catch(e){}return {ran: \" true \" ,violation_count:String(v.length),critical_count:String(crit),serious_count:String(ser),moderate_count:String(mod),minor_count:String(min),affected_nodes:String(nodes),violation_ids:ids.join( \" , \" ),top_violations:tops.slice(0,15).join( \" || \" ).substring(0,4000),wcag_tags:Object.keys(tags).join( \" , \" ),passes_count:String(p.length),incomplete_count:String(inc.length),axe_score:String(score),axe_grade:grade,axe_verdict:verdict,axe_url:String(rep.url||it.page_url|| \"\" ),axe_engine_version:engine.trim()};"
}
],
"properties" : [
{
"name" : "report" ,
"type" : "attribute" ,
"selector" : "variable=axe_report" ,
"attribute" : "content"
},
{
"name" : "page_url" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "ran" ,
"type" : "index"
},
{
"name" : "violation_count" ,
"type" : "index"
},
{
"name" : "critical_count" ,
"type" : "index"
},
{
"name" : "serious_count" ,
"type" : "index"
},
{
"name" : "moderate_count" ,
"type" : "index"
},
{
"name" : "minor_count" ,
"type" : "index"
},
{
"name" : "affected_nodes" ,
"type" : "index"
},
{
"name" : "violation_ids" ,
"type" : "index"
},
{
"name" : "top_violations" ,
"type" : "index"
},
{
"name" : "wcag_tags" ,
"type" : "index"
},
{
"name" : "passes_count" ,
"type" : "index"
},
{
"name" : "incomplete_count" ,
"type" : "index"
},
{
"name" : "axe_score" ,
"type" : "index"
},
{
"name" : "axe_grade" ,
"type" : "index"
},
{
"name" : "axe_verdict" ,
"type" : "index"
},
{
"name" : "axe_url" ,
"type" : "index"
},
{
"name" : "axe_engine_version" ,
"type" : "index"
}
]
},
{
"name" : "DOM_Accessibility" ,
"type" : "list" ,
"selector" : "css=[id]" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var rows=Array.isArray(value)?value:[];var seen={},dupes=[],invalid=0;for(var i=0;i<rows.length;i++){var id=String(rows[i].idv|| \"\" ).trim();if(!id)continue;if(!/^[A-Za-z][A-Za-z0-9_ \\ -: \\ .]*$/.test(id))invalid++;if(seen[id])dupes.push(id);else seen[id]=1;}var dupeUnique={};for(var j=0;j<dupes.length;j++)dupeUnique[dupes[j]]=1;var dk=Object.keys(dupeUnique);return {total_ids:String(rows.length),unique_ids:String(Object.keys(seen).length),duplicate_id_count:String(dupes.length),duplicate_ids:dk.slice(0,40).join( \" , \" ),invalid_ids:String(invalid),duplicate_id_verdict:dupes.length===0? \" OK \" :dupes.length+ \" duplicate id occurrence(s) across \" +dk.length+ \" id(s) \" };"
}
],
"properties" : [
{
"name" : "idv" ,
"type" : "attribute" ,
"selector" : "css=self" ,
"attribute" : "id"
},
{
"name" : "total_ids" ,
"type" : "index"
},
{
"name" : "unique_ids" ,
"type" : "index"
},
{
"name" : "duplicate_id_count" ,
"type" : "index"
},
{
"name" : "duplicate_ids" ,
"type" : "index"
},
{
"name" : "invalid_ids" ,
"type" : "index"
},
{
"name" : "duplicate_id_verdict" ,
"type" : "index"
}
]
},
{
"name" : "Form_Accessibility" ,
"type" : "list" ,
"selector" : "css=self" ,
"transformations" : [
{
"type" : "script" ,
"code" : "var it=(Array.isArray(value)&&value.length)?value[0]:{};function n(x){var v=parseInt(x,10);return isFinite(v)?v:0;}var inputs=n(it.inputs),noId=n(it.inputs_no_id),labels=n(it.labels),labelsFor=n(it.labels_with_for);var forms=n(it.forms),formsNoAction=n(it.forms_no_action),submits=n(it.submit_buttons);var ifrNoTitle=n(it.iframes_no_title),emptyBtns=n(it.buttons_empty),skip=n(it.skip_links),noLang=n(it.lang_missing);var coverage=inputs?Math.round(((inputs-noId)/inputs)*100):100;var issues=[];if(noLang>0)issues.push( \" html missing lang attribute \" );if(noId>0)issues.push(noId+ \" form control(s) without id/aria-label/title \" );if(ifrNoTitle>0)issues.push(ifrNoTitle+ \" iframe(s) without title \" );if(emptyBtns>0)issues.push(emptyBtns+ \" empty button(s) \" );if(!skip&&forms>0)issues.push( \" No skip link \" );return {total_form_controls:String(inputs),controls_missing_label:String(noId),label_coverage:String(coverage),forms_total:String(forms),forms_missing_action:String(formsNoAction),submit_buttons_total:String(submits),iframes_missing_title:String(ifrNoTitle),empty_buttons:String(emptyBtns),has_skip_link:String(skip>0),html_lang_missing:String(noLang>0),form_verdict:issues.length?issues.join( \" ; \" ): \" OK \" };"
}
],
"properties" : [
{
"name" : "inputs" ,
"type" : "count" ,
"selector" : "css=input,textarea,select"
},
{
"name" : "inputs_no_id" ,
"type" : "count" ,
"selector" : "css=input:not([id]):not([aria-label]):not([aria-labelledby]):not([title]),textarea:not([id]):not([aria-label]):not([aria-labelledby]):not([title]),select:not([id]):not([aria-label]):not([aria-labelledby]):not([title])"
},
{
"name" : "labels" ,
"type" : "count" ,
"selector" : "css=label"
},
{
"name" : "labels_with_for" ,
"type" : "count" ,
"selector" : "css=label[for]"
},
{
"name" : "forms" ,
"type" : "count" ,
"selector" : "css=form"
},
{
"name" : "forms_no_action" ,
"type" : "count" ,
"selector" : "css=form:not([action])"
},
{
"name" : "submit_buttons" ,
"type" : "count" ,
"selector" : "css=button[type='submit'],input[type='submit']"
},
{
"name" : "aria_labelled" ,
"type" : "count" ,
"selector" : "css=[aria-label],[aria-labelledby]"
},
{
"name" : "iframes_no_title" ,
"type" : "count" ,
"selector" : "css=iframe:not([title])"
},
{
"name" : "buttons_empty" ,
"type" : "count" ,
"selector" : "css=button:empty"
},
{
"name" : "skip_links" ,
"type" : "count" ,
"selector" : "css=a[href^='#main'],a[href^='#content'],a[href^='#skip'],a.skip-link"
},
{
"name" : "lang_missing" ,
"type" : "count" ,
"selector" : "css=html:not([lang])"
},
{
"name" : "total_form_controls" ,
"type" : "index"
},
{
"name" : "controls_missing_label" ,
"type" : "index"
},
{
"name" : "label_coverage" ,
"type" : "index"
},
{
"name" : "forms_total" ,
"type" : "index"
},
{
"name" : "forms_missing_action" ,
"type" : "index"
},
{
"name" : "submit_buttons_total" ,
"type" : "index"
},
{
"name" : "iframes_missing_title" ,
"type" : "index"
},
{
"name" : "empty_buttons" ,
"type" : "index"
},
{
"name" : "has_skip_link" ,
"type" : "index"
},
{
"name" : "html_lang_missing" ,
"type" : "index"
},
{
"name" : "form_verdict" ,
"type" : "index"
}
]
}
],
"required_fields" : [
"Page_URL"
]
},
"Critical_Issues" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "Status_Code" ,
"type" : "text" ,
"selector" : "variable=last_http_status"
},
{
"name" : "Title" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "trim"
}
]
},
{
"name" : "Title_Count" ,
"type" : "count" ,
"selector" : "css=head title"
},
{
"name" : "Description_Count" ,
"type" : "count" ,
"selector" : "css=meta[name='description']"
},
{
"name" : "H1_Count" ,
"type" : "count" ,
"selector" : "css=h1"
},
{
"name" : "Canonical_Count" ,
"type" : "count" ,
"selector" : "css=link[rel='canonical']"
},
{
"name" : "Meta_Robots" ,
"type" : "text" ,
"selector" : "css=meta[name='robots']"
},
{
"name" : "X_Robots_Tag" ,
"type" : "text" ,
"selector" : "variable=last_x_robots_tag"
},
{
"name" : "Viewport_Count" ,
"type" : "count" ,
"selector" : "css=meta[name='viewport']"
},
{
"name" : "Img_Total" ,
"type" : "count" ,
"selector" : "css=img"
},
{
"name" : "Img_Missing_Alt" ,
"type" : "count" ,
"selector" : "css=img:not([alt])"
},
{
"name" : "JsonLD_Count" ,
"type" : "count" ,
"selector" : "css=script[type='application/ld+json']"
},
{
"name" : "DOM_Node_Count" ,
"type" : "count" ,
"selector" : "css=*"
}
],
"required_fields" : [
"URL"
]
},
"Healthy_Pages" : {
"item_selector" : "css=html" ,
"properties" : [
{
"name" : "URL" ,
"type" : "page_url" ,
"selector" : ""
},
{
"name" : "Status_Code" ,
"type" : "text" ,
"selector" : "variable=last_http_status"
},
{
"name" : "Title" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "trim"
}
]
},
{
"name" : "Title_Chars" ,
"type" : "text" ,
"selector" : "css=head title" ,
"transformations" : [
{
"type" : "script" ,
"code" : "return String(String(value==null?'':value).trim().length);" ,
"default_value" : "0"
}
]
},
{
"name" : "H1_Count" ,
"type" : "count" ,
"selector" : "css=h1"
},
{
"name" : "Canonical_Count" ,
"type" : "count" ,
"selector" : "css=link[rel='canonical']"
},
{
"name" : "Response_Time_ms" ,
"type" : "text" ,
"selector" : "variable=last_response_time_ms"
}
],
"required_fields" : [
"URL"
]
}
},
"commands" : [
{
"command" : "try_catch" ,
"params" : {
"try" : [
{
"command" : "goto" ,
"params" : {
"url" : "${last_target_url}" ,
"timeout" : 60000
}
}
],
"catch" : [
{
"command" : "comment" ,
"params" : {
"text" : "Navigation failed: ${last_error}"
}
}
]
}
},
{
"command" : "wait_for_load_state" ,
"params" : {
"state" : "networkidle" ,
"timeout" : 10000
}
},
{
"command" : "scroll" ,
"params" : {
"direction" : "bottom" ,
"delay" : 600
}
},
{
"command" : "scroll" ,
"params" : {
"direction" : "top" ,
"delay" : 300
}
},
{
"command" : "detect_tech_stack" ,
"params" : {
"output_variable" : "tech_stack"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Response_Indexability"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "OnPage_Elements"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Content_Readability"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Links_Census"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Media_Performance"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Structured_Data"
}
},
{
"command" : "try_catch" ,
"params" : {
"try" : [
{
"command" : "audit_accessibility" ,
"params" : {
"scope" : "html" ,
"output_variable" : "axe_report"
}
}
],
"catch" : [
{
"command" : "comment" ,
"params" : {
"text" : "AXE audit unavailable: ${last_error}"
}
}
]
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Accessibility_AXE"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Critical_Issues" ,
"filter_condition" : "Number(item.Status_Code) >= 400 || Number(item.Title_Count) !== 1 || Number(item.H1_Count) !== 1 || Number(item.Description_Count) > 1 || Number(item.Canonical_Count) > 1 || Number(item.Viewport_Count) === 0 || String(item.Meta_Robots).toLowerCase().indexOf('noindex') !== -1 || String(item.X_Robots_Tag).toLowerCase().indexOf('noindex') !== -1 || (Number(item.Img_Total) > 0 && Number(item.Img_Missing_Alt) / Number(item.Img_Total) > 0.25) || Number(item.DOM_Node_Count) > 1500"
}
},
{
"command" : "extract_data" ,
"params" : {
"dataset" : "Healthy_Pages" ,
"filter_condition" : "Number(item.Status_Code) >= 200 && Number(item.Status_Code) < 300 && Number(item.Title_Count) === 1 && Number(item.H1_Count) === 1 && Number(item.Canonical_Count) <= 1 && Number(item.Title_Chars) >= 10 && Number(item.Title_Chars) <= 60 && Number(item.Response_Time_ms) < 3000"
}
}
],
"authors" : []
}