CMSKite

Funcionalidade · Para desenvolvedores

Um CMS headless para blog que o seu código e o seu assistente de IA usam.

Quem escreve usa o painel. O seu site lê os posts publicados por uma API REST, com uma chave somente leitura. Um assistente de IA trabalha por um servidor MCP: você adiciona uma URL e entra, e ele só faz o que a sua função permite, nos espaços de trabalho que você escolheu. Num plano pago, o conteúdo pode ficar no seu próprio MongoDB e as imagens no seu próprio bucket.

PainelComece grátisSem cartão. Seu blog fica no ar em um minuto.
A página de chaves de API de um site: uma tabela de chaves com nome, chave mascarada, datas de criação e de último uso e status de cada uma, e um botão para criar chave.
Chaves de projeto são somente leitura e veem os posts publicados de um site.

O que existe

PeçaO que é
API RESThttps://api.cmskite.com/v1: posts, categorias, tags, autores, mídia, busca e números de leitores. Versão no caminho. O documento OpenAPI é público em api.cmskite.com/openapi.json.
SDKcmskite no npm. Tipos em TypeScript, sem dependências, ESM e CommonJS, além de um rastreador de visualizações para o navegador e o React.
Servidor MCPhttps://api.cmskite.com/mcp. Permite que o Claude, o ChatGPT, o Cursor e outros clientes MCP leiam e escrevam o seu conteúdo depois que você entra. Nada para instalar.
WebhooksUm POST assinado para a sua URL quando um post é publicado, atualizado, despublicado ou excluído.
Sua própria infraestruturaConteúdo no seu cluster MongoDB e imagens no seu próprio bucket, nos planos pagos.

Não é desenvolvedor? Você não precisa de nada disso. As duas linhas de código e o link gratuito do blog funcionam sem programar.

Duas credenciais, dois trabalhos

Chave de API do projetoFerramenta de IA conectada
Formatocsk_live_…Nada que você veja: a ferramenta entra e guarda a própria credencial
ParaO seu site, o seu build, o rastreador de visualizaçõesUm assistente de IA, um script, um job de CI
PodeLer o conteúdo publicado de um site. Mais nada.Só o que você marcou, nunca mais do que a função do dono permite, conferido em cada requisição
Seguro no navegador?Sim. Restrinja aos seus domínios com origens permitidas.Não. Ele pode escrever e excluir.
Criado emSite → Chaves de API → Criar chaveNa sua ferramenta de IA: adicione a URL, entre e clique em Permitir. Aparece em Configurações → Apps conectados

Os dois aparecem uma vez só, na criação, e são guardados apenas como hash com chave. Uma chave de projeto não tem permissão de escrita para ser concedida por engano, porque a API por chave não tem nenhuma rota de escrita. O Free permite duas chaves ativas por site; os planos pagos não têm limite de chaves.

Algumas coisas nenhuma ferramenta de IA conectada pode fazer, seja qual for a função do dono: revogar chaves, excluir um site ou espaço de trabalho, mudar o plano ou convidar pessoas. Detalhes: Authentication (em inglês).

Ler posts leva poucas linhas

bash
npm install cmskite
A página de um post num blog em Next.js, em essência · ts
import { createCMSKite } from 'cmskite'

const cms = createCMSKite({ apiKey: process.env.CMSKITE_KEY! })

// The index: a page of published posts (bodies left out of lists).
const { items } = await cms.posts.list({ limit: 10 })

// One post by its address. null rather than a throw when there is none.
const post = await cms.posts.findBySlug(slug)
if (!post) notFound()

// A renamed post still resolves; send the old address to the new one.
if (post.slugRedirectedFrom) redirect(`/blog/${post.slug}`)

A paginação é por cursor, e cms.posts.all() percorre todos os posts como um iterador assíncrono, para sitemaps e builds estáticos. Os erros chegam como um único CMSKiteError, com o status, um código de erro e um id de requisição. Sem o SDK, é HTTP puro com um bearer token:

bash
curl "https://api.cmskite.com/v1/blog/posts?limit=10" \
  -H "Authorization: Bearer csk_live_..."

Comece pelo Quickstart (em inglês), depois o guia do SDK (em inglês) e a referência da API (em inglês).

Um CMS de blog com MCP

Adicione https://api.cmskite.com/mcp à sua ferramenta de IA — um comando no Claude Code ou no Codex, uma entrada em um arquivo de configuração no Gemini CLI, Cursor, VS Code ou Windsurf, um conector personalizado no Claude, no ChatGPT ou no Lovable. A ferramenta abre o CMSKite no navegador: entre, escolha todos os seus espaços de trabalho ou um só, decida se ela pode excluir e clique em Permitir. Nenhuma chave é mostrada ou colada, e você pode desconectar quando quiser em Configurações → Apps conectados.

Claude Code (CLI) · bash
claude mcp add --transport http cmskite https://api.cmskite.com/mcp
Codex CLI (OpenAI) · bash
codex mcp add cmskite --url https://api.cmskite.com/mcp
Cursor · ~/.cursor/mcp.json · json
{
  "mcpServers": {
    "cmskite": {
      "url": "https://api.cmskite.com/mcp"
    }
  }
}

Depois é só pedir com palavras comuns: “Escreva um rascunho sobre cuidados com a pele no verão e coloque na categoria Pele”. O assistente lê as suas categorias, escreve o post e deixa como rascunho, a menos que você tenha pedido para publicar. Ele também consegue montar um site inteiro: criar o site, escrever posts, gerar a chave somente leitura e conferir se as visualizações estão chegando.

A configuração passo a passo de cada ferramenta, todas as permissões e as ferramentas por trás delas: MCP and automation (em inglês).

Webhooks

Adicione um endpoint em Configurações do site → Webhooks e escolha os eventos: post.published, post.updated, post.unpublished, post.deleted. Cada entrega é um POST em JSON, normalmente usado para reconstruir um site estático assim que um post muda.

  • Assinado: CMSKite-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256> sobre <t>.<raw body>. O segredo de assinatura aparece uma vez só. Recuse timestamps com mais de cinco minutos.
  • Uma entrega que falha é tentada de novo. Depois de 20 falhas seguidas, o endpoint é desligado, para uma URL morta não ser bombardeada para sempre.
  • O cartão mostra a última entrega e o status de cada endpoint. Os registros de entrega ficam guardados por 90 dias.

Seu blog no seu próprio banco de dados

Em todos os planos pagos, um site pode guardar o conteúdo num cluster MongoDB seu e as imagens no seu próprio bucket: Cloudflare R2, Amazon S3, qualquer armazenamento compatível com S3 ou Cloudinary. Configure em Banco de dados e armazenamento.

  1. Testar

    A conexão é testada antes de ser salva, então uma senha errada ou uma rede bloqueada aparece na tela, e não depois como erro para um leitor.

  2. Migrar

    O conteúdo existente é copiado e as contagens são conferidas. Dá para retomar, e nada é removido do nosso lado.

  3. Ativar

    Leituras e escritas passam para o seu cluster. Cada post mantém o id e o slug, então o seu site não percebe nada.

As credenciais são criptografadas e nunca mais aparecem. Desconectar aponta o site de volta para o nosso banco e não apaga nada do seu, e você pode exportar tudo em JSON delimitado por linha quando quiser. O que pesar: a localização e a disponibilidade do seu cluster passam a ser as da API. Números de leitores, uso e o registro de atividades continuam com a gente. Detalhes: Bring your own database (em inglês).

Limites, e o que cada plano inclui

As requisições por segundo usam um token bucket definido pelo seu plano, e toda resposta traz os cabeçalhos RateLimit-Policy e RateLimit, para o cliente desacelerar antes de ser recusado; um 429 acrescenta Retry-After. As requisições mensais são a cota abaixo. A busca de texto completo e o detalhamento de tráfego por endpoint estão nos planos pagos. Veja Rate limits and quotas (em inglês).

FreeStarterTeam
PreçoGrátis para sempreR$ 39 por mêsR$ 129 por mês
Requisições de API10K / mês100K / mês500K / mês
Sites115
Armazenamento de imagens100 MB1 GB20 GB

Perguntas frequentes

Existe uma especificação OpenAPI?
Sim, pública e sem autenticação em https://api.cmskite.com/openapi.json. Os tipos do SDK vêm da mesma API.
Posso criar posts pela API?
Os posts são escritos no painel ou por uma ferramenta de IA que você conecta pelo MCP: adicione a URL, entre e clique em Permitir. A API pública é somente leitura: as chaves de projeto só leem conteúdo publicado, e é isso que as torna seguras para ir dentro de um site.
Posso colocar a chave de API no código do front-end?
A chave de projeto, sim: ela é somente leitura e só vê posts publicados. Adicione seus domínios às origens permitidas para um navegador em outro site não conseguir usá-la. É a única credencial de que uma página precisa.
Quais assistentes de IA funcionam com o servidor MCP?
Qualquer cliente MCP que aceite servidores remotos com login: Claude, ChatGPT, Claude Code, Cursor, VS Code, Lovable e outros. A configuração é a mesma URL em todos.
Quais planos incluem banco de dados e armazenamento próprios?
Todos os planos pagos. O plano gratuito usa o nosso banco de dados e armazenamento gerenciados.
Preciso do SDK?
Não. Tudo é HTTP puro com um bearer token. O SDK poupa você de escrever a paginação por cursor, os redirecionamentos de slug, as respostas tipadas e o rastreador de visualizações.

Conferido em