BuddyStat
Feature Guides

Content & AI Visibility

Plan, write and publish SEO articles per site, and track whether AI assistants mention you

The Content & AI Visibility module plans, researches, writes and publishes articles for a site, then measures what they actually earn: sessions, conversions and revenue from BuddyStat's own tracking, next to Search Console clicks.

It is included with your BuddyStat plan — there is no separate subscription.

What each plan includes

StandardProEnterprise
Articles per month1030120
AI-visibility prompts31050
Content languages114
AI images per article133
API requests per minute6060240

The monthly quota resets on the first day of each calendar month. A per-site override can raise the quota for a specific site without changing the plan.

Setting up

  1. Go to the sidebar → Content & AI Visibility
  2. Set up the Brand kit (voice, audience, content language) under Publishing — every generated article uses it
  3. Connect Google Search Console to seed the keyword pool. Without it the planner has no queries to cluster, though you can still plan articles manually
  4. Choose a Publishing destination and save the secret

The article pipeline

Each article moves through fixed stages:

planned → researching → writing → imaging → draft

Then a human (or your auto-publish setting) decides what happens next:

draft → approved → publishing → published

An article that fails at any stage moves to failed and records the stage it failed in. Retry resumes from exactly that stage rather than starting over.

Research and drafting

The researcher produces a brief — search intent, angle, questions, sections — based on your brand kit, competitors and the pages on your site that already get traffic. The writer turns that into a 900–1400 word draft with markdown headings and sourced links.

Two rules are enforced in the prompt: facts you do not have a source for are described qualitatively rather than invented, and any concrete statistic must carry a link.

Images

Images are generated per the plan's per-article allowance and stored in object storage. They are returned to the publishing destination as URLs.

Quality gate

An article cannot leave draft until it clears these checks. The gate runs when the draft is generated and again when you press Approve, so an edit is re-scored:

  • Length — at least 700 words
  • Structure — at least 3 ## sections
  • Keyword — the target keyword appears in the title or body
  • Meta description — 50–160 characters
  • Links — at least one outbound link
  • Sources — no statistics or "according to…" claims without a nearby citation
  • Site facts — if your brand kit lists facts, at least one appears in the draft
  • Duplicate — cosine similarity against your own published content stays under 0.92

The last two are the ones that protect you from Google's scaled-content penalties: near-duplicates are hard-blocked, and unsourced statistics are flagged for review rather than silently published.

Approval and publishing

Human approval is on by default. Nothing is published until an article is approved — by you, or by enabling auto-publish for the site.

A daily publish cap limits how many articles can go live per day, regardless of remaining monthly quota. This applies to scheduled and autopilot publishing too, so a backlog cannot flush all at once.

Destinations:

  • WordPress — install the BuddyStat plugin, paste the same publishing secret into its Content Publishing settings. Articles are created as posts via a signed REST endpoint
  • Shopify — install the BuddyStat Shopify app on the store. It needs the write_content scope; existing installs must re-authorise the app after the scope is added
  • Custom webhook — BuddyStat POSTs a signed JSON payload to your endpoint

Verifying webhook signatures

Every request carries X-Buddystat-Timestamp and X-Buddystat-Signature:

signature = "sha256=" + HMAC_SHA256(secret, timestamp + "." + raw_body)

Reject timestamps more than five minutes old, and compare signatures in constant time.

Attribution

Performance shows, per published article:

  • Sessions — distinct sessions that viewed the article's URL
  • Conversions and revenue — purchases that happened in a session that touched the article
  • Search Console clicks, impressions and position

A session counts toward an article when it viewed that article at least once. Purchases are attributed to any article the buying session touched, which deliberately over-attributes rather than under-attributes: a purchase after reading an article is the outcome you are trying to measure.

For attribution to work, the article URL recorded at publish time must match the path tracks send. If your WordPress permalink structure differs from the slug, set the canonical URL on the article.

AI visibility

AI visibility tracks prompts you choose and asks them, weekly, to ChatGPT, Claude, Perplexity and Google AI Overviews. Each answer is analysed for:

  • whether your domain is mentioned
  • how prominent the mention is
  • which sources are cited, and where you rank among them

That produces a share of voice — your citations as a share of every citation observed — plus the most-cited domains across answers.

Engines without a configured API key are skipped rather than failing the run. Google AI Overviews are read through a SerpApi-compatible provider, since Google publishes no public overview API.

API and MCP

The same operations are available over the public API and to MCP clients:

GET  /api/v1/sites/:siteId/content/articles
GET  /api/v1/sites/:siteId/content/articles/:articleId
GET  /api/v1/sites/:siteId/content/performance
POST /api/v1/sites/:siteId/content/articles
POST /api/v1/sites/:siteId/content/articles/:articleId/publish

Bearer keys need the content:read and content:write scopes. List endpoints are cursor-paginated: pass limit and the nextCursor from the previous response.

Writes accept an Idempotency-Key header. A retry with the same key and body replays the original response (marked Idempotent-Replayed: true) instead of creating a second article. Reusing a key with a different body or endpoint returns 409.

The API inherits every guard from the dashboard: publishing an unapproved article returns 409, and the daily cap cannot be bypassed.

Troubleshooting

No keyword candidates — Search Console is not connected, or has no impressions in the last 10 days.

Article stuck in draft — the quality gate did not pass. Open the article and read the checks on the right; the failing ones are listed with the reason.

Publishing fails with "cap reached" — the daily publish cap is active. Raise it in Publishing settings (up to the plan maximum) or publish tomorrow.

Shopify returns 404 — the store has not re-authorised the app since write_content was added, so no session exists for it.

Monthly white-label report

A PDF of the previous month's content performance is generated on the 1st of each month and emailed to organization owners. You can also download it any time from Plan & billing → Download last month's report.

Set the branding once under Publishing → Monthly report branding:

  • Brand name — use your agency or client name instead of the site name
  • Logo URL — shown in the report header
  • Footer contact — e.g. your email or website
  • Show the BuddyStat credit — turn off for a fully white-labelled report

The report covers published articles, sessions, conversions, revenue, activity counts and — when AI visibility is configured — share of voice and most-cited sources. It is generated per site, so a multi-site account receives one PDF per site in a single email.

Community discovery

Community finds Reddit and Quora threads that ask for a recommendation matching your keywords, scores each by relevance, and drafts a reply for you.

BuddyStat never posts anything. You copy a draft, edit it, and post it yourself.

Discovery is off by default and must be enabled per platform with the COMMUNITY_REDDIT_ENABLED / COMMUNITY_QUORA_ENABLED environment variables. It requires a search provider key and reads threads through a search API rather than scraping the communities.

Drafts follow rules that keep the account safe:

  • A reply never claims to be from a neutral customer — if the site is mentioned, the author is told to disclose it
  • Links are stripped from the draft; you decide whether to add one
  • Threads that are giveaways, hiring posts or wiki pages are filtered out before drafting
  • The model can decline a thread entirely if a recommendation does not genuinely fit

Replying without disclosure, or dropping links in communities that ban promotion, gets accounts removed. The draft is a starting point, not a submission.

On this page