PBJ SEO outputs every on-page SEO signal WordPress core doesn't: titles, meta descriptions, canonical URLs, robots directives, Open Graph / Twitter cards, and a single JSON-LD schema graph (Organization, WebSite, WebPage, Article, Product, BreadcrumbList, LocalBusiness, Service, FAQPage). Since 2.0.0 it also contains the merged PBJ Site Essentials module (security headers, legacy 301 redirects, geo meta, perf tweaks, [pbj_year]) and a block-editor sidebar with per-post SEO fields and a live best-practices checklist.
pbj-seo.zip → Install Now.Upgrading from PBJ Site Essentials: after activating PBJ SEO 2.0.0+, deactivate and delete the standalone "PBJ Site Essentials" plugin. The merged module stands down while the old plugin is active, so there is no double output during the transition — but nothing new takes effect until the old plugin is gone.
There is no settings screen. Defaults apply immediately. Three things worth checking on a new site:
https://, so local sandboxes are unaffected. Opt out with define( 'PBJ_SEO_FORCE_HTTPS', false ); in wp-config.php.Write your post, then open the PBJ SEO sidebar:
FAQ schema is automatic: add a heading containing "Frequently Asked Questions", then H3 questions each followed by a paragraph answer. The checklist confirms when a FAQ section is detected.
Service-page schema is automatic for slugs in the service map (see the code explainer to change the map via pbj_seo_service_schema_map).
<!-- PBJ SEO --> and <!-- /PBJ SEO --> is the plugin's output.curl -sI https://yoursite.com/ — you should see the security headers and (on LiteSpeed) X-LiteSpeed-Cache-Control.curl -sI https://yoursite.com/seo should return 301 with the mapped location.Upload the new pbj-seo.zip via Plugins → Add New → Upload Plugin and choose "Replace current with uploaded". Per-post meta and the htaccess marker survive. The Update URI: https://pbj.tech/pbj-seo header prevents WordPress.org from ever offering a conflicting update.
X-Forwarded-Proto: https. Fix the proxy header, or define( 'PBJ_SEO_FORCE_HTTPS', false );.custom-fields for meta over REST. Add add_post_type_support( 'your_type', 'custom-fields' );.pbj-geo-meta.php, pbj-schema-extras.php, pbj-perf-tweaks.php, pbj-legacy-redirects.php) is still installed. The plugin stands down feature-by-feature while those exist; remove them to hand over fully. Another SEO plugin (Yoast/Rank Math) running simultaneously will also double-emit — run one.X-LiteSpeed-Purge: *.rank-math-options-titles), else Jupiter FL defaults. Set the pin in Rank Math or filter the output.wp-content/plugins/pbj-seo/pbj-seo.php (all PHP), assets/js/editor.js (sidebar)._pbj_seo_title, _pbj_seo_description, _pbj_seo_noindex ('1' = noindex).pbj_seo_htaccess_version (LiteSpeed CacheLookup marker tracking).# BEGIN PBJ SEO LiteSpeed Cache (removed on deactivation).pbj_seo_force_https, pbj_seo_cache_ttl, pbj_seo_cacheable, pbj_seo_default_image, pbj_seo_schema_graph, pbj_seo_is_article, pbj_seo_article_type, pbj_seo_article_author, pbj_seo_service_schema_map, pbj_seo_redirect_map, pbj_seo_redirect_attachments.