CMSKite
  • Free plan
  • No credit card
  • Setup in minutes

Add a blog to your website.Get found everywhere.

Write posts in a simple dashboard. They show up on your website in your design, as real pages Google, ChatGPT and other AI search can read and cite. No WordPress, no hosting. AI writing included.

  • Your design stays yours
  • Ready for search and AI
  • Writers get their own login

Works withWordPressWixShopifyWebflowSquarespaceLovableany HTML sitePaste 2 lines and your blog is live.

What you get

Everything to start a blog. On every plan.

Write with AI

Type a topic, get an SEO-ready draft in English, हिंदी or Hinglish. You edit and publish.

How AI writing works

Add to any website in 2 lines

WordPress, Wix, Shopify, Webflow, Squarespace, Lovable or any HTML page.

See the two lines

Free blog link from day one

Your blog is live at cmskite.com/b/your-name while you set up your own site. Posts still count for your website’s SEO once connected.

About the free link

Free 10-min setup call

Stuck? We set it up with you.

Book a call
01How it works

Set up once. Then just write.

  1. 01Connect once

    Your developer or your AI adds CMSKite to your site.

  2. 02Write

    Publish from a simple dashboard.

  3. 03Get found

    Every post is a real page Google and AI assistants can read.

02Who sets it up

Someone connects it once. It need not be you.

Your developer

Two requests to our API and your posts render in your site's own design. The guide takes them about ten minutes.

Send them the docs

Your AI

Ask your AI builder or coding assistant to add a blog to your site, and it wires the pages up.

How the MCP works

We help you

Book a free 10-minute setup call. We connect it with you or your developer, and you leave with your first post live.

Book a free setup call
03The mental model

Three nouns.
Nothing else to learn.

A workspace has projects. A project has content and keys. That is the whole hierarchy — nothing else to model.

The organisation

Workspace

Company scope. Holds the plan, team roles, members and projects. One plan covers every project in it. A person can belong to several.

The publication

Project

One website or app. Holds posts, three-level categories, tags, byline authors, media and its own settings.

The credential

API Key

A read-only key tied to one project. It names its own project — no project id travels in the URL — and respects allowed origins.

04The seven-step journey

From sign-in to numbers in one sitting.

From zero to published posts on your own domain in one sitting, on the free plan. No card needed.

  1. 01Google Sign-In

    One click. No password, no verification email — signing in and signing up are the same action.

  2. 02Name Workspace

    One screen creates your organisation, a first project and a free plan.

  3. 03Write a Post

    Markdown, HTML or plain text. Posts start as drafts; publish or schedule when ready.

  4. 04Create API Key

    A read-only credential. Shown exactly once, scoped to one project, locked to your domains.

  5. 05Fetch from Site

    A standard GET to api.cmskite.com — from your server, your build, or the npm package.

  6. 06Add Tracking Snippet

    The reader’s browser reports the view. No cookies — a daily-salted hash counts readers for one day only.

  7. 07Watch Analytics

    Views, unique readers, clicks, referrers and countries — per post and per project.

05Three integration paths

Integrate however you build. The API does not care.

Typed TypeScript, raw HTTP, or plain English via MCP. Same envelope, same key, same two requests.

For JavaScript and TypeScript.

A typed client for Node, Next.js and React, plus a tiny browser tracker.

  • Typed client — one error type, full autocomplete
  • Cursor pagination handled for you
  • Browser tracker that can never break the page
TS
import { createCMSKite } from 'cmskite'

const cms = createCMSKite({ apiKey: process.env.CMSKITE_API_KEY })
const { items } = await cms.posts.list({ limit: 20 })
const post = await cms.posts.findBySlug(slug)

// in the browser, on the page that renders one post:
import { createTracker } from 'cmskite/browser'
createTracker({ apiKey: PUBLIC_KEY }).trackView(post.id)
06The half everybody forgets

Half an integration works perfectly. And counts nobody.

An integration has two halves, and only the first one is obvious. Build only the first and you get a site that works perfectly and counts nobody — no error anywhere, nothing in the console, every post reading zero views forever.

A build fetching 200 posts is not 200 readers, and a cached page read ten thousand times is one fetch. So a view is only ever reported by the page a person opened.

The dashboard detects this. When a project fetches content but reports no readers, it tells you in plain words — and names the one thing to fix.

GET/v1/blog/posts

obvious half

Your server fetches the content. Easy, and it works immediately.

POST/v1/blog/events

forgotten half

The reader’s browser reports the view. A separate snippet, on the page that renders a single post.

0
views counted
0
errors anywhere
0
clues why
07Product capabilities

A blog’s whole shape, already built.

Built for publications without the bloat of a general-purpose headless CMS. Posts, categories, tags, authors, media, feeds and analytics exist on day one.

Publishing Engine

Posts in HTML, Markdown or plain text. Scheduled publishing, slug redirects when a URL changes, and full-text search across the project.

rss 2.0 · atom · json feed

Media Pipeline

Browser → object storage directly; the API never handles the bytes. Compressed, resized, slug-renamed for SEO, checksum-deduplicated.

width · height · alt on every image

Reading API

One bearer key, one envelope: { success, data, pagination, requestId }. Filters, cursor pagination, published-only keys, allowed origins.

categories · tags · authors · related

No-Cookie Analytics

A reader is a hash of a daily random salt plus IP and user agent. The salt expires after 48 hours. No cookie, no cross-day tracking.

events 90 days · totals forever

Team & Webhooks

Six roles, invitations, per-project access, a full audit log. Webhooks on publish — signed, retried, deduplicable. A static site rebuilds itself.

blog.post.published · signed + retried

BYO MongoDB Exit

Point a project at your own MongoDB cluster. We hold an encrypted connection string and nothing else. A real exit, not a promised one.

everything exportable

08For developers

Two HTTP requests. Your front end.

A read-only key, a JSON response, typed with the npm package if you like. Render posts however the site already renders pages.

Works with Lovable, Cursor and Claude through the CMSKite MCP.

Read the docs

GEThttps://api.cmskite.com/v1/blog/posts?limit=20

{
  "success": true,
  "data": [
    {
      "id": "post_01a0d047e7fa7000a476474ba31adc6e",
      "slug": "why-we-stopped-writing-blog-backends",
      "title": "Why we stopped writing blog backends",
      "excerpt": "Three rewrites later, we deleted ours.",
      "status": "published",
      "author": { "name": "Elena Rostova", "slug": "elena-rostova" },
      "tags": [{ "name": "engineering", "slug": "engineering" }],
      "readingMinutes": 4,
      "publishedAt": "2026-07-15T10:00:00.000Z"
    }
  ],
  "pagination": { "hasNext": false, "nextCursor": null, "limit": 20 },
  "requestId": "01a0d039-b10c-7000-903a-24cc9ea1f4de"
}

POST/v1/blog/events?key=… ← the reader’s browser, to count

09Honest pricing

Three plans. Or build your own.

Start free forever. Starter and Team cover most blogs; Custom lets you set every dial. Every limit here is the one the API enforces.

Free

$0forever

  • 3 posts written with AI a month
  • 1 website
  • 35 posts
  • 2 team members
  • 1 workspace
  • 10K API requests a month
  • 100 MB media storage
  • No card, does not expire

Starter

$9/ month

  • 30 posts written with AI a month
  • 1 website
  • Unlimited posts
  • 3 team members
  • 1 workspace
  • 100K API requests a month
  • 1 GB media storage
  • 300 MB managed database

Team

$29/ month

  • 30 posts written with AI a month
  • 5 websites
  • Unlimited posts
  • 5 team members
  • 2 workspaces
  • 500K API requests a month
  • 20 GB media storage
  • 1.2 GB managed database

On every plan Embed code for any website Free blog link Free 10-minute setup call

No card to start. Pick a plan and pay securely by card; it starts as soon as the payment is confirmed.

Custom

More projects, seats, requests or storage than Team, or your own database and bucket.

Never-revoked read guarantee. If you downgrade or miss a payment, read access to your posts is never revoked. Access degrades to the free plan — your blog is never held hostage.

About AI posts

What counts as an AI post?
Each draft you get from Write with AI counts as one AI post, whether you publish it or not. Writing it again is another draft. A draft that fails does not count, and "Give me topic ideas" is free.
Do unused AI posts roll over?
No. AI posts are counted per account for each calendar month (UTC) and reset on the 1st. Ones you did not use do not carry over.
10The honest comparison

A blog is a solved shape. We are that shape.

No marketing spin. Just the tradeoffs against the options already in your head.

01

WordPress

Powerful — and it is a server you run, secure and update.

02

Ghost

Nice, still hosting — and it wants to own the front end.

03

Sanity / Contentful / Strapi

General-purpose. You model everything from scratch and pay for a lot you do not use.

04

MDX files in the repo

Free and fine — until a non-developer needs to publish, or a typo becomes a deploy.

05

CMSKite

Posts, categories, tags, authors, media, feeds and analytics on day one. You fetch JSON and keep your front end.

No fake customer logos. No manufactured testimonials. No invented uptime badges — the product is new and has none of these. Compare the shape of the thing instead.