What is your developer-dependent CMS actually costing you? Calculate your costs and get a full report
What is your developer-dependent CMS actually costing you? Calculate your costs and get a full report
Marketplace Apps
Score your pages for SEO and readability against a focus keyphrase, right in the Agility sidebar. Works on regular pages and on dynamic-page content items, and writes meta descriptions back to Agility's own SEO fields.
The SEO Analysis app scores the pages in your Agility instance for SEO and readability, using the open-source YoastSEO.js analysis library. It runs in the sidebar of the content editor and the page editor, reads the real rendered page from your website, and tells editors what to fix before they publish.
Most SEO tools score content after it is live. This app scores it while it is being written. Open a page or a content item and the panel:
It works on two kinds of page:
Folders, links and dynamic page templates have no rendered page of their own, so the panel explains that instead of showing a score.
The panel works with no setup. Without a focus keyphrase it still reports the structural checks:
Setting a focus keyphrase unlocks the keyphrase-relative checks, and with them an overall SEO score:
The overall SEO score is only shown once a keyphrase is set. Scoring the structural checks alone would produce a number that is not comparable to the one you get with a keyphrase, so the panel shows no score rather than a misleading one.
You can install the app from the Marketplace under Settings > Apps. You need to be an administrator on the instance to install an app.
The panel appears right away in the sidebar of every page in the page tree, and of every content item whose container is a dynamic page list. There is no field to add to any model.
Both settings are optional.
| Setting | What it does |
|---|---|
| Main content selector | A CSS selector for the part of the rendered page to analyze. Defaults to main, then [role=main], article, #content and .content. Set this if your templates use a different wrapper for the page body. Navigation, header, footer, scripts and styles are excluded automatically. |
| Default analysis language | A fallback locale, such as en_US, used when an Agility locale has no matching analysis language. |
The content selector matters more than it looks. Link counts, image counts, word count and the single-H1 check are all counts over the main content. Leaving the navigation and footer in would inflate every one of them, identically on every page, and make the scores meaningless.
Open any page in Pages and select SEO Analysis in the right-hand sidebar. The panel fetches the rendered page and scores it.
Open any item in a container that is a dynamic page list and select SEO Analysis in the sidebar. The panel resolves the item's own URL from its slug, so each post or product is scored as itself rather than as the dynamic page's default item.
DynamicPageMetaDescription system field as you type, and saved when you save the item. This is an Agility system field present on every dynamic-page item, so no model change is needed, and the CMS's own SEO tab reads and writes the same key.The SEO and Readability tabs each list their findings with a colored dot: green is good, orange is acceptable, red needs attention. Findings that point at a single field, such as the meta description, have a Fix action that jumps to that field in the panel. The footer shows how many words were analyzed.
Twenty-two languages have dedicated analysis: Arabic, Catalan, Czech, German, Greek, English, Spanish, Persian, French, Hebrew, Hungarian, Indonesian, Italian, Japanese, Norwegian, Dutch, Polish, Portuguese, Russian, Slovak, Swedish and Turkish. The analysis language follows the locale of the item or page being edited.
Other languages fall back to a language-agnostic analysis. Most assessments still run; the ones that depend on word forms, such as passive voice and transition words, are skipped, and the panel says so.
The analysis itself runs on the app's own server, not in your browser and not in Agility. Your browser sends the rendered page content and receives scores and feedback text back. Nothing about the analysis is stored.
| Data | Where it lives |
|---|---|
| Meta description, content item | DynamicPageMetaDescription on the item, in your Agility instance |
| Meta description, page | The page's SEO settings, in your Agility instance |
| Focus keyphrase | The app's own store, keyed by instance, locale and item or page. Agility has no field for a keyphrase, and adding one would mean a model change on every instance. |
All writes to your instance are made with the editor's own Management API token, so the app can only change what the editor could change themselves.
"This item isn't connected to a dynamic page" – the item's container is not a dynamic page list, so there is no rendered URL to score. Enable a dynamic page on the container to turn the analysis on.
"The rendered page could not be loaded" – the app could not fetch your site's preview URL. Check that the site is running and that its preview URL is reachable from the public internet, not only from your network.
Scores look inflated, or every page reports the same link and image counts – the main content selector is probably matching too much of the page. Set Main content selector to the element that wraps only the page body.
The panel scores the wrong post – the item has no slug field the app can recognise. It looks for fields named URL, Slug, PageSlug or FriendlyURL; add or rename one and the panel resolves the item's real URL.
This app is open source under the GNU General Public License v3.0, and its source is on GitHub. It is built on YoastSEO.js, which is also GPL-3.0. The library runs only on the app's server; your browser receives scores and feedback text. This app is not affiliated with or endorsed by Yoast BV.