SEOGrove Docs
Build and maintain your publishing integration.
Reference material for customer-facing SEOGrove contracts: webhook events, generated tool pages, CMS publishing expectations, native tool artifacts, fallbacks, and security verification.
Publishing API
Webhooks
Receive signed article and tool publish/delete events, verify HMAC signatures, upsert pages, and return canonical URLs to SEOGrove.
Open webhook docs ->SEO Tool Pages
Generated tools
Understand native tool manifests, deterministic runtimes, branding, iframe fallback behavior, JSON-LD, and the recommended receiver implementation.
Open tool docs ->AI Discoverability
llms.txt
Deploy your AI-readable site summary file so LLMs can accurately cite your business, services, and content across ChatGPT, MiniMax, Perplexity, and Gemini.
Open llms.txt docs ->Inspect saved plans (read-only)
Signed-in account owners can open Saved plans to pick one of their sites and a month, then read the plan SEOGrove saved for it. Each item shows its title, primary keyword, planned date and a status of planned, generating, generated, skipped or failed. Looking at a plan only reads. It never generates, publishes, schedules or edits anything. Requesting one draft is a separate, explicit step, described in the next section.
- Generated means the planning step finished. It does not tell you whether an article is a draft or live on your site.
- A month with no saved plan, or a plan with no items for a site, is shown as empty. Opening a month never creates a plan.
- Lists load 20 at a time. Use Load more to continue; the page does not show totals.
- If you make requests very quickly, the page asks you to wait before trying again. If it reports that plans are temporarily unavailable, try again later.
Programmatic access
Read-only access to sites and plans for an AI agent is an invitation-only preview, described in Read-only agent access. You can't create, register or activate an API token from this page or from Saved plans.
Read-only agent access (invitation preview)
SEOGrove is preparing a read-only connector that lets an AI agent you choose look up your sites and read a saved plan over https://seogrove.io. Access is by invitation only. This page describes how it works so you can judge it beforehand. It does not mean the connector is switched on for your account: SEOGrove activates each invitation separately and tells you when yours is ready.
What the connector can do
- It has exactly two tools.
sites_listlists the sites you granted.plan_getreads the saved plan for one granted site and month. - It only reads what is already stored. It never generates content, calls an AI provider, creates or changes a plan, or touches a CMS. It has no publishing, scheduling, release, draft or revision tool.
- Plan items carry the same fields as Saved plans. Generated still means the planning step finished, not that an article is live.
- Lists return 20 entries by default, up to 100 per request. When more are available the answer includes an opaque cursor. Send it back unchanged with the same site, month and limit to continue.
How access is granted
- A trusted SEOGrove operator registers your access and its grant, only after SEOGrove separately approves it for your invitation. You make the token yourself on your own computer (see below). Nothing in the product issues tokens, and nothing registers or grants access automatically.
- A grant names one site that your account owns. It carries only two permissions,
sites:readandplans:read, and it has an expiry date and can be revoked. If the site changes owners, access stops. - Each token is limited to 60 requests in any 60 seconds, counted across both tools together. When you reach the limit, the answer says how many seconds to wait. An agent that retries immediately only delays itself.
- A site your grant doesn't cover gets the same answer as a site that doesn't exist, so the connector can't be used to find out about other sites.
Keeping the token private
- You generate the token yourself with a small setup step that runs on your own computer. It writes the token straight into a new file only your user can read, inside a new folder only your user can open. The raw bearer token is never shown on screen or in logs, passed to a model, or put in an agent chat, command arguments or a URL.
- The setup step prints only two things: the path of the configuration file and a fingerprint (a SHA256 digest) of the token. For registration, share only the fingerprint with SEOGrove, never the raw token. A fingerprint can't be used as a token, and creating a token gives no access until SEOGrove separately approves and registers that fingerprint. After registration, the connector reads the token privately and sends the raw bearer internally in the Authorization header over verified HTTPS to the fixed address https://seogrove.io for authentication. SEOGrove hashes the received token to look up the registered digest; the token is not included in model-facing tool results.
- The setup step never overwrites, replaces or rotates anything. It refuses a folder that already holds files, a path that goes through a link, or a folder that others can write to, and it changes no existing permissions. If setup fails, it checks file identity before removing files it created. If cleanup cannot be confirmed, it reports that files may remain: inspect the private setup folder before retrying, without sharing any token. To replace a token, ask SEOGrove to revoke the old one, then set up again in a new, empty folder.
- The configuration is a small private file. It names the service address, the read-only profile and the absolute path of the token file, and it never contains the token itself. The connector takes only that file's absolute path as its argument and refuses to start if a path is relative or the address or profile differs.
- Treat a leaked token as compromised and ask SEOGrove to revoke it.
- Your agent, and the model service it uses, will see the site names and plan items the connector returns. Connect only agents and services you are comfortable sharing that with.
What this preview is not
- SEOGrove also tests a larger seven-tool version with synthetic data. It is never connected to https://seogrove.io. Its draft and revision tools are not part of this preview and are not available to customers. The full synthetic pipeline uses the existing article, image and schema services and holds output for review, even for autonomous sites. Full-profile revisions change title, body and search description together; the earlier synthetic revision profile remains body-only. Revision does not regenerate images or schema. No agent tool releases the hold, schedules or publishes content. Synthetic image tests reject malformed output before attachment while retaining its charge evidence; expired work cannot commit attachments.
- Requesting drafts and revisions through an agent stays closed. Those requests spend money, and SEOGrove has not yet approved the cost checks they need. This page makes no promise about when, or whether, that opens. See Request one draft for the closed pilot on Saved plans.
Request one draft (closed pilot)
Requesting a draft from a saved plan is in a closed pilot. It is not open to customers, and nothing here promises that it is live or available for your account. Where the Saved plans page shows no request button, it can only show plans and requests that already exist.
When it is open for an account, the owner can choose one planned item on the Saved plans page, enter a spending limit in US dollars, and request one draft. What to expect:
- Only a planned item that no other request holds can be requested, and only one request can be outstanding for a site. If the item changed after you opened it, the request is refused and nothing starts.
- The spending limit is a ceiling, not a price. It can have up to four decimal places, such as 1.00. The page shows the limit, what is reserved and what was spent. When SEOGrove cannot confirm what was spent, the page says it isn't known and never shows zero. A reserved amount that stays held does not return to your limit or capacity. A request is refused, and nothing starts, when it needs more budget than your limit or the budget available to your account allows.
- Each request has one random request key that your browser saves in the current tab before sending. If the connection drops, the page is reloaded or you switch sites, retrying uses the same key and the same request, so it can't create a second draft. If the browser can't save it, drafting is turned off in that tab.
- A request is shown as queued, writing, retrying, held for review, skipped, failed or needs review. Needs review means SEOGrove can't confirm what happened. Nothing retries on its own, and you can't send that request again; see "Article requests that need review" below.
- If you open the page in a new tab, or after a request has finished, an item that is held for review shows Find request. It finds the request from the held draft itself, and only for your own site. If saved request details in your browser can't be read, new requests for that site are paused and nothing is deleted.
- The result is a held draft. You open it from the request. It is shown as plain text, so links and images appear as words and nothing loads or runs. A held draft is not scheduled or published, and this page can't approve, schedule or publish it. A partial or incomplete draft is labelled. To release a draft, use the existing review tools on the site's content page once the request has finished.
- If a person deletes a held draft, its request stays finished and shows Draft deleted. Nothing is held for review, the recorded cost and the article it counted do not change, and repeating the same request returns the original acceptance without writing another draft. Plan items do not go back to planned.
- Revising a held draft is part of the same closed pilot. When a draft is open on the Saved plans page, nothing else is outstanding for the site and the page shows Request a revision, you can describe the changes (20 to 4,000 characters) and set a spending limit. SEOGrove rewrites only the body. The title and meta description stay the same, the draft keeps its current text unless the revision is fully applied, and it stays held for review: nothing is scheduled or published.
- A revision is sent against the exact version of the draft you just read, with the same saved request key and retry rules as a new draft. If the draft changed after you opened it, the request is refused, or if writing had already started it is not applied (any cost that was already settled stays recorded, and nothing retries), and the page never reuses the older version: open the draft again, read its current text, then make a new request. A revision that needs review means SEOGrove can't confirm what happened. The revision was not applied, the draft keeps its earlier text, the amount spent may be unknown, nothing retries on its own, and you can't send that request again.
- After a revision is applied, Show before and after displays the two saved versions as plain text. They are only available while the draft is still held for review. If a person deletes the draft, the revision shows Draft deleted with its recorded cost. A revision counts toward your monthly and per-article revision limits, and there are no purchased revision credits.
- New requests are limited to ten a minute. If you reach that, the page tells you how long to wait.
Bearer API access for requesting drafts is not available. It is pending a separately approved credential rollout. The invitation-only read-only agent preview has no draft or revision tool, and nothing in it writes.
Article requests that need review
The pipeline panel on each site page lists article requests that are waiting, stopped or need a person to look at them. These entries stay visible even if a later request succeeds, until they are resolved. Each state means something different:
- Waiting for reserved capacity
- Other work is holding your plan's article capacity. The request has not started and holds nothing of its own. SEOGrove checks again about every minute and stops waiting when the month ends.
- Retrying shortly
- The request failed and will be tried again a limited number of times, up to 3 attempts in total, keeping its capacity in between. The panel says which kind of failure it was. If SEOGrove has evidence that it failed before anything was sent to the writing service, the panel says nothing was sent. If it failed after the request was sent, the failed attempt may still have been charged. If the panel cannot tell, it says so.
- Request stopped
- The request ended without running, for example after the allowed tries or because the subscription lapsed. It does not retry on its own.
- Saved article needs review
- SEOGrove found an article for this request on this site, but a later step did not finish. That article already counts toward your usage and no extra capacity is held. Saved does not mean live: nothing here publishes it. Open it from the link to check it.
- Article request needs review
- The request cannot be treated as finished, and nothing retries on its own. When SEOGrove cannot open an article for it on this site, the panel does not claim that one was saved. A missing article never means the work was free. The capacity line says which of these applies:
- Counted: usage for the request was counted. If an article was found, it is the one you can open.
- Held: capacity stays reserved for this request until the outcome is confirmed.
- Uncertain older work: older work with no usage record. It can block new article requests for your whole account, on every site, until it is reviewed. SEOGrove cannot tell how much capacity it holds.
- Depends on another request: this request holds no capacity of its own. It stopped because another request that needs review, possibly on a different one of your sites, holds capacity it needs.
- Reviewed
- An authorized person confirmed the outcome and recorded who checked it and what they checked. The panel shows one of three outcomes, and never shows the operator's identity or the evidence:
- Released as unused: the writing service confirmed nothing was applied or charged, or no work had been sent. The held capacity was released. No article was created.
- Charged, no article: the writing service confirmed the request was charged but produced no article. One article of capacity is counted against the month of the original request, even if that month has passed, and from the pack it was funded from if it was funded from one. The hold was released, no article exists to open, and nothing retries automatically.
- Saved article confirmed: the article saved for the request was confirmed and counted. Saved does not mean live.
Reviewed requests stay listed as a record. Work that cannot be shown to fit one of these outcomes stays unresolved and keeps its capacity held.
Asking for a review
The panel shows how long a request has waited, and highlights requests that have waited more than an hour. There is no button or endpoint for resolving them, and nothing is cleared automatically. To resolve one, the account owner emails info@seogrove.io from the account's email address and names the site. An authorized SEOGrove operator then checks the stored article, or proof from the writing service that the work was not applied and not charged, or proof that it was charged without producing an article. The operator records who made the decision and a reference to the evidence. A missing article alone is never accepted as proof that nothing was charged. Reviews do not restart paid work. If you want another article, request it normally after the review.
Default recommendation
If SEOGrove controls the integration, use native publishing. If you are building a custom webhook receiver,
implement the documented native tool rendering path and keep iframe_fallback
as a compatibility escape hatch only.
The prepared agent preview uses the existing article pipeline with MiniMax M3 and no additional text prompt byte ceiling. Provider context limits still apply. The operator preview has no fixed $1.25 test ceiling; request budgets and actual costs are recorded. This preview remains invitation-only.