WordPress (Primary Stack)
The primary Framix stack. Three plugins ship the GEO standard end-to-end; one client-chosen SEO plugin handles traditional search.
The three Framix plugins
Section titled “The three Framix plugins”| Plugin | What it ships | GitHub |
|---|---|---|
| framix-schema-pro | JSON-LD schema, EEAT author fields, content-freshness scanner, BreadcrumbList, Organization. Detects RankMath / Yoast and defers when present. | github.com/framix-agency/framix-schema-pro |
| framix-llms-txt | Serves /llms.txt via rewrite rule. Hierarchical llms-full.txt per post type. ACF-editable summary. Extendable via the framix_llms_txt_index filter. | github.com/framix-agency/framix-llms-txt |
| framix-geo-performance | Markdown negotiation + /index.md fallback, /.well-known/* family, content-signal header, audit scorecard, AI-referrer analytics, citation tracker, hidden-instruction HTML stub. | github.com/framix-agency/framix-geo-performance |
Client SEO plugin
Section titled “Client SEO plugin”RankMath preferred. Yoast supported. Framix plugins detect the active SEO plugin and do not duplicate output — the wp_head filter intercepts duplicate Organization / WebSite schema.
Cache and CDN constraints
Section titled “Cache and CDN constraints”WP Rocket must be ≥ 3.14 for Vary: accept cache-key splitting. Without it the markdown variant gets served as HTML or vice versa.
Cloudflare-fronted hosts: enable Markdown for Agents at the zone level (Pro plan or above). This delivers requirement 05 and the x-markdown-tokens header without origin work.
Hosts that strip response headers on cached responses require staging-tested mitigation; document the workaround in handoff.
Vendor namespacing
Section titled “Vendor namespacing”All composer vendors scoped to Framix\Vendor\* via php-scoper / strauss. No unprefixed vendor namespaces — collision risk across multi-plugin installs is the issue. See What We Don’t Do § 7.