Skip to content
Reference

SEO Plugin Compatibility — Citelayer® with Rank Math, Yoast, AIOSEO

6 min read


Most WordPress sites already run an SEO plugin. You need to know that Citelayer® works alongside it — not against it. This page explains exactly how the compatibility system detects, groups, and cooperates with your existing SEO setup.

Why This Matters

SEO plugins generate structured data, manage sitemaps, and increasingly handle protocols like llms.txt. Citelayer® touches some of the same output. Without a compatibility system, you would get duplicate schema blocks, conflicting llms.txt files, and unpredictable results. Citelayer® solves this with automatic detection, family grouping, and two clearly defined operating modes.

Supported SEO Plugins

Citelayer® recognizes six SEO plugin families:

  • Rank Math (free + Pro) — Family: rankmath
  • Yoast SEO (free + Premium) — Family: yoast
  • All in One SEO (AIOSEO) — Family: aioseo
  • SEOPress (free + Pro) — Family: seopress
  • The SEO Framework — Family: seoframework
  • Slim SEO — Family: slimseo

If your SEO plugin is not on this list, Citelayer® treats your site as having no SEO plugin installed. All features operate independently with no compatibility logic applied.

How Detection Works

Citelayer® detects SEO plugins automatically on every admin page load. The detection result is cached for 5 minutes to avoid repeated lookups.

The detection uses three methods in combination:

  • is_plugin_active() — Checks WordPress’s active plugin list
  • Defined constants — Looks for plugin-specific constants like RANK_MATH_VERSION, WPSEO_VERSION, AIOSEO_VERSION, and others
  • class_exists() — Verifies that expected plugin classes are loaded in memory

This triple-check approach catches edge cases where a plugin is active but loaded in a non-standard way.

The cache clears instantly whenever any plugin is activated or deactivated. You never see stale detection data after changing your plugin setup.

Modifying Detection Results

If you need to override what Citelayer® detects — for example, to exclude a plugin from detection or add a custom one — use the filter:

add_filter( 'citelayer_detected_seo_plugins', function( $plugins ) {
    // Remove a plugin from detection
    unset( $plugins['yoast-seo'] );
    return $plugins;
} );

The filter receives an array of detected plugins and expects the modified array back.

Family Grouping

Citelayer® groups SEO plugins into families. The free and premium versions of the same plugin belong to the same family:

  • Rank Math + Rank Math Pro = rankmath (one family)
  • Yoast SEO + Yoast SEO Premium = yoast (one family)
  • SEOPress + SEOPress Pro = seopress (one family)

This distinction drives the entire compatibility system:

  • Multiple plugins from one family = normal. No conflict. Citelayer® works with the highest-priority plugin in that family.
  • Multiple plugins from different families = Conflict State. Citelayer® pauses affected features until you resolve it.

Which Features Have Conflicts

Not every Citelayer® feature interacts with SEO plugins. The compatibility system only applies to features that can overlap with SEO plugin output:

  • Features WITH compatibility logic: Schema, llms.txt
  • Features WITHOUT compatibility logic: WebMCP, Markdown, UCP Discovery — these always operate independently, regardless of which SEO plugins are active

Two Modes: Enhance and Replace

For Schema and llms.txt, you choose one of two modes in the Dashboard Compatibility tab. Each mode defines how Citelayer® interacts with your SEO plugin’s output.

Enhance Mode (Default)

Citelayer® adds to what your SEO plugin already generates. Your SEO plugin’s output stays intact, and Citelayer® layers its own data on top.

For Schema: Citelayer® hooks into the SEO plugin’s schema output and adds its Organization data. The specific hooks depend on your plugin:

  • Yoast SEO: hooks into wpseo_schema_graph
  • Rank Math: uses Rank Math’s schema filter hooks
  • Other plugins: uses their respective schema output filters

For llms.txt: Citelayer® enhances the SEO plugin’s llms.txt content if the plugin supports it.

Replace Mode

Citelayer® generates its own output and disables the SEO plugin’s corresponding feature. This gives Citelayer® full control over that protocol.

What gets disabled depends on the SEO plugin:

  • Yoast SEO: Disables wpseo_json_ld_output for Schema. Removes the physical llms.txt file for llms.txt.
  • Rank Math: Empties the rank_math/json_ld filter output for Schema. Empties rank_math/llms_txt/content for llms.txt.
  • AIOSEO: Uses aioseo_schema_disable to turn off AIOSEO’s schema output.
  • SEOPress: Empties seopress_schema_output to suppress SEOPress schema generation.

Choose Replace mode when you want Citelayer® to be the sole source of truth for Schema or llms.txt output.

Yoast llms.txt: A Special Case

Yoast SEO creates a physical llms.txt file in your WordPress root directory. Most other plugins generate llms.txt dynamically via PHP.

Citelayer® handles this difference automatically: if the physical llms.txt file does not exist — whether it was deleted, never created, or Yoast’s llms.txt feature was never enabled — Citelayer® takes over llms.txt generation even in Enhance mode. No manual mode switch required.

If the file does exist and you are in Enhance mode, Citelayer® respects it and does not overwrite it. Switch to Replace mode to have Citelayer® remove the file and take full control.

Conflict State: Multiple Families

A conflict state triggers when Citelayer® detects active SEO plugins from two or more different families. For example, Rank Math and Yoast SEO running simultaneously.

When this happens:

  • A non-dismissable red banner appears on every admin page — not just the Citelayer® dashboard
  • The Schema REST API returns 503 Service Unavailable
  • The llms.txt endpoint returns 503 with a Retry-After: 3600 header
  • WebMCP, Markdown, and UCP Discovery continue to work normally — they are not affected

Resolution: Deactivate one of the conflicting SEO plugins. The moment you do, Citelayer® detects the change, clears its cache, and resumes normal operation within seconds.

Citelayer® does not try to guess which SEO plugin you prefer. Running two competing SEO plugin families is a misconfiguration that causes problems far beyond Citelayer® — duplicate schema, conflicting meta tags, and unpredictable crawl behavior. The conflict banner forces you to fix it.

Priority System

When multiple plugins from the same family are active (e.g., Rank Math free + Rank Math Pro), Citelayer® uses the highest-priority plugin for its hooks and integration logic. The priority order from highest to lowest:

rank-math-pro > rank-math > yoast-seo-premium > yoast-seo > aioseo > seopress-pro > seopress > seo-framework > slim-seo

Premium or Pro versions always take priority over their free counterparts within the same family.

State Reset

When you deactivate the last SEO plugin on your site, Citelayer® cleans up automatically:

  • All compatibility-related options are removed from the database
  • Previously dismissed admin notices are reset for all admin users
  • Citelayer® switches to standalone mode — generating Schema and llms.txt independently with no compatibility hooks

You do not need to manually reset anything. The cleanup is instant and complete.

Verifying Your Setup

To confirm everything works correctly:

  1. Go to Settings → Citelayer and open the Compatibility tab.
  2. Check which SEO plugins are detected. Each plugin shows its family label.
  3. Verify the mode (Enhance or Replace) for both Schema and llms.txt.
  4. If you see a conflict warning, deactivate one of the conflicting plugins.
  5. Use the WebMCP Health Check and test your Schema and llms.txt endpoints to confirm output is correct.