Lance um blog, um registro de alterações e uma central de ajuda em uma tarde com o Kookee

getting-started

O Kookee é um backend de conteúdo: você escreve posts de blog, entradas do registro de alterações, artigos de ajuda, páginas e anúncios num único painel, e o seu app busca tudo como JSON e exibe com os seus próprios componentes, no seu próprio domínio. Este passo a passo vai do projeto vazio a três superfícies de conteúdo no ar, usando o SDK de TypeScript. Se o seu framework busca JSON e renderiza no servidor — Next.js, Astro, Nuxt, SvelteKit, TanStack Start —, tudo aqui se aplica diretamente.

1. Crie um projeto e pegue as credenciais

Cadastre-se (o plano gratuito não pede cartão de crédito e inclui os módulos de blog, registro de alterações e central de ajuda), crie um projeto e anote duas credenciais:

  • ID do projeto — pode ficar exposto no código do navegador; lê conteúdo publicado, como a chave de API. Só funciona enquanto o portal hospedado do projeto está ativado; caso contrário, a API responde 403 PORTAL_NOT_ENABLED.

  • Chave de API — funciona em qualquer projeto, nos seus servidores e no navegador. Ela só lê conteúdo publicado, e tudo o que vai para o navegador fica visível aos visitantes, então restrinja a chave aos seus domínios nas origens permitidas do projeto.

A regra prática: apiKey em todo lugar, restrita pelas origens permitidas onde chegar a um navegador; projectId no código do navegador só enquanto o portal hospedado estiver ligado.

Agora escreva no painel um rascunho de post de blog, uma entrada do registro de alterações e um artigo de ajuda, e publique os três — você quer dados reais do outro lado da sua primeira requisição.

2. Instale e inicialize o SDK

Bash
npm install @kookee/sdk
ts
import { Kookee } from '@kookee/sdk';

export const kookee = new Kookee({ apiKey: process.env.KOOKEE_API_KEY });

O SDK é TypeScript-first, não tem dependências e aceita tree-shaking; todo método de leitura aceita um AbortSignal. Crie a instância uma vez num módulo compartilhado e importe-a nos loaders das suas rotas.

3. O blog: lista e detalhe

Duas rotas. A página de lista:

ts
const { data: posts } = await kookee.blog.list({ page: 1, limit: 10 });

Cada item da lista traz título, slug, resumo, tags e datas — o suficiente para os cards. A página de detalhe busca a entrada completa pelo slug:

ts
const post = await kookee.blog.getBySlug(slug);

A resposta de detalhe traz o HTML renderizado do corpo e os campos de SEO que você preencheu no editor, então o head do documento sai da mesma requisição: title, meta description, canonical a partir do slug, imagem OG. Se getBySlug não encontrar nada, devolva um 404 de verdade.

Páginas de tag são a mesma chamada de lista com tags: ['news']; uma caixa de busca é list({ search: query }); kookee.blog.getTags() devolve a nuvem de tags com as contagens.

4. O registro de alterações

A mesma estrutura, com categorias tipadas:

ts
const { data: entries } = await kookee.changelog.list({ page: 1, limit: 20 });
const features = await kookee.changelog.list({ filter: { changelogType: 'feature' } });

As entradas têm um tipo (feature, fix, improvement, breaking, security, deprecated ou other) e uma versão opcional, então a sua interface exibe selos e filtros sem inventar uma convenção. Reações são uma única chamada, se você quiser um sinal leve sobre os lançamentos:

ts
await kookee.changelog.react(entryId, { reactionType: 'fire', action: 'add' });

5. A central de ajuda: categorias, artigos, busca semântica

Três requisições cobrem as rotas:

ts
const categories = await kookee.help.categories();
const articles = await kookee.help.list({ category: 'getting-started' });
const article = await kookee.help.getBySlug('reset-your-password');

O diferencial é a busca, que é semântica — ela compara significado, não palavras-chave, e devolve o trecho encontrado, para você mostrar por que cada resultado apareceu:

ts
const results = await kookee.help.search({ query: 'cobrado duas vezes este mês', limit: 5 });
// results[i].title, results[i].matchedChunk

Quando a sua base de artigos estiver pronta, o mesmo conteúdo alimenta respostas de IA — kookee.help.chat devolve respostas baseadas nos artigos, com fontes, e chatStream emite deltas para uma interface com streaming. Esse é o recurso de IA com cota do plano gratuito (50 respostas por mês para começar) e não pede nenhuma integração extra: os artigos que você acabou de publicar são o corpus.

6. Atalhos para React, se essa é a sua stack

@kookee/react empacota tudo isso em hooks — useBlogPosts, useBlogPost, useChangelog, useHelpCategories, useHelpSearch (com debounce, pode ser ligado direto a um input) —, e cada um devolve { data, isLoading, error }, com paginação via loadMore. Renderize no servidor com o loader do seu framework e passe o resultado como initialData, para que a primeira pintura já venha completa. Para o corpo, <EntryContent entry={post} /> renderiza o HTML da entrada, com uma folha de estilos para blocos de código que você pode importar numa cascade layer do Tailwind.

Desde a versão 1.9.0, o pacote também traz componentes renderizados no servidor para as três superfícies; veja Componentes React para o seu blog, registro de alterações e central de ajuda.

7. O que você ganha sem escrever mais código

  • Um portal hospedado em your-project.kookee.dev — quadro de feedback, roteiro, registro de alterações e central de ajuda ficam no ar assim que você liga Ativar o portal público na página Portal público do projeto. É útil enquanto as suas próprias rotas não ficam prontas (as páginas do portal são marcadas como noindex, então nunca competem com o seu domínio na busca).

  • Traduções: todo tipo de conteúdo aceita um parâmetro locale, com fallbacks por projeto, para quando você for multilíngue.

  • Comentários e reações em todos os módulos, moderados pelo painel.

  • Um servidor MCP, para que agentes e assistentes de IA pesquisem, leiam e rascunhem o seu conteúdo com um token pessoal para cada membro da equipe, somente leitura, a menos que você escolha outra coisa.

A tarde, item por item

Sendo realista: configuração do projeto e primeiro conteúdo, meia hora; rotas do blog, uma hora; registro de alterações, meia hora; central de ajuda com busca, uma ou duas horas; metadados do head, uma hora. As 100 mil requisições de API por mês do plano gratuito cobrem com folga o tráfego renderizado no servidor de um site pequeno, e não há cobrança até você ultrapassar esse limite.

O padrão que deixa isso rápido é a razão de ser do produto: o Kookee cuida da escrita, do armazenamento, da busca e da entrega; você cuida de duas ou três rotas enxutas por superfície, feitas com os componentes que já tem. Crie o projeto, publique um post de teste e faça a primeira chamada list — o resto vem daí.