Repository navigation
Releases
Releases · CptNope/JAT-Search-Intel
v3.6.0
Immutable
release. Only release title and notes can be modified.
What's new
Every feature other SEO plugins sell in their premium plans, free.
- New: SEO fields for categories, tags, product categories and any public taxonomy (title, description, canonical, robots, social), with noindex for whole taxonomies and for empty terms (on by default). Noindexed terms leave the sitemap.
- New: primary category for posts and products, used in permalinks, breadcrumbs, Article schema and the %category% variable.
- New: title templates for taxonomy archives and other archives.
- New: site verification codes for Google, Bing, Yandex, Baidu, Pinterest, Facebook, Naver and Seznam.
- New: crawl cleanup options (shortlinks, RSD, WLW manifest, generator, emoji, oEmbed and REST links, X-Pingback, comment and extra feeds, spam searches).
- New: Index Status report from the Search Console URL Inspection API, with a daily check, a manual batch and
wp jat-search-intel index-status. - New: SEO change history with one-click restore, in the block editor and the classic meta box; robots.txt keeps its last 10 versions.
- New: freeze the last-modified date for small edits.
- New: reading time in Article schema, X cards and a shortcode; X cards show the author too.
- New: schema map for AI agents, listed in robots.txt.
- New: Google Preferred Sources button as a block, a shortcode or after posts.
- New: Facebook and X share previews in the block editor.
- New: AI providers Google Gemini, Mistral, DeepSeek, OpenRouter and any OpenAI-compatible endpoint; OpenAI now defaults to gpt-5-mini and Anthropic to Claude Haiku 5.5.
- New: abilities for AI agents to read and update term SEO, list posts that need attention, read index status and list or create redirects.
- Fix: a provider's status message on the AI settings page could render HTML from the API response.
Install
Download jat-search-intel.zip below, then in WordPress go to Plugins → Add New → Upload Plugin. Check the download against jat-search-intel.zip.sha256 if you like. Full documentation is in the wiki.
v3.5.0
Immutable
release. Only release title and notes can be modified.
What's new
- First WordPress.org release, renamed JAT Search Intel. Every identifier now uses
jat-search-intel/jat_search_intel(main file, text domain, options, post meta, tables, REST namespacejat-search-intel/v1, blocks, WP-CLIwp jat-search-intel). - Added: automatic one-time migration from the earlier GitHub edition (settings, post meta, redirects, 404 log, roles, block markup); old FAQ/HowTo shortcodes keep working.
- Added: connected JSON-LD @graph (single script, nodes linked by @id).
- Added: custom JSON-LD per post.
- Added: Google News sitemap, video sitemap and HTML sitemap shortcode.
- Added: automatic image alt text, attachment-page redirects and RSS feed backlinks.
- Added: Markdown copies of posts for AI agents, per-bot AI crawler rules in robots.txt, and AI crawler / AI referral analytics.
- Added: Rank Tracker using your Search Console data via a Google service account.
- Added: AI Search Readiness audit with a 0–100 score and one-click fixes, plus a Refresh Queue of stale pages weighted by Search Console clicks.
- Added: WordPress Abilities API support (6.9+) for AI agents and MCP: search content, get page SEO data, analyse a post, update SEO fields, run the readiness audit, get the refresh queue.
- Added: Content Signals (search / ai-input / ai-train) in robots.txt, and crawler presets (allow all, block training only, block AI).
- Changed: IndexNow generates its key automatically and pings on publish, update and unpublish.
- Fixed: the REST analyse endpoint and the background rescore job never saved scores.
- Added: three-step setup wizard, offered through a dismissible notice after activation.
- Added: Passage Coach panel in the block editor, with one-click answer-paragraph and comparison-table inserts.
- Added: Page Performance report combining Search Console, AI referrals, AI crawler visits, GEO score and freshness per page.
- Changed: the admin menu is now six entries (Readiness, Settings, Redirects, AI Search, Reports, Tools) with tabs; every page keeps its address.
- Fixed: canonical URL, social title/description/image, audience, key topics and fact-check date set in the block-editor sidebar were saved under keys the front end never read. They are now kept in sync both ways and existing values are copied over on update. X (Twitter) title, description and image overrides are now used.
- Removed: CSP headers, Subresource Integrity, white-label branding and the MainWP reporter (outside the scope of an SEO plugin).
- Security: password-protected posts no longer leak their text through auto-generated descriptions, Open Graph/X tags, schema descriptions, FAQ/HowTo/speakable schema, the direct-answer tag or the ai-summary tag. An explicitly written meta description is still used.
- Fixed: under the block editor, the classic meta box re-saved every field with its page-load values after the sidebar saved, undoing sidebar changes (for example canonical URL and noindex). It now saves only fields changed in the meta box.
- Fixed: the setup wizard no longer replaces individually set crawler rules, and recommends blocking AI training only on a fresh install.
- Fixed: Readiness no longer offers a fix on a passing check; the Refresh Queue now also considers high-traffic pages beyond the 300 oldest; Readiness and Page Performance stay fast on large sites.
- Security: REST SEO data is only public for published, non-password-protected posts; focus keywords and scores now require edit access; duplicate /scores and /meta route registrations from the headless module were removed.
- Fixed: settings pages no longer round-trip every option through hidden fields, which could flatten nested settings and stop some checkboxes from being turned off.
- Fixed: title templates using %category%, %search_query% or %sep% were mangled when saved.
- Fixed: entity markup repeated the rest of the sentence after each marked entity, and matched names inside longer words.
- Fixed: the %tag% title variable and breadcrumbs could cause a fatal error when WordPress returned an error instead of terms.
- Fixed: the Table of Contents block preview could fail on WordPress 6.5+ where heading text is stored as rich text.
- Fixed: saving the SEO page switched off breadcrumb and site-search schema (they now have their own controls).
- Fixed: /sitemap.xml could be redirected to /sitemap.xml/; robots.txt now lists your sitemaps.
- Fixed: a second robots meta tag was printed next to WordPress's own; directives are now merged into one.
- Performance: home, post, page and archive views run no extra database queries with the plugin active (measured on WordPress 7.1).
- Performance: page views now load 18 plugin files instead of 25 (about 250 KB instead of 405 KB) and register 72 hook callbacks instead of 163; the REST API, Passage Coach, abilities, content analyzer and AI Optimizer are built only when a REST request, save or admin screen needs them, and editor meta fields are registered for REST requests only. Extra memory per page view fell from about 0.37 MB to 0.12 MB.
- Security: editor meta fields can only be changed by users who can edit that particular post.
- Changed: llms.txt now lists articles as well as pages, skips noindex content and is cached; llms-full.txt includes the full Markdown of each item.
- Removed the GitHub self-updater; updates now come from WordPress.org.
- Performance: disabled modules are no longer loaded on each request.
- Performance: redirect matching uses a cached index, so pages without a redirect run no redirect queries.
- Performance: growing logs and queues are no longer autoloaded.
- Added: opt-in "Delete all plugin data" setting; uninstall now also removes tables, cron events and roles.
- Added: scheduled tasks are cleared on deactivation, and database tables are created on update as well as activation.
- Changed: a static llms.txt left by another plugin is no longer deleted automatically; you get a notice with a one-click remove button.
- Changed: llms.txt no longer publishes the admin email address (use the
jat_search_intel_llms_contact_emailfilter to add a contact). - Changed: AI-crawler access log stores hashed IPs only.
- Removed: Google/Bing sitemap ping (both endpoints were retired; use IndexNow).
- Fixed: background queue cron interval was never registered.
- Fixed: llms.txt access tracking never ran.
- Security and coding standards: prepared queries throughout, input sanitization, output escaping and translator comments.
Install
Download jat-search-intel.zip below, then in WordPress go to Plugins → Add New → Upload Plugin. Check the download against jat-search-intel.zip.sha256 if you like. Full documentation is in the wiki.
v3.4.2
Fixes
- Settings wipe on save: Saving on one settings tab (e.g. General) no longer resets boolean toggles on other tabs (SEO, AEO, GEO). Each form now declares which page it is via _si_page, and \sanitize_settings()\ only processes booleans belonging to that page — all others preserve their existing saved value.
- Reports wrong version: PDF/HTML reports showed a hardcoded fallback version instead of the actual \SEARCH_INTEL_VERSION\ constant.
v3.4.1
What's New in 3.4.1
Added
- FAQ Generation button — 'Generate FAQs' button with 'Enhance with AI' toggle in the AEO tab, works with any configured AI provider
- AI Suggest Edits — New button in the Analysis tab generates revision suggestions based on failing checks
- Score history — Analysis tab shows a table of the last 10 analysis runs
- Bulk FAQs — FAQs field added to Bulk Tools AI generation (AEO section)
- Pre-populated scores — Score rings load saved scores on page load
Fixed
- FAQ generation broken — Refactored to use AI Engine abstraction instead of direct OpenAI calls
- FAQ AJAX handlers gated — Now always registered so the main metabox AEO tab works
v3.4.0 — GitHub Auto-Updater
Added
- GitHub-based auto-updater for private repo updates via WP Dashboard
- Admin UI for GitHub token configuration (encrypted storage)
- Force Check for Updates button (bypasses 6h cache)
- Auth header injection for private repo zip downloads
Changed
- Default clean_uninstall changed to false (protects data on accidental deletion)
- Added AI Optimizer + Historical Analytics meta keys to uninstall cleanup
v3.3.6 — Bulk Tools All Post Types, Reports Readability
Fixed
- Bulk rescore/regenerate only processed one post type: Added "All Public Post Types" option to the bulk tools dropdown — rescore, regenerate, and AI generate now process posts, pages, and all CPTs in a single run
Added
- Readability module in Reports: Reports form now includes a Readability checkbox alongside SEO, AEO, and GEO
v3.3.5 — Fix llms.txt, Reports Meta Keys, Psalm CI
Fixed
- llms.txt served by wrong plugin: Search Intel now deletes static llms.txt files written by other plugins (e.g. AIOSEO) and checks REQUEST_URI directly so our dynamic handler always takes priority
- llms-full.txt 404: Rewrite rules for both llms.txt and llms-full.txt now flushed on activation
- Reports showing zero scores:
build_report()was reading from non-existent_search_intel_scoresmeta key — fixed to use individual_search_intel_seo_score,_search_intel_aeo_score,_search_intel_geo_score,_search_intel_readability_scorekeys - Psalm CI failure: Removed stale
PossiblyUnusedReturnValuebaseline entry forclass-core-web-vitals.php
v3.3.4 — Fix Settings Persistence, CWV/GA4 Config UI
Fixed
- Settings Persistence:
sanitize_settings()now handles ALL keys fromget_default_settings()— sitemap taxonomies, IndexNow providers, API keys, numeric fields, white-label fields, notification settings, and 30+ other fields that were silently dropped on save - Sitemap CPT/Taxonomy: Custom post type and taxonomy selections now persist correctly across saves
Added
- Core Web Vitals Configuration: Inline PSI API key setup with save button and manual scan trigger directly on the Web Vitals page
- GA4 Configuration: Inline GA4 Property ID setup with save button directly on the GA4 Insights page
v3.3.3 — Module Toggles for All v2.0+ Features
Added
- Module Toggles: 27 feature toggles added to General Settings page, organized into 8 categories (Core, Advanced SEO, Advanced AEO, Advanced GEO, AI & Content Intelligence, Analytics & Reporting, Enterprise, Security)
- Admin Pages Exposed: All v2.0+ admin pages now accessible when their module toggle is enabled — adds 12 new menu items: Visibility, Citation Graph, Authority Map, Content Decay, Cannibalization, Analytics, GA4 Insights, Web Vitals, Reports, Bulk Editor, Internal Linking, Broken Links
Fixed
- Settings Persistence:
sanitize_settings()now includes allenable_*boolean keys so toggled modules persist on save - PHPUnit: Rate limit test updated to use OpenAI instead of Ollama (Ollama now skips rate limiting by design)
v3.3.2 — AI Engine & Bulk AI Generation
Added
- AI Engine Settings Page: New admin page (Search Intel → AI Engine) with provider selection (OpenAI, Anthropic, Ollama), encrypted API key management with save/test buttons, model override, custom endpoint, rate limiting, token budget, and usage statistics
- Bulk AI Content Generation: New section in Bulk Tools for AI-powered generation of all 14 SEO/AEO/GEO fields with grouped checkboxes, Select All toggle, empty-only or overwrite-all modes
Fixed
- Sitemap 404: Register rewrite rules before
flush_rewrite_rules()in activation hook so WordPress recognizes/sitemap.xmlimmediately - Ollama Rate Limiting: Local models now bypass rate limiting; fixed transient TTL renewal bug that prevented the 60-second window from expiring