Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
345 lines (334 sloc) 30.5 KB
<?xml version="1.0" encoding="utf-8" ?>
<Suite Title="Google PageSpeed" Id="GooglePageSpeed" Category="SEO" SourceUrl="https://github.com/nielsbosma/SeoTools-for-Excel-Connectors/blob/master/GooglePageSpeed.xml" HelpUrl="http://seotoolsforexcel.com/google-pagespeed/" HelpText="Documentation">
<Author Name="Victor Sandberg" Url="http://community.seotoolsforexcel.com/users/diskborste/activity" />
<Resources>
<Resource Id="Parameters">
<Parameters>
<Text Id="Url" Title="URL" Required="true" Debug.DefaultValue="http://www.seotoolsforexcel.com"/>
<Select Id="Locale" Title="Locale" Required="false" DefaultValue="en">
<DataSource>
<Item Id="ar" Title="Arabic"/>
<Item Id="bg" Title="Bulgarian"/>
<Item Id="ca" Title="Catalan"/>
<Item Id="zh-TW" Title="Traditional Chinese (Taiwan)"/>
<Item Id="zh-CN" Title="Simplified Chinese"/>
<Item Id="hr" Title="Croatian"/>
<Item Id="cs" Title="Czech"/>
<Item Id="da" Title="Danish"/>
<Item Id="nl" Title="Dutch"/>
<Item Id="en" Title="English (US)"/>
<Item Id="en-GB" Title="English (UK)"/>
<Item Id="fil" Title="Filipino"/>
<Item Id="fi" Title="Finnish"/>
<Item Id="fr" Title="French"/>
<Item Id="de" Title="German"/>
<Item Id="el" Title="Greek"/>
<Item Id="iw" Title="Hebrew"/>
<Item Id="hi" Title="Hindi"/>
<Item Id="hu" Title="Hungarian"/>
<Item Id="id" Title="Indonesian"/>
<Item Id="it" Title="Italian"/>
<Item Id="ja" Title="Japanese"/>
<Item Id="ko" Title="Korean"/>
<Item Id="lv" Title="Latvian"/>
<Item Id="lt" Title="Lithuanian"/>
<Item Id="no" Title="Norwegian"/>
<Item Id="pl" Title="Polish"/>
<Item Id="pt-BR" Title="Portuguese (Brazilian)"/>
<Item Id="pt-PT" Title="Portuguese (Portugal)"/>
<Item Id="ro" Title="Romanian"/>
<Item Id="ru" Title="Russian"/>
<Item Id="sr" Title="Serbian"/>
<Item Id="sk" Title="Slovakian"/>
<Item Id="sl" Title="Slovenian"/>
<Item Id="es" Title="Spanish"/>
<Item Id="sv" Title="Swedish"/>
<Item Id="th" Title="Thai"/>
<Item Id="tr" Title="Turkish"/>
<Item Id="uk" Title="Ukrainian"/>
<Item Id="vi" Title="Vietnamese"/>
</DataSource>
</Select>
<Radio Id="Strategy" Title="Strategy" DefaultValue="desktop" Required="true">
<DataSource>
<Item Id="desktop" Title="Desktop"/>
<Item Id="mobile" Title="Mobile"/>
</DataSource>
</Radio>
</Parameters>
</Resource>
<Resource Id="HttpSettings">
<HttpSettings>
<Cache>True</Cache>
<IntervalBetweenRequests RandomFrom="1000" RandomTo="1000" IfSame="Host"/>
</HttpSettings>
</Resource>
<Resource Id="Fail">
<Fail>
<JsonPath Expr="error.message"/>
</Fail>
</Resource>
</Resources>
<RestConnector Id="LoadingExperience" Title="Loading Experience" AvailableInSpider="true" HelpUrl="https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed">
<Resource Id="Parameters"/>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?category=performance
&url=@(Utils.UrlEncode(Utils.UrlProperty(Model.Url).Absolute))
&key=AIzaSyBnAw8FGjUQTVYA8Qrs0VUH4EiVcFIR6bk
&strategy=@(Model.Strategy)
&locale=@(Model.Locale)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Expr="loadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.percentile" Id="First-Contentful-Paint" Converter="Long" HelpText="Marks the time at which the first text or image is painted."/>
<JsonPath Expr="loadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.distributions[0].proportion" Id="FCP-Distrubution-Fast" Converter="Double" HelpText="Share of relative 'fast' First Contentful Paint"/>
<JsonPath Expr="loadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.distributions[1].proportion" Id="FCP-Distrubution-Avg" Converter="Double" HelpText="Share of relative 'average' First Contentful Paint"/>
<JsonPath Expr="loadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.distributions[2].proportion" Id="FCP-Distrubution-Slow" Converter="Double" HelpText="Share of relative 'slow' First Contentful Paint"/>
<JsonPath Expr="loadingExperience.metrics.FIRST_INPUT_DELAY_MS.percentile" Id="First-Input-Delay" Converter="Long" HelpText="Measures the time from when a user first interacts with your site."/>
<JsonPath Expr="loadingExperience.metrics.FIRST_INPUT_DELAY_MS.distributions[0].proportion" Id="FID-Distrubution-Fast" Converter="Double" HelpText="Share of relative 'fast' First Input Delay"/>
<JsonPath Expr="loadingExperience.metrics.FIRST_INPUT_DELAY_MS.distributions[1].proportion" Id="FID-Distrubution-Avg" Converter="Double" HelpText="Share of relative 'average' First Input Delay"/>
<JsonPath Expr="loadingExperience.metrics.FIRST_INPUT_DELAY_MS.distributions[2].proportion" Id="FID-Distrubution-Slow" Converter="Double" HelpText="Share of relative 'slow' First Input Delay"/>
<JsonPath Expr="loadingExperience.overall_category" Id="Category" Converter="String" HelpText="Either AVERAGE, FAST, SLOW or NONE"/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.percentile" Id="Origin-First-Contentful-Paint" Converter="Long" HelpText="First Contentful Paint marks the time at which the first text or image is painted."/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.distributions[0].proportion" Id="Origin-FCP-Distrubution-Fast" Converter="Double" HelpText="Share of relative 'fast' Origin First Contentful Paint"/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.distributions[1].proportion" Id="Origin-FCP-Distrubution-Avg" Converter="Double" HelpText="Share of relative 'average' Origin First Contentful Paint"/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_CONTENTFUL_PAINT_MS.distributions[2].proportion" Id="Origin-FCP-Distrubution-Slow" Converter="Double" HelpText="Share of relative 'slow' Origin First Contentful Paint"/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_INPUT_DELAY_MS.percentile" Id="Origin-First-Input-Delay" Converter="Long" HelpText="Measures the time from when a user first interacts with your site."/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_INPUT_DELAY_MS.distributions[0].proportion" Id="Origin-FID-Distrubution-Fast" Converter="Double" HelpText="Share of relative 'fast' Origin First Input Delay"/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_INPUT_DELAY_MS.distributions[1].proportion" Id="Origin-FID-Distrubution-Avg" Converter="Double" HelpText="Share of relative 'average' Origin First Input Delay"/>
<JsonPath Expr="originLoadingExperience.metrics.FIRST_INPUT_DELAY_MS.distributions[2].proportion" Id="Origin-FID-Distrubution-Slow" Converter="Double" HelpText="Share of relative 'slow' Origin First Input Delay"/>
<JsonPath Expr="loadingExperience.overall_category" Id="Origin-Category" Converter="String" HelpText="Either AVERAGE, FAST, SLOW or NONE"/>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<RestConnector Id="Performance" Title="Performance" AvailableInSpider="true" HelpUrl="https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed">
<Resource Id="Parameters"/>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?category=performance
&url=@(Utils.UrlEncode(Utils.UrlProperty(Model.Url).Absolute))
&key=AIzaSyBnAw8FGjUQTVYA8Qrs0VUH4EiVcFIR6bk
&strategy=@(Model.Strategy)
&locale=@(Model.Locale)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Expr="lighthouseResult.categories.performance.score" Id="Performance" Converter="Double" HelpText="Overall Score"/>
<JsonPath Expr="lighthouseResult.audits">
<JsonPath Expr="interactive.score" Id="Time-To-Interactive" Converter="Double" HelpText="Interactive marks the time at which the page is fully interactive."/>
<JsonPath Expr="interactive.displayValue" Id="Time-To-Interactive-Value" Converter="Auto" HelpText="Interactive marks the time at which the page is fully interactive."/>
<JsonPath Expr="first-contentful-paint.score" Id="First-Contentful-Paint" Converter="Double" HelpText="First Contentful Paint marks the time at which the first text or image is painted."/>
<JsonPath Expr="first-contentful-paint.displayValue" Id="First-Contentful-Paint-Value" Converter="Auto" HelpText="First Contentful Paint marks the time at which the first text or image is painted."/>
<JsonPath Expr="first-meaningful-paint.score" Id="First-Meaningful-Paint" Converter="Double" HelpText="First Meaningful Paint measures when the primary content of a page is visible."/>
<JsonPath Expr="first-meaningful-paint.displayValue" Id="First-Meaningful-Paint-Value" Converter="Auto" HelpText="First Meaningful Paint measures when the primary content of a page is visible."/>
<JsonPath Expr="dom-size.score" Id="Dom-Size" Converter="Double" HelpText="Browser engineers recommend pages contain fewer than ~1,500 DOM nodes."/>
<JsonPath Expr="dom-size.displayValue" Id="Dom-Size-Value" Converter="Auto" HelpText="Browser engineers recommend pages contain fewer than ~1,500 DOM nodes."/>
<JsonPath Expr="unminified-javascript.score" Id="Unminified-Javascript" Converter="Double" HelpText="Minifying JavaScript files can reduce payload sizes and script parse time."/>
<JsonPath Expr="unminified-css.score" Id="Unminified-CSS" Converter="Double" HelpText="Minifying CSS files can reduce network payload sizes."/>
<JsonPath Expr="redirects.score" Id="Redirects" Converter="Double" HelpText="Redirects introduce additional delays before the page can be loaded."/>
<JsonPath Expr="efficient-animated-content.score" Id="Efficient-Animated-Content" Converter="Double" HelpText="Large GIFs are inefficient for delivering animated content. Consider using MPEG4/WebM videos for animations and PNG/WebP for static images"/>
<JsonPath Expr="time-to-first-byte.score" Id="Time-To-First-Byte" Converter="Double" HelpText="Time To First Byte identifies the time at which your server sends a response."/>
<JsonPath Expr="time-to-first-byte.displayValue" Id="Time-To-First-Byte-Value" Converter="Auto" HelpText="Time To First Byte identifies the time at which your server sends a response."/>
<JsonPath Expr="total-byte-weight.score" Id="Total-Byte-Weight" Converter="Double" HelpText="Large network payloads cost users real money and are highly correlated with long load times."/>
<JsonPath Expr="total-byte-weight.displayValue" Id="Total-Byte-Weight-Value" Converter="Auto" HelpText="Large network payloads cost users real money and are highly correlated with long load times."/>
<JsonPath Expr="render-blocking-resources.score" Id="Render-Blocking-Resources" Converter="Double" HelpText="Evaluates all of the render-blocking links or scripts that it has detected."/>
<JsonPath Expr="render-blocking-resources.displayValue" Id="Render-Blocking-Resources-Value" Converter="Auto" HelpText="Evaluates all of the render-blocking links or scripts that it has detected."/>
<JsonPath Expr="uses-webp-images.score" Id="Webp-Images" Converter="Double" HelpText="Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption."/>
<JsonPath Expr="uses-webp-images.displayValue" Id="Webp-Images-Value" Converter="Auto" HelpText="Image formats like JPEG 2000, JPEG XR, and WebP often provide better compression than PNG or JPEG, which means faster downloads and less data consumption."/>
<JsonPath Expr="uses-rel-preload.score" Id="Rel-Preload" Converter="Double" HelpText="Consider using 'link rel=preload' to prioritize fetching resources that are currently requested later in page load."/>
<JsonPath Expr="uses-text-compression.score" Id="Text-Compression" Converter="Double" HelpText="Text-based resources should be served with compression (gzip, deflate or brotli) to minimize total network bytes."/>
<JsonPath Expr="uses-optimized-images.score" Id="Optimized-Images" Converter="Double" HelpText="Optimized images load faster and consume less cellular data."/>
<JsonPath Expr="uses-long-cache-ttl.score" Id="Long-Cache-TTL" Converter="Double" HelpText="A long cache lifetime can speed up repeat visits to your page."/>
<JsonPath Expr="uses-long-cache-ttl.displayValue" Id="Long-Cache-TTL-Value" Converter="Auto" HelpText="A long cache lifetime can speed up repeat visits to your page."/>
<JsonPath Expr="uses-long-cache-ttl.details.summary.wastedBytes" Id="Long-Cache-TTL-Wasted-Bytes" Converter="Auto" HelpText="A long cache lifetime can speed up repeat visits to your page."/>
<JsonPath Expr="uses-responsive-images.score" Id="Responsive-Images" Converter="Double" HelpText="Serve images that are appropriately-sized to save cellular data and improve load time."/>
<JsonPath Expr="uses-responsive-images.displayValue" Id="Responsive-Images-Value" Converter="Auto" HelpText="Serve images that are appropriately-sized to save cellular data and improve load time."/>
<JsonPath Expr="uses-rel-preconnect.score" Id="Rel-Preconnect" Converter="Double" HelpText="Consider adding preconnect or dns-prefetch resource hints to establish early connections to important third-party origins."/>
<JsonPath Expr="estimated-input-latency.score" Id="Input-Latency" Converter="Double" HelpText="Estimated Input Latency"/>
<JsonPath Expr="estimated-input-latency.displayValue" Id="Input-Latency-Value" Converter="Auto" HelpText="Estimated Input Latency"/>
<JsonPath Expr="bootup-time.score" Id="Bootup-Time" Converter="Double" HelpText="JavaScript execution time"/>
<JsonPath Expr="bootup-time.displayValue" Id="Bootup-Time-Value" Converter="Auto" HelpText="JavaScript execution time"/>
<JsonPath Expr="offscreen-images.score" Id="Offscreen-Images" Converter="Double" HelpText="Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive."/>
<JsonPath Expr="offscreen-images.displayValue" Id="Offscreen-Images-Value" Converter="Auto" HelpText="Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive."/>
<JsonPath Expr="unused-css-rules.score" Id="Unused-CSS-Rules" Converter="Double" HelpText="Remove unused rules from stylesheets to reduce unnecessary bytes consumed by network activity."/>
<JsonPath Expr="unused-css-rules.displayValue" Id="Unused-CSS-Rules-Value" Converter="Auto" HelpText="Remove unused rules from stylesheets to reduce unnecessary bytes consumed by network activity."/>
<JsonPath Expr="speed-index.score" Id="Speed-Index" Converter="Double" HelpText="Speed Index shows how quickly the contents of a page are visibly populated."/>
<JsonPath Expr="speed-index.displayValue" Id="Speed-Index-Value" Converter="Auto" HelpText="Speed Index shows how quickly the contents of a page are visibly populated."/>
<JsonPath Expr="first-cpu-idle.score" Id="First-CPU-Idle" Converter="Double" HelpText="First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input."/>
<JsonPath Expr="first-cpu-idle.displayValue" Id="First-CPU-Idle-Value" Converter="Auto" HelpText="First CPU Idle marks the first time at which the page's main thread is quiet enough to handle input."/>
<JsonPath Expr="font-display.score" Id="Font-Display" Converter="Double" HelpText="Leverage the font-display CSS feature to ensure text is user-visible while webfonts are loading."/>
<JsonPath Expr="mainthread-work-breakdown.score" Id="Mainthread-Work" Converter="Double" HelpText="Consider reducing the time spent parsing, compiling and executing JS."/>
<JsonPath Expr="mainthread-work-breakdown.displayValue" Id="Mainthread-Work-Value" Converter="Auto" HelpText="Consider reducing the time spent parsing, compiling and executing JS."/>
<JsonPath Expr="critical-request-chains.displayValue" Id="Critical-Request-Chains-Value" Converter="Auto" HelpText="What resources are loaded with a high priority."/>
</JsonPath>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<RestConnector Id="BestPractices" Title="Best-Practices" AvailableInSpider="true" HelpUrl="https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed">
<Resource Id="Parameters"/>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?category=best-practices
&url=@(Utils.UrlEncode(Utils.UrlProperty(Model.Url).Absolute))
&key=AIzaSyBnAw8FGjUQTVYA8Qrs0VUH4EiVcFIR6bk
&strategy=@(Model.Strategy)
&locale=@(Model.Locale)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Expr="lighthouseResult.audits">
<JsonPath Expr="image-aspect-ratio.score" Id="Image-Aspect-Ratio" Converter="Double" HelpText="Image display dimensions should match natural aspect ratio."/>
<JsonPath Expr="uses-passive-event-listeners.score" Id="Passive-Event-Listeners" Converter="Double" HelpText="Consider marking your touch and wheel event listeners as `passive` to improve your page's scroll performance"/>
<JsonPath Expr="appcache-manifest.score" Id="Appcache-Manifest" Converter="Double" HelpText="Application Cache is deprecated."/>
<JsonPath Expr="password-inputs-can-be-pasted-into.score" Id="Password-Inputs-Can-Be-Pasted-Into" Converter="Double" HelpText="Preventing password pasting undermines good security policy."/>
<JsonPath Expr="no-vulnerable-libraries.score" Id="No-Vulnerable-Libraries" Converter="Double" HelpText="Some third-party scripts may contain known security vulnerabilities that are easily identified and exploited by attackers." DefaultValue=""/>
<JsonPath Expr="doctype.score" Id="Doctype" Converter="Double" HelpText="Specifying a doctype prevents the browser from switching to quirks-mode"/>
<JsonPath Expr="errors-in-console.score" Id="Errors-In-Console" Converter="Double" HelpText="Errors logged to the console indicate unresolved problems."/>
<JsonPath Expr="no-document-write.score" Id="No-Document-Write" Converter="Double" HelpText="For users on slow connections, external scripts dynamically injected via `document.write()` can delay page load by tens of seconds"/>
<JsonPath Expr="js-libraries.score" Id="Js-Libraries" Converter="Double" HelpText="front-end JavaScript libraries detected on the page"/>
<JsonPath Expr="geolocation-on-start.score" Id="Geolocation-On-Start" Converter="Double" HelpText="Users are mistrustful of or confused by sites that request their location without context."/>
<JsonPath Expr="notification-on-start.score" Id="Notification-On-Start" Converter="Double" HelpText="Users are mistrustful of or confused by sites that request to send notifications without context."/>
<JsonPath Expr="is-on-https.score" Id="Is-On-Https" Converter="Double" HelpText="All sites should be protected with HTTPS, even ones that don't handle sensitive data."/>
</JsonPath>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<RestConnector Id="Accessibility" Title="Accessibility" AvailableInSpider="true" HelpUrl="https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed">
<Resource Id="Parameters"/>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?category=accessibility
&url=@(Utils.UrlEncode(Utils.UrlProperty(Model.Url).Absolute))
&key=AIzaSyBnAw8FGjUQTVYA8Qrs0VUH4EiVcFIR6bk
&strategy=@(Model.Strategy)
&locale=@(Model.Locale)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Expr="lighthouseResult.audits">
<JsonPath Expr="link-name.score" Id="Link-Name" Converter="Double" HelpText="Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users."/>
<JsonPath Expr="frame-title.score" Id="Frame-Title" Converter="Double" HelpText="Screen reader users rely on frame titles to describe the contents of frames."/>
<JsonPath Expr="meta-viewport.score" Id="Meta-Viewport" Converter="Double" HelpText="Disabling zooming is problematic for users with low vision who rely on screen magnification to properly see the contents of a web page."/>
<JsonPath Expr="duplicate-id.score" Id="Duplicate-Id" Converter="Double" HelpText="The value of an id attribute must be unique to prevent other instances from being overlooked by assistive technologies."/>
<JsonPath Expr="html-has-lang.score" Id="Html-Has-Lang" Converter="Double" HelpText="If a page doesn't specify a lang attribute, a screen reader assumes that the page is in the default language that the user chose when setting up the screen reader."/>
<JsonPath Expr="document-title.score" Id="Document-Title" Converter="Double" HelpText="The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search."/>
<JsonPath Expr="color-contrast.score" Id="Color-Contrast" Converter="Double" HelpText="Low-contrast text is difficult or impossible for many users to read."/>
<JsonPath Expr="bypass.score" Id="Bypass" Converter="Double" HelpText="Adding ways to bypass repetitive content lets keyboard users navigate the page more efficiently."/>
<JsonPath Expr="image-alt.score" Id="Image-Alt" Converter="Double" HelpText="Informative elements should aim for short, descriptive alternate text. Decorative elements can be ignored with an empty alt attribute."/>
<JsonPath Expr="html-lang-valid.score" Id="Html-Lang-Valid" Converter="Double" HelpText="Specifying a valid [BCP 47 language]"/>
<JsonPath Expr="aria-roles.score" Id="Aria-Roles" Converter="Double" HelpText="ARIA roles must have valid values in order to perform their intended accessibility functions."/>
<JsonPath Expr="aria-required-attr.score" Id="Aria-Required-Attr" Converter="Double" HelpText="Some ARIA roles have required attributes that describe the state of the element to screen readers."/>
<JsonPath Expr="aria-valid-attr.score" Id="Aria-Valid-Attr" Converter="Double" HelpText="Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid names."/>
<JsonPath Expr="aria-valid-attr-value.score" Id="Aria-Valid-Attr-Value" Converter="Double" HelpText="Assistive technologies, like screen readers, can't interpret ARIA attributes with invalid values."/>
<JsonPath Expr="aria-required-parent.score" Id="Aria-Required-Parent" Converter="Double" HelpText="Some ARIA child roles must be contained by specific parent roles to properly perform their intended accessibility functions."/>
<JsonPath Expr="aria-required-children.score" Id="Aria-Required-Children" Converter="Double" HelpText="Some ARIA parent roles must contain specific child roles to perform their intended accessibility functions."/>
</JsonPath>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<RestConnector Id="PWA" Title="PWA" AvailableInSpider="true" HelpUrl="https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed">
<Resource Id="Parameters"/>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?category=pwa
&url=@(Utils.UrlEncode(Utils.UrlProperty(Model.Url).Absolute))
&key=AIzaSyBnAw8FGjUQTVYA8Qrs0VUH4EiVcFIR6bk
&strategy=@(Model.Strategy)
&locale=@(Model.Locale)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Expr="lighthouseResult.audits">
<JsonPath Expr="service-worker.score" Id="Service-Worker" Converter="Double" HelpText="The service worker is the technology that enables your app to use many Progressive Web App features, such as offline, add to homescreen, and push notifications."/>
<JsonPath Expr="redirects-http.score" Id="Redirects-Http" Converter="Double" HelpText="If you've already set up HTTPS, make sure that you redirect all HTTP traffic to HTTPS."/>
<JsonPath Expr="webapp-install-banner.score" Id="Webbapp-Install-Banner" Converter="Double" HelpText="Browsers can proactively prompt users to add your app to their homescreen, which can lead to higher engagement."/>
<JsonPath Expr="offline-start-url.score" Id="Offline-Start-Url" Converter="Double" HelpText="A service worker enables your web app to be reliable in unpredictable network conditions. "/>
<JsonPath Expr="load-fast-enough-for-pwa.score" Id="Load-Fast-Enough-For-Pwa" Converter="Double" HelpText="A fast page load over a cellular network ensures a good mobile user experience."/>
<JsonPath Expr="is-on-https.score" Id="Is-On-Https" Converter="Double" HelpText="All sites should be protected with HTTPS, even ones that don't handle sensitive data."/>
<JsonPath Expr="viewport.score" Id="Viewport" Converter="Double" HelpText="Add a viewport meta tag to optimize your app for mobile screens."/>
<JsonPath Expr="works-offline.score" Id="Works-Offline" Converter="Double" HelpText="If you're building a Progressive Web App, consider using a service worker so that your app can work offline."/>
<JsonPath Expr="without-javascript.score" Id="Without-Javascript" Converter="Double" HelpText="Your app should display some content when JavaScript is disabled"/>
<JsonPath Expr="splash-screen.score" Id="Splash-Screen" Converter="Double" HelpText="A themed splash screen ensures a high-quality experience when users launch your app from their homescreens."/>
<JsonPath Expr="themed-omnibox.score" Id="Themed-Omnibox" Converter="Double" HelpText="The browser address bar can be themed to match your site."/>
</JsonPath>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<RestConnector Id="SEO" Title="SEO" AvailableInSpider="true" HelpUrl="https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed">
<Resource Id="Parameters"/>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v5/runPagespeed?category=seo
&url=@(Utils.UrlEncode(Utils.UrlProperty(Model.Url).Absolute))
&key=AIzaSyBnAw8FGjUQTVYA8Qrs0VUH4EiVcFIR6bk
&strategy=@(Model.Strategy)
&locale=@(Model.Locale)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Expr="lighthouseResult.audits">
<JsonPath Expr="link-text.score" Id="Link-Text" Converter="Double" HelpText="Descriptive link text helps search engines understand your content."/>
<JsonPath Expr="http-status-code.score" Id="Http-Status-Code" Converter="Double" HelpText="Pages with unsuccessful HTTP status codes may not be indexed properly."/>
<JsonPath Expr="meta-description.score" Id="Meta-Description" Converter="Double" HelpText="Meta descriptions may be included in search results to concisely summarize page content."/>
<JsonPath Expr="plugins.score" Id="Plugins" Converter="Double" HelpText="Search engines can't index plugin content, and many devices restrict plugins or don't support them."/>
<JsonPath Expr="viewport.score" Id="Viewport" Converter="Double" HelpText="Add a viewport meta tag to optimize your app for mobile screens."/>
<JsonPath Expr="canonical.score" Id="Canonical" Converter="Double" HelpText="Canonical links suggest which URL to show in search results."/>
<JsonPath Expr="hreflang.score" Id="Hreflang" Converter="Double" HelpText="hreflang links tell search engines what version of a page they should list in search results for a given language or region."/>
<JsonPath Expr="is-crawlable.score" Id="Is-Crawlable" Converter="Double" HelpText="Search engines are unable to include your pages in search results if they don't have permission to crawl them."/>
<JsonPath Expr="font-size.score" Id="Font-Size" Converter="Double" HelpText="Font sizes less than 12px are too small to be legible and require mobile visitors to “pinch to zoom” in order to read."/>
<JsonPath Expr="document-title.score" Id="Document-Title" Converter="Double" HelpText="The title gives screen reader users an overview of the page, and search engine users rely on it heavily to determine if a page is relevant to their search."/>
<JsonPath Expr="robots-txt.score" Id="Robots-Txt" Converter="Double" HelpText="If your robots.txt file is malformed, crawlers may not be able to understand how you want your website to be crawled or indexed."/>
</JsonPath>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<RestConnector Id="GoogleMobileReady" Title="Google Mobile Ready" AvailableInSpider="true">
<Parameters>
<Text Id="Url" Title="URL" Required="true" Debug.DefaultValue="http://www.seotoolsforexcel.com"/>
</Parameters>
<Fetch>
<Fetch.Url>
<![CDATA[
https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?url=@(Utils.UrlProperty(Model.Url).Absolute)
]]>
</Fetch.Url>
<Resource Id="HttpSettings"/>
</Fetch>
<Parse>
<JsonPath Id="Mobile Ready" Expr="$.ruleGroups.USABILITY.pass" Title="Mobile Ready Pass" Converter="Bool"/>
<JsonPath Id="Mobile Ready Score" Expr="$.ruleGroups.USABILITY.score" Title="Mobile Ready Usability Score" Converter="Double"/>
<JsonPath Id="RobotedResources" Expr="$.pageStats.numberRobotedResources" Title="Roboted Resources" Converter="Int"/>
<JsonPath Id="TranscientFailureResources" Expr="$.pageStats.numberTransientFetchFailureResources" Title="Transcient Failure Resources" Converter="Int"/>
<JsonPath Id="Mobile Ready Viewport" Expr="$.formattedResults.ruleResults.ConfigureViewport.ruleImpact" Title="No Mobile Viewport" Converter="Double"/>
<JsonPath Id="Mobile Ready Font Sizes" Expr="$.formattedResults.ruleResults.UseLegibleFontSizes.ruleImpact" Title="Small Text" Converter="Double"/>
<JsonPath Id="Mobile Ready Plugins" Expr="$.formattedResults.ruleResults.AvoidPlugins.ruleImpact" Title="Incompatible Plugins" Converter="Double"/>
<JsonPath Id="Mobile Ready Content Width" Expr="$.formattedResults.ruleResults.SizeContentToViewport.ruleImpact" Title="Wide Content" Converter="Double"/>
<JsonPath Id="Mobile Ready Tap Targets" Expr="$.formattedResults.ruleResults.SizeTapTargetsAppropriately.ruleImpact" Title="Links too close" Converter="Double"/>
</Parse>
<Resource Id="Fail"/>
</RestConnector>
<!--
Performance -> Mainthread work breakdown -> Own View?
Performance -> Network request -> Own view?
Performance -> Font Display -> Own view?
-->
</Suite>
You can’t perform that action at this time.