SnippetGrove – AI SEO Metadata

Description

SnippetGrove finds missing SEO metadata and lets you write it into the SEO plugin you
already use. The local audit and manual editor are free and do not require an
account. Optional AI generation uses the WP Shelf service and a separate SnippetGrove
license. SnippetGrove does not replace your SEO plugin’s sitemaps, redirects or schema.

Implemented:

  • Detection of the active SEO plugin (Yoast SEO, Rank Math, All in One SEO, SEOPress) with a fallback for sites running none
  • Reading and writing SEO titles and meta descriptions through whichever of those is active
  • A coverage audit counting published posts with no meta description or title, per post type, plus images with no alt text
  • The same count for category, tag and product-category archives, on Yoast, Rank Math and SEOPress
  • Bulk AI generation of SEO titles and meta descriptions, planned and costed before a run is dispatched
  • The same for Open Graph and X card titles and descriptions, on Yoast, Rank Math, SEOPress and All in One SEO
  • Bulk AI image alt text, with decorative images detected and left alone
  • Pages you can exclude from generation, with your front page protected by default
  • A review queue with a decision per item, applied into the host SEO plugin’s own fields
  • Rollback of a whole run from a write journal, so a batch you dislike is undoable
  • Admin screens for coverage, the gaps behind every number, and a run, plus REST routes for the same
  • WP-CLI: wp snippetgrove audit, generate, status, apply, revert, export and import
  • A portable configuration file — set SnippetGrove up once, apply it to every site you run
  • Reviewing a run in a spreadsheet: export to CSV, approve or edit in bulk, import the decisions back
  • License activation against the WP Shelf licensing service

Hosted generation requires a WP Shelf license and an enabled generation service.
Hosted generation is enabled for activated licenses. Public licensing enrollment
is not yet open. Local audits and manual editing do not
depend on it.

Not included:

  • Per-language metadata via Gloty

Nothing in this plugin claims to influence whether any AI answer engine cites a
site. That is not measurable from inside WordPress and will not be claimed.

What the optional report sends

No usage report is sent unless you enable it in Settings. This is independent
of licensing and generation requests. Its JSON payload contains the product
identifier and the following data:

  • Which SEO plugin is active, and how many others compete with it
  • The number of counted post types, how many published items exist, and how many
    have no SEO title or meta description, as site-wide totals rather than per item
  • How many images exist and how many have no alt text
  • Your WordPress, PHP and SnippetGrove versions, your site’s locale, and whether
    WordPress considers the site production, staging or local
  • A one-way hash identifying this installation, salted with a random value
    generated on your site and never sent. It lets one site’s weekly reports be
    counted as one site; it cannot be turned back into an address

Not included in the usage-report payload: your site address, any e-mail address, any user account, any post,
title, description or other content, and your license key. Turning the setting
off stops the weekly job immediately; uninstalling deletes the salt, so a later
reinstall is a different installation as far as we can tell. As with any HTTPS
request, the receiving server can see your server’s network address; the payload
does not make the connection anonymous.

Why we ask: which SEO plugins are really out there decides which of them gets
fixed first, and the real size of the metadata gap is what the plan sizes have
to be priced against. Both are currently guesses.

Full documentation, including what each coverage number counts and exactly what leaves your site: https://wp-shelf.com/snippetgrove/docs

External services

SnippetGrove cannot generate metadata without an external service, because writing a
meta description is not something WordPress can do locally. This section
describes every external request the plugin makes, what it sends, and when.

The coverage audit and manual metadata editor run locally. License requests
start when you activate a license; generation requests start when you start a
run or separately enable generate-on-publish. Usage reports require their own
opt-in. Installing the plugin alone starts none of these external requests.

1. The WP Shelf service

Generation is performed by the hosted WP Shelf service. The plugin does not
contact AI providers directly; it sends a run’s items to the service, which
selects and calls a provider on your behalf and delivers the results back.

  • Service host: https://gloty-api.wp-shelf.com (overridable by defining the SNIPPETGROVE_SERVICE_URL constant, for example to point at a self-hosted instance).
  • What is sent, for generation: the selected content’s title, excerpt and bounded body text, post type, language, taxonomy terms, author-set focus keyphrase and relevant product attributes, site name and tagline, page URL, requested fields and existing SEO/social values, item and batch identifiers, your site URL and license key. Image-alt requests include the image URL, dimensions and the surrounding title/caption/context so the provider can inspect and describe the image. Developers can customize context with the snippetgrove_generation_context filter.
  • What is sent, for licensing: your license key, site URL, product identifier and, on activation, plugin version. The service records generated-item usage against the license.
  • When: after you start a run or opt into generate-on-publish, while background jobs dispatch batches and poll for their results, and when activating, checking or deactivating a license. Cached license checks can occur when using the admin without starting a run.
  • Who: the WP Shelf service, operated by WP Shelf.

Generation is metered per requested field: generating a title and a description
for one page uses two items. Failed or declined items are not billable; accepting
or rejecting a successful suggestion does not undo the generation cost.
* Terms of service: https://wp-shelf.com/terms
* Privacy policy: https://wp-shelf.com/privacy

The generation implementation passes content to OpenAI. The plugin contacts
WP Shelf, not OpenAI directly; license keys authenticate WP Shelf requests and
are not part of the provider’s generation prompt. OpenAI’s terms apply:

  • OpenAI — https://openai.com/policies/terms-of-use / https://openai.com/policies/privacy-policy

2. Optional usage reporting

Off unless you switch it on, and described under “What the optional report sends”
above. Once enabled, a weekly background request goes to
https://gloty-api.wp-shelf.com/v1/telemetry (or your configured service host),
operated by WP Shelf under the terms and privacy policy above. Its payload has
no content, site URL or license key. Disabling it stops future reports.

Not an external service: to check that your SEO plugin really rendered what
SnippetGrove wrote, the plugin fetches one of your own pages from your own site. This
may pass through your site’s CDN or reverse proxy, but no page content is sent
to WP Shelf or an AI provider by that check.

SnippetGrove does not send analytics or usage tracking anywhere else.

Keeping your data when you uninstall

Deleting the plugin removes everything it stored, which is the right default — a
plugin you have deleted should not leave rows behind. But it also removes your run history and the write journal an undo reads from.

If you are deleting the plugin to troubleshoot and intend to reinstall, add this
to wp-config.php first:

define( 'SNIPPETGROVE_KEEP_DATA', true );

Uninstalling then leaves your data in place, and a reinstall picks it up where it
left off. Remove the line when you want a genuine clean removal.

Security

Found a security issue? Please email hello@wp-shelf.com rather than opening a
public support thread — a forum post is world-readable the moment you send it,
on a plugin installed on other people’s sites. You will get an acknowledgement
within 72 hours, and credit in the changelog unless you would rather not have it.

Source code

Readable JavaScript source is included in src/ and shared-js/, including the shared
WP Shelf packages compiled into build/. The ZIP includes package.json and
webpack.config.js. See shared-js/README.md for rebuilding with Node.js and npm;
no private repository or workspace checkout is required. WordPress supplies the
React and WordPress browser libraries used by the compiled admin interface.

Screenshots

Reviews

There are no reviews for this plugin.

Contributors & Developers

“SnippetGrove – AI SEO Metadata” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

0.56.0

  • Changed: wp snippetgrove export and wp snippetgrove settings-export now always write to standard output, and the --file option is gone. Redirect to save it: wp snippetgrove export 12 > review.csv. A plugin should not write files to a path of its own choosing, and the shell already does this better.

0.55.1

  • Fixed: generation no longer sends the contents of inline scripts, styles and noscript blocks in a post to the model as if they were page text. A tracking snippet or a style block in a post’s content used to reach the service as prose, costing tokens and muddying the generated title or description.

0.55.0

  • Renamed the plugin to SnippetGrove across its code, data, commands, website, documentation and WordPress.org listing.
  • Retained the complete metadata audit, manual editor, hosted generation, review and undo feature set from the release candidate.

0.54.4

  • Undo every available write in large runs, preserve newer edits, and resume safely after an interrupted undo.
  • Stop generation and scheduled or forced writes if the active SEO plugin changes after selection.
  • Applied X metadata now overrides Rank Math or AIOSEO social inheritance. Undo restores the original setting after both X fields are restored.
  • Undo preserves newer manual edits to metadata and image alt text.
  • Keep partially delivered batches in recovery until missing results arrive or the recovery deadline passes, without resending a smaller batch under a new billing key.
  • Recover interrupted dispatch requests and count overlapping result deliveries only once.
  • Pause for a service review with saved results and an explicit Try again action when generation safety checks require operator attention.
  • Continue recovering older runs with multiple batches in flight without requiring an open admin screen.

0.54.3

  • Match the admin accent to the teal SnippetGrove icon and website.
  • Guide new installations to license settings before creating a hosted generation run. Local audits and manual editing remain free.
  • Show taxonomy coverage in the interactive dashboard, including hosts where it cannot be measured.
  • Stop retrying malformed generation acknowledgements after the normal retry budget, preserving the batch for safe replay.
  • Bound polling when completed jobs cannot return results, while retaining late results that are available.

0.54.2

  • Fixed hosted generation and result polling on fresh installs with no saved server URL.
  • Fixed undo for native metadata and empty fields, plus selection, review and undo of social metadata.
  • Refresh coverage after manual metadata saves so the last fixed gap does not show a stale-count warning.
  • Improved request-input sanitization and documented temporary CSV stream handling.
  • Included shared JavaScript sources and standalone build instructions in the plugin ZIP.
  • Clarified external-service requests and privacy disclosures.
  • Verified clean installation and removal on WordPress 7.1.

0.54.0

  • Added JavaScript search, sorting and pagination for admin data tables.
  • Navigate between plugin subpages asynchronously, with Back/Forward support.

Earlier release notes are included in CHANGELOG.md.