SEO Vitals logo

SEO Vitals

By Bytes Technolab Inc

SEO Vitals brings real, per-field SEO quality scoring straight into the Strapi 5 content-manager.

Latest version

v1.0.4

released July 28, 2026

npm install strapi-plugin-seo-vitals

strapi-plugin-seo-vitals

SEO quality scoring for Strapi 5 — attach one shared.seo component to any content-type and get real, per-field scoring (not just "is this filled in") both while editing and across your whole project.

Features

  • One component, everything included — on first boot, creates a shared.seo component (meta title/description/keywords/canonical URL, robots/indexing controls, OpenGraph fields, Twitter Card fields, and JSON-LD structured data) that you attach to any content-type from Content-Type Builder.
  • Live entry scoring — while editing an entry, the sidebar panel runs 17 real quality checks (title/description length ranges, keyword density, JSON-LD validity, OG/Twitter fallback warnings) and shows a live Good/Improvements/Bad count, with a "See details" breakdown per check — no external APIs, no credentials.
  • Project-wide dashboard (/admin/plugins/seo-vitals) — lists every content-type, whether it has the SEO component attached, and its health: for single types, the real good/improvements/bad numbers directly; for collection types, a green/orange/red bucket count plus average score, sorted worst-first. Expand a row to see every entry's real saved values and full check breakdown.

Requirements

  • Strapi 5.x only (uses the v5 Document Service API — not compatible with Strapi 4).
  • Node.js version matching your Strapi 5 project's own requirement.

Install

yarn add strapi-plugin-seo-vitals
# or
npm install strapi-plugin-seo-vitals
# or
pnpm add strapi-plugin-seo-vitals

Enable in config/plugins.ts:

export default () => ({
  'seo-vitals': { enabled: true },
});

Restart your Strapi app once after installing — the plugin creates the shared.seo component on first boot and needs a full process restart (not just the in-app auto-reload) to register it.

Usage

  1. Open Content-Type Builder, add a component field to any content-type, choose the existing SEO component (shared.seo).
  2. Open any entry of that content-type — the SEO Vitals panel appears in the edit-view sidebar, scoring live as you type.
  3. Visit /admin/plugins/seo-vitals to see SEO health across every content-type in your project.

Known limitations

  • shared.seo naming conflicts. This plugin creates a component named shared.seo. If your project already has a shared.seo component — whether created manually in Content-Type Builder or by another plugin (e.g. @strapi-community/plugin-seo) — the two will conflict: whichever exists first "wins", and this plugin's extra fields simply won't exist. The plugin logs a warning on boot if it detects an existing shared.seo component missing fields it expects, which usually means this conflict.

    Fix: remove the existing shared.seo component in Content-Type Builder before installing this plugin, so it can create its own complete version. Deleting a component deletes its data on any entries already using it — back up or migrate anything you need first.

  • Fields are global per component, not per content-type. Strapi doesn't support per-content-type field customization for shared components — every content-type attaching shared.seo gets the same 17 fields, with no native way to show a smaller subset on one content-type only.

License

This project is licensed under the MIT License.

Submit your content

Share your work with the community and get it listed in the Strapi ecosystem for everyone to discover and use.

Submit
Submit your content