Releases: avansaber/seo-monster
Release list
v0.9.2 — Discovery + AI/GEO
SEOMonster v0.9.2 — Discovery + AI/GEO
The biggest release since the technical-SEO line: SEOMonster goes from "diagnose my own data" to "discover what I don't, and prove it moved" — including the AI answer surfaces (ChatGPT, Perplexity, Gemini, Google AI Overviews). 11 new tools across four tracks — 59 → 70 tools.
Everything new keeps the project's design law: tools stay deterministic and data-grounded (the host LLM does the generative/semantic work), every score is banded + evidence-tagged (causal / correlational / informational — never a false-precision number), and the free GSC / GA4 / HTTP core needs no new keys. The optional vendors are pluggable and degrade gracefully.
What's new
Track A — AI / GEO citation
ai_citation_readiness— is a page structured to be cited by LLM answer engines? Leads with a render-blindness check (AI crawlers don't run JS), then scores evidence-backed signals (statistics, quotations, cited sources, no keyword-stuffing). Reports schema.org / FAQ / llms.txt as informational only — the 2026 evidence doesn't support them as AI-citation drivers. Free.ai_referral_overview— GA4 referral sessions from AI apps (nativeai-assistantchannel + source regex) and AI-crawler robots coverage (GPTBot/ClaudeBot/PerplexityBot…). Surfaces the ~70% dark-traffic undercount. Free.ai_citation_track— sampled brand share-of-voice across Perplexity / OpenAI / Anthropic / Gemini + Google AI Overviews for a managed prompt set, with a 95% confidence interval and run-to-run volatility — not an "AI rank" (single runs are statistically meaningless). Honest about the API-vs-UI gap. Optional engine keys / DataForSEO.
Track B — net-new keyword discovery
gsc_keyword_expand— ground host-brainstormed candidates against your own Search Console data; net-new terms with no visible footprint, scored by sibling-strength. Free.serp_adjacency_expand— Google Autocomplete (free core) + optional People-Also-Ask / related searches.keyword_universe— competitor keyword gap (the one thing no Google product gives you) + volume/difficulty/intent. Optional (DataForSEO; Google Ads for volume).
Track C — content winnability
content_brief_data— competitor heading union, median word-count floor, schema, entities, and 2026 GEO writing directives, so the host writes the brief from evidence. Free.topic_cluster_map— four-quadrant gap (defend / optimize / create / monitor) from your own GSC data; the create quadrant is your missing-subtopic list. Free.content_opportunitiesgains an additivewinnabilityblock (existing fields unchanged).
Track D — close the loop
internal_link_recommend— specific source→target internal links from high-authority pages to striking-distance pages, with anchor text and over-optimization guards. Free.rank_change_attribution— did a change move the needle? Difference-in-differences vs a matched control group, a 95% CI, a three-state verdict, and a confounders block that auto-detects the 2025 GSC data-regime breaks. Observational, never a causal claim. Free.onpage_serp_gap— the headings / entities / schema the top results have that your page lacks, as concrete actions. Free with caller URLs; optional SERP auto-fetch adds zero-click-risk + competitor-authority signals.
Optional providers (all pluggable; the core works without them)
- DataForSEO (
DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD) — SERP/PAA, keyword volume/difficulty/intent, competitor gap, Google AIO. - Open PageRank (
OPENPAGERANK_API_KEY) — free competitor domain authority. - AI engines (
PERPLEXITY_API_KEY/OPENAI_API_KEY/ANTHROPIC_API_KEY/GEMINI_API_KEY) — forai_citation_track(any subset). - Google Ads (
GOOGLE_ADS_DEVELOPER_TOKEN/GOOGLE_ADS_CUSTOMER_ID) — volume alternative to DataForSEO.
Quality & validation
- Validated live across three rounds against a real portfolio: the full free GSC/GA4/HTTP surface, then the paid surface (DataForSEO + Open PageRank + Gemini) —
ai_citation_trackran 42 live queries with full statistical machinery. All findings closed. - New system_status tool groups (
ai,content,discovery) and optional services (dataforseo,openpagerank,google_ads,ai_engines). - 567 tests, ruff clean, security review clean. No breaking changes — every existing tool keeps its contract.
Upgrade
uvx seo-monster@latest # or your host's MCP config / the .mcpb bundle
No config changes required; the new providers are opt-in. Call system_status to see what's configured.
Full details in CHANGELOG.md.
v0.8.2 - cf_managed_robots (managed robots.txt / Content-Signals control)
cf_managed_robots - the managed-robots / Content-Signals control tool, completing the robots feature line (detection 0.8.0 -> advisor 0.8.1 -> control 0.8.2). One new tool (59 tools / 13 prompts).
cf_managed_robots(action, zone?, ...)- get / configure / disable Cloudflare's managed robots.txt and Content-Signals policy on a zone (these ride on the Bot Management config; write API confirmed against Cloudflare's public OpenAPI schema, available on all Bot Management plan variants).action="get"is read-only and un-gated;configure/disableare gated behindSEO_MCP_ALLOW_DESTRUCTIVE, needconfirm=<zone>, and supportdry_run.- Safe write path: GET -> overlay only the changed fields -> strip read-only fields -> PUT, so the rest of the zone's Bot Management config is never clobbered. Needs the Bot Management:Edit token scope for writes.
- Managed robots.txt and the Content-Signals policy are mutually exclusive in Cloudflare; the tool validates this locally and returns
INVALID_INPUT(no raw CF 400). Valid combos:managed_robots=true+cf_robots_variant="off"ORmanaged_robots=false+cf_robots_variant="policy_only". - Every response carries a caveat separating the stated-preference signals (ignored by Googlebot, not a ranking factor) from the levers that actually enforce at the edge.
Install: uvx seo-monster or pip install seo-monster==0.8.2. Full notes in CHANGELOG.
v0.8.1 - robots_ai_posture (Content-Signals advisor)
robots_ai_posture - the Content-Signals advisor, part 3 of the robots feature line. One new tool (58 tools / 13 prompts).
robots_ai_posture(goal?, sitemap_url?)- a deterministic, offline advisor for the Content-Signals levers (search/ai-input/ai-train). Takes a business goal (content_authoritydefault /maximize_visibility/protect_ip), recommends a posture with a plain-language rationale, returns the full trade-off menu, and emits a ready-to-apply artifact: theContent-Signal:directive line plus a complete suggested robots.txt. No network, no writes.- Every response carries the mandatory caveat that Content-Signal is honored only by adopting crawlers, is ignored by Googlebot, and is not a ranking factor.
Install: uvx seo-monster or pip install seo-monster==0.8.1. Full notes in CHANGELOG.
v0.8.0 - robots_txt_validate detects managed / stale-edge robots
Managed-robots / Content-Signals detection - part 1 of the robots feature line. No new tools or prompts (57 tools / 13 prompts).
robots_txt_validatenow catches the Cloudflare Managed robots.txt / Content-Signals blind spot: a second cache-busted fetch detects a stale edge-cached robots.txt (and re-parses groups/sitemaps from the FRESH content), plusmanaged_robots_suspected,missing_sitemap, andcontent_signalsparsing. All advisory; no new scope (FEEDBACK §27).
Install: uvx seo-monster or pip install seo-monster==0.8.0. Full notes in CHANGELOG.
v0.7.11 - IndexNow keyLocation per-host fix + CF polish
IndexNow multi-host fix + Cloudflare polish. No new tools or prompts (57 tools / 13 prompts).
- IndexNow
keyLocationderived per submitted host - submissions to a host other than the configured one no longer fail with HTTP 422; the key-file location is derived ashttps://<submitted-host>/<key>.txt(the v0.7.8 pre-flight had the same bug and is fixed too). FEEDBACK §25. cf_settings_update: unknownsettingskey now returns the tool's ownINVALID_INPUT;cf9109remediation broadened; bulk-redirect propagation note clarified (FEEDBACK §24).
Install: uvx seo-monster or pip install seo-monster==0.7.11. Full notes in CHANGELOG.
v0.7.10 - cf_settings_update (close the audit->remediate loop) + CF polish
Adds cf_settings_update: write the SEO/crawl/security Cloudflare zone settings cf_settings_audit grades (SSL mode, Always-Use-HTTPS, Automatic HTTPS Rewrites, Brotli, browser cache TTL, HSTS), closing the audit->remediate loop. Gated behind SEO_MCP_ALLOW_DESTRUCTIVE; ssl_mode or any HSTS-raise also need confirm= (HSTS-raise also acknowledge_hsts_risk=true). Validates locally, supports dry_run, and re-runs the audit so the finding clears. Needs the Zone Settings:Edit token scope. cf_settings_audit findings now carry a machine-readable fix hint to chain audit->fix. Also folds CF polish: scope-specific 9109 remediation, cf_create_redirect returns rule_id, per-field bulk reject reasons, corrected DESTRUCTIVE remediation + cf_list_redirects description. 56 -> 57 tools. See CHANGELOG.md.
v0.7.9 - Cloudflare Bulk Redirects (account-level)
Adds cf_bulk_redirect_upsert: create/append many redirects at once via an account-level Bulk Redirect List, wired into the account http_request_redirect ruleset (for site migrations). Gated behind SEO_MCP_ALLOW_DESTRUCTIVE and a confirm value equal to list_name. Pre-validates every item locally and rejects the whole batch on any bad item (never half-applies); validates list_name against Cloudflare's allowed charset; supports dry_run. cf_list_redirects now also surfaces account Bulk Redirect lists. Completes CF redirect support (single redirects shipped in 0.7.8). 55 -> 56 tools. New scopes: Account Rulesets:Edit + Account Filter Lists:Edit. See CHANGELOG.md.
v0.7.8 - Cloudflare single-redirect management
Adds cf_list_redirects (read), cf_create_redirect and cf_delete_redirect (gated behind SEO_MCP_ALLOW_DESTRUCTIVE) for managing single (dynamic) redirects at the Cloudflare edge - e.g. a 301 for a renamed URL. Creates pre-flight the target (no redirecting to a dead URL), refuse self-loops and duplicate sources, advise 301-over-302, and support dry_run. New token scope: Zone > Single Redirect > Edit. 52 -> 55 tools (13 prompts unchanged). Account-level Bulk Redirects follow in 0.7.9. See CHANGELOG.md.
v0.7.7 - HTTP pre-flight for routine writes
gsc_submit_sitemap and indexnow_submit/bulk_submit now HTTP pre-flight the resource they depend on (the sitemap URL; the IndexNow key file) before forwarding upstream, using the branded SEOMonster UA. A 404/unreachable sitemap or a missing/mismatched key file now returns INVALID_INPUT with remediation instead of a false success (the upstreams accept blindly and fail silently downstream). Adds a skip_preflight escape hatch. No new tools or prompts (52 tools / 13 prompts). Closes FEEDBACK §20 §1b/§3c/§3d. See CHANGELOG.md.
v0.7.6 - housekeeping (CI gate, ruff, Node-24, taxonomy, PSI-CrUX note)
Housekeeping batch, no new tools or prompts (52 tools / 13 prompts). psi_analyze + lighthouse_budget gain an additive field_data_note pointing to crux_snapshot/crux_history (PSI CrUX field-data deprecation). technical_seo_audit + structured_data_audit descriptions now name their lane and cross-reference the other audit prompts. New ci.yml runs pytest + ruff on push/PR; pre-existing ruff debt cleared (ruff pinned in dev extra); release.yml opts JS actions onto Node 24 ahead of the 2026-06-16 runner cutover. README tool descriptions synced to the v0.7.x surface. See CHANGELOG.md.