CitationBench's API for blog content generation uses reusable content refiners to enforce each client's brand voice at scale across your entire portfolio.
# Generate a long-form SEO blog post via APIPOST /v1/produce/blog_post/create> { "keyword_id": "kw_9rp2m", "workspace_id": "ws_acme", "refiner_ids": ["ref_brandvoice", "ref_cta"] }job_id: job_4tz7q · status: running# Refiners enforce brand voice and inject CTAs automatically✓ Brief generated · keyword: "api for blog content generation"✓ Draft complete · 2,400 words✓ Refiners applied · brand_voice: acme · cta_injected: true✓ Published to WordPress · auto-indexed via GSC + IndexNowAdding more clients should grow your margin, not dilute your output quality and client trust.
Without reusable brand voice rules, blog output converges to generic copy that clients reject or rewrite themselves.
Copying drafts into CMS platforms, triggering indexing, and formatting posts manually kills throughput on every engagement.
Tools like Surfer or Frase have no programmatic API, forcing human-in-the-loop bottlenecks for every piece of content produced.
The fix
CitationBench's blog generation API runs a full brief-to-publish pipeline. Reusable content refiners apply brand voice, CTA rules, and quality standards automatically across every client workspace via produce.blog_post.create and produce.refine.
Five production features that take a keyword from research through published, indexed, on-brand blog content without manual intervention.
Content Production
Generate long-form SEO blog posts via produce.blog_post.create or run bulk_create from a keyword list. Each post follows a brief-to-draft-to-refined pipeline with full history.
Brand Voice
Define brand voice, competitor removal, FAQ injection, and CTA rules once per client workspace. Every blog post runs through produce.refine automatically — no manual editing pass required.
Publishing
Push finished blog posts to WordPress, Ghost, Wisp, or any custom REST endpoint via produce.publish.send. Credentials and platform configs are isolated per client workspace.
Indexing
Every produce.publish call automatically fires Google Search Console URL submission and IndexNow in parallel. No blog post is left un-indexed after going live.
Quality Assurance
Run produce.evaluate.score on every draft to check SEO quality, readability, brand alignment, and keyword optimization before publishing. Custom rubrics configurable per client workspace.
How it works
An `sk_test_*` key lands in your dashboard instantly. No demo gate — start calling real endpoints with shape-complete responses.
`claude mcp add citationbench https://mcp.citationbench.com/mcp` from Claude Code, Cursor, or any MCP client. Or `curl` against `api.citationbench.com/v1/*` directly.
Every tool returns shape-complete demo data without auth, so your agent works before the user signs up. Tools across research, production, indexing, link-building, and agents.
Add `X-Workspace-Id: ws_***` to scope per client. Switch to a live `sk_live_*` key when you're ready. Same API surface, same SDK.
Why CitationBench
Hosted at mcp.citationbench.com/mcp. Works with Claude Code, Cursor, Claude Desktop, Windsurf, and ChatGPT Apps. No self-hosting required.
Every long-running call runs on Cyclonic workers — survives restarts, cancellable, resumable, streams via SSE. Production-safe by default.
One master API key, N client workspaces. Switch with a single `X-Workspace-Id` header. Per-client data isolation, bulk ops across all of them.
Every endpoint responds in shape-complete demo mode without auth, so you can build the agent before the user signs up.
FAQ
CitationBench's blog content generation API enforces brand voice across every client and publishes with automatic indexing.
Start Free