=== Nolimit SEO ===
Contributors: kristianwind
Tags: seo, ai, meta description, indexnow, schema
Requires at least: 5.9
Tested up to: 7.1.1
Requires PHP: 7.4
Stable tag: 0.1.1
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

AI-assisted SEO: it drafts the titles and descriptions nobody got round to, tells the search engines when a page changes, and reports what Google actually says.

== Description ==

Nolimit SEO does the small number of things that decide how a WordPress site
appears in a search result, lets a model do the writing you never got round to,
and then gets out of the way.

* **Titles and descriptions** from templates, overridable on any single page.
* **AI drafts** for the pages that have neither — proposed next to the field,
  never typed into it, and reversible after they are applied.
* **Canonical addresses**, including the ones WordPress does not write itself.
* **Robots rules** — every one of them off until you switch it on.
* **Open Graph and Twitter cards**, so a pasted link shows a picture.
* **Structured data** as one JSON-LD graph, with WooCommerce products.
* **The sitemap WordPress already serves**, minus the pages you noindexed.
* **IndexNow, Bing and Google** told when a page changes, from one queue that
  never runs during the request that saved the page.
* **What Google actually says** about each page, read back from Search Console
  rather than guessed at.
* **An audit** that names what is wrong, with a stable code for each finding —
  and changes nothing on its own.

= Where the AI comes from =

Two doors, and you pick one. Either **Nolimit Assistant** makes the call, so a
site running several of these plugins has one key, one budget and one log; or
you paste a key for **your own provider** — OpenAI, Anthropic, DeepSeek,
Mistral, Groq, OpenRouter, Together, or a model running on your own server
through Ollama or LM Studio.

They do not fall back to one another. If you choose Assistant and later
deactivate it, this plugin stops asking rather than quietly resuming with an
old key.

= What is sent, and where =

There is **no telemetry**: nothing about this site, its traffic or its owner is
ever sent to us or to anybody else, there is no account to create, and there is
nothing to opt out of. The plugin's own network request is to its release feed,
to see whether there is a newer version, and it carries nothing about the site.

Three other things can leave the server, all of them **off until you switch
them on**, and each to a party you chose:

* **AI drafting** sends the page being described — its heading, its address and
  up to 2400 characters of its text — to the model provider you configured.
  Secrets are stripped before the request is built, not after. With AI off, no
  model is contacted at all and the buttons are not shown.
* **Search-engine submissions** send changed addresses to IndexNow, Bing or
  Google, depending on which you enabled. Those are your own public addresses,
  going to the engines you want to index them.
* **Reading back from Google** asks Search Console about your pages, using a
  service account key you generated and can revoke.

A site with all three left off makes exactly one request, to the update feed,
and the plugin works without any of them.

It does not replace the WordPress sitemap with one of its own. Core has served
one since 5.5 and it works; this plugin takes out the pages that should not be
in it, which is the one thing core cannot know.

It will not switch on a `noindex` for you. Taking pages out of a search index
is slow to happen and slow to undo, so the audit recommends and you decide.

== Frequently Asked Questions ==

= Can I run it alongside another SEO plugin? =

You can, and you should not. Two plugins writing a title tag, a canonical and a
robots directive will disagree, and the most restrictive directive is the one
search engines obey — so the symptom is usually a page that is quietly
noindexed by the plugin you thought you had switched off.

= Where is the sitemap? =

At /wp-sitemap.xml, which is where WordPress puts it.

== Changelog ==

= 0.1.0 =
* First release.
