Assist SEO

Opis

Assist SEO gives you clean, standards-based control over how your content appears in search results and when shared on social media — without the weight or upsell noise of larger plugins.

It is built to be fast (nothing is loaded on the front end except the small amount of metadata your pages actually output), safe (every input is sanitised, every output escaped), and cooperative (if another SEO plugin is active, Assist SEO stays out of the page head by default so you never get duplicate tags).

What it does

  • Title templates — Per–content-type templates with variables such as %%title%%, %%sitename%%, %%sep%% and more, with per-post overrides.
  • Meta descriptions — A manual description per post, with a sensible automatic fallback drawn from the excerpt or content. Assist SEO never fabricates a description from nothing.
  • Canonical URLs — Correct canonicals for singular content, archives and paged pages, with a manual override where you need one.
  • Robots directives — Per-post noindex / nofollow, reconciled so contradictory directives are never emitted.
  • Open Graph & Twitter/X Cards — Optional social markup with image fallbacks (per-post image featured image default image site logo), plus per-post overrides for the social title, description and image.
  • Structured data (Schema.org) — A connected JSON-LD graph (WebSite, WebPage, your Organization or Person, Article/BlogPosting, and BreadcrumbList) with stable @id relationships. Advanced users can add their own validated custom JSON-LD, and each post can override its schema type.
  • Breadcrumbs — An accessible, server-rendered breadcrumb trail with matching BreadcrumbList schema, available via the [assist_seo_breadcrumbs] shortcode, the assist_seo_breadcrumbs() template function, or automatic insertion above your content.
  • Robots.txt additions — Append your own directives to the virtual robots.txt WordPress serves, from the Advanced tab.
  • XML sitemap — Extends the built-in WordPress sitemap and automatically excludes anything you mark noindex or exclude per-post.
  • Editor integration — A classic meta box (which also appears in the block editor) with a live, approximate Google preview and character counters. An optional block-editor sidebar panel is included as source for developers who build the plugin’s assets.
  • Content analysis — A modular set of on-page SEO checks (title and description length, focus keyword placement, content length, subheadings, image alt text, internal and outbound links, featured image) with Good / Needs attention / Problem statuses. Guidance favours natural, reader-first content — never keyword stuffing, and no plugin can promise rankings.
  • Redirect manager — Create 301, 302, 307, 308 and 410 (Gone) redirects with plain or regular-expression sources, notes and groups. Includes enable/disable, search, pagination, hit counting, and JSON import/export. Redirect loops and open-redirect/script-injection destinations are blocked, and the front-end lookup is indexed and cached so it stays fast on every request.
  • 404 monitor — Logs not-found requests (with hit counts and first/last seen), so you can spot broken links and create a redirect from any entry in one click. Includes search, active/ignored filtering, ignore and delete, a retention cap so the log never grows without bound, and privacy-conscious referrer handling (host and path only — no query strings, no IP addresses) that can be turned off entirely.
  • Taxonomy SEO — Per-term SEO for categories, tags and public custom taxonomies: SEO title, meta description, canonical, robots (noindex/nofollow), Open Graph social fields, and sitemap exclusion, added right to the term-edit screens. Term archives output the correct title, description, canonical, robots, Open Graph and Twitter tags, with taxonomy title templates (e.g. %%term%% %%sep%% %%sitename%%) and term-level sitemap control.

Built for compatibility

If Yoast SEO, Rank Math, All in One SEO, SEOPress or The SEO Framework is active, Assist SEO detects it and does not print competing metadata. You can override this from the Advanced tab once you have disabled the other plugin’s output.

This plugin does not make guarantees about search rankings. No plugin can. It gives you correct, well-formed metadata and the controls to manage it; rankings depend on your content and many factors outside any plugin’s control.

Instalacja

  1. Upload the assist-seo folder to /wp-content/plugins/, or install the plugin through the Plugins screen in WordPress.
  2. Activate the plugin through the Plugins screen.
  3. Go to Assist SEO Search Appearance to set your title separator, title templates and social defaults.
  4. Edit any post or page and use the Assist SEO box to set a custom title, description or visibility.

Najczęściej zadawane pytania

Does this work alongside Yoast or Rank Math?

It will not conflict. When another major SEO plugin is active, Assist SEO detects it and stays silent in the page head to avoid duplicate tags. Run one SEO plugin as your source of truth; if you want Assist SEO to take over, disable the other plugin’s meta output first, then enable „Force metadata output” in Assist SEO’s Advanced settings.

Will this improve my rankings?

Assist SEO makes sure your titles, descriptions, canonicals, robots rules and social tags are correct and well-formed, which is the foundation good SEO is built on. It does not and cannot promise ranking changes — that depends on your content and competition.

Does it slow down my site?

No plugin CSS or JavaScript is loaded on the front end. On the back end, scripts and styles load only on Assist SEO’s own screens and on the post editor. The dashboard’s content statistics are cached.

What happens to my data if I uninstall?

Nothing is deleted by default. If you want a clean removal, enable „Delete all Assist SEO data” in the Advanced tab before deleting the plugin. Your posts and content are never touched.

How do I show breadcrumbs?

Enable them under Assist SEO Search Appearance Breadcrumbs, then either turn on automatic insertion, add the [assist_seo_breadcrumbs] shortcode where you want them, or call assist_seo_breadcrumbs(); in your theme template. The matching BreadcrumbList schema is output automatically when breadcrumbs are enabled.

Does it output structured data (schema)?

Yes. Assist SEO outputs a connected JSON-LD graph describing your site, the current page, your organization or person, and articles, so search engines can understand your content. Your identity and logo come from the Social tab. Advanced users can add custom JSON-LD, and each post can override its schema type. If another SEO plugin is active, Assist SEO does not output schema, to avoid duplicates.

Does the content analysis tell me if I’ll rank?

No — and be wary of any tool that claims to. The analysis checks concrete, controllable things: whether your title and description are a sensible length, whether your focus keyword appears naturally in key places, whether your content has subheadings and alt text, and so on. It reports Good / Needs attention / Problem for each. It deliberately does not chase a keyword-density number or promise ranking changes; write for your reader first.

How do redirects work, and are they fast?

Add a redirect under Assist SEO Redirects: enter the old path, the destination, and a type (301, 302, 307, 308, or 410 Gone). You can use a regular expression for the source and a back-reference in the destination. On the front end, Assist SEO checks incoming requests against your redirects using an indexed lookup for exact matches plus a cached set of any regular-expression rules, so it does not run an expensive query on every page load. Redirect loops and unsafe destinations (such as protocol-relative or javascript: URLs) are blocked automatically.

What does the 404 monitor store, and is it private?

The 404 monitor records the paths of not-found requests, how many times each was hit, and when it was first and last seen — so you can find broken links and fix them with a redirect. Repeat hits on the same path increment a counter rather than creating new rows, and a retention cap removes the oldest entries once the limit is reached, so the log stays bounded. It never stores IP addresses. Referrers are optional and, when stored, are reduced to the host and path only (no query strings); you can turn referrer storage off completely on the 404 Monitor settings.

Recenzje

Wtyczka nie ma jeszcze żadnej recenzji.

Kontrybutorzy i deweloperzy

„Assist SEO” jest oprogramowaniem open source. Poniższe osoby miały wkład w rozwój wtyczki.

Zaangażowani

Rejestr zmian

0.1

  • Dedicated Gutenberg sidebar (ships as source — see the build note below): a document sidebar named “Assist SEO” for the block editor, with the SEO fields (title, meta description, focus keyword, canonical, noindex, nofollow, sitemap exclusion), Google and social previews, Open Graph / X fields with WordPress media-library selection, the full schema editor (all rich types, repeatable fields with add / remove / reorder, a live valid / needs-attention status and JSON-LD preview) and live content analysis. It edits the SAME registered post meta and the SAME per-type schema store as the classic meta box — no duplicate storage and no duplicated SEO, schema, validation or analysis logic — and derives its schema fields from a server-provided representation of the schema model. It appears only on post types where Assist SEO is enabled.
  • Editor plumbing for the sidebar: the per-content schema-data meta (_assist_seo_schema_data) is now exposed to the REST API (authenticated, capability-checked, sanitised through the same schema sanitiser as the meta box), and a new assist-seo/v1/schema-preview REST endpoint validates schema data and returns the generated JSON-LD by reusing the existing builders. The schema-data sanitiser is now a single shared class used by both the meta box and REST.
  • BUILD REQUIREMENT: the sidebar is written in React and must be compiled once with npm install && npm run build (which produces build/index.js and build/index.css). Until it is built, the plugin enqueues no editor bundle and the classic meta box — which has the same fields, including the full schema editor — remains the block-editor experience. This production build was NOT run in the packaging environment (its build toolchain was unavailable there) and the sidebar has NOT yet been browser-tested; please build and verify it on your site. Everything else in this release works without any build step.
  • Code quality (WordPress Plugin Check): added “translators:” comments to placeholder strings; corrected prepared-statement, direct-query and output-escaping annotations on the plugin’s internal database queries (redirects, 404 log, internal links, orphan finder); unslashed and sanitised admin list-table request values; set suppress_filters to false on internal queries; annotated the core wp_sitemaps_enabled filter read; and prefixed uninstall globals. No behavioural change.

  • Setup Wizard: a polished first-run wizard (site type, identity, search appearance, search-engine verification, sitemap, integrations, migration, completion) that configures Assist SEO’s existing settings without creating a second settings store. It pre-fills current values and writes only what you change, so reopening or completing it never resets anything; it appears once after activation (never on every login) and can be reopened from Assist SEO Setup Wizard. Integrations and migration show their real, not-yet-implemented status rather than a fake “connected” state. Adds site-type storage, social-profile URLs (fed into schema sameAs) and optional search-engine verification meta output.

  • Schema UI: the extended schema types are now configurable per content. The SEO meta box (which also appears in the block editor) offers a schema-type selector — Automatic, None, Article, BlogPosting, WebPage and the nine rich types — and reveals the fields for the chosen type, including repeatable editors for FAQ pairs, How-to steps, ingredients, instructions, opening hours and social profiles (add / remove / reorder). A preview shows the type, a valid / needs-attention status and the generated JSON-LD. Data is stored per type so switching types never destroys what you entered for another, only genuinely-entered values are output, and nothing is fabricated.

  • Extended schema types: dedicated, independently-testable builders for Product, FAQPage, HowTo, LocalBusiness, Event, Recipe, SoftwareApplication, VideoObject and Course, plus an extensible type registry so developers can add their own types via the assist_seo_register_schema_types action. Rich types integrate with the existing JSON-LD graph (connected to the page’s WebPage node) and replace the default Article node so the two are never duplicated. Builders emit only properties that genuinely exist and validate required fields before output — no fabricated prices, ratings, dates or other values, and never any malformed JSON-LD.
  • New developer hooks: assist_seo_register_schema_types, assist_seo_schema_node_data.

1.5.1

Bug-fix release addressing three issues found on a live site:

  • Fixed a fatal error when opening Assist SEO Internal Links. The submenu referenced a render callback (render_internal_links) that was missing from the menu class; the method has been restored so the callback is valid. A regression test now verifies every Assist SEO submenu callback resolves to a real method.
  • Fixed breadcrumbs displaying vertically on the front end. The plugin was not enqueuing any front-end stylesheet, so the breadcrumb list fell back to the theme’s default list layout. A small, scoped front-end stylesheet is now loaded that lays the breadcrumb list out horizontally (flex, wrapping on small screens) without affecting other page elements. A regression test verifies the horizontal layout is present.
  • Fixed a „translation loading triggered too early” (_load_textdomain_just_in_time) notice on WordPress 6.7+. Two default settings evaluated translation functions while defaults were first read during bootstrap (before init). Those defaults are now stored untranslated and translated at render time instead. A regression test verifies the defaults perform no translation.

1.5.0

This release adds three major features and a plugin-wide interface polish:

  • Global UI polish: a shared, scoped design system (design tokens, page headers, cards, stat tiles, status badges, progress, tables and empty states) so the screens read as one product, plus reduced-motion support, responsive filter toolbars and small-screen handling for the plugin’s own tables. A redesigned Dashboard header and a Quick Actions section.
  • Orphan Content: a new Orphan Content screen listing published, indexable content that has no incoming internal links from other indexed content. It reads the internal-link index directly (one indexed query, paginated — no full-site scan and no per-row lookups), with summary counts, a restrained by-type distribution, related-content suggestions per item, search, post-type and month filters, sorting and a positive empty state. It excludes the homepage/posts page, drafts, pending, private and password-protected content, noindex and sitemap-excluded content, and anything outside the SEO-enabled indexable post types; the rules are filterable.
  • New filters: assist_seo_orphan_post_types, assist_seo_orphan_excluded_ids.
  • Internal Linking: a new Internal Links screen that indexes how your content links together. It records internal links in a dedicated, indexed table, builds the index incrementally with a real progress bar (start, rebuild, cancel, last-scan time, item count and error count — never faked), and keeps itself up to date when content is saved, trashed or deleted. Includes a content link-profile report (incoming/outgoing counts, search, pagination) and a link-opportunities list that suggests related content a post does not yet link to. Nothing modifies your content.
  • Link handling normalises URLs before comparison (scheme, host, port, trailing slash, duplicate slashes, query, fragment, relative resolution) and classifies each link as internal, external or ignored (mailto, tel, anchor-only, unsupported schemes, malformed).
  • New filters: assist_seo_indexable_post_types, assist_seo_related_content, assist_seo_internal_link_opportunities.
  • Custom Post Type SEO: a Post Type SEO settings screen that discovers public custom post types and lets you enable/disable SEO, set default title and meta-description templates, choose a default schema type, and toggle sitemap, breadcrumbs and social per type. Posts and pages stay under Search Appearance.
  • CPT frontend output reuses the existing engine with the precedence per-content override post-type default global default; disabling SEO for a type stops all metadata for it, and disabling its sitemap removes it from the sitemap. The meta box and REST fields appear automatically for supported types.
  • New assist_seo_supported_post_types filter.
  • Taxonomy SEO: per-term SEO title, meta description, canonical, robots, Open Graph fields and sitemap exclusion for categories, tags and public custom taxonomies, on the term-edit screens.
  • CPT frontend output reuses the existing engine with the precedence per-content override post-type default global default; disabling SEO for a type stops all metadata for it, and disabling its sitemap removes it from the sitemap. The meta box and REST fields appear automatically for supported types.
  • New assist_seo_supported_post_types filter.
  • Taxonomy SEO: per-term SEO title, meta description, canonical, robots, Open Graph fields and sitemap exclusion for categories, tags and public custom taxonomies, on the term-edit screens.
  • Term archives now output the resolved title, meta description, canonical, robots, Open Graph and Twitter tags, honouring per-term overrides and taxonomy title templates.
  • New taxonomy template variables: %%term%%, %%term_description%%, %%description%%, %%parent%%, %%taxonomy%%.
  • Terms flagged noindex or sitemap-excluded are removed from the taxonomy sitemaps.
  • New assist_seo_term_meta_taxonomies filter.

1.4.0

Features

  • 404 monitor, backed by its own indexed table: logs not-found requests, deduplicating by path with a hit counter and first/last-seen times.
  • Search, active/ignored filtering, per-row ignore and delete, bulk delete/ignore, and a one-click „Create redirect” that opens the redirect form with the path pre-filled.
  • A retention cap (default 500 entries) prunes the oldest rows so the log cannot grow without bound.
  • Referrer storage is privacy-conscious — reduced to host and path (no query strings), stores no IP addresses, and can be disabled entirely.

1.3.0

Features

  • Redirect manager, backed by a dedicated indexed database table: create 301, 302, 307, 308 and 410 redirects with plain or regular-expression sources, notes and groups.
  • Add, edit, delete, enable/disable, search and paginate redirects; per-redirect hit counter and last-hit time.
  • JSON import and export of redirects, with validated, non-executable import handling.

Security & performance

  • Redirect loops are detected and suppressed (a rule whose destination resolves back to its source never fires).
  • Destinations are validated to block open-redirect and script-injection vectors (protocol-relative URLs, javascript:/data: schemes, control characters).
  • The front-end lookup uses an indexed exact-match query plus a cached set of regex rules, so it never scans the whole table on a request.
  • Every redirect action is capability- and nonce-checked; all output is escaped and all queries are prepared.

1.2.0

Features

  • Content analysis: a modular set of on-page SEO checks with Good / Needs attention / Problem statuses — title and description length, focus keyword in the title, description, URL and introduction, content length, subheadings, image alt text, internal and outbound links, and featured image.
  • The classic meta box shows an analysis snapshot of the saved content; the block-editor sidebar (source) shows the same analysis live as you type, backed by a shared REST endpoint so the checks run once in PHP.
  • New assist-seo/v1/analysis REST endpoint, gated on the caller’s ability to edit the post.
  • New assist_seo_analysis_checks filter so developers can register their own checks.

Notes

  • Analysis guidance is intent-first: it never encourages keyword stuffing and never claims a length or keyword count guarantees rankings.

1.1.0

Features

  • Structured data: a connected JSON-LD @graph (WebSite, WebPage, Organization/Person, Article/BlogPosting and BreadcrumbList) with stable @id relationships, output on the front end.
  • Custom JSON-LD: a validated, sanitised code box for adding your own schema. Invalid JSON is never output.
  • Per-post schema type override (Automatic, none, Article, Blog post, News article, Web page, About/Contact page).
  • Breadcrumbs: accessible server-rendered trail plus BreadcrumbList schema, via the [assist_seo_breadcrumbs] shortcode, the assist_seo_breadcrumbs() template function, or automatic insertion above content.
  • Per-content social overrides: social title, description and image (Open Graph and X/Twitter) in the meta box and the block-editor sidebar.
  • Per-content „exclude from XML sitemap” control.
  • Robots.txt additions: append custom directives to the virtual robots.txt.
  • New „Schema” and „Breadcrumbs” settings tabs.

Improvements

  • Expanded the block-editor sidebar source with the social, schema and sitemap fields and a live search-result preview.
  • The classic meta box now offers collapsible „Social sharing” and „Advanced” sections, with a media picker for social images.
  • Updated compatibility target to WordPress 7.1.

Security

  • Custom JSON-LD is decoded and re-encoded with tag/ampersand hex-escaping, so it can never break out of the script element or inject markup.
  • Custom robots.txt content is stripped of HTML and control characters.
  • The new per-post schema type is validated against an allow-list on save.

1.0.0

  • Initial release: title templates and per-post overrides, meta descriptions with automatic fallback, canonical URLs, robots directives, Open Graph and Twitter/X Cards, WordPress core sitemap integration, dashboard, and a classic/block editor meta box with live preview.