SEO Tool Pages
Generated tool rendering contract
SEOGrove tools are generated as customer-domain pages. AI customizes copy, labels, metadata, and CTA text; executable behavior comes from a reviewed deterministic runtime.
Publishing model
Best
Native renderer
Render content.tool.native_html as trusted first-party HTML from the signed payload.
Advanced
Manifest component
Render content.tool.manifest in your own component or CMS block.
Fallback
Iframe
Use iframe_fallback only when the destination cannot run native assets.
Tool catalog
SEOGrove offers two kinds of tools. Ready-made tools are deterministic utilities for SEO, content and CSV work (content brief, blog outline, LSI keyword, meta description, CTA, readability, snippet/schema, title, keyword density, robots.txt, slug and CSV converters). Custom tools are designed for the specific business: a gravel calculator for a stone yard, a membership savings calculator for a car wash, a trail finder for a ski resort. Calculator, estimator, planner, finder and converter keywords get custom tools by default. See Custom tools.
Tool payload fields
Tool payloads are delivered inside the normal webhook envelope as content.tool.
| manifest | Portable JSON contract for title, fields, copy, CTA, theme, tracking URLs, and JSON-LD. |
| native_html | A complete native tool section with scoped CSS, manifest JSON, and deterministic runtime. |
| iframe_fallback | Compatibility embed for locked-down systems. |
| type | Ready-made tool key (for example seo_title_checker), or generated for custom tools. |
| renderer_version | Same as manifest.version: 3 for ready-made tools, 4 for custom tools. |
| json_ld | A single JSON-LD object. Usually a WebApplication schema; when the tool page has an FAQ section it is an @graph containing WebApplication and FAQPage. |
Webhook receiver recommendation
Because webhook payloads are signed, a receiver can trust the native tool artifact after HMAC verification. Store the native artifact separately from the surrounding article copy so fallback blocks do not double-render. Runtime v3 renders text outputs in a larger scrollable panel with a built-in copy button for visitors.
1. Verify X-SEOGrove-Signature against the raw request body.
2. Store content.tool.native_html from tool.published events.
3. Remove .seogrove-native-tool, .seogrove-tool-embed, style, and script nodes from copied body HTML.
4. Render the sanitized body copy.
5. Render native_html as trusted first-party HTML on the tool page.
6. Use iframe_fallback only when native assets are not allowed.
Fallback policy
Iframes are compatibility tools, not the default product experience. Use them for restrictive CMSs, temporary migration windows, or customer sites that cannot safely render signed native assets. For normal customer sites, publish a native page under the customer domain.
Per-site XML sitemap for tool pages
SEOGrove generates a Sitemap Protocol XML file for all published tools on your site. Reference it from your main sitemap or submit it directly to Google Search Console so crawlers discover new tool pages immediately.
Sitemap endpoint
Available from your site's Tools builder panel as "Sitemap XML". Requires authentication.
Reference the absolute URL from your main sitemap as a <sitemap> entry.
Example XML
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://your-site.com/tools/roi-calculator</loc>
<lastmod>2026-05-12</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
<image:image>
<image:loc>https://cdn.example.com/featured.webp</image:loc>
<image:title>ROI Calculator — Your Brand</image:title>
</image:image>
</url>
</urlset>
Each <url> entry uses your site's canonical path for the tool,
the tool's last-published date as <lastmod>, and includes
an image:image extension block when a featured image is attached.
Webhook delivery
The tools_index.updated webhook event also includes the full
sitemap XML as sitemap.xml, alongside the tool catalog.
This lets you update both the index page and your sitemap entry in a single webhook handler,
without polling the sitemap endpoint.
| sitemap.xml | Full Sitemap Protocol XML string for all published tools. Write to a file or register with Google. |
| sitemap.tool_count | Number of <url> entries in the sitemap. |
| sitemap.generated_at | ISO 8601 timestamp when the sitemap was generated. |
Tools index event
After every tool publish or deletion, SEOGrove sends a separate
tools_index.updated event to the same webhook URL.
This lets your CMS keep a /tools index page in sync without extra polling.
Event payload
| Field | Description |
|---|---|
| event | "tools_index.updated" |
| timestamp | ISO 8601 delivery time |
| site.host | The site's domain |
| index.tools | Array of all currently published tools with slug, title, archetype, canonical_path, intro, cta, and meta fields |
| index.count | Total number of published tools |
| index.html | Complete standalone HTML page for a /tools index — self-contained, no JS dependencies |
Recommended integration
- Listen for
tools_index.updatedalongsidetool.published. - On receipt, upsert your
/toolsindex page usingindex.htmlor build fromindex.tools. - On
tool.deleted, SEOGrove automatically re-firestools_index.updatedwith the updated catalog — no manual pruning needed.
You can also preview the current index page at any time from your site's Tools builder panel, without waiting for a publish event.
The builder offers saved keywords from the selected site's keyword clusters and content plans, excluding off-topic clusters. If no keywords are saved yet, enter one yourself. The optional tool description is tailored to the selected site; leave it blank to design a tool from the keyword and site profile.
Custom tools (manifest v4)
A custom tool is built in stages: SEOGrove writes a specification with inputs, outputs, formulas and worked examples; a second, independent calculation re-checks the worked examples; then the tool's code is written and run in a headless browser, which must reproduce every worked example before the tool reaches your review queue. If any check fails after automatic retries, the generation fails and does not count against your quota. With Build tools automatically turned on, SEOGrove builds one custom tool a week for your best tool-intent keyword, within your plan's monthly tool allowance; each one still waits for your review.
Additional manifest fields
| engine | Always "v2" for custom tools. |
| program | JavaScript source defining function compute(inputs, data, helpers). It returns an object keyed by output name. |
| data | The values the tool reads (prices, rates, lists). You can edit these on the review page; edits are re-checked in a browser before saving. |
| outputs | Array of { name, label, format, unit }. Formats: number, number:N, currency, percent, text, list, table, date. |
| currency, locale | Used to format money, numbers and dates. |
| ai_actions, ai_url | Names of the tool's AI steps, if any, and the SEOGrove endpoint that runs them. Prompt templates stay on SEOGrove's servers. |
How the code runs
native_html runs program inside a hidden, sandboxed
srcdoc iframe (sandbox="allow-scripts" with a
default-src 'none' Content-Security-Policy). The tool's code cannot read your
page, cookies or storage and cannot make network requests. The page and the sandbox exchange
postMessage events; only declared AI steps are forwarded, by the page, to
ai_url. If you render the manifest with your own component, run
program with the same isolation.
AI steps
Most custom tools are pure calculations. Tools that write open-ended text (a personalised checklist, for
example) call POST {ai_url}/{action} with
{ "inputs": { ... } } and receive { "result": { ... } }
or { "error": "..." }. Requests are accepted from your site's domain, limited
to 10 per minute per visitor, and capped per site each month by plan (Starter
300, Growth 1000,
Pro 2000). When the cap is reached the tool shows a
"try again later" message instead of failing silently.
Content-Security-Policy
Like every native tool, custom tools need inline scripts and styles allowed on the tool page. Tools with AI
steps also need connect-src https://seogrove.io.
Page copy
Custom tools come with a full page: how to use the tool, how the result is calculated, a worked example and an
## FAQ section. In content.html the tool comes first
and the copy follows.
Rebuild existing tools
Every tool has a rebuild panel on its review page. Rebuilds keep the slug and all run analytics. Custom tools are redesigned, rebuilt and re-tested from your instructions (for example "add a delivery fee"). Ready-made tools re-generate their title, intro, field labels, SEO metadata and CTA. Older lead-generation template tools are upgraded to custom tools when rebuilt.
- Rebuilds are free and don't consume your monthly tool generation quota.
- Instructions are optional; leave them blank for an automatic improvement pass.
- After a rebuild the tool returns to review status. Re-publish when you're happy with it.
- The rebuild count and timestamp are stored in the tool's metadata.